Android 13 की रिलीज़ में, Camera ITS में कई बदलाव किए गए हैं. Android 13 में, Python और पैकेज के अपडेट किए गए वर्शन और टेस्ट हार्डवेयर के अपडेट जैसे इंक्रीमेंटल बदलावों के अलावा, वीडियो टेस्टिंग की सुविधा भी मिलती है.
इस पेज पर, Android 13 के लिए Camera ITS में हुए बदलावों के बारे में खास जानकारी दी गई है. बदलावों को सात मुख्य कैटगरी में बांटा गया है:
- Python और पैकेज के वर्शन
- कॉन्फ़िगरेशन फ़ाइल में जोड़े गए आइटम
- बदलावों को टेस्ट करें
- टैबलेट पर आधारित नई परीक्षाएं
- वीडियो टेस्टिंग
- हार्डवेयर से जुड़े अपडेट और नई सुविधाएं
- फ़ोल्ड किए जा सकने वाले डिवाइसों पर टेस्टिंग की सुविधा
Python और पैकेज के वर्शन
Android 13 में, Android 12 में काम करने वाले Python वर्शन और लाइब्रेरी के अलावा, यहां दिए गए Python वर्शन भी काम करते हैं:
- Python 3.9.2
- OpenCV 4.2.0
- Numpy 1.20.3
- Matplotlib 3.3.4
- Scipy 1.6.2
- pySerial 3.5
- Pillow 8.3.1
- PyYAML 5.4.1
- Mobly 1.11
- FFmpeg 4.4.1
कॉन्फ़िगरेशन फ़ाइल में जोड़े गए आइटम
test_auto_flash.py
टेस्ट के लिए, लाइट कंट्रोल की सुविधा जोड़ी गई है. इसलिए, config.yml
फ़ाइल में कंट्रोलर और लाइटिंग चैनल के लिए दो और पैरामीटर जोड़ने होंगे. टेस्ट किए जा रहे डिवाइस (डीयूटी) के फ़ोल्ड किए जा सकने वाले डिवाइस होने या न होने की पहचान करने के लिए, config.yml
फ़ाइल में तीसरा अतिरिक्त पैरामीटर होना ज़रूरी है. इसे टैबलेट और सेंसर फ़्यूज़न, दोनों सेक्शन में जोड़ना होगा.
TestBeds:
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # "True" or "False"; quotes needed
lighting_cntl: <controller-type> # "arduino" or "None"; quotes needed
lighting_ch: <controller-channel>
camera: 0
foldable_device: "False". # set "True" if testing foldable
scene: <scene-name> # if <scene-name> runs all scenes
बदलावों को टेस्ट करें
scene1_1/test_black_white.py
test_black_white
टेस्ट में, चैनल सैचुरेशन की जांच की जाती है. यह जांच, Android के पिछले वर्शन के हिसाब से की जाती है. इसका मतलब है कि चैनल सैचुरेशन की जांच के लिए, ज़रूरी पहला एपीआई लेवल Android 10 है.
scene1_2/test_yuv_plus_raw.py
test_yuv_plus_raw
टेस्ट, 16:9 या 4:3 सेंसर के अलावा अन्य सेंसर को हैंडल करता है, ताकि RAW फ़ॉर्मैट को बेहतर तरीके से सपोर्ट किया जा सके. अगर टेस्ट में, सेंसर के रॉ फ़ॉर्मैट और YUV कैप्चर फ़ॉर्मैट के बीच कोई सामान्य फ़ॉर्मैट नहीं मिलता है, तो टेस्ट, रॉ कैप्चर की तुलना सबसे बड़े YUV कैप्चर से करता है. भले ही, आसपेक्ट रेशियो अलग-अलग हों.
scene2_a/test_faces.py
test_faces
को test_num_faces
में फिर से व्यवस्थित किया गया है.
scene2_a/test_num_faces.py
test_num_faces
टेस्ट, सेंसर क्रॉप को मैनेज करता है. साथ ही, क्रॉप किए गए यूडब्ल्यू कैमरे से कैप्चर की गई इमेज पर चेहरे के रेक्टैंगल को सही तरीके से रखता है.
scene3/test_lens_position.py
Android 13 में test_lens_position
टेस्ट की सुविधा काम नहीं करती.
scene6/test_zoom.py
test_zoom
टेस्ट को फिर से तैयार किया गया है, ताकि तीन और चार कैमरे वाले सिस्टम की आसानी से टेस्टिंग की जा सके. अगर कैमरा, ज़ूम की 10x रेशियो रेंज में ठीक से काम करता है, तो टेस्ट सही तरीके से बंद हो जाता है. इससे ज़ूम टेस्टिंग को एक ही चार्ट की दूरी पर किया जा सकता है.
scene_change/test_scene_change.py
Android 13 में test_scene_change
टेस्ट की सुविधा काम नहीं करती.
टैबलेट पर आधारित नई परीक्षाएं
Android 13 में, टैबलेट के लिए दो नए टेस्ट शामिल हैं. Android 13 के साथ लॉन्च होने वाले डिवाइसों के लिए, दोनों टेस्ट ज़रूरी हैं. हालांकि, Android 13 पर अपग्रेड करने वाले डिवाइसों के लिए, इन्हें स्किप किया जाता है.
सीन | टेस्ट का नाम | पहला एपीआई लेवल | ब्यौरा |
---|---|---|---|
2_a | test_auto_flash | 33 | इससे पुष्टि होती है कि गहरे रंग वाले सीन में, फ़्लैश अपने-आप चालू हो जाता है. |
2_b | test_yuv_jpg_capture_sameness | 33 | इससे पुष्टि होती है कि YUV और JPEG अब भी बिट-वाइज़ एक जैसे हैं. |
scene2_a/test_auto_flash.py
Android 13 में test_auto_flash
टेस्ट जोड़ा गया है.
पैरामीटर
flash
: अगर फ़्लैश उपलब्ध नहीं है, तो यह टेस्ट को स्किप कर देता है.
Method
यह टेस्ट, ऑटो-फ़्लैश के लिए कैप्चर करने का अनुरोध कॉन्फ़िगर करता है. साथ ही, फ़्लैश इवेंट की ज़रूरत वाली कोई सीन दिखाता है. टेस्ट रिग और टैबलेट की लाइट बंद कर दी गई है, ताकि ऑटो-एक्सपोज़र एल्गोरिदम के लिए गहरे रंग वाला सीन दिखाया जा सके. इस टेस्ट में, ऑटो-फ़्लैश की सुविधा चालू करके NUM_FRAMES
कैप्चर की एक सीरीज़ कॉन्फ़िगर की जाती है. अगर AE_STATE
सेटिंग से FLASH_REQUIRED
मिलता है, तो टेस्ट से यह पुष्टि होती है कि कैप्चर में फ़्लैश फ़ायर किया गया है.
लाइटिंग को मैन्युअल तरीके से कंट्रोल किया जा सकता है. इसके अलावा, इसे अपने-आप कंट्रोल करने के लिए, Arduino कंट्रोलर का इस्तेमाल किया जा सकता है. इस कंट्रोलर में, अपने-आप होने वाली टेस्टिंग के लिए लाइटिंग कंट्रोल की सुविधा जोड़ी गई है. नए यूटिलिटी फ़ोल्डर lighting_control_utils
में, टेस्ट में लाइटिंग को कंट्रोल करने वाला कोड होता है.
scene2_a/test_yuv_jpeg_capture_sameness.py
Android 13 में test_yuv_jpeg_capture_sameness
टेस्ट जोड़ा गया है.
पैरामीटर
streamUseCase
: इससे पता चलता है कि कैमरा, स्ट्रीम करने की सुविधा के साथ काम करता है या नहीं.android.jpeg.quality
: JPEG क्वालिटी को 100 पर सेट करता है.
Method
इस टेस्ट में, सबसे ज़्यादा इस्तेमाल किए जाने वाले YUV और JPEG फ़ॉर्मैट का इस्तेमाल करके दो इमेज कैप्चर की जाती हैं. इनका आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) सबसे बड़े JPEG फ़ॉर्मैट के बराबर होता है. साथ ही, इनका रिज़ॉल्यूशन 1920x1440 से ज़्यादा नहीं होता. यह कुकी, jpeg.quality
को 100 पर सेट करती है और डुअल सर्फ़ेस अनुरोध को कैप्चर करती है. इसके बाद, यह दोनों इमेज को RGB ऐरे में बदलता है और दोनों इमेज के बीच 3D रूट
मीन स्क्वेयर (आरएमएस) अंतर का हिसाब लगाता है. अंतर की स्वीकार्य सीमा 1% पर सेट है.
वीडियो टेस्टिंग
Camera ITS में, Android 13 में वीडियो की टेस्टिंग के लिए सहायता जोड़ी गई है.
Android 13 में ये टेस्ट जोड़े गए हैं:
सीन | टेस्ट का नाम | पहला एपीआई लेवल | ब्यौरा |
---|---|---|---|
4 | test_preview_stabilization_fov | 33 | इस कुकी से यह पुष्टि होती है कि स्टेबलाइज़ेशन की सुविधा चालू होने पर, वीडियो की झलक बहुत ज़्यादा नहीं कटती है. |
4 | test_video_aspect_ratio_and_crop | 33 | इससे वीडियो फ़ॉर्मैट के FoV, आसपेक्ट रेशियो, और क्रॉपिंग की पुष्टि होती है. |
sensor_fusion | test_preview_stabilition | 33 | इस कुकी से यह पुष्टि होती है कि झलक देखने के दौरान वीडियो को स्थिर करने की सुविधा काम कर रही है. |
sensor_fusion | test_video_stabilition | 33 | इस कुकी से पुष्टि होती है कि वीडियो स्टेबलाइज़ेशन की सुविधा काम कर रही है. |
scene4/test_preview_stabilization_fov.py
Android 13 में test_preview_stabilization_fov
टेस्ट जोड़ा गया है. इस टेस्ट में, झलक की सुविधा के लिए उपलब्ध साइज़ की जांच की जाती है. इससे यह पक्का किया जाता है कि FoV को गलत तरीके से न काटा गया हो.
Method
इस टेस्ट में दो वीडियो कैप्चर किए जाते हैं. एक में प्रीव्यू स्टेबलाइज़ेशन चालू होता है और दूसरे में बंद होता है. हर वीडियो से एक फ़्रेम चुना जाता है और उसका विश्लेषण किया जाता है. इससे यह पक्का किया जाता है कि दोनों वीडियो में FoV में बदलाव, तय की गई सीमाओं के अंदर हों.
खास तौर पर, यह टेस्ट इन पैरामीटर की जांच करता है. इसमें, प्रीव्यू को स्थिर करने की सुविधा चालू और बंद, दोनों स्थितियों में जांच की जाती है:
- सर्कल का गोल आकार एक जैसा रहता है.
- सर्कल का सेंटर स्थिर रहता है.
- सर्कल का साइज़ 20% से ज़्यादा नहीं बदलता. इसका मतलब है कि FoV में ज़्यादा से ज़्यादा 20% का बदलाव होता है.
scene4/test_video_aspect_ratio_and_crop.py
Android 13 में test_video_aspect_ratio_and_crop
टेस्ट जोड़ा गया है. test_aspect_ratio_and_crop
स्टिल कैप्चर के लिए किए जाने वाले टेस्ट की तरह, यह टेस्ट भी वीडियो के साथ काम करने वाले फ़ॉर्मैट की जांच करता है. इससे यह पक्का किया जाता है कि वीडियो फ़्रेम को गलत तरीके से न खींचा गया हो और न ही काटा गया हो.
सेल्फ़-रिपोर्ट की गई वीडियो क्वालिटी की जांच की जाती है. इसके अलावा, अगर कैमरा HLG10
वीडियो रिकॉर्ड करने की सुविधा के साथ काम करता है, तो 10-बिट वीडियो की जांच की जाती है.
Android 13 में, its_session_utils
में get_available_video_qualities
तरीका जोड़ा गया है. मौजूदा टेस्ट के साथ सामान्य कोड शेयर करने के लिए, Android 13 में दो नए यूटिलिटी फ़ंक्शन भी शामिल हैं: image_fov_utils
और video_processing_utils
.
Method
इस टेस्ट में, RAW फ़ॉर्मैट में रेफ़रंस इमेज कैप्चर की जाती है. अगर RAW फ़ॉर्मैट काम नहीं करता है, तो सबसे ज़्यादा रिज़ॉल्यूशन वाले JPEG फ़ॉर्मैट में इमेज कैप्चर की जाती है. रेफ़रंस इमेज से, सर्कल का साइज़ और जगह तय की जाती है. इसके बाद, सभी वीडियो क्वालिटी में छोटे वीडियो बनाए जाते हैं. फ़ाइनल रेफ़रंस फ़्रेम, हर वीडियो क्वालिटी से निकाला जाता है. रेफ़रंस फ़्रेम से, हर वीडियो क्वालिटी के लिए फ़ील्ड-ऑफ़-व्यू (FoV), सेंटरिंग (क्रॉप), और आसपेक्ट रेशियो का हिसाब लगाया जाता है.
FoV का हिसाब लगाने के लिए, टेस्ट में वीडियो फ़्रेम के सर्कल के साइज़ की तुलना, रेफ़रंस इमेज और वीडियो फ़ॉर्मैट के साइज़ से हिसाब लगाए गए सर्कल के साइज़ से की जाती है. क्रॉप की जांच के लिए, टेस्ट में वीडियो फ़्रेम के सेंटर में मौजूद हिस्से की तुलना, रेफ़रंस इमेज के सेंटर में मौजूद हिस्से से की जाती है. आस्पेक्ट रेशियो की जांच के लिए, सीन का इस्तेमाल किया जाता है. यह सीन, सफ़ेद बैकग्राउंड पर मौजूद एक बड़ा काला सर्कल होता है. इस टेस्ट से, सर्कल के आस्पेक्ट रेशियो का पता चलता है. साथ ही, यह पुष्टि की जाती है कि फ़्रेम में कोई गड़बड़ी नहीं है.
sensor_fusion/test_preview_stabilization.py
Android 13 में test_preview_stabilization
टेस्ट जोड़ा गया है. यह टेस्ट, 1920x1080 तक की सभी क्वालिटी में झलक देखने की सुविधा की जांच करता है. इस टेस्ट में, सेंसर फ़्यूज़न टेस्ट रिग का इस्तेमाल किया जाता है. इसके लिए, सेंसर फ़्यूज़न कंट्रोलर के नए वर्शन 2 या Arduino कंट्रोलर के पुराने वर्शन के फ़र्मवेयर को अपग्रेड करना ज़रूरी है. नए कंट्रोलर के बारे में ज़्यादा जानने के लिए, हार्डवेयर से जुड़े अपडेट और नई सुविधाएं लेख पढ़ें.
Method
फ़ोन को धीरे-धीरे करीब 15 डिग्री के कोण पर घुमाया जाता है. इस दौरान, वीडियो की झलक देखने के लिए स्टेबलाइज़ेशन की सुविधा चालू होती है. इसके बाद, इमेज के रोटेशन की तुलना, जायरोस्कोप के रोटेशन से की जाती है.
sensor_fusion/test_video_stabilization.py
Android 13 में test_video_stabilization
टेस्ट जोड़ा गया है. यह टेस्ट, 1920x1080 तक की वीडियो क्वालिटी के साथ काम करता है. QCIF के कम रिज़ॉल्यूशन वाले वीडियो
की क्वालिटी को शामिल नहीं किया जाता. इस टेस्ट में, सेंसर फ़्यूज़न टेस्ट रिग का इस्तेमाल किया जाता है. इसके लिए, सेंसर फ़्यूज़न कंट्रोलर के नए वर्शन 2 या Arduino कंट्रोलर के पुराने वर्शन के फ़र्मवेयर को अपग्रेड करना ज़रूरी है. नए कंट्रोलर के बारे में ज़्यादा जानने के लिए, हार्डवेयर से जुड़े अपडेट और नई सुविधाएं लेख पढ़ें.
Method
टेस्ट रिग, फ़ोन को करीब 15 डिग्री के कोण पर धीरे-धीरे घुमाता है. इस दौरान, प्रीव्यू को स्थिर करने की सुविधा चालू रहती है. इसके बाद, इमेज के रोटेशन की तुलना, जायरोस्कोप के रोटेशन से की जाती है.
हार्डवेयर से जुड़े अपडेट और नई सुविधाएं
Android 13 में, Arduino पर आधारित revision 2 सेंसर फ़्यूज़न कंट्रोलर को अपग्रेड किया गया है. इस अपग्रेड में, हार्डवेयर और फ़र्मवेयर, दोनों में बदलाव शामिल हैं. अपग्रेड करने के बाद, कंट्रोलर रोटेशन की स्पीड और लाइटनिंग कंट्रोल सेट कर सकता है. अपग्रेड में एक नई शील्ड भी शामिल है (पहली इमेज में दिखाई गई है). इसमें रोटेशन के तीन चैनल और लाइट कंट्रोल के तीन चैनल मिलते हैं.
पहली इमेज. रोटेशन और लाइटिंग कंट्रोल के साथ Arduino शील्ड rev2.0
इसके अलावा, Android 13 के लिए, रोटेशन की स्पीड कंट्रोल करने की सुविधा चालू करने के लिए, मौजूदा कंट्रोलर के फ़र्मवेयर को अपडेट करना ज़रूरी है. इस फ़र्मवेयर को यहां से डाउनलोड किया जा सकता है:
नए कंट्रोलर के बारे में ज़्यादा जानने के लिए, Android 13 का सेंसर फ़्यूज़न कंट्रोलर लेख पढ़ें.
फ़ोल्ड किए जा सकने वाले डिवाइसों पर टेस्टिंग से जुड़ी सहायता
Android 13 में, फ़ोल्ड किए जा सकने वाले डिवाइसों के लिए टेस्टिंग की सुविधा शामिल है. फ़ोल्ड किए जा सकने वाले डिवाइसों के लिए, मल्टी-कैमरा एपीआई चालू करने के लिए, टेस्टिंग के दौरान फ़ोन की स्थिति (Folded
या Unfolded
) ज़रूरी है.
सभी DUT के लिए, फ़ोन की स्थिति की पोलिंग की सुविधा चालू करने के लिए, DUT को होस्ट से कनेक्ट करने के बाद, यह adb कमांड चलाएँ. इसमें फ़ोल्ड नहीं किए जा सकने वाले फ़ोन भी शामिल हैं.
adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier