कैमरा एचएएल की टेस्टिंग की चेकलिस्ट

इस पेज पर, Android कैमरे के हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल) का आकलन करने के लिए उपलब्ध सभी टेस्ट की सूची दी गई है. इसे ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (OEM) और ऐप्लिकेशन प्रोसेसर (AP) वेंडर के लिए बनाया गया है. इससे यह पक्का किया जा सकता है कि कैमरा एचएएल को सही तरीके से लागू किया गया हो और इसमें कम से कम खराबी हो. हालांकि, यह सुविधा Android के साथ काम करने वाले टेस्ट सुइट (सीटीएस) में जोड़ी गई है. हालांकि, इससे कैमरे की जांच का कवरेज काफ़ी बढ़ जाता है. साथ ही, इससे संभावित गड़बड़ियों की पहचान ज़रूर की जा सकती है.

इन टेस्ट को पास करके, OEM यह पुष्टि करते हैं कि उन्होंने Android कैमरा हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल) 3 इंटरफ़ेस को सही तरीके से इंटिग्रेट किया है या नहीं. चेकलिस्ट में दिए गए सभी आइटम के हिसाब से, Android कैमरा एचएएल इंटरफ़ेस के हिसाब से डिवाइस को लागू करने की प्रोसेस को फ़ुल माना जा सकता है. इससे, डिवाइस पर android.hardware.camera2 पैकेज ठीक से काम कर पाएगा. इस पैकेज के आधार पर, कैमरे वाले ऐप्लिकेशन काम करते हैं.

Camera HAL3 की खास जानकारी

Android Camera HAL3 स्पेसिफ़िकेशन, डिवाइसों के लिए ज़रूरी शर्तों के बारे में जानकारी का आधिकारिक सोर्स है. इस पेज पर, सभी टेस्ट की खास जानकारी दी गई है. इनका इस्तेमाल चेकलिस्ट के तौर पर किया जा सकता है. Camera HAL लागू करने वाले लोगों या कंपनियों (जैसे, एपी के वेंडर) को Camera HAL3 की खास बातों को ध्यान से पढ़ना चाहिए और यह पक्का करना चाहिए कि उनके डिवाइस इन खास बातों के मुताबिक हों.

मौजूदा एचएएल स्पेसिफ़िकेशन, Android 5.0 और उसके बाद के वर्शन के जेनरिक Android Platform Development Kit (PDK) में मौजूद इन फ़ाइलों में बताया गया है:

कैमरे के टेस्ट के टाइप

यहां Android के नए कैमरे के लिए उपलब्ध मुख्य टेस्ट के साथ-साथ, उनसे जुड़े निर्देशों के रेफ़रंस दिए गए हैं:

इन सभी तरह के टेस्ट के बारे में यहां ज़्यादा जानकारी दी गई है. इन टेस्ट को समय के हिसाब से इस क्रम में दिखाया गया है कि OEM को इन्हें किस क्रम में पूरा करना है.

उदाहरण के लिए, अगर कोई डिवाइस नेटिव टेस्ट में सफल नहीं होता, तो वह कंपैटबिलिटी टेस्ट सुइट (सीटीएस) की बाद में की जाने वाली जांचों में सफल नहीं हो पाएगा. अगर कोई डिवाइस सीटीएस की ज़रूरी शर्तें पूरी नहीं करता है, तो इमेज टेस्ट सुइट (आईटीएस) की जांच करने का कोई फ़ायदा नहीं है. हमारा सुझाव है कि अगले टेस्ट सेट पर जाने से पहले, हर तरह के टेस्ट में हुई गड़बड़ियों को ठीक कर लें.

वेंडर टेस्ट सुइट (वीटीएस) टेस्ट

Android वेंडर टेस्ट सुइट (वीटीएस), एक टेस्टिंग सुइट है जो HIDL इंटरफ़ेस लेवल पर काम करता है. वीटीएस का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, वेंडर टेस्ट सुइट देखें.

Compatibility Test Suite (CTS) टेस्ट

