ملاحظات إصدار "حزمة اختبار صور الكاميرا" لنظام التشغيل Android 13

يتضمّن إصدار Android 13 عددًا من التغييرات على Camera ITS. بالإضافة إلى التغييرات المتزايدة، مثل إصدارات Python والحِزم المعدَّلة وتعديلات الأجهزة الاختبارية، يتيح Android 13 اختبار الفيديو.

تلخّص هذه الصفحة التغييرات في واجهة برمجة التطبيقات لنظام ITS للكاميرا في الإصدار 13 من نظام التشغيل Android. تندرج التغييرات ضمن سبع فئات عامة:

إصدارات Python والحِزم

يتوافق Android 13 مع إصدارات Python التالية إلى جانب إصدارات Python والمكتبات المتوافقة في Android 12:

إضافات ملف الإعداد

بسبب إضافة ميزة التحكّم في الإضاءة لاختبار test_auto_flash.py، يحتاج ملف config.yml إلى مَعلمتَين إضافيتَين لوحدة التحكّم و قناة الإضاءة. لتحديد ما إذا كان الجهاز الذي يتم اختباره (DUT) قابلاً للطي أم لا، يتطلب ملف 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. إذا لم يتمكّن الفحص من العثور على تنسيق مشترك بين تنسيق RAW الخاص بجهاز الاستشعار وتنسيقات الالتقاط بتنسيق YUV، يقارن الفحص عملية الالتقاط بتنسيق RAW بعملية الالتقاط الأكبر بتنسيق YUV حتى إذا كانت نسب العرض إلى الارتفاع مختلفة.

scene2_a/test_faces.py

تم إعادة تنظيم test_faces إلى test_num_faces.

المشهد2_a/test_num_faces.py

يتعامل اختبار test_num_faces مع اقتصاص أداة الاستشعار ويضع مستطيلات الوجه بشكل صحيح على اللقطات التي تم اقتصاصها من خلال الكاميرا UW.

scene3/test_lens_position.py

تم إيقاف اختبار test_lens_position نهائيًا في Android 13.

المشهد 6/test_zoom.py

تمّت إعادة صياغة اختبار test_zoom لتسهيل اختبار أنظمة الكاميرات التي تتضمّن ثلاث كاميرات أو أربع كاميرات. إذا اجتازت الكاميرا الاختبار بشكل صحيح على نطاق نسبة تكبير 10x، ينتهي الاختبار بشكل صحيح. يتيح ذلك إجراء اختبار التكبير/التصغير على مسافة واحدة للرسم البياني.

المشهد_change/test_scene_change.py

تم إيقاف اختبار test_scene_change نهائيًا في Android 13.

الاختبارات الجديدة المستندة إلى الأجهزة اللوحية

يتضمّن نظام 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: يتم تخطّي الاختبار في حال عدم توفّر الفلاش.

الطريقة

يضبط الاختبار طلب الالتقاط للفلاش التلقائي ويعرض مشهدًا يتطلب حدث فلاش. يتم إطفاء الإضاءة في جهاز الاختبار والجهاز اللوحي لعرض مشهد مظلم لخوارزمية التعرّض التلقائي. في الاختبار، يتم ضبط سلسلة من التقاطات NUM_FRAMES مع تفعيل الفلاش التلقائي. إذا عرض الإعداد AE_STATE FLASH_REQUIRED، يتحقّق الاختبار من تنشيط الفلاش أثناء الالتقاط.

ويمكن التحكّم بالإضاءة يدويًا عندما يُطلب منك ذلك، أو تلقائيًا باستخدام وحدة تحكّم Aruino مع إمكانية التحكّم في الإضاءة من أجل إجراء الاختبارات الآلية. يُجمِّع مجلد الأدوات الجديد lighting_control_utils الرموز البرمجية للتحكّم في الإضاءة في الاختبارات.

scene2_a/test_yuv_jpeg_capture_sameness.py

يضيف Android 13 test_yuv_jpeg_capture_sameness الاختبار.

