تكوينات الدفق

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

تنفيذ المرجع

هناك تنفيذ مرجعي من جانب البائع لتدفقات التكوين الموصى بها وواجهة برمجة التطبيقات للاستعلام عن ميزات تركيبة الدفق. يمكنك العثور على هذا التطبيق في QCamera3HWI.cpp

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

على الرغم من أن StreamConfigurationMap يوفر معلومات تكوين دفق شاملة لعملاء الكاميرا ، إلا أنه لا يوفر أي معلومات حول تأثيرات الكفاءة أو الطاقة أو الأداء لاختيار دفق على آخر. يمكن لعملاء الكاميرا الاختيار بحرية من بين جميع تكوينات الدفق الممكنة ، ولكن في كثير من الحالات ، يؤدي ذلك إلى استخدام العملاء تكوينات الكاميرا دون المستوى الأمثل والتطبيقات التي تقوم بإجراء عمليات بحث شاملة تستغرق وقتًا طويلاً.

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

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

تظل جميع الاختبارات بدون تغيير ولا يتم تخفيفها بناءً على تكوينات البث الموصى بها.

تكوينات الدفق الموصى بها التي يوفرها تطبيق الكاميرا اختيارية ويمكن لعميل الكاميرا تجاهلها.

التنفيذ

اتبع هذه الخطوات لتنفيذ هذه الميزة.

إدخالات البيانات الوصفية

لتمكين هذه الميزة ، يجب أن يقوم Camera HAL بتعبئة إدخالات البيانات الأولية الثابتة التالية:

  • android.scaler.availableRecommendedStreamConfigurations : المجموعة الفرعية الموصى بها من تكوينات الدفق لحالات استخدام محددة. يستخدم الإعلان صورًا نقطية بسيطة تشير إلى حالات الاستخدام المقترحة في شكل [1 << PREVIEW | 1 << RECORD..] . تعمل حالات الاستخدام على توسيع المجموعة العادية (التنسيق والعرض والارتفاع والإدخال) بإدخال إضافي واحد. يحظر استخدام حالات الاستخدام العام غير الموجودة أو أي وحدات بت أخرى تم تعيينها ضمن النطاق [PUBLIC_END, VENDOR_START] .

    يتم تخزين هذه المعلومات في علامة البيانات الوصفية availableRecommendedStreamConfigurations .

    يوضح المثال التالي مصفوفة لتكوين دفق موصى به لجهاز كاميرا يدعم فقط 4K و 1080 بكسل ، حيث يُفضل كلا القرارين لتسجيل الفيديو ولكن يُقترح 1080 بكسل فقط للمعاينة.

    [3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT),
    1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
    
  • android.depth.availableRecommendedDepthStreamConfigurations (متوفر فقط إذا كان مدعومًا بواسطة الجهاز): تكوينات تدفق مساحة البيانات الموصى بها للعمق المقترحة لجهاز الكاميرا هذا. على غرار إدخال البيانات الوصفية أعلاه ، تشير الصورة النقطية الإضافية لحالة الاستخدام إلى حالات الاستخدام المقترحة.

    يتم تخزين هذه المعلومات في علامة البيانات الوصفية availableRecommendedInputOutputFormatsMap .

  • android.scaler.availableRecommendedInputOutputFormatsMap .

    يتم تخزين هذه المعلومات في علامة البيانات الوصفية availableRecommendedDepthStreamConfigurations .

هذه المعلومات متاحة لعملاء الكاميرا من خلال واجهة برمجة تطبيقات أوصى ستريمكونفيجوريشن ماب.

حالات الاستخدام المطلوبة

يجب توفير تكوينات الدفق الموصى بها لحالات الاستخدام التالية وتلبية المتطلبات المقابلة:

