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

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

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

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

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

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

بسبب إضافة ميزة التحكّم في الإضاءة لاختبار 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.

scene2_a/test_num_faces.py

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

scene3/test_lens_position.py

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

scene6/test_zoom.py

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

scene_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، يتحقق الاختبار من أنّه يتم تفعيل الفلاش في اللقطات.

يمكن التحكّم في الإضاءة يدويًا عند ظهور طلب بذلك، أو تلقائيًا باستخدام معالج تحكم 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

الطريقة

يُسجِّل هذا الاختبار صورتَين باستخدام أكبر تنسيقَين شائعَين من 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 تأكيد عمل ميزة "تثبيت صورة الفيديو"

scene4/test_preview_stabilization_fov.py

يضيف Android 13 test_preview_stabilization_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) والمركز (اقتصاص) ونسبة العرض إلى الارتفاع لكل جودة فيديو.

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

sensor_fusion/test_preview_stabilization.py

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

الطريقة

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

sensor_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