مَعلمات الجلسة

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

بشكل عام، بعد أن تصبح مَعلمة معيّنة جزءًا من قائمة مفاتيح الجلسة، يتم تضمين قيمتها الحالية كجزء من مَعلمات الجلسة التي يتم تمريرها أثناء ضبط البث في طبقة 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.