حالة الاستخدام المتطلبات
PREVIEW يجب أن تتضمن المعاينة فقط تكوينات دفق معالجة غير متوقفة بتنسيقات إخراج مثل YUV_420_888 و IMPLEMENTATION_DEFINED .
RECORD يجب أن يشتمل سجل الفيديو على تكوينات البث التي تطابق ملفات تعريف الوسائط المدعومة المُعلن عنها بتنسيق IMPLEMENTATION_DEFINED .
VIDEO_SNAPSHOT يجب أن تتضمن لقطة الفيديو تكوينات دفق لا تقل عن الحد الأقصى لدقة التسجيل وفقط مع مجموعة تنسيق / مساحة بيانات BLOB + DATASPACE_JFIF (JPEG). يجب ألا تتسبب التكوينات في حدوث خلل في المعاينة ويجب أن تكون قادرة على العمل بمعدل 30 إطارًا في الثانية.
SNAPSHOT يجب أن تتضمن تكوينات تدفق اللقطة واحدة على الأقل بحجم قريب من android.sensor.info.activeArraySize مع مجموعة تنسيق / مساحة بيانات BLOB + DATASPACE_JFIF (JPEG). مع الأخذ في الاعتبار القيود المفروضة على نسبة العرض إلى الارتفاع والمحاذاة والقيود الأخرى الخاصة بالبائع ، يجب ألا تقل مساحة الحد الأقصى المقترح للحجم عن 97٪ من مساحة مجموعة أجهزة الاستشعار.
ZSL (إذا كان مدعومًا) إذا كان جهاز الكاميرا مدعومًا ، فيجب الإعلان عن تكوينات دفق الإدخال الموصى بها فقط مع تنسيقات الإخراج الأخرى المعالجة أو المتوقفة.
RAW (إذا كان مدعومًا) في حالة دعم جهاز الكاميرا ، يجب أن تتضمن تكوينات الدفق الأولية الموصى بها فقط تنسيقات الإخراج المستندة إلى RAW.

حالات استخدام أخرى

يمكنك توفير تدفقات التكوين الإضافية الموصى بها لحالات الاستخدام الخاصة بالتنفيذ الخاص بك.

تصديق

لاختبار تنفيذك لتدفقات التكوين الموصى بها ، قم بإجراء اختبارات CTS و VTS التالية:

API للاستعلام عن مجموعات الدفق

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

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

يمكنك اختيار دعم هذه الميزة من خلال تنفيذ استدعاء HIDL API إضافي واحد في Camera HAL.

التنفيذ

لدعم واجهة برمجة التطبيقات للاستعلام عن مجموعات الدفق ، يجب أن يوفر Camera HAL isStreamCombinationSupported لواجهة isStreamCombinationSupported HIDL API. تتحقق هذه الواجهة مما إذا كان جهاز الكاميرا يدعم مجموعة دفق كاميرا محددة.

عند الاتصال ، يجب أن تُرجع واجهة برمجة التطبيقات أحد رموز الحالة التالية:

  • OK : نجح طلب مجموعة الدفق.
  • METHOD_NOT_SUPPORTED : جهاز الكاميرا لا يدعم استعلام الدفق المركب.
  • INTERNAL_ERROR : لا يمكن إكمال استعلام مجموعة الدفق بسبب خطأ داخلي.

تعود واجهة برمجة التطبيقات (API) بشكل صحيح إذا تم دعم مجموعة الدفق. خلاف ذلك ، فإنها ترجع خطأ.

يستخدم إطار العمل واجهة برمجة التطبيقات العامة isSessionConfigurationSupported للتحقق مما إذا كان تكوين الجلسة المعين مدعومًا من قبل جهاز الكاميرا.

يجب ألا يكون للمكالمات إلى API أي آثار جانبية على التشغيل العادي للكاميرا. يجب ألا تغير مكالمات API أي حالات داخلية أو تبطئ أداء الكاميرا. تأكد من أنه بعد نجاح Camera HAL في التحقق من صحة مجموعة الدفق ، يمكن لعملاء الكاميرا تكوين مجموعة الدفق بنجاح. لتجنب المشكلات ، تأكد من أن التطبيق لا يخزن أي معلومات أثناء استعلامات مجموعة الدفق ، أو يغير حالته الداخلية ، أو يشارك في عمليات تستغرق وقتًا طويلاً.

تصديق

للتحقق من صحة هذه الميزة ، قم بتشغيل حالات اختبار الكاميرا CTS و VTS التالية:

وحدات الكاميرا CTS:

كاميرا VTS:

VtsHalCameraProviderV2_4TargetTest.cpp