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

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