مرجع بنية camera3_callback_ops

مرجع بنية camera3_callback_ops

#include < camera3.h >

حقول البيانات

void(*  process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result)
 
void(*  notify )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)
 

الوصف التفصيلي

تم تحديدها في السطر 2397 من الملف camera3.h .

مستندات الحقول

void(* notify)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

notify:

يتم تشغيل عملية ردّ الاتصال غير المتزامنة للإشعارات من طبقة HAL لأسباب مختلفة. يُستخدم فقط للمعلومات المستقلة عن التقاط اللقطات أو التي تتطلب توقيتًا محدّدًا. تظل ملكية بنية الرسالة مع طبقة تجريد الأجهزة (HAL)، ولا يلزم أن تكون الرسالة صالحة إلا لمدة هذه المكالمة.

قد تستدعي سلاسل محادثات متعددة الطريقة notify() في الوقت نفسه.

<= CAMERA_DEVICE_API_VERSION_3_1:

يجب أن يرسل HAL إشعارًا ببدء التعرّض لطلب معيّن قبل إجراء أول عملية استدعاء للدالة process_capture_result() لهذا الطلب.

‎>= CAMERA_DEVICE_API_VERSION_3_2:

لن يتم إرسال المخازن المؤقتة التي يتم تسليمها إلى إطار العمل إلى طبقة التطبيق إلى أن يتم تلقّي طابع زمني لبدء التعرض (أو طابع زمني لبدء التعرض لصورة الإدخال لطلب إعادة المعالجة) من خلال استدعاء SHUTTER notify() . ننصح بشدة بإرسال هذا الاستدعاء في أقرب وقت ممكن.


متطلبات الأداء:

هذه مكالمة غير حظر. سيعرض إطار العمل هذه المكالمة في غضون 5 ملي ثانية.

التعريف في السطر 2499 من الملف camera3.h .

void(* process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *result)

process_capture_result:

إرسال نتائج من عملية تسجيل مكتملة إلى إطار العمل process_capture_result() قد يتم استدعاؤها عدة مرات من خلال طبقة HAL استجابةً لطلب تسجيل واحد. يتيح ذلك، على سبيل المثال، عرض البيانات الوصفية ومخازن مؤقتة منخفضة الدقة في مكالمة واحدة، وعرض مخازن مؤقتة بتنسيق JPEG تمت معالجتها لاحقًا في مكالمة أخرى، وذلك بعد توفّرها. يجب أن يتضمّن كل طلب رقم الإطار الخاص بالطلب الذي يعرض البيانات الوصفية أو المخازن المؤقتة.

لا يمكن تضمين أحد مكوّنات النتيجة الكاملة (المخزن المؤقت أو البيانات الوصفية) إلا في طلب واحد من process_capture_result. يجب أن تعرض طبقة HAL لكل طلب مخزنًا مؤقتًا لكل مصدر بيانات، بالإضافة إلى البيانات الوصفية للنتائج، وذلك في إحدى استدعاءات process_capture_result، حتى في حال حدوث أخطاء تؤدي إلى إنتاج بعض المخرجات. لا يُسمح باستدعاء process_capture_result() بدون مخازن مؤقتة للناتج أو بيانات وصفية للنتيجة.

لا يهم ترتيب عرض البيانات الوصفية والمخازن المؤقتة لنتيجة واحدة، ولكن يجب عرض المخازن المؤقتة لتدفق معيّن بترتيب FIFO. لذلك، يجب دائمًا عرض المخزن المؤقت للطلب 5 من البث A قبل المخزن المؤقت للطلب 6 من البث A. وينطبق ذلك أيضًا على البيانات الوصفية للنتائج، أي يجب عرض البيانات الوصفية للطلب 5 قبل البيانات الوصفية للطلب 6.

ومع ذلك، تكون عمليات البث المختلفة مستقلة عن بعضها البعض، لذا من المقبول والمتوقّع أن يتم عرض المخزن المؤقت للطلب 5 لعملية البث A بعد عرض المخزن المؤقت للطلب 6 لعملية البث B، ومن المقبول أيضًا أن يتم عرض بيانات الطلب 6 لعملية البث B الوصفية قبل عرض المخزن المؤقت للطلب 5 لعملية البث A.

يحتفظ HAL بملكية بنية النتيجة، ويجب أن تكون صالحة فقط للوصول إليها أثناء هذه المكالمة. سيتم نسخ كل ما يحتاج إليه إطار العمل قبل أن يتم إرجاع هذه المكالمة.

لا يلزم ملء مخازن الإخراج المؤقتة بعد، وسينتظر إطار العمل سياج مزامنة إصدار مخزن البث المؤقت قبل قراءة بيانات المخزن المؤقت. لذلك، يجب أن يستدعي HAL هذه الطريقة في أقرب وقت ممكن، حتى إذا كانت بعض أو كل مخازن الإخراج المؤقتة لا تزال قيد التعبئة. يجب أن تتضمّن طبقة HAL سياجات مزامنة إصدار صالحة في كل إدخال في مخزن مؤقت لتدفق output_buffers، أو القيمة -1 إذا كان مخزن مؤقت التدفق هذا ممتلئًا.

إذا تعذّر إنشاء مخزن مؤقت للنتائج لطلب ما، يجب أن تعرض طبقة HAL مخزنًا مؤقتًا فارغًا للبيانات الوصفية، ولكن يجب أن توفّر أيضًا مخازن الإخراج المؤقتة وحواجز المزامنة الخاصة بها. بالإضافة إلى ذلك، يجب استدعاء notify() باستخدام رسالة ERROR_RESULT.

إذا تعذّر ملء مخزن مؤقت للناتج، يجب ضبط حقل الحالة على STATUS_ERROR. بالإضافة إلى ذلك، يجب استدعاء الدالة notify() مع رسالة ERROR_BUFFER.

إذا تعذّر التقاط الصورة بالكامل، يجب استدعاء هذه الطريقة لإعادة مخازن الإخراج المؤقتة إلى إطار العمل. يجب أن تكون جميع حالات المخزن المؤقت STATUS_ERROR، ويجب أن تكون البيانات الوصفية للنتيجة مخزنًا مؤقتًا فارغًا. بالإضافة إلى ذلك، notify() يجب أن يتم استدعاؤها باستخدام رسالة ERROR_REQUEST. في هذه الحالة، يجب عدم إرسال رسائل ERROR_RESULT/ERROR_BUFFER الفردية.

متطلبات الأداء:

هذه مكالمة غير حظر. سيعرض إطار العمل هذه المكالمة في غضون 5 ملي ثانية.

يجب أن يكون وقت استجابة خط الأنابيب (راجِع القسم S7 للتعريف) أقل من أو يساوي 4 فواصل زمنية بين اللقطات، ويجب أن يكون أقل من أو يساوي 8 فواصل زمنية بين اللقطات.

التعريف في السطر 2466 من الملف camera3.h .


تم إنشاء مستندات هذا النوع من الملف التالي: