تعمل ميزة مَعلمات الجلسات على تقليل حالات التأخير من خلال السماح لعملاء الكاميرات تكوين مجموعة فرعية من معلمات الطلبات المكلفة بشكل نشط، أي جلسة كجزء من مرحلة إعداد جلسة التسجيل. مع هذا تتلقى عمليات تنفيذ 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 يقدّم جلسة اختيارية
ميزة إعادة تكوين طلب البحث
تحسين الأداء نتيجة عمليات إعادة تكوين البث الداخلي الناتجة عن الجلسة
يمكن أن تؤدي تعديلات قيم المعلمة إلى خفض مستوى الأداء. لمعالجة هذه المخاوف،
مؤسسة HIDL
ICameraDeviceSession
الإصدار 3.5 والإصدارات الأحدث يدعم
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