Camera Android Compatibility Test Suite (CTS) के टेस्ट, डिवाइस के साथ काम करने की क्षमता पर फ़ोकस करते हैं. टेस्ट एनवायरमेंट सेट अप करने के बारे में जानने के लिए, CTS सेट अप करना लेख पढ़ें.

कैमरे के सीटीएस टेस्ट के लिए शुरुआती पाथ platform/cts है.

बाहरी कैमरों (जैसे, यूएसबी वेबकैम) के साथ काम करने वाले डिवाइसों के लिए कैमरा सीटीएस चलाते समय, आपके पास प्लग इन किया गया डिवाइस होना चाहिए. ऐसा न करने पर, जांच अपने-आप बंद हो जाएगी. बाहरी कैमरों के उदाहरणों में ये शामिल हैं: Logitech HD Pro वेबकैम C920 और Microsoft LifeCam HD-3000.

सीटीएस चलाने के सामान्य निर्देशों के लिए, सीटीएस के बारे में जानकारी और इसके सबपेज देखें.

android.hardware.Camera API के लिए सीटीएस टेस्ट

कैमरे की जांच करने के लिए, cts/tests/tests/ में जाएं:

  • hardware/src/android/hardware/cts/CameraTest.java
  • hardware/src/android/hardware/cts/CameraGLTest.java
  • hardware/src/android/hardware/cts/Camera_SizeTest.java
  • permission/src/android/permission/cts/CameraPermissionTest.java

android.hardware.camera2 एपीआई के लिए सीटीएस टेस्ट

