يتضمّن Android ميزات تتيح لعملاء الكاميرات لاختيار الكاميرا المثلى أحداث البث المباشر لحالات استخدام معيّنة وللتأكد من أنّ مجموعات بث معيّنة مع جهاز الكاميرا. تشير تهيئة مصدر البيانات إلى مصدر بيانات واحد بث الكاميرا المهيأ في جهاز الكاميرا ويشير مجموعة البث إلى مجموعة واحدة أو أكثر من مجموعات البث التي تم ضبطها في جهاز الكاميرا لمزيد من المعلومات على هذه الميزات، ويمكنك معرفة إعدادات البث المقترَحة واجهة برمجة التطبيقات لطلب مجموعات الميزات
التنفيذ المرجعي
هناك تنفيذ مرجعي من جانب المورّد للتهيئة المقترحة مصادر البيانات وواجهة برمجة التطبيقات لطلب البحث عن ميزات تركيبة مصادر البيانات. يمكنك العثور على هذا والتنفيذ في Qcamera3HWI.cpp
الإعدادات المقترَحة للبث
يمكن لمورّدي الكاميرات الإعلان عن إعدادات البث المقترَحة لحالات استخدام معيّنة لعملاء الكاميرات. يمكن أن تساعد إعدادات البث المقترَحة هذه، والتي تشكّل مجموعات فرعية من StreamConfigurationMap، عملاء الكاميرا في اختيار الإعدادات المثلى.
على الرغم من أنّ StreamConfigurationMap يقدّم معلومات شاملة عن إعدادات البث إلى عملاء الكاميرا، إلا أنّه لا يقدّم أي معلومات عن تأثيرات اختيار بث على حساب بث آخر من حيث الكفاءة أو الطاقة أو الأداء. يمكن لعملاء الكاميرا الاختيار بحرية من بين جميع إعدادات البث الممكنة، ولكن في كثير من الحالات، يؤدي ذلك إلى استخدام العميل لإعدادات الكاميرا والتطبيقات غير المثلى مما يؤدي إلى عمليات بحث شاملة تستغرق وقتًا طويلاً.
على سبيل المثال، على الرغم من أنّ بعض تنسيقات YUV التي تمت معالجتها مطلوبة ويجب أن تكون قد لا يكون جهاز الكاميرا متوافقًا في الأصل مع التنسيقات. ويؤدي ذلك إلى إجراء دورة معالجة إضافية لتحويل التنسيق، ما يقلل من الكفاءة. يمكن أن يؤثر أيضًا حجم الصورة ونسبة العرض إلى الارتفاع المقابلة لها في الأداء بالطريقة نفسها، ما يجعل بعض السمات مفضّلة من حيث القوة والأداء.
ليس من الضروري أن تكون خرائط إعدادات البث المقترَحة شاملة. مقارنةً بـ StreamConfigurationMap: يجب أن تلتزم خرائط الإعدادات المقترَحة بالمتطلبات الواردة في قسم التنفيذ ويمكن أن تتضمّن أيًا من التنسيقات أو الأحجام أو القيم الأخرى المتاحة في StreamConfigurationMap. لا يمكن تضمين التنسيقات أو الأحجام أو القيم الأخرى المخفية التي لا يمكن العثور عليها في StreamConfigurationMap في خرائط إعدادات البث المقترَحة.
تظل جميع الاختبارات بدون تغيير ولا يتم تخفيفها بناءً على الاقتراحات إعدادات البث
إنّ إعدادات البث المقترَحة التي يوفّرها تطبيق الكاميرا هي اختيارية ويمكن لبرنامج الكاميرا تجاهلها.
التنفيذ
اتّبِع الخطوات التالية لتطبيق هذه الميزة.
إدخالات البيانات الوصفية
لتفعيل هذه الميزة، يجب أن يملأ طبقة تجريد الأجهزة (HAL) الكاميرا الثابتة التالية إدخالات بيانات التعريف:
android.scaler.availableRecommendedStreamConfigurations
: مجموعة فرعية рекомендованных параметров настройки потока для конкретных случаев использования. يستخدم البيان ملفات بترميز ثنائي يشير إلى حالات الاستخدام المقترَحة في شكل[1 << PREVIEW | 1 << RECORD..]
. تُوسّع حالات الاستخدام مجموعة العناصر (التنسيق والعرض والارتفاع والإدخال) العادية بعنصر إضافي واحد. حالات استخدام عامة غير موجودة أو أي وحدات بت أخرى تم تعيينها ضمن النطاق[PUBLIC_END, VENDOR_START]
محظورة.يتم تخزين هذه المعلومات في علامة metadata (البيانات الوصفية)
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
(متوفّرة فقط إذا كان الجهاز متوافقًا:): مساحة البيانات التي ننصح بها بشأن العمق إعدادات البث المقترَحة لجهاز الكاميرا هذا تشبه أعلى إدخال البيانات الوصفية، تشير الصورة النقطية لحالة الاستخدام الإضافية إلى حالات الاستخدام.يتم تخزين هذه المعلومات في علامة metadata (البيانات الوصفية)
availableRecommendedInputOutputFormatsMap
.android.scaler.availableRecommendedInputOutputFormatsMap
(متاح فقط إذا كان الجهاز متوافقًا): ربط تنسيقات الصور المقترَحة التي يتم اقتراحها لجهاز الكاميرا هذا لملفات البث التي يتم إدخالها بتنسيقات الإخراج المقابلة لهايتم تخزين هذه المعلومات في علامة metadata (البيانات الوصفية)
availableRecommendedDepthStreamConfigurations
.
تتوفّر هذه المعلومات لعملاء الكاميرا من خلال واجهة برمجة التطبيقات RecommendedStreamConfigurationMap .
حالات الاستخدام المطلوبة
يجب تقديم إعدادات البث المقترَحة لحالات الاستخدام التالية والاستجابة للمتطلبات المقابلة:
حالة الاستخدام | المتطلبات |
---|---|
PREVIEW |
يجب أن تتضمّن المعاينة فقط إعدادات البث التي تمت معالجتها بدون توقف
بتنسيقات إخراج مثل YUV_420_888 و
IMPLEMENTATION_DEFINED . |
RECORD |
يجب أن يتضمّن سجلّ الفيديو إعدادات البث التي تتطابق مع ملفّات تعريف
الوسائط المتوافقة المُعلَن عنها بتنسيق IMPLEMENTATION_DEFINED . |
VIDEO_SNAPSHOT |
يجب أن تتضمّن لقطة الفيديو إعدادات مصادر بيانات تساوي على الأقل الحد الأقصى لدرجات دقة التسجيل، ويجب أن تكون هذه الإعدادات من النوع BLOB + DATASPACE_JFIF (JPEG) فقط. يجب ألا تؤدي الإعدادات إلى حدوث مشاكل في المعاينة، ويجب أن يكون بإمكانها التشغيل بمعدّل 30 لقطة في الثانية. |
SNAPSHOT |
يجب أن تتضمّن إعدادات بث اللقطة إعدادًا واحدًا على الأقل بحجم قريب
إلى android.sensor.info.activeArraySize مع كائن تخزين البيانات الثنائية الكبيرة +
تركيبة تنسيق DATASPACE_JFIF/مساحة بيانات (JPEG) مع الأخذ في الاعتبار
القيود المفروضة على نسبة العرض إلى الارتفاع والمحاذاة والقيود الأخرى الخاصة بالمورّد،
يجب ألا تقلّ مساحة الحد الأقصى للحجم المقترَح عن %97 من مساحة تنسيق ملف قاعدة قياس دقة
الاستشعار. |
ZSL (إذا كان ذلك متاحًا) |
إعدادات بث الإدخال المقترَحة إذا كان جهاز الكاميرا يتيحها يجب الإعلان عنه مع مخرجات أخرى تمت معالجتها أو توقفها والتنسيقات. |
RAW (إذا كان متاحًا) |
إذا كان جهاز الكاميرا يتيح ذلك، يجب أن تتضمّن إعدادات البث المباشر بتنسيق RAW المُقترَحة فقط تنسيقات الإخراج المستندة إلى RAW. |
حالات الاستخدام الأخرى
يمكنك تقديم مصادر إعدادات مقترَحة إضافية لحالات الاستخدام المرتبطة بتنفيذك.
التحقُّق
لاختبار تنفيذ مصادر بيانات الضبط المقترَحة، شغِّل اختبارات CTS وVTS التالية:
مجموعة أدوات اختبار التوافق:
ExtendedCameraCharacteristicsTest.java
الإحالات الناجحة للفيديو (VTS):
VtsHalCameraProviderV2_4TargetTest.cpp
واجهة برمجة التطبيقات الخاصة بمجموعات الميزات لطلب البحث
بدءًا من نظام التشغيل Android 15، يوفر نظام Android الأساسي واجهة برمجة تطبيقات للاستعلام عن مجموعات الميزات. تتيح واجهة برمجة التطبيقات هذه لعملاء الكاميرا الاستعلام عمّا إذا يمكن للجهاز توفير مجموعة محددة من الميزات. إنّ واجهة برمجة التطبيقات هذه ضرورية لأنّ واجهة برمجة التطبيقات Camera2 API تنشئ نماذج لميزات مختلفة، مثل 4K و60 لقطة في الثانية وتسجيل الفيديو بنطاق عالي الديناميكية (HDR) وUltraHDR والتكبير الفائق وميزة التثبيت كعناصر تحكّم متعامدة.
المتطلبات
لكي تتوافق واجهة برمجة التطبيقات مع طلبات البحث عن مجموعات الميزات، يجب أن تطبِّق طبقة HAL للكاميرا
الإصدار 3 من واجهة ICameraDevice
. لمعرفة التفاصيل، يُرجى الاطّلاع على القسم
التنفيذ.
عندما تكون واجهة برمجة التطبيقات متوافقة، يجب أن يكون تثبيت المعاينة رأسيًا
ميزات أخرى. يعني ذلك أنّه في أجهزة الكاميرا التي تتيح المعاينة
التثبيت، القيمة المعروضة isStreamCombinationWithSettingsSupported
يجب أن تكون القيمة نفسها لنسخة معينة عند تثبيت المعاينة
تعمل أم لا. ويقلل هذا من مساحة البحث لطلبات بحث تركيبة الميزات.
بالإضافة إلى ذلك، بالنسبة إلى فئة أداء الوسائط 15، يجب أن تتيح الكاميرا الخلفية الأساسية تثبيت المعاينة باستخدام معاينة HLG10 بدقة 10 بت لمعاينة 1080p و720p وملفات JPEG بأكبر حجم ممكن. لمزيد من التفاصيل حول هذه المتطلبات، يُرجى الاطّلاع على القسم 2.2.7.2. الكاميرا من CDD.
التنفيذ
لتفعيل واجهة برمجة التطبيقات من أجل طلب مجموعات الميزات، عليك تنفيذ واجهتَي برمجة التطبيقات التاليتَين لطلب مجموعات الميزات في الإصدار 3 من
ICameraDevice
:
constructDefaultRequestSettings
: تنشئ الإعدادات التلقائية لنوعCaptureRequest
محدَّد. قناة HAL استخدامICameraDeviceSession::constructDefaultRequestSettings
التنفيذ.isStreamCombinationWithSettingsSupported
: للتحقّق من توافق الجهاز مع مجموعة محدّدة من بث الكاميرا مع معلَمات الجلسة ومفاتيحCaptureRequest
الإضافية. يجب أن يعرض الإجراءtrue
للتركيبات المتوافقة وfalse
لتركيبات الميزات غير المتوافقة. يمكن أن يستخدم HAL تنفيذ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 Verifier) التالية:
VTS
مجموعة أدوات اختبار التوافق (CTS)
- cts/tests/camera/src/android/hardware/camera2/cts/FeatureCombinationTest.java
- cts/tests/camera/src/android/hardware/camera2/cts/cameraDeviceSetupTest.java
كاميرا ITS