कैमरा एचएएल परीक्षण चेकलिस्ट

यह दस्तावेज़ Android कैमरा हार्डवेयर एब्स्ट्रैक्शन लेयर (HAL) के मूल्यांकन के लिए उपलब्ध सभी परीक्षणों को सूचीबद्ध करता है। यह मूल उपकरण निर्माताओं (ओईएम) और एप्लिकेशन प्रोसेसर (एपी) विक्रेताओं के लिए अभिप्रेत है ताकि वे न्यूनतम दोषों के साथ कैमरा एचएएल का उचित कार्यान्वयन सुनिश्चित कर सकें। हालांकि यह एंड्रॉइड कम्पेटिबिलिटी टेस्ट सूट (सीटीएस) के लिए एक स्वैच्छिक अतिरिक्त है, यह कैमरा परीक्षण कवरेज को बहुत बढ़ाता है और निश्चित रूप से संभावित बग की पहचान करेगा।

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

कैमरा HAL3 विशिष्टता

Android कैमरा HAL3 विनिर्देश जानकारी का आधिकारिक स्रोत है कि किन उपकरणों को संतुष्ट करना चाहिए; यह पृष्ठ उन सभी परीक्षणों का सारांश प्रदान करता है जिनका उपयोग चेकलिस्ट के रूप में किया जा सकता है। कैमरा एचएएल कार्यान्वयनकर्ताओं (जैसे एपी विक्रेताओं) को कैमरा एचएएल3 विनिर्देश लाइन-बाय-लाइन के माध्यम से जाना चाहिए और सुनिश्चित करना चाहिए कि उनके डिवाइस इसके अनुरूप हैं।

वर्तमान एचएएल विनिर्देश इन फाइलों में एंड्रॉइड 5.0 और बाद में जेनेरिक एंड्रॉइड प्लेटफॉर्म डेवलपमेंट किट (पीडीके) के भीतर परिभाषित किया गया है:

कैमरा परीक्षण प्रकार

नीचे दिए गए संबद्ध निर्देशों के संदर्भ के साथ नवीनतम Android कैमरे के लिए प्राथमिक प्रकार के परीक्षण उपलब्ध हैं:

इन सभी परीक्षण प्रकारों को नीचे विस्तार से वर्णित किया गया है। इन परीक्षणों को कालानुक्रमिक क्रम में प्रस्तुत किया जाता है जिसमें ओईएम से उन्हें निष्पादित करने की अपेक्षा की जाती है।

उदाहरण के लिए, यदि कोई उपकरण मूल परीक्षणों में विफल रहता है, तो यह बाद के संगतता परीक्षण सूट (सीटीएस) परीक्षणों में निश्चित रूप से विफल हो जाएगा। और यदि कोई उपकरण सीटीएस में विफल हो जाता है, तो छवि परीक्षण सूट (आईटीएस) पर आगे बढ़ने में बहुत कम उपयोग होता है। हम अनुशंसा करते हैं कि परीक्षणों के अगले सेट पर आगे बढ़ने से पहले प्रत्येक परीक्षण प्रकार में विफलताओं को संबोधित करें।

विक्रेता परीक्षण सूट (वीटीएस) परीक्षण

एंड्रॉइड वेंडर टेस्ट सूट (वीटीएस) एक परीक्षण सूट है जो एचआईडीएल इंटरफेस स्तर पर काम करता है। वीटीएस का उपयोग करने के बारे में अधिक जानकारी के लिए, वेंडर टेस्ट सूट देखें।

संगतता परीक्षण सूट (सीटीएस) परीक्षण

कैमरा Android संगतता परीक्षण सूट (CTS) परीक्षण डिवाइस संगतता पर ध्यान केंद्रित करता है। एक परीक्षण वातावरण स्थापित करने के बारे में जानकारी के लिए, सीटीएस की स्थापना देखें।

कैमरा सीटीएस परीक्षणों के लिए प्रारंभिक पथ है: platform/cts सीटीएस।

