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

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

تنفيذ المرجع

هناك تنفيذ مرجعي من جانب البائع لتدفقات التكوين الموصى بها وواجهة برمجة التطبيقات للاستعلام عن ميزات تركيبة الدفق. يمكنك العثور على هذا التنفيذ على 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 (متوفر فقط في حالة دعم الجهاز): إن الموصى بها عمق dataspace تكوينات تيار المقترحة لهذا الجهاز الكاميرا. على غرار إدخال البيانات الوصفية أعلاه ، تشير الصورة النقطية الإضافية لحالة الاستخدام إلى حالات الاستخدام المقترحة.

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

  • android.scaler.availableRecommendedInputOutputFormatsMap (متوفر فقط في حالة دعم الجهاز): إن رسم الخرائط من الصور الموصى بها التي اقترحت لهذا الجهاز كاميرا للتيارات المدخلات، إلى تنسيقات الإخراج يناظرها.

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

متاح للعملاء الكاميرا هذه المعلومات من خلال RecommendedStreamConfigurationMap API.

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

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

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

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

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

تصديق

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

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

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

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

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

تطبيق

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

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

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

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

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

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

تصديق

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

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

كاميرا VTS:

VtsHalCameraProviderV2_4TargetTest.cpp