कैमरे की जांच करने के लिए, cts/tests/tests/ में जाएं:

  • hardware/src/android/hardware/camera2/cts/*
  • permission/src/android/permission/cts/Camera2PermissionTest.java

सीटीएस की पुष्टि करने वाले कैमरे की जांच

कैमरे की जांच करने के लिए, यहां जाएं: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

इमेज टेस्ट सुइट (आईटीएस) टेस्ट

कैमरा इमेज टेस्ट सुइट (आईटीएस) की मदद से, इमेज के सटीक होने पर फ़ोकस किया जाता है. जांच करने के लिए, Python स्क्रिप्ट को यूएसबी से कनेक्ट किए गए Android डिवाइस की मदद से वर्कस्टेशन पर चलाएं.

कैमरे के आईटीएस इंफ़्रास्ट्रक्चर और टेस्ट, cts/apps/CameraITS डायरेक्ट्री में मौजूद हैं. हर टेस्ट, tests/scene# सबडायरेक्ट्री में मौजूद होता है.

जांच को सेट अप करने और चलाने के बारे में ज़्यादा जानकारी के लिए, कैमरा आईटीएस देखें.

सीन और टेस्ट की जानकारी के लिए, कैमरे के आईटीएस टेस्ट देखें.

आईटीएस टेस्ट में, डिवाइस को पास या फ़ेल किया जाता है. हर सीन फ़ोल्डर में, ज़रूरी सभी टेस्ट पास होने चाहिए. ज़रूरी नहीं है कि सभी टेस्ट पास हों. फिर भी, CtsVerifier में उन्हें पास के तौर पर गिना जा सकता है.

ITS, टेस्ट की उन स्थितियों की जांच करता है जिनकी जांच सीटीएस में नहीं की जाती. साथ ही, ये एचएएल 3.2 टेस्ट प्लान का एक अहम हिस्सा हैं.

मीडिया फ़्रेमवर्क टेस्ट

MediaFrameworkTest में, कैमरे से जुड़े सभी मीडिया टेस्ट पास करें. कृपया ध्यान दें कि इन टेस्ट के लिए, Android डिवाइस पर mediaframeworktest.apk इंस्टॉल होना ज़रूरी है. आपको make mediaframeworktest करना होगा. इसके बाद, .apk फ़ाइल को इंस्टॉल करने के लिए adb का इस्तेमाल करना होगा. निर्देशों के उदाहरण नीचे दिए गए हैं.

कैमरे से जुड़े मीडिया फ़्रेमवर्क की जांच करने का शुरुआती पाथ यह है: platform/frameworks/base

जांचों का सोर्स कोड यहां देखें: frameworks/base/media/tests/MediaFrameworkTest

इन टेस्ट को सेट अप करने के लिए:

make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk

यहां name वैरिएबल, वेंडर के प्रॉडक्ट वाली डायरेक्ट्री को दिखाता है.

सभी टेस्ट, यहां दी गई डायरेक्ट्री या उसकी सब-डायरेक्ट्री में मौजूद होते हैं:

frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest

हर सबडायरेक्ट्री, टेस्ट की एक क्लास को दिखाती है:

  • functional/
  • integration/
  • performance/
  • power/
  • stress/
  • unit/

मीडिया फ़्रेमवर्क टेस्ट चलाना

सभी उपलब्ध टेस्ट देखने के लिए:

adb shell pm list instrumentation

इससे ऐसे नतीजे मिलेंगे जो इस तरह के होंगे:

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)

कॉम्पोनेंट की पहचान करें और उसे एक्सट्रैक्ट करें (हर टेस्ट लाइन से instrumentation: और (target=com.android.mediaframeworktest) के बीच). कॉम्पोनेंट में टारगेट पैकेज का नाम (com.android.mediaframeworktest) और टेस्ट रनर का नाम (MediaFrameworkTestRunner) शामिल होता है.

उदाहरण के लिए:

com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
com.android.mediaframeworktest/.MediaRecorderStressTestRunner
com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner

इसके बाद, हर कॉम्पोनेंट को adb shell am instrument को इस तरह पास किया जा सकता है:

adb shell am instrument -w component.name

जहां component.name, ऊपर निकाली गई वैल्यू के बराबर हो. उदाहरण के लिए:

adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

कृपया ध्यान दें कि क्लास पाथ, Java पैकेज और क्लास का नाम होता है. हालांकि, यह ज़रूरी नहीं है कि इंस्ट्रूमेंटेशन पैकेज, Java पैकेज जैसा ही हो. पक्का करें कि कॉम्पोनेंट के नाम को जोड़ते समय, आपने AndroidManifest.xml पैकेज का इस्तेमाल किया हो, न कि उस Java पैकेज का जिसमें टेस्ट रनर क्लास मौजूद है.

किसी एक क्लास के टेस्ट चलाने के लिए, -e क्लास आर्ग्युमेंट पास करें, जैसे कि:

adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

किसी टेस्ट क्लास में सिर्फ़ एक तरीका चलाने के लिए, क्लास के नाम के बाद पाउंड (#) का निशान और तरीका का नाम (इस मामले में, testConnectPro) जोड़ें. जैसे:

adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

मीडिया सेटिंग के फ़ंक्शन की जांच

यहां फ़ंक्शनल टेस्ट चलाने का उदाहरण दिया गया है. इस जांच से, कैमरे की सेटिंग के अलग-अलग कॉम्बिनेशन की बुनियादी सुविधाओं की पुष्टि होती है. (जैसे, फ़्लैश, एक्सपोज़र, WB, सीन, तस्वीर का साइज़, और जियोटैग)

जांच करने के लिए, यह कमांड चलाएं:

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

मीडिया इंटिग्रेशन टेस्ट

यहां इंटिग्रेशन टेस्ट के रन का उदाहरण दिया गया है. इस मामले में, mediaframeworktest/integration/CameraBinderTest.java और mediaframeworktest/CameraStressTestRunner.java:

adb  shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'

अगर यह कामयाब होता है, तो आपको ऐसा आउटपुट दिखेगा:

-----

com.android.mediaframeworktest.integration.CameraBinderTest:...........
Test results for CameraStressTestRunner=...........
Time: 3.328

OK (11 tests)

-----

मीडिया की परफ़ॉर्मेंस की जांच

झलक वाली मेमोरी की जांच से, कैमरे की झलक खुल जाएगी और 200 बार रिलीज़ हो जाएगी. हर 20 बार दोहराए जाने पर, ps mediaserver का स्नैपशॉट रिकॉर्ड किया जाएगा और 200 बार दोहराए जाने के बाद, यह मेमोरी के इस्तेमाल की तुलना करेगा. अगर अंतर 150 हज़ार से ज़्यादा है, तो टेस्ट पास नहीं होगा.

जांच करने के लिए, यह कमांड चलाएं:

adb shell am instrument -w -r  -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner

ज़्यादा जानकारी वाले आउटपुट के लिए, यहां जाएं: /sdcard/mediaMemOutput.txt

मीडिया यूनिट टेस्ट

यूनिट टेस्ट चलाने के लिए सभी निर्देश एक जैसे होते हैं. उदाहरण के लिए, CameraMetadataTest.java के लिए, निर्देश यह होगा:

adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'

मीडिया स्ट्रेस टेस्ट

इस टेस्ट में, कैमरे से इमेज कैप्चर करने और वीडियो रिकॉर्ड करने की सुविधा को टेस्ट किया जाता है.

जांच करने के लिए, यह कमांड चलाएं:

adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner

सभी टेस्ट पास होने चाहिए.

मैन्युअल TestingCam टेस्ट

TestingCam ऐप्लिकेशन को मैन्युअल तरीके से चलाया जाना चाहिए. साथ ही, इन जांचों को पूरा करना चाहिए. TestingCam का सोर्स यहां दिया गया है: pdk/apps/TestingCamera/

कैमरे को झुकाकर इनफ़िनिटी फ़ोकस करना

TestCam शुरू करें, झलक देखने की सुविधा चालू करें, और पक्का करें कि ऑटोफ़ोकस मोड अनंत पर सेट हो. फ़ोटो खींचें बटन का इस्तेमाल करके, दूर की चीज़ों (कम से कम 10 मीटर की दूरी पर) की फ़ोटो लें. कैमरे को हॉरिज़ॉन्टल, ऊपर की ओर (वर्टिकल के नज़दीक), और नीचे की ओर (वर्टिकल के नज़दीक) भी फ़ोटो खींचें. ऊपर की ओर वाला शॉट, पेड़ की ऊंची पत्तियों/ब्रांच का उदाहरण हो सकता है. नीचे की ओर वाले शॉट का उदाहरण, इमारत की छत से सड़क जैसा हो सकता है. सभी मामलों में, दूर की चीज़ें साफ़ और फ़ोकस में होनी चाहिए. शॉट को सेव करें और गैलरी व्यू में देखें, ताकि ज़ूम इन करके, आसानी से यह जांचा जा सके कि इमेज कितनी शार्प है.

ध्यान दें कि वीसीएम ऐक्चुएटर वाले कैमरे को इस टेस्ट में पास करने के लिए, उसे क्लोज़्ड-लूप एएफ़ कंट्रोल सिस्टम की ज़रूरत होगी. इसके अलावा, कैमरे के ओरिएंटेशन का पता लगाने के लिए, उसे ऐक्सीलेरोमीटर डेटा का इस्तेमाल करके, सॉफ़्टवेयर में किसी तरह का सुधार करना होगा. लेंस की इन्फ़िनिटी पोज़िशन को फ़ैक्ट्री में कैलिब्रेट करना भी ज़रूरी है.

मैन्युअल TestingCam2 के टेस्ट

TestingCam2 ऐप्लिकेशन को मैन्युअल तरीके से चलाया जाना चाहिए. साथ ही, इन जांचों को भी किया जाना चाहिए. TestingCam2 का सोर्स यहां दिया गया है: pdk/apps/TestingCamera2/

JPEG कैप्चर

TestingCam2 शुरू करें और JPEG बटन दबाएं. व्यूफ़ाइंडर इमेज की दाईं ओर दिखने वाली इमेज, व्यूफ़ाइंडर जैसी ही दिखनी चाहिए. साथ ही, दोनों इमेज का ओरिएंटेशन भी एक जैसा होना चाहिए.