बाहरी कैमरों (जैसे यूएसबी वेबकैम) का समर्थन करने वाले उपकरणों के लिए कैमरा सीटीएस चलाते समय, सीटीएस चलाते समय आपके पास एक उपकरण प्लग इन होना चाहिए या परीक्षण स्वचालित रूप से विफल हो जाएंगे। बाहरी कैमरों के उदाहरणों में शामिल हैं: लॉजिटेक एचडी प्रो वेब कैमरा सी920 और माइक्रोसॉफ्ट लाइफकैम एचडी-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/*

इमेज टेस्ट सूट (ITS) टेस्ट

कैमरा इमेज टेस्ट सूट (ITS) परीक्षण छवि शुद्धता पर ध्यान केंद्रित करता है। परीक्षण करने के लिए, यूएसबी से जुड़े एंड्रॉइड डिवाइस के साथ वर्कस्टेशन पर पायथन स्क्रिप्ट चलाएं।

कैमरा ITS अवसंरचना और परीक्षण cts/apps/CameraITS निर्देशिका में स्थित हैं। प्रत्येक परीक्षण एक tests/scene # उपनिर्देशिका में रहता है।

परीक्षण वातावरण स्थापित करने के लिए, चलाएँ:
extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r -g CtsVerifier.apk
cd CameraITS
source build/envsetup.sh

परीक्षण सेट अप करने और चलाने के तरीके के बारे में अधिक जानकारी के लिए, cts/apps/CameraITS में CameraITS PDF फ़ाइल देखें। स्क्रिप्ट का उपयोग करने के तरीके के बारे में मार्गदर्शिका के लिए tests उपनिर्देशिका में tutorial.py देखें।

ITS परीक्षणों के लिए Linux वातावरण की आवश्यकता होती है। आईटीएस परीक्षण चलाने के लिए आवश्यक विशिष्ट पायथन संस्करणों के विवरण के लिए, रिलीज के लिए CameraITS पीडीएफ फाइल देखें या एंड्रॉइड 12 के लिए एंड्रॉइड 12 रिलीज नोट्स भी देखें।

स्थिर दृश्यों के लिए अनुशंसित सेटअप कैमरा ITS-in-a-box में वर्णित है। सेंसर फ़्यूज़न दृश्य के लिए अनुशंसित सेटअप को सेंसर फ़्यूज़न बॉक्स त्वरित प्रारंभ मार्गदर्शिका में वर्णित किया गया है।

आईटीएस को मैन्युअल रूप से चलाने के लिए, एक विशिष्ट, पुन: प्रयोज्य लक्ष्य जैसे सफेद दीवार, एक ग्रे कार्ड और एक डेस्क लैंप के साथ एक साधारण भौतिक वातावरण तैयार करें। एंड्रॉइड डिवाइस को ट्राइपॉड पर माउंट करें और कैमरा फ़ंक्शंस का परीक्षण करने के लिए स्क्रिप्ट चलाएं। अधिकांश परीक्षण पास या असफल होते हैं लेकिन कुछ मेट्रिक्स प्रदान करते हैं।

ये स्क्रिप्ट उन परिदृश्यों का परीक्षण करती हैं जिनका परीक्षण सीटीएस में नहीं किया गया है और ये एचएएल 3.2 परीक्षण योजना का एक महत्वपूर्ण घटक हैं।

आईटीएस टेस्ट या तो पास होते हैं या फेल। प्रत्येक दृश्य फ़ोल्डर में सभी अनिवार्य परीक्षण पास होने चाहिए। परीक्षण जो अनिवार्य नहीं हैं वे विफल हो सकते हैं और फिर भी CtsVerifier में पास के रूप में गिने जा सकते हैं।

दृश्य और परीक्षण विवरण के लिए, कैमरा ITS परीक्षण देखें।

मीडिया फ्रेमवर्क परीक्षण

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 ) और परीक्षण धावक नाम ( MediaFramework TestRunner ) से बना है MediaFramework TestRunner )।

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

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

कृपया ध्यान दें, जबकि क्लास पाथ जावा पैकेज + क्लास का नाम है, जरूरी नहीं कि इंस्ट्रूमेंटेशन पैकेज जावा पैकेज जैसा ही हो। सुनिश्चित करें कि आप घटक नाम को संयोजित करते समय AndroidManifest.xml पैकेज का उपयोग करते हैं, न कि जावा पैकेज जिसमें परीक्षण धावक वर्ग रहता है।

एकल वर्ग परीक्षण चलाने के लिए, -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

मीडिया सेटिंग्स कार्यात्मक परीक्षण

यहाँ एक कार्यात्मक परीक्षण का एक उदाहरण है। यह परीक्षण कैमरा सेटिंग्स के विभिन्न संयोजनों की बुनियादी कार्यक्षमता की पुष्टि करता है। (यानी, फ्लैश, एक्सपोजर, डब्ल्यूबी, सीन, पिक्चर साइज और जियोटैग)

परीक्षण आदेश चलाएँ:

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 मीडियासर्वर का स्नैपशॉट रिकॉर्ड किया जाएगा और यह 200 पुनरावृत्तियों के बाद अलग-अलग मेमोरी उपयोग की तुलना करेगा। यदि अंतर 150kM से अधिक है तो परीक्षण विफल हो जाएगा।

परीक्षण आदेश चलाएँ:

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

सभी परीक्षण पास होने चाहिए।

मैनुअल परीक्षणकैम परीक्षण

टेस्टिंगकैम ऐप को निम्नलिखित जांचों के साथ मैन्युअल रूप से चलाया जाना चाहिए। टेस्टिंगकैम का स्रोत यहां है: pdk/apps/TestingCamera/

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

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

ध्यान दें कि इस परीक्षण को पास करने के लिए वीसीएम एक्ट्यूएटर वाले कैमरे के लिए, इसे या तो एक बंद-लूप एएफ नियंत्रण प्रणाली की आवश्यकता होगी, या कैमरा अभिविन्यास निर्धारित करने के लिए एक्सेलेरोमीटर डेटा का उपयोग करने के आधार पर इसे किसी प्रकार के एसडब्ल्यू सुधार की आवश्यकता होगी। लेंस अनंत स्थिति के विश्वसनीय कारखाने अंशांकन की भी आवश्यकता होगी।

मैनुअल परीक्षणCam2 परीक्षण

TestingCam2 ऐप को निम्नलिखित जांचों के साथ मैन्युअल रूप से चलाया जाना चाहिए। TestingCam2 का स्रोत यहाँ है: pdk/apps/TestingCamera2/

जेपीईजी कैप्चर

TestingCam2 प्रारंभ करें, और JPEG बटन दबाएं। दृश्यदर्शी छवि के दाईं ओर दिखाई देने वाली छवि दृश्यदर्शी के समान दिखाई देनी चाहिए, जिसमें समान अभिविन्यास भी शामिल है।