Test Cases for the DirectShow Playback and Latency Tests (Windows Embedded CE 6.0)
1/6/2010
This section shows the test cases as provided in the XML file, the tests in the test binary, and the verifiers in the test binary.
Test Cases in the DirectShow Playback and Latency Tests
The following table shows the test cases for the DirectShow Playback and Latency Tests.
Test case | Description |
---|---|
0 |
Build verification test (BVT): Graph building - adding a source filter - Verify that source filter gets added, for this particular media For the media clip specified, it will verify if we have a source filter that will match. |
1 |
BVT: Graph building - preferential filter loading - Verify that the correct graph gets built, forcing certain filters to be present Currently configured for a WMV clip. Will force loading of the WM Source filter and then tries to create the entire filter graph. Can force loading of other filter by specifying the colon separated names in the <FilterList></FilterList> tag |
2 |
BVT: Graph building - Render pin to a complete graph - Verify that we can render a graph from the source filter onwards Add the source filter for the URL. Try to connect the unconnected pins of the source filter. |
3 |
BVT: Graph building - intelligent connect source to sink - Verify that we can connect the Source Filter to the renderer Currently configured for a WMV clip. Will force loading of the source filter and the renderer filter specified. They are specified as colon separated names in the <FilterList></FilterList>i tag. First filter it encounters, it considers the source filter, second filter it considers as the renderer. |
4 |
BVT: Graph building - build graph for supported media - Verify that RenderFile will build the correct graph Calls RenderFile on the URL specified Verifies that the following filters are in the graph: WM Source filter, Object dispatcher, WMV decoder, Video Renderer. This can be updated by changing the <CorrectGraph></CorrectGraph> tag |
5 |
BVT: Graph building - build graph for supported media and query interfaces - Verify that the correct interfaces exist in the graph Calls RenderFile on the URL specified. Queries the created graph for the following interfaces: IMediaControl, IMediaEvent, IMediaSeeking |
100 |
Playback duration test: Graph playback - manual playback test - playback a clip, manually verify and pass/fail the test Calls RenderFile on the URL specified. Plays the media clip and waits for manual verification from the tester as to whether the clip played as expected. This test expects tester interaction. By default will play the clip from beginning to end but can specify the % positions to play from as a comma separated list in the <PositionList></PositionList> tag. Test assumes first position is start position, second position specified is stop position. |
101 |
Playback duration test: Graph playback - manual playback test - copy a clip to hard disk first and then playback clip, manually verify and pass/fail test Copies the media clip specified in the URL down to device first. Can specify location to copy to in the <DownloadTo></DownloadTo> tag. Currently it is set as \Hard Disk\. Calls RenderFile on the URL specified. Plays the media clip and waits for manual verification from the tester as to whether the clip played as expected. This test expects tester interaction. By default will play the clip from beginning to end but can specify the % positions to play from as a comma separated list in the <PositionList></PositionList> tag. Test assumes first position is start position, second position specified is stop position. |
102 |
Playback duration test: Graph playback - end-end playback test - verify duration, verify it played till end Calls RenderFile on the URL specified. Plays the media clip. By default will play the clip from beginning to end but can specify the % positions to play from as a comma separated list in the <PositionList></PositionList> tag. Test assumes first position is start position, second position specified is stop position. |
200 |
Startup latency test: Graph playback - end-end playback test - verify startup latency Calls RenderFile on the URL specified. Plays the media clip. Verifies that the time from asking the clip to play to the time the first sample comes out of the decoder is under a specified threshold. By default will play the clip from beginning to end but can specify the % positions to play from as a comma separated list in the <PositionList></PositionList> tag. Test assumes first position is start position, second position specified is stop position. |
201 |
Startup latency test: Graph playback - end-end playback test - verify startup latency, higher bitrate content Calls RenderFile on the URL specified. Plays the media clip. Verifies that the time from asking the clip to play to the time the first sample comes out of the decoder is under a specified threshold. By default will play the clip from beginning to end but can specify the % positions to play from as a comma separated list in the <PositionList></PositionList> tag. Test assumes first position is start position, second position specified is stop position. |
300 |
State change/latency test: Graph playback - state change test - verify state change (Play to Pause) and measure latency Calls RenderFile on the URL specified. Plays the media clip. Verifies how long it takes to change graph states, from play to pause & back. Can specify the state changes needed by updating comma separated list in the <StateChangeSequence></StateChangeSequence> tag.
|
301 |
State change/latency test: Graph playback - state change test - verify state change (Random state changes) and measure latency Calls RenderFile on the URL specified. Plays the media clip. Verifies how long it takes to change graph states. It will randomly switch between play, pause and stop states. Can specify the state changes needed by updating comma separated list in the <StateChangeSequence></StateChangeSequence> tag.
|
302 |
State change/latency test: Graph playback - state change test - verify state (Play to Stop) change and measure latency Calls RenderFile on the URL specified. Plays the media clip. Verifies how long it takes to change graph states. It will switch between play and stop states. Can specify the state changes needed by updating comma separated list in the <StateChangeSequence></StateChangeSequence> tag.
|
303 |
State change/latency test: Graph playback - run, pause, run - verify latency of first sample to come out of the decoder, after calling Run Calls RenderFile on the URL specified. Plays the media clip. Pauses the clip and then plays the again. Measures how long it takes to get the first sample out of the video decoder after the call to run/play. |
Tests in the Test Binary
The following table shows the individual tests found in the test binary.
Test | Description |
---|---|
EmptyGraphQueryInterfaceTest |
Graph build
|
AddSourceFilterTest |
Graph build
|
AddUnsupportedSourceFilterTest |
Graph build
|
BuildGraphTest |
Graph build
Verifiers:
|
BuildGraphMultipleTest |
Graph build
|
BuildGraphQueryInterfaceTest |
Graph build
|
BuildGraphUnsupportedMediaTest |
Graph build
|
BuildMultipleGraphTest |
Graph build
|
RenderPinTest |
Graph build
|
ConnectSourceFilterToRendererTest |
Graph build
|
BuildGraphPreLoadFilterTest |
Graph build
|
ManualPlaybackTest |
Graph playback
|
PlaybackTest |
Graph playback
Verifiers: Do not mix VerifyPlaybackDuration and StartupLatency. The test internally uses StartupLatency to determine playback duration. |
PlaybackDurationTest |
Graph playback
|
MultiplePlaybackTest |
Graph playback
|
StateChangeTest |
State change
Verifiers: Only VerifyStateChangeLatency |
Run_Pause_Run_Test |
State change
Verifiers: Any appropriate verifier |
Verifiers in the Test Binary
Most of the verifiers work by inserting a tap filter in the existing DirectShow filter graph. When the verifier is created, it decides where it wants a tap filter inserted and the test graph will add it for the verifier (for example, between the video decoder and the video renderer). The verifier then registers callbacks into the tap filter.
The tap filter does not do anything to the samples and messages passing through it. It acts as a passthrough and just passes it as is to its output pin. However, every time it gets a sample or a message, it signals the registered callback into the verifiers. Thus the verifiers know of what is happening in the graph, including what sample is currently coming out of the filter and can verify as needed.
The following table shows the verifiers included in the test binary.
Verifier | Supported verifications |
---|---|
DecoderOutputLatencyVerifier |
DecodedVideoLatencyPauseToFirstSample Measures the latency from the next Pause to the first sample received after the pause at the output of the video decoder. DecodedVideoLatencyRunToFirstSample Measures the latency from the next Run to the first sample received after the Run at the output of the video decoder. |
GraphBuildVerifier |
CorrectGraph This verifier checks if the specified filters are in the filter-graph. |
PlaybackDurationVerifier |
VerifyPlaybackDuration This measures the time from the start of the verifier to the first sample time and then to the time that EOS is received. The caller is responsible for taking the measurements and verifying. |
SampleDeliveryVerifier |
VerifySampleDelivered This verifies that a sample is delivered at a specified location in the graph after a specified event. |
StartupLatencyVerifier |
StartupLatency This measures the latency of the first sample to be received after the verifier is started. |