Camera Performance Test (Compact 7)
3/12/2014
The Camera Performance Test requires a Windows Embedded Compact device with camera functionality. The Camera Performance Test gathers performance data for various DirectShow capture scenarios.
Test Prerequisites
Your device must meet the following requirements before you run this test.
No specialized hardware is required.
The following table shows the software requirements for the Camera Performance Test.
Requirements | Description |
---|---|
Tux.exe |
Tux test harness, required for executing the test |
Kato.dll |
Kato logging engine, required for logging test data |
CameraPerfTests.dll |
Library containing the test cases |
Camera driver |
Driver developed for the DirectShow capture model |
SYSGEN_DSHOW_CAPTURE (DirectShow capture) is also required. SYSGEN_CAMERA_NULL is to be set only when the device doesn’t have camera functionality. This would include a sample camera driver. You must also create a configuration file specifying what you wish to test, as discussed in Creating a Configuration File for the Camera Performance Test.
Subtests
The table below lists the subtests included in this test.
SubTest ID | Description |
---|---|
100 |
Paused graph performance test (baseline information) |
200 |
Preview performance test (baseline information) |
300 |
Still image performance test |
301 |
Still Image Burst performance test |
400-401 |
Video capture performance tests |
Setting Up the Test
You must create a configuration file, identified in the command line using the /c flag, which specifies what you wish to test. The following table shows what can be included in the configuration file.
Configuration file parameter | Description |
---|---|
StillImageDestination, path_and_filename, List, 0 |
This is primarily if you wish to capture performance data when saving to an SD card or some other storage location. If no location is given, \StillImage%d.jpg is used. %d is replaced by an incrementing number for each still image captured by the test. |
CaptureFileDestination, path_and_filename, List, 0 |
This is primarily if you wish to capture performance data when saving to an SD card or some other storage location. If no location is given, \VideoCapture%d.asf is used. %d is replaced by an incrementing number for each of the videos captured by the test. |
AudioFormat, AudioCaptureFilter, List, 0, value |
The value here is the index to the desired media type and capability pair of a format reported as supported by the IAMStreamConfig::GetNumberOfCapabilities and IAMStreamConfig::GetStreamCaps methods of the Audio Capture Filter. If no format is given, the audio capture filter's default format is used. |
CaptureFormat, VideoCaptureFilter, List, 0, value |
The value here is the format index of a format reported as supported by the video capture filter, which in turn returns the list reported as supported by the camera driver. If no format is given, the default format negotiated by the capture graph is used. |
PreviewFormat, VideoCaptureFilter, List, 0, value |
The value here is the format index of a format reported as supported by the video capture filter, which in turn returns the list reported as supported by the camera driver. If no format is given, the default format negotiated by the capture graph is used. |
StillImageFormat, VideoCaptureFilter, List, 0, value |
The value here is the format index of a format reported as supported by the video capture filter, which in turn returns the list reported as supported by the camera driver. If no format is given, the default format negotiated by the capture graph is used. |
<whatever your video encoder supports>, VideoEncoder, List, 0, value |
For WMV this value is _COMPLEXITYEX and _VBRQUALITY. Whatever is given here is passed directly to the encoder though the property bag. |
<whatever your audio encoder supports>, AudioEncoder, List, 0, value |
Whatever value is given here is passed directly to the encoder though the property bag. |
Orientation, <ignored>, List, 0, 90, 180, 270 |
This sets the shell orientation to the orientation specified. |
For example, a valid configuration file might look as follows:
StillImageDestination, \release\stillimage%d.jpg, List, 0
CaptureFileDestination, \release\captureimage%d.asf, List, 0
AudioFormat, AudioCaptureFilter, List, 12, 16
CaptureFormat, VideoCaptureFilter, List,0,1,2
This configuration file would result in the test iterating through five combinations, including three video capture formats and two audio formats.
Running the Test
You may customize the test run with the following command line parameters.
Command line parameter | Description |
---|---|
/? |
Outputs the list and description of the command line parameters. |
/ManualVerifyPreview |
Forces manual verification on, where user will be prompted for input. |
/ManualVerifyStill |
Turns off automatic verification of the still frame captured. |
/AutoVerifyPreview |
Forces automatic verification on, regardless of renderer in use. May cause invalid failures. |
/AutoVerifyStill |
Turns off automatic verification of the still frame captured if using the sample camera driver. |
/OutputKeyEvents |
Enables the test to output debugging information for missing events, skip outputting high volume events. |
/OutputAllEvents |
Enables the test to output debugging information for missing events, outputs every event. |
/OutputFilterInformation |
Enables the test to output information about the graph topology. |
/OutputPreviewDiagnostics |
Output preview diagnostics information for tracking samples. |
/OutputStillDiagnostics |
Output still capture diagnostics information for tracking samples. |
/OutputCaptureDiagnostics |
Output video capture diagnostics information for tracking samples. |
/OutputAllDiagnostics |
Output all video capture diagnostics information including graph topology, all events, and all other sample tracking diagnostics. |
/VideoEncoderCLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx} |
Sets the framework to use the video encoder DMO with the CLSID specified. |
/AudioEncoderCLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx} |
Sets the framework to use the audio encoder DMO with the CLSID specified. |
/MuxCLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx} |
Sets the framework to use the audio/video MUX with the CLSID specified. |
/UseGSM |
Sets the framework to have the AudioCaptureFilter output GSM encoded audio instead of PCM (if the ACM audio encoder is available) |
/ForceColorConversion |
Forces the color conversion filter into the graph in front of the renderer. May be necessary depending on the encoder and the camera driver-supported formats |
/VideoFileConformanceLibrary path |
This tells the test to use the DLL specified in the path to verify conformance of the video file created. This library must export a function with the following prototype: "HRESULT VerifyVideoFile(WCHAR *filename);" The library should load the file and return an HRESULT indicating whether the file is conformant and playable. If no path is given and the file sink used is the default ASF file sink, "asfverify.dll" is used. |
The preview, still, capture, and diagnostic options require the test filter library "cameragrabber.lib", as specified in Prerequisites for the Camera Performance Test.
Verifying the Test
When the test completes running, verify that "PASS" appears in the test log for all subtests.
Troubleshooting the Test
After verifying that the configuration file is correct, use information in the log to diagnose the cause of the failure.
For additional platform specific issues, consult the CTK articles on the TechNet wiki.