يتضمّن نظام التشغيل Android ميزات تتيح لعملاء الكاميرا اختيار عمليات بث الكاميرا المثلى لحالات استخدام معيّنة ولضمان توافق مجموعات معيّنة من عمليات البث مع جهاز الكاميرا. يشير إعداد مجموعة البث إلى مجموعة بث واحدة من الكاميرا تم ضبطها في جهاز الكاميرا، ويشير مزيج مجموعة البث إلى مجموعة واحدة أو أكثر من مجموعات البث التي تم ضبطها في جهاز الكاميرا. لمزيد من المعلومات حول هذه الميزات، اطّلِع على إعدادات البث المقترَحة وواجهة برمجة التطبيقات لطلبات البحث عن مجموعات الميزات.
التنفيذ المرجعي
يتوفّر تنفيذ مرجعي من جهة المورّد لمصادر بيانات الإعدادات المقترَحة وواجهة برمجة التطبيقات لميزات مجموعة مصادر البيانات لطلب البحث. يمكنك العثور على عملية التنفيذ هذه على Q Camera3HWI.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 مع تركيبة BLOB +
DATASPACE_JFIF من تنسيق/مساحة البيانات (JPEG). مع الأخذ في الاعتبار القيود المفروضة على نسبة العرض إلى الارتفاع والمحاذاة والقيود الأخرى الخاصة بالمورّد،
يجب ألا تكون مساحة الحدّ الأقصى للحجم المقترَح أقل من% 97 من مساحة حجم مصفوفة أداة الاستشعار. |
ZSL (إذا كان متاحًا) |
يجب الإعلان عن إعدادات بث الإدخال المقترَحة فقط مع أشكال الإخراج الأخرى التي تمت معالجتها أو التي تتوقّف مؤقتًا، في حال توفّرها على جهاز الكاميرا. |
RAW (إذا كان متاحًا) |
إذا كان جهاز الكاميرا يتيح ذلك، يجب أن تتضمّن إعدادات البث المباشر المُقترَحة فقط تنسيقات الإخراج المستندة إلى RAW. |
حالات الاستخدام الأخرى
يمكنك تقديم مصادر إعدادات مقترَحة إضافية لحالات الاستخدام المرتبطة بتنفيذك.
التحقُّق
لاختبار عملية تنفيذ أحداث الضبط المقترَحة، يمكنك إجراء اختبارَي CTS وVTS التاليَين:
واجهة برمجة التطبيقات الخاصة بمجموعات الميزات لطلب البحث
بدءًا من الإصدار 15 من Android، يقدّم نظام Android الأساسي واجهة برمجة تطبيقات لطلب مجموعات الميزات. تتيح واجهة برمجة التطبيقات هذه لعملاء الكاميرا الاستعلام عمّا إذا كان الجهاز يتيح استخدام مجموعة معيّنة من الميزات. إنّ واجهة برمجة التطبيقات هذه ضرورية لأنّ واجهة برمجة التطبيقات Camera2 API تنشئ نماذج لميزات مختلفة، مثل 4K و60 لقطة في الثانية وتسجيل الفيديو بنطاق عالي الديناميكية (HDR) وUltraHDR والتكبير الفائق العرض والتثبيت كعناصر تحكّم متعامدة.
المتطلبات
لاستخدام واجهة برمجة التطبيقات من أجل طلب مجموعات الميزات، يجب أن تُنفِّذ طبقة HAL للكاميرا
الإصدار 3 من واجهة ICameraDevice
. لمعرفة التفاصيل، يُرجى الاطّلاع على القسم
التنفيذ.
عندما تكون واجهة برمجة التطبيقات متوافقة، يجب أن يكون ثبات المعاينة متعامدًا مع
الميزات الأخرى. وهذا يعني أنّه بالنسبة إلى جهاز الكاميرا الذي يتيح تثبيت
المعاينة، يجب أن تكون القيمة المعروضة isStreamCombinationWithSettingsSupported
لتركيبة معيّنة هي القيمة نفسها عند تفعيل تثبيت
المعاينة أو إيقافه. ويؤدي ذلك إلى تقليل مساحة البحث عن طلبات بحث تركيبة الميزات.
بالإضافة إلى ذلك، في فئة أداء الوسائط 15، يجب أن تتيح الكاميرا الخلفية الأساسية تثبيت المعاينة من خلال معاينة HLG10 بمعدّل 10 بت للمعاينة 1080p و720p والحد الأقصى لحجم ملفات JPEG. لمزيد من التفاصيل حول هذه المتطلبات، يُرجى الاطّلاع على القسم 2.2.7.2. الكاميرا لجهاز التحكّم الرقمي في الإضاءة
التنفيذ
لتفعيل واجهة برمجة التطبيقات من أجل طلب مجموعات الميزات، عليك تنفيذ واجهتَي برمجة التطبيقات التاليتَين لطلب مجموعات الميزات في الإصدار 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
- cts/apps/cameraITS/tests/feature_combination/test_feature_combination.py
- cts/apps/CameraITS/tests/scene6/test_session_characteristics_zoom.py