تقلِّل ميزة مَعلمات الجلسة من التأخيرات من خلال السماح لعملاء الكاميرا بضبط المجموعة الفرعية من مَعلمات الطلبات ذات التكلفة العالية، أي مَعلمات الجلسة، كجزء من مرحلة إعداد جلسة الالتقاط. باستخدام هذه الميزة، تتلقّى عمليات تنفيذ HAL مَعلمات العميل أثناء مرحلة إعداد البث بدلاً من طلب الالتقاط الأول، ويمكنها، استنادًا إلى قيمها، إعداد وإنشاء مسار الإرسال الداخلي بفعاليةٍ أكبر.
في Android 10، يمكنك تحسين الأداء باستخدام ميزة طلب البحث الاختيارية لإعادة ضبط الجلسة لمزيد من التحكم في منطق إعادة ضبط مَعلمات الجلسات الداخلية. لمزيد من المعلومات، يُرجى الاطّلاع على طلب إعادة ضبط الجلسة.
الأمثلة والمصدر
إنّ تنفيذ مَعلمة جلسة مرجعية هو جزء من CameraHal. يستخدم هذا HAL واجهة برمجة التطبيقات القديمة Hal API. يجب أن يستخدم العنصر المرتبط CameraHal الذي ينفِّذ واجهة برمجة تطبيقات HIDL للكاميرا إدخال HIDL المعني sessionParams للوصول إلى أي مَعلمات جلسة واردة جديدة أثناء ضبط البث.
يمكن لعملاء الكاميرا طلب مفاتيح جميع مَعلمات الجلسة المتوافقة من خلال الاتصال بـ
getAvailableSessionKeys()
وأخيرًا ضبط قيمها الأولية من خلال
setSessionParameters()
.
التنفيذ
عند تنفيذ CameraHal، يجب تعبئة
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
ضمن البيانات الوصفية الثابتة للكاميرا وتقديم مجموعة فرعية من
ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS
التي تحتوي على قائمة بالمفاتيح التي يصعب تطبيقها في كل إطار ويمكن أن تؤدي إلى تأخيرات غير متوقعة عند تعديلها خلال مدة جلسة التسجيل.
وتشمل الأمثلة المعتادة المَعلمات التي تتطلّب إعادة ضبط الأجهزة التي تستغرق وقتًا طويلاً أو تغيير مسار معالجة الكاميرا الداخلي. لا يزال بإمكان العملاء التحكّم في مَعلمات جلسة القياس في طلبات الالتقاط، ولكن عليهم مراعاة التأخيرات المحتمَلة في تطبيقاتهم.
يراقب إطار العمل جميع الطلبات الواردة وإذا اكتشف تغييرًا في قيمة معلَمة الجلسة، يعيد ضبط الكاميرا داخليًا. تتضمّن إعدادات البث الجديدة التي يتم تمريرها إلى CameraHal قيم مَعلمات جلسة المعدَّلة، والتي يتم استخدامها لضبط مسار الكاميرا بفعاليةٍ أكبر.
التخصيص
يمكنك تحديد العلامات في قائمة مَعلمات الجلسة المتاحة التي يتم تعبئتها على جانب CameraHal. لا تكون هذه الميزة نشطة إذا ترك CameraHal قائمة معلمات الجلسة المتاحة فارغة.
التحقُّق
تتضمّن ميزة CTS الحالات الجديدة التالية لمَعلمات جلسة الاختبار:
CameraDeviceTest#testSessionConfiguration
CameraDeviceTest#testCreateSessionWithParameters
CameraDeviceTest#testSessionParametersStateLeak
NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters
بشكل عام، بعد أن تصبح مَعلمة معيّنة جزءًا من قائمة مفاتيح الجلسة، يتم تضمين قيمتها الحالية كجزء من مَعلمات الجلسة التي يتم تمريرها أثناء ضبط البث في طبقة HAL.
يجب اختيار مَعلمات الجلسة بعناية. يجب ألا تتغيّر القيم باستمرار بين إعدادات البث، أو ألّا تتغيّر على الإطلاق. إنّ المَعلمات التي تتغيّر باستمرار، مثل نية الالتقاط، غير مناسبة، وقد تؤدي إضافتها إلى قائمة مَعلمات الجلسة إلى حدوث أعطال في CTS بسبب إعادة الضبط الداخلي المفرط.
طلب إعادة ضبط الجلسة
يقدّم نظام التشغيل Android 10 ميزة طلب بحث اختيارية لإعادة ضبط جلسة
لتحسين الأداء، لأنّ عمليات إعادة ضبط البث الداخلي الناتجة عن تعديلات قيمة مَعلمة
الجلسة يمكن أن تقلّل من الأداء. لحلّ هذه المشكلة، يتوافق الإصدار 3.5 والإصدارات الأحدث من HIDL
ICameraDeviceSession
مع الطريقة
isReconfigurationRequired
التي توفّر إمكانية التحكّم بشكل دقيق في منطق إعادة ضبط مَعلمة الجلسة الداخلية. باستخدام هذه الطريقة، يمكن إعادة ضبط البث
بدقة عند الحاجة.
تقدّم الوسيطات لisReconfigurationRequired
المعلومات المطلوبة عن كل تعديل على مَعلمة جلسة في انتظار المراجعة، ما يتيح أنواعًا مختلفة من عمليات التخصيص الخاصة بالأجهزة.
لا يتم تنفيذ هذه الميزة إلا في خدمة الكاميرا وواجهة برمجة التطبيقات لوحدة التحكّم في الضوء (HAL) للكاميرا. ليس هناك أي واجهات برمجة تطبيقات متاحة للجميع. في حال تطبيق هذه الميزة، من المفترض أن يلاحظ عملاء الكاميرات تحسينات الأداء عند التعامل مع مَعلمات الجلسة.
التنفيذ
لإتاحة طلبات البحث لإعادة ضبط الجلسة، عليك تنفيذ الأسلوب
isReconfigurationRequired
للتحقّق مما إذا كانت إعادة ضبط البث بالكامل مطلوبة لقيم مَعلمات
الجلسة الجديدة.
إذا غيّر العميل قيمة أي مَعلمة جلسة مُعلَن عنها، يستدعي إطار عمل الكاميرا طريقة isReconfigurationRequired
. استنادًا إلى القيم المحدّدة، يقرّر HAL ما إذا كان مطلوبًا إعادة ضبط
البث الكامل. وإذا عرضت HAL false
، يتخطى إطار عمل الكاميرا عملية إعادة الضبط الداخلية. إذا عرضت HAL true
، سيعيد إطار العمل ضبط ساحة المشاركات ويمرر قيم معلَمات الجلسة الجديدة وفقًا لذلك.
يمكن أن يستدعي إطار العمل طريقة isReconfigurationRequired
في وقت معيّن
قبل إرسال طلب يحتوي على مَعلمات جديدة إلى HAL، ويمكنه
إلغاء الطلب قبل إرساله. لذلك، يجب ألا يستخدم HAL طلب الأسلوب هذا لتغيير سلوكه بأي شكل من الأشكال.
يجب أن يستوفي تنفيذ HAL المتطلبات التالية:
- يجب أن يتمكّن إطار العمل من استدعاء الطريقة
isReconfigurationRequired
في أي وقت بعد إعداد الجلسة النشطة. - يجب ألا يكون هناك أي تأثير على أداء طلبات الكاميرا المعلّقة. على وجه التحديد، يجب ألا تحدث أي مشاكل أو تأخيرات أثناء بث المحتوى العادي من الكاميرات.
يجب أن يستوفي الجهاز وتنفيذ HAL المتطلبات التالية المتعلقة بالأداء:
- يجب عدم تغيير إعدادات الكاميرا في الأجهزة والبرامج.
- يجب ألا يكون هناك أي تأثير مرئي للمستخدم على أداء الكاميرا.
تأخذ الطريقة isReconfigurationRequired
المَعلمات التالية:
oldSessionParams
: مَعلمات الجلسة من الجلسة السابقة عادةً ما تكون مَعلمات الجلسة الحالية.newSessionParams
: مَعلمات الجلسة الجديدة التي يحدّدها العميل
رموز حالة الإرجاع المتوقّعة هي:
OK
: طلب إعادة الضبط الناجحة مطلوب.METHOD_NOT_SUPPORTED
: لا يتيح جهاز الكاميرا طلب إعادة الضبط.INTERNAL_ERROR
: تعذّر إكمال طلب إعادة الضبط بسبب خطأ داخلي.
قيم العرض هي:
true
: يجب إعادة ضبط البث.false
: ليس عليك إعادة ضبط البث.
لتجاهل طلب إعادة ضبط الجلسة، يعرض HAL القيمة
METHOD_NOT_SUPPORTED
أو false
. يؤدي ذلك إلى بدء سلوك خدمة الكاميرا التلقائي
، حيث يتم إعادة ضبط البث عند تغيير كل مَعلمة جلسة.
التحقُّق
يمكن التحقّق من صحة ميزة طلب البحث لإعادة ضبط الجلسة باستخدام حالة اختبار VTS في
CameraHidlTest#configureStreamsWithSessionParameters
.