المعلمات

  • streamUseCase: لتحديد ما إذا كانت الكاميرا تتيح استخدام حالة البث
  • android.jpeg.quality: لضبط جودة JPEG على 100

الطريقة

يُسجِّل هذا الاختبار صورتَين باستخدام أكبر تنسيقَين شائعَين من YUV وJPEG وبنسبة العرض إلى الارتفاع نفسها لأكبر تنسيق JPEG، ولا تتجاوز دقتهما ‎1920×1440. يضبط الاختبار jpeg.quality على 100 ويُسجِّل طلب سطحَين متضادَين. بعد ذلك، يتم تحويل كلتا الصورتَين إلى صفائف RGB وحساب الفرق في قياس RMS الثلاثي الأبعاد بين الصورتَين. تم تعيين فرق التفاوت على 1٪.

اختبار الفيديو

توفّر واجهة برمجة التطبيقات لاختبار الأداء (ITS) في الكاميرا إمكانية اختبار الفيديو في Android 13.

يضيف نظام Android 13 الاختبارات التالية:

المشهد اسم الاختبار المستوى الأول من واجهة برمجة التطبيقات الوصف
4 test_preview_stabilization_fov 33 التأكّد من أنّ معاينة الفيديو لا يتم اقتصاصها كثيرًا عند تفعيل ميزة تثبيت الصورة
4 test_video_aspect_ratio_and_crop 33 لتأكيد تنسيقات الفيديوهات بتنسيقات مختلفة، ونسبة العرض إلى الارتفاع، والاقتصاص
sensor_fusion test_preview_stabilition 33 لتأكيد عمل تثبيت المعاينة
sensor_fusion test_video_stabilition 33 تأكيد عمل ميزة "تثبيت صورة الفيديو"

المشهد4/test_preview_stabilization_fov.py

يضيف Android 13 test_preview_stabilization_fov الاختبار. يتحقّق هذا الاختبار من أحجام المعاينة المتوافقة للتأكّد من عدم اقتصاص صورة FoV بشكلٍ غير ملائم.

الطريقة

يُسجِّل الاختبار فيديوهَين، أحدهما مع تفعيل ميزة "تثبيت الصورة" في المعاينة والآخر مع إيقافها. ويتم اختيار إطار تمثيلي من كل فيديو، ويتم تحليله للتأكّد من أنّ التغييرات في مجال الرؤية في الفيديوهَين تتمثّل ضمن المواصفات.

على وجه التحديد، يتحقّق الاختبار من المَعلمات التالية مع تفعيل ميزة "تثبيت المعاينة" أو بدون تفعيلها:

  • يبقى استدارة الدائرة ثابتة.
  • يظلّ مركز الدائرة ثابتًا.
  • لا يتغيّر حجم الدائرة بأكثر من %20، ما يعني أنّ مجال الرؤية يتغيّر بنسبة %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 الطريقة get_available_video_qualities إلى its_session_utils. لمشاركة الرمز البرمجي المشترَك مع الاختبارات الحالية، يتضمّن Android 13 أيضًا دالتَي فائدة جديدتَين، وهما image_fov_utils وvideo_processing_utils.

الطريقة

يُسجِّل الاختبار صورة مرجعية بتنسيق RAW أو بتنسيق JPEG بأعلى دقة ممكنة إذا لم يكن تنسيق RAW متوافقًا. من الصورة المرجعية، يتم تحديد حجم الدائرة والموقع. يتم بعد ذلك التقاط فيديوهات قصيرة بكل مستويات الجودة المتاحة. يتم استخراج اللقطة المرجعية النهائية من كل جودة فيديو. من الإطار المرجعي، يتم احتساب مجال الرؤية (FoV) والمركز (اقتصاص) ونسبة العرض إلى الارتفاع لكل جودة فيديو.

بالنسبة إلى حساب FoV، يقارن الاختبار حجم دائرة إطار الفيديو بحجم الدائرة المحسوبة من الصورة المرجعية وحجم تنسيق الفيديو. للتحقّق من الاقتصاص، يقارن الاختبار مركز إطار الفيديو بمركز الصورة المرجعية. للتحقّق من نسبة العرض إلى الارتفاع، يستخدم الاختبار المشهد الذي يمثّل دائرة سوداء كبيرة على خلفية بيضاء، ويحدّد نسبة العرض إلى الارتفاع للدائرة ويتأكّد من أنّ اللقطة ليست مشوّهة.

