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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

يقدم 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 HIDL API. تتحقق هذه الواجهة مما إذا كان جهاز الكاميرا يدعم مجموعة دفق كاميرا محددة.

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

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

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

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

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

تصديق

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

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

كاميرا VTS:

VtsHalCameraProviderV2_4TargetTest.cpp