536 lines
22 KiB
HTML
536 lines
22 KiB
HTML
<html devsite>
|
|
<head>
|
|
<title>Camera HAL Testing Checklist</title>
|
|
<meta name="project_path" value="/_project.yaml" />
|
|
<meta name="book_path" value="/_book.yaml" />
|
|
</head>
|
|
<body>
|
|
<!--
|
|
Copyright 2017 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
|
|
|
|
<p>This document lists all tests available for evaluating the Android camera
|
|
hardware abstraction layer (HAL). It is intended for OEMs and application
|
|
processor (AP) vendors so they may ensure proper implementation of the camera
|
|
HAL with minimum defects. Although this is a voluntary addition to the Android
|
|
Compatibility Test Suite (CTS), it greatly increases camera test coverage and
|
|
will certainly identify potential bugs.</p>
|
|
|
|
<p>By passing these tests, original equipment manufacturers (OEM) validate whether
|
|
they have properly integrated the latest Android camera hardware abstraction
|
|
layer (HAL) 3.2 interfaces. When conforming with all items in the checklist, a
|
|
device implementation may be considered <em>full</em> with respect to the new Android
|
|
Camera HAL interfaces. This will in turn enable a device to properly support
|
|
the new <code>android.hardware.camera2</code> package that camera apps build upon.</p>
|
|
|
|
<h2 id=camera_hal_3_2_specification>[ ] 1. Camera HAL 3.2 specification</h2>
|
|
|
|
<p>The Android Camera HAL 3.2 specification is the authoritative source of
|
|
information on what devices must satisfy; the document here provides a summary
|
|
of all tests that can be used as a checklist. Camera HAL implementers (e.g. AP
|
|
vendors) should go through the HAL 3.2 specification line-by-line and ensure
|
|
their devices conform to it.</p>
|
|
|
|
<p>The current HAL 3.2 specification is defined in these files within the L
|
|
generic Android Platform Development Kit (PDK):</p>
|
|
|
|
<ul>
|
|
<li><em>Camera HAL 3.x interface and spec</em>: <code><a
|
|
href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h">hardware/libhardware/include/hardware/camera3.h</a></code>,
|
|
<code><a
|
|
href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h">hardware/libhardware/include/hardware/camera_common.h</a></code>
|
|
<li><em>Camera HAL 3.x metadata spec</em>: <code><a
|
|
href="https://android.googlesource.com/platform/system/media/+/master/camera/docs/docs.html">system/media/camera/docs/docs.html</a></code>
|
|
<li><em>HAL pixel format interface and spec</em>: <code><a
|
|
href="https://android.googlesource.com/platform/system/core/+/master/include/system/graphics.h">system/core/include/system/graphics.h</a></code>
|
|
</ul>
|
|
|
|
<h2 id=camera_test_types>[ ] 2. Camera test types</h2>
|
|
|
|
<p>Here are the primary types of tests available for the latest Android camera
|
|
along with references to associated instructions below:</p>
|
|
|
|
<ul>
|
|
<li><em><a href="#native_tests">Native</a>:</em> Tests that directly test the camera HAL interface
|
|
<li><em><a href="#cts_tests">Compatibility Test Suite (CTS)</a></em>: Standard, automated Android
|
|
tests to ensure device compatibility - see the <a
|
|
href="/compatibility/cts/index.html">CTS introduction</a> and the <a
|
|
href="/devices/tech/test_infra/tradefed/index.html">Trade Federation
|
|
Overview</a>
|
|
<li><em><a href="#its_tests">Image Test Suite (ITS)</a>:</em> Manually run tests to ensure image
|
|
correctness - see the top-level and
|
|
test-specific <code>README</code> files and tutorial.py for setup instructions
|
|
<li><em><a href="#manual_tests_with_aosp_camera_app">Manual tests with the
|
|
Android Open Source Project (AOSP) Camera App</a>:</em> User-like testing of
|
|
common camera functions
|
|
<li><em><a href="#manual_testingcam_tests">Manual TestingCam tests</a>:</em>
|
|
Run from the source in <code>pdk/apps/TestingCamera/</code>
|
|
<li><em><a href="#manual_testingcam2_tests">Manual TestingCam2.1
|
|
tests</a>:</em> Run from the source in <code>pdk/apps/TestingCamera2/</code>
|
|
</ul>
|
|
|
|
<p>All of these test types are described in detail below. These tests are
|
|
presented in the chronological order in which OEMs are expected to execute
|
|
them.</p>
|
|
|
|
<p>For instance, if a device fails the native tests, it will assuredly fail the
|
|
subsequent Compatibility Test Suite (CTS) tests. And if a device fails CTS,
|
|
there is little use in proceeding to the Image Test Suite (ITS). We recommend
|
|
addressing failures in each test type before proceeding to the next set of
|
|
tests.</p>
|
|
|
|
<h2 id=native_tests>[ ] 3. Native tests</h2>
|
|
|
|
<p>These tests directly test the camera HAL interface.</p>
|
|
|
|
<p>The starting path for Camera native tests is:
|
|
<code>platform/hardware/libhardware</code></p>
|
|
|
|
<p>To set up these tests:</p>
|
|
|
|
<pre class="devsite-click-to-copy">
|
|
<code class="devsite-terminal">cd hardware/libhardware/tests/camera*/</code>
|
|
<code class="devsite-terminal">mm</code>
|
|
<code class="devsite-terminal">adb remount; adb sync</code>
|
|
</pre>
|
|
|
|
<h3 id=hal_3_x_tests>[ ] 3.1. HAL 3.x tests</h3>
|
|
|
|
<p>Find these camera tests under:
|
|
<code>hardware/libhardware/tests/camera3/*</code></p>
|
|
|
|
<p>To run all tests:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell /data/nativetest/camera3_test/camera3_test
|
|
</pre>
|
|
|
|
<p>You receive an <strong>OK</strong> for each passed test. Errors are logged
|
|
at the end of output along with a summary of tests passed.</p>
|
|
|
|
<h3 id=hal_2_3_tests>[ ] 3.2. HAL 2/3 tests</h3>
|
|
|
|
<p>Find these camera tests under:
|
|
<code>hardware/libhardware/tests/camera2/*</code></p>
|
|
|
|
<p>To run all tests:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell /data/nativetest/camera3_test/camera3_test
|
|
</pre>
|
|
|
|
<p>To run a single test, pass the <code>--gtest_filter</code> argument and the
|
|
test name, like so:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell /data/nativetest/camera2_test/camera2_test --gtest_filter=Camera2Test.OpenClose
|
|
</pre>
|
|
|
|
<p>To run a subset of tests, use a wildcard with the
|
|
<code>--gtest_filter</code> argument, like so:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell /data/nativetest/camera2_test/camera2_test --gtest_filter=Camera2Test.*
|
|
</pre>
|
|
|
|
<h3 id=3_tests_that_interact_with_the_camera_service>[ ] 3.3. Tests that
|
|
interact with the camera service</h3>
|
|
|
|
<p>Find these camera tests under: <code>frameworks/av/camera/tests/*</code></p>
|
|
|
|
<h3 id=camera_metadata_tests>[ ] 3.4. Camera metadata tests</h3>
|
|
|
|
<p>Find these camera tests under: <code>system/media/camera/tests/*</code></p>
|
|
|
|
<h2 id=cts_tests>[ ] 4. Compatibility Test Suite (CTS) tests</h2>
|
|
|
|
<p>Camera Android Compatibility Test Suite (CTS) tests focus upon device
|
|
compatibility. They do not require a specific test environment (the field of
|
|
view or FOV CTS Verifier test being the lone exception).</p>
|
|
|
|
<p>The starting path for Camera CTS tests is: <code>platform/cts</code></p>
|
|
|
|
<p>See the <a href="/compatibility/cts/index.html">CTS
|
|
introduction</a> and its subpages for general instructions on running CTS.</p>
|
|
|
|
<h3 id=cts_tests_for_the_android_hardware_camera_api>[ ] 4.1. CTS tests for
|
|
the <code>android.hardware.Camera</code> API</h3>
|
|
|
|
<p>Find these camera tests under <code>cts/tests/tests/</code>:</p>
|
|
|
|
<ul>
|
|
<li><code>hardware/src/android/hardware/cts/CameraTest.java</code>
|
|
<li><code>hardware/src/android/hardware/cts/CameraGLTest.java</code>
|
|
<li><code>hardware/src/android/hardware/cts/Camera_SizeTest.java</code>
|
|
<li><code>permission/src/android/permission/cts/CameraPermissionTest.java</code>
|
|
</ul>
|
|
|
|
<h3 id=cts_tests_for_the_android_hardware_camera2_api>[ ] 4.2. CTS tests for
|
|
the <code>android.hardware.camera2</code> API</h3>
|
|
|
|
<p>Find these camera tests under <code>cts/tests/tests/</code>:</p>
|
|
|
|
<ul>
|
|
<li><code>hardware/src/android/hardware/camera2/cts/*</code>
|
|
<li><code>permission/src/android/permission/cts/Camera2PermissionTest.java</code>
|
|
</ul>
|
|
|
|
<h3 id=cts_verifier_camera_tests>[ ] 4.3. CTS Verifier camera tests</h3>
|
|
|
|
<p>Find these camera tests under:
|
|
<code>cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*</code></p>
|
|
|
|
<h2 id=its_tests>[ ] 5. Image Test Suite (ITS) tests</h2>
|
|
|
|
<p>The CameraITS tests focus upon image correctness. These Python scripts are
|
|
manually run on a workstation with the Android device connected over USB. The
|
|
workstation can run any operating system as long as it has the requisite Python
|
|
2.7 environment.</p>
|
|
|
|
<p class="note">Since ITS is a CTS Verifier subtest, start CTS Verifier and the
|
|
ITS subtest before running the python scripts so they have processes with which
|
|
to communicate.</p>
|
|
|
|
<p>The CameraITS infrastructure and tests are located under: <code>cts/apps/CameraITS</code></p>
|
|
|
|
<p>See the latest <code>README</code> file in this top-level folder for
|
|
instructions on how to set up and run the tests. For setup: <code>make
|
|
cts</code></p>
|
|
|
|
<pre class="devsite-click-to-copy">
|
|
<code class="devsite-terminal">extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip</code>
|
|
<code class="devsite-terminal">cd android-cts-verifier</code>
|
|
<code class="devsite-terminal">adb install -r CtsVerifier.apk</code>
|
|
<code class="devsite-terminal">cd CameraITS</code>
|
|
</pre>
|
|
|
|
<p>See <code>tutorial.py</code> in the <code>tests</code> subdirectory for a
|
|
walkthrough of the script's use. Each test resides in a corresponding
|
|
<code>tests/scene<#></code> subdirectory. See the <code>README</code> file in
|
|
each subdirectory for specific test instructions.</p>
|
|
|
|
<p>You will need a simple physical environment with a specific, reusable target
|
|
such as a white wall, grey card, and desk lamp. The Android device is mounted
|
|
on a tripod and its camera functions are exercised by the scripts. Most tests
|
|
are pass or fail but some offer metrics, as well.</p>
|
|
|
|
<p>These tests are works-in-progress and are not yet comprehensive enough for
|
|
full automated pass/fail validation of the camera HAL. However, these scripts
|
|
do test scenarios that are not tested in CTS and are an important component of
|
|
the overall HAL 3.2 test plan.</p>
|
|
|
|
<h3 id=its_tests_on_scene_0_plain>[ ] 5.1. ITS tests on scene 0 (plain)</h3>
|
|
|
|
<p>This test requires no specific setup. Pass all of the tests in the
|
|
<code>tests/scene0</code> folder, for all cameras (back + front + any
|
|
others).</p>
|
|
|
|
<h3 id=its_tests_on_scene_1_grey_card>[ ] 5.2. ITS tests on scene 1 (grey card)</h3>
|
|
|
|
<p>Pass all of the tests in the <code>tests/scene1</code> folder, for all
|
|
cameras (back + front + any others). The <code>tests/scene1/README</code> file
|
|
describes the scene setup.</p>
|
|
|
|
<h3 id=its_tests_on_scene_2_camera_lab>[ ] 5.3. ITS tests on scene 2 (camera lab)</h3>
|
|
|
|
<p>Pass all of the tests in the <code>tests/scene2</code> folder, for all
|
|
cameras (back + front + any others). The <code>tests/scene2/README</code> file
|
|
describes the scene setup.</p>
|
|
|
|
<h2 id=manual_tests_with_aosp_camera_app>[ ] 6. Manual tests with the AOSP App</h2>
|
|
|
|
<h3 id=camera_mode_aosp_camera_app>[ ] 6.1. Camera mode</h3>
|
|
|
|
<p>For all cameras on the device (front, back, and any others), verify:</p>
|
|
|
|
<ol>
|
|
<li>Images can be captured and reviewed on the device, and the images look good
|
|
with no obvious problems.
|
|
<li>Tap-to-focus, continuous autofocus, macro focus, infinity focus, AWB, and AEC
|
|
are all reliable.
|
|
<li>Tap-to-focus, continuous autofocus, AWB, and AEC are reliable when using
|
|
digital zoom (during capture).
|
|
<li>Flash settings (on/off/auto) are reliable and synchronize well with the 3As.
|
|
</ol>
|
|
|
|
<h3 id=video_mode_aosp_camera_app>[ ] 6.2. Video mode</h3>
|
|
|
|
<p>For all cameras on the device (front, back, and any others), verify:</p>
|
|
|
|
<ol>
|
|
<li>Videos can be captured and reviewed on the device, and the videos look good
|
|
with no obvious problems.
|
|
<li>Capturing a snapshot while in the middle of recording a video works.
|
|
<li>Tap-to-focus, continuous autofocus, macro focus, infinity focus, AWB, and AEC
|
|
are all reliable.
|
|
<li>Tap-to-focus, continuous autofocus, AWB, and AEC are reliable when using
|
|
digital zoom (during capture).
|
|
<li>Torch settings (on/off) are reliable and synchronize well with the 3As.
|
|
</ol>
|
|
|
|
<h3 id=camera_settings_resolution>[ ] 6.3. Camera settings: resolution</h3>
|
|
|
|
<p>For all cameras on the device (front, back, and any others), and for all
|
|
resolutions available in the menu, verify that correct resolution settings are
|
|
returned and applied for:</p>
|
|
|
|
<ul>
|
|
<li>Camera mode
|
|
<li>Video mode
|
|
<li>LensBlur
|
|
<li>PhotoSphere
|
|
<li>Panorama
|
|
</ul>
|
|
|
|
<h3 id=camera_settings_exposure_compensation>[ ] 6.4. Camera settings:
|
|
exposure compensation</h3>
|
|
|
|
<p>Verify that exposure compensation is applied (at +2 and -2).</p>
|
|
|
|
<h3 id=photosphere>[ ] 6.5. PhotoSphere</h3>
|
|
|
|
<p>Capture full 360-degree PhotoSphere images shot with each of the front and
|
|
rear cameras. Verify all of the individual frames are focused at infinity and the
|
|
exposure and white balance match between shots.</p>
|
|
|
|
<h3 id=panorama>[ ] 6.6. Panorama</h3>
|
|
|
|
<p>Capture vertical, horizontal, and wide-angle panoramas (with both front and
|
|
rear cameras), and verify all of the individual frames are focused at infinity
|
|
and the exposure and white balance matches between shots.</p>
|
|
|
|
<h3 id=lensblur>[ ] 6.7. LensBlur</h3>
|
|
|
|
<p>Capture a LensBlur image with both front and rear cameras, and verify
|
|
refocusing to different depths (while reviewing the captured shots) works.</p>
|
|
|
|
<p>Also verify tap-to-focus, continuous autofocus, AWB, and AEC are reliable in
|
|
this mode.</p>
|
|
|
|
<h2 id=media_framework_tests>[ ] 7. Media Framework tests</h2>
|
|
|
|
<p>Pass all of the camera-related media tests in MediaFrameworkTest. Please note,
|
|
these tests require the mediaframeworktest.apk be installed on the Android
|
|
device. You will need to <code>make mediaframeworktest</code> and then use adb
|
|
to install the resulting .apk. Example commands are included below.</p>
|
|
|
|
<p>The starting path for Camera-related media framework tests is:
|
|
<code>platform/frameworks/base</code></p>
|
|
|
|
<p>Find the source code for the tests here:
|
|
<code>frameworks/base/media/tests/MediaFrameworkTest</code></p>
|
|
|
|
<p>To set up these tests:</p>
|
|
|
|
<pre class="devsite-click-to-copy">
|
|
<code class="devsite-terminal">make mediaframeworktest</code>
|
|
<code class="devsite-terminal">adb install out/target/product/<em><name></em>/data/app/mediaframeworktest.apk</code>
|
|
</pre>
|
|
|
|
<p>Where the <em><code><name></code></em> variable represents the directory
|
|
containing the vendor's product.</p>
|
|
|
|
<p>Find all of the tests in the following directory or its subdirectories:</p>
|
|
|
|
<pre class="devsite-click-to-copy">
|
|
frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest
|
|
</pre>
|
|
|
|
<p>Each subdirectory represents a class of tests:</p>
|
|
|
|
<ul>
|
|
<li><code>functional/</code>
|
|
<li><code>integration/</code>
|
|
<li><code>performance/</code>
|
|
<li><code>power/</code>
|
|
<li><code>stress/</code>
|
|
<li><code>unit/</code>
|
|
</ul>
|
|
|
|
<h3 id=running_media_framework_tests>[ ] 7.1. Running Media Framework tests</h3>
|
|
|
|
<p>To see all of the available tests::</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell pm list instrumentation
|
|
</pre>
|
|
|
|
<p>This will yield results resembling:</p>
|
|
|
|
<pre class="devsite-click-to-copy">
|
|
instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
|
|
(target=com.android.mediaframeworktest)
|
|
instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner
|
|
(target=com.android.mediaframeworktest)
|
|
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
|
|
(target=com.android.mediaframeworktest)
|
|
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
|
|
(target=com.android.mediaframeworktest)
|
|
</pre>
|
|
|
|
<p>Identify and extract the component (between <code>instrumentation:</code>
|
|
and <code>(target=com.android.mediaframeworktest) </code>from each test line.
|
|
The component is composed of the target package name
|
|
(<code>com.android.mediaframeworktest</code>) and the test runner name
|
|
(<code>MediaFramework<type>TestRunner</code>).</p>
|
|
|
|
<p>For instance:</p>
|
|
|
|
<pre class="devsite-click-to-copy">
|
|
com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
|
|
com.android.mediaframeworktest/.MediaRecorderStressTestRunner
|
|
com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
|
|
com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
|
|
</pre>
|
|
|
|
<p>You may then pass each component to <code>adb shell am instrument</code> like so:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell am instrument -w <component.name>
|
|
</pre>
|
|
|
|
<p>Where the <component.name> equals the extracted value above. For example:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
|
|
</pre>
|
|
|
|
<p>Please note, while the class path is the Java package + class name, the
|
|
instrumentation package isn't necessarily the same as the Java package. Make
|
|
sure you use the AndroidManifest.xml package when concatenating the component
|
|
name, not the Java package in which the test runner class resides.</p>
|
|
|
|
<p>To run a single class of tests, pass the -e class <test-class> argument, like
|
|
so:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
|
|
</pre>
|
|
|
|
<p>To run only a single method in a test class, append a pound (#) sign and the
|
|
method name (in this case, <code>testConnectPro</code>) to the class name, like so:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
|
|
</pre>
|
|
|
|
<h3 id=media_settings_functional_tests>[ ] 7.2. Media settings functional tests</h3>
|
|
|
|
<p>Here is an example run of a functional test. This test verifies the basic
|
|
functionality of different combinations of camera settings. (ie, Flash,
|
|
exposure, WB, scene, picture size and geoTag)</p>
|
|
|
|
<p>Run the test command:</p>
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell am instrument -w -r -e delay_msec 15 -e log true -e class com.android.mediaframeworktest.functional.camera.CameraPairwiseTest com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner
|
|
</pre>
|
|
|
|
<h3 id=media_integration_tests>[ ] 7.3. Media integration tests</h3>
|
|
|
|
<p>Here is an example run of an integration test, in this case
|
|
mediaframeworktest/integration/CameraBinderTest.java and
|
|
mediaframeworktest/CameraStressTestRunner.java:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell am instrument -e class \ 'com.android.mediaframeworktest.<strong>integration</strong>.<strong>CameraBinderTest'</strong> -w \ 'com.android.mediaframeworktest/.<strong>CameraStressTestRunner'</strong>
|
|
</pre>
|
|
|
|
<p>If successful, this results in output resembling:</p>
|
|
|
|
<pre class="devsite-click-to-copy">
|
|
-----
|
|
|
|
com.android.mediaframeworktest.integration.CameraBinderTest:...........
|
|
Test results for CameraStressTestRunner=...........
|
|
Time: 3.328
|
|
|
|
OK (11 tests)
|
|
|
|
-----
|
|
</pre>
|
|
|
|
<h3 id=media_performance_tests>[ ] 7.4. Media performance tests</h3>
|
|
|
|
<p>This preview memory test will open and release the camera preview for 200
|
|
times. In each 20 iterations, the snapshot of ps mediaserver will be recorded
|
|
and it will compare the memory usage different after 200 iterations. Test will
|
|
fail If the difference is greater than 150kM.</p>
|
|
|
|
<p>Run the test command:</p>
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell am instrument -w -r -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
|
|
</pre>
|
|
|
|
<p>More detailed output can be found in:
|
|
<code>/sdcard/mediaMemOutput.txt</code></p>
|
|
|
|
<h3 id=media_unit_tests>[ ] 7.5. Media unit tests</h3>
|
|
|
|
<p>The commands to run unit tests are all similar. For example, for
|
|
CameraMetadataTest.java, the command would be:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'
|
|
</pre>
|
|
|
|
<h3 id=media_stress_tests>[ ] 7.6. Media stress tests</h3>
|
|
|
|
<p>This test is to stress out the camera image capture and video recording.</p>
|
|
|
|
<p>Run the test command:</p>
|
|
|
|
<pre class="devsite-terminal devsite-click-to-copy">
|
|
adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
|
|
</pre>
|
|
|
|
<p>All tests should pass.</p>
|
|
|
|
<h2 id=manual_testingcam_tests>[ ] 8. Manual TestingCam tests</h2>
|
|
|
|
<p>The TestingCam app should be run manually with the following checks performed.
|
|
The source for TestingCam is here: <code>pdk/apps/TestingCamera/</code></p>
|
|
|
|
<h3 id=infinity_focus_with_camera_tilt>[ ] 8.1. Infinity focus with camera tilt</h3>
|
|
|
|
<p>Start TestingCam, turn on preview, and ensure that autofocus mode is set to
|
|
infinity. Using the <strong>Take picture</strong> button, capture shots of
|
|
distant subjects (at least 10m away) with the camera pointed horizontally,
|
|
upwards (close to vertical), and downwards (close to vertical); an example of
|
|
the upwards shot could be high leaves/branches of a tree from beneath and an
|
|
example of the downwards shot could be the street as seen from the roof of a
|
|
building. In all cases, the distant subject should be sharp and in focus. Save
|
|
and view the shots in the gallery view so that you can zoom in and inspect the
|
|
sharpness more easily.</p>
|
|
|
|
<p>Note that for a camera with a VCM actuator to pass this test, it will require
|
|
either a closed-loop AF control system, or it will need some sort of SW
|
|
correction based on using accelerometer data to determine camera orientation.
|
|
Reliable factory calibration of the lens infinity position will also be needed.</p>
|
|
|
|
<h2 id=manual_testingcam2_tests>[ ] 9. Manual TestingCam2 tests</h2>
|
|
|
|
<p>The TestingCam2 app should be run manually, with the following checks
|
|
performed. The source for TestingCam2 is here: <code>pdk/apps/TestingCamera2/</code></p>
|
|
|
|
<h3 id=9_1_jpeg_capture>[ ] 9.1. JPEG capture</h3>
|
|
|
|
<p>Start TestingCam2, and press the <strong>JPEG</strong> button. The image
|
|
that appears to the right of the viewfinder image should appear the same as the
|
|
viewfinder, including having the same orientation.</p>
|
|
|
|
</body>
|
|
</html>
|