sensor_fusion/test_preview_stabilization.py

يضيف Android 13 اختبار test_preview_stabilization، الذي يختبر جميع درجات المعاينة المتوافقة حتى 1920x1080. يستخدم الاختبار منصة اختبار دمج أدوات الاستشعار ويتطلب استخدام وحدة التحكّم الجديدة في الإصدار 2 من دمج أدوات الاستشعار أو ترقية البرامج الثابتة لإصدارات Arduino السابقة من وحدة التحكّم. لمزيد من التفاصيل حول وحدة التحكُّم الجديدة، يُرجى الاطِّلاع على تحديثات الأجهزة والإضافات.

الطريقة

يتم تحريك الهاتف ببطء على زاوية تبلغ 15 درجة تقريبًا مع تفعيل تثبيت المعاينة. بعد ذلك، تتم مقارنة دوران الصور بالدوران في أداة الاستشعار الدوراني.

Sense_fusion/test_video_stabilization.py

يضيف نظام Android 13 اختبار test_video_stabilization، الذي يختبر جودة الفيديوهات المتوافقة حتى 1920×1080. يتم استبعاد الفيديوهات ذات الدقة المنخفضة بتنسيق QCIF. يستخدم الاختبار جهاز اختبار انصهار أجهزة الاستشعار ويتطلب الإصدار الجديد من وحدة التحكّم بالدمج بمستشعر الإصدار 2 أو ترقية البرامج الثابتة لإصدارات وحدة تحكم Arduino السابقة. لمزيد من التفاصيل حول وحدة التحكّم الجديدة، يُرجى الاطّلاع على تعديلات الأجهزة وإضافاتها.

الطريقة

يحرك جهاز الاختبار الهاتف ببطء بزاوية 15 درجة تقريبًا مع تفعيل ميزة تثبيت المعاينة. ثم تتم مقارنة دوران الصور بدوران الجيروسكوب.

تحديثات الأجهزة وإضافاتها

يتضمّن نظام التشغيل Android 13 ترقية إلى الإصدار 2 من وحدة التحكّم في دمج البيانات من مختلف الحساسات المستندة إلى Arduino. تشمل هذه الترقية التغييرات على كل من الأجهزة والبرامج الثابتة. تتيح الترقية لجهاز التحكّم ضبط سرعة الدوران والتحكّم في الإضاءة. تتضمّن الترقية أيضًا درعًا جديدًا (كما هو موضّح في الشكل 1)، والذي يقدّم ثلاث قنوات ل التناوب وثلاث قنوات للتحكّم في الإضاءة.

Arduino shield rev2.0

الشكل 1: لوحة Arduino shield rev2.0 مع التحكّم في الإضاءة والدوران

بالإضافة إلى ذلك، بالنسبة إلى الإصدار 13، يجب تحديث البرامج الثابتة لأجهزة التحكّم الحالية لتفعيل التحكّم في سرعة الدوران. يمكن تنزيل هذا الإصدار من البرامج الثابتة من:

للمزيد من المعلومات حول وحدة التحكّم الجديدة، يُرجى الاطّلاع على وحدة التحكّم بالدمج مع أداة استشعار Android 13.

دعم الاختبار على الأجهزة القابلة للطي

يتيح نظام Android 13 اختبار التطبيقات على الأجهزة القابلة للطي. لتفعيل واجهة برمجة التطبيقات للكاميرات المتعددة للأجهزة القابلة للطي، يجب تحديد حالة الهاتف (Folded أو Unfolded) أثناء الاختبار. لتفعيل الاستطلاع لحالة الهاتف لجميع الأجهزة الاختبارية، بما في ذلك الهواتف غير القابلة للطي، يمكنك تنفيذ الأمر adb التالي بعد توصيل الجهاز الاختباري بالمضيف.

adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier