إعدادات البث

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

التنفيذ المرجعي

يتوفّر تنفيذ مرجعي من جهة المورّد لعمليات بث الإعدادات المقترَحة وواجهة برمجة التطبيقات لطلب البحث عن ميزات دمج عمليات البث. يمكنك العثور على هذا التنفيذ في QCamera3HWI.cpp

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

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

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

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

تبقى جميع الاختبارات بدون تغيير ولا يتم تخفيفها استنادًا إلى إعدادات البث المقترَحة.

إنّ إعدادات البث المقترَحة التي يوفّرها تنفيذ الكاميرا هي إعدادات اختيارية ويمكن لبرنامج الكاميرا تجاهلها.

التنفيذ

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

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

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

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

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

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

    [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.

تتوفّر هذه المعلومات لبرامج الكاميرا من خلال واجهة برمجة التطبيقات RecommendedStreamConfigurationMap.

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

يجب توفير إعدادات البث المقترَحة لحالات الاستخدام التالية واستيفاء المتطلبات ذات الصلة:

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

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

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

التحقُّق

لاختبار عملية تنفيذك لعمليات بث الإعدادات المقترَحة، شغِّل اختبارات CTS وVTS التالية:

واجهة برمجة التطبيقات للاستعلام عن مجموعات الميزات

بدءًا من Android 15، يوفّر نظام التشغيل Android واجهة برمجة تطبيقات للاستعلام عن مجموعات الميزات. تتيح واجهة برمجة التطبيقات هذه لبرامج الكاميرا العميلة الاستعلام عمّا إذا كان الجهاز يتيح استخدام مجموعة محدّدة من الميزات. هذه الواجهة ضرورية لأنّ واجهة برمجة التطبيقات camera2 API تصنّف الميزات المختلفة، مثل دقة 4K و60 إطارًا في الثانية وتسجيل الفيديو بنطاق عالي الديناميكية (HDR) وUltraHDR والتكبير بزاوية عريضة جدًا والتثبيت، على أنّها عناصر تحكّم متعامدة.

المتطلبات

لإتاحة استخدام واجهة برمجة التطبيقات للاستعلام عن مجموعات الميزات، يجب أن تنفّذ طبقة تجريد الأجهزة (HAL) للكاميرا الإصدار 3 من واجهة ICameraDevice. للحصول على التفاصيل، راجِع قسم التنفيذ.

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

بالإضافة إلى ذلك، بالنسبة إلى فئة أداء الوسائط 15، يجب أن تتيح الكاميرا الخلفية الأساسية تثبيت المعاينة باستخدام معاينة HLG10 بمعدل 10 بت بدقة 1080 بكسل و720 بكسل، بالإضافة إلى صور JPEG بأقصى حجم. لمزيد من التفاصيل حول هذه المتطلبات، يُرجى الاطّلاع على القسم 2.2.7.2. الكاميرا في مستند تعريف الجهاز المتوافق (CDD)

التنفيذ

لإتاحة استخدام واجهة برمجة التطبيقات للاستعلام عن مجموعات الميزات، عليك تنفيذ واجهات برمجة التطبيقات التالية للاستعلام عن مجموعات الميزات في الإصدار 3 من ICameraDevice:

  • constructDefaultRequestSettings: تنشئ الإعدادات التلقائية لنوع CaptureRequest محدّد. يمكن أن يستخدم HAL عملية تنفيذ ICameraDeviceSession::constructDefaultRequestSettings.

  • isStreamCombinationWithSettingsSupported: للتحقّق من توافق الجهاز مع مجموعة محدّدة من بث الكاميرا مع مَعلمات الجلسة ومفاتيح CaptureRequest الإضافية. يجب أن تعرض true للتركيبات المتوافقة وfalse لتركيبات الميزات غير المتوافقة. يمكن لطبقة تجريد الأجهزة استخدام تنفيذ isStreamCombinationSupported وإضافة إمكانية التحقّق من إعدادات CaptureRequest التي يتم تمريرها في sessionParams.

  • getSessionCharacteristics: تأخذ هذه السمة مجموعة متوافقة من عمليات البث مع مَعلمات الجلسة وتعرض الخصائص الخاصة بالجلسة.

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: تعرض هذه السمة جميع إعدادات الجلسة الشائعة الاستخدام. ويتم التحقّق من صحة عمليات الضبط هذه من خلال اختبارات الامتثال.

بالنسبة إلى الإصدارات الأقدم من الإصدار 3 لواجهة ICameraDevice، يجب أن تنفّذ طبقة تجريد الأجهزة (HAL) الطريقة isStreamCombinationSupported.

لمزيد من المعلومات حول مجموعات الميزات التي تستعلم عنها واجهة برمجة التطبيقات، يُرجى الاطّلاع على المستندات حول sessionConfigurationQueryVersion في system/media/camera/docs/metadata_definitions.xml.

للحصول على نموذج تنفيذ لهذه الميزة، يُرجى الاطّلاع على hardware/google/camera/devices/EmulatedCamera/hwl/.

واجهات برمجة التطبيقات العامة

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

  • CameraDevice.CameraDeviceSetup: تمثيل محدود لـ CameraDevice يمكن استخدامه للاستعلام عن مجموعات من السمات بدون الحاجة إلى مثيل CameraDevice.

  • getCameraDeviceSetup: يحصل على عنصر CameraDeviceSetup لمعرّف كاميرا معيّن إذا كانت الدالة isCameraDeviceSetupSupported تعرض القيمة true.

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: يتيح طلبات البحث التي تجمع بين الميزات إذا كانت هذه القيمة VANILLA_ICE_CREAM أو أعلى.

  • OutputConfiguration: فئة تصف ناتج الكاميرا، ويمكن أن تحتوي على مساحة عرض مؤجّلة لأغراض طلبات دمج الميزات التي تتطلّب وقت استجابة منخفضًا.

  • SessionConfiguration: فئة أدوات تصف إعدادات الجلسة، بما في ذلك مجموعات البث ومَعلمات الجلسة، والتي يمكن استخدامها لطلبات البحث عن مجموعات الميزات.

التحقُّق

للتحقّق من صحة تنفيذ هذه الميزة، استخدِم اختبارات VTS وCTS وCamera ITS (أداة التحقّق من صحة CTS) التالية:

VTS

CTS

Camera ITS