مرجع بنية camera2_request_queue_src_ops

مرجع بنية camera2_request_queue_src_ops

#include < camera2.h >

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

int(*  request_count )(const struct camera2_request_queue_src_ops *q)
 
int(*  dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)
 
int(*  free_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)
 

وصف مفصّل

بروتوكول طلب إدخال البيانات:

يتضمّن الإطار المحتوى في "قائمة المحتوى التالي". في البداية، تكون قائمة المحتوى التالي فارغة.

  1. عند وضع أول وحدة تخزين مؤقت للبيانات الوصفية في "قائمة الانتظار"، يُرسِل إطار العمل إشارة إلى الجهاز من خلال استدعاء notify_request_queue_not_empty().
  2. بعد تلقّي notify_request_queue_not_empty، يجب أن يستدعي الجهاز dequeue() عندما يصبح جاهزًا لمعالجة المخزن المؤقت التالي.
  3. بعد أن يعالج الجهاز ذاكرة التخزين المؤقت ويصبح جاهزًا للذاكرة المؤقتة التالية، يجب أن يستدعي dequeue() مرة أخرى بدلاً من انتظار إشعار. إذا لم تتوفّر أيّ وحدات تخزين مؤقتة أخرى، ستُرجع الدالة dequeue() القيمة NULL. بعد هذه المرحلة، عندما يصبح مخزن مؤقت متاحًا، يجب أن يستدعي إطار العمل notify_request_queue_not_empty() مرة أخرى. إذا تلقّى الجهاز قيمة NULL من dequeue، لن يحتاج إلى طلب المعلومات من "قائمة الانتظار" مرة أخرى إلى أن يتم تلقّي طلب notify_request_queue_not_empty() من المصدر.
  4. إذا طلب الجهاز buffer_count() وتلقّى القيمة 0، لا يعني ذلك أنّ الإطار سيقدّم طلب notify_request_queue_not_empty()‎. ولن يقدّم إطار العمل هذا الإشعار إلا بعد أن يتلقّى الجهاز قيمة NULL من قائمة الانتظار أو عند بدء التشغيل الأولي.
  5. قد تكون طلب dequeue() استجابةً لطلب notify_request_queue_not_empty() في سلسلة المحادثات نفسها، وقد يتم تنفيذه من داخل طلب notify.
  6. يجب إرجاع جميع وحدات تخزين مؤقت للطلبات التي تمّت إزالتها من "قائمة الانتظار" إلى إطار العمل من خلال استدعاء free_request، بما في ذلك عند حدوث أخطاء أو عند طلب تنظيف الجهاز أو عند إيقاف الجهاز.

التعريف في السطر 220 من الملف camera2.h .

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

int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)

الحصول على ذاكرة تخزين مؤقت للبيانات الوصفية من إطار العمل تعرِض OK إذا لم يكن هناك خطأ. إذا كانت "القائمة الانتظار" فارغة، يتم عرض NULL في المخزن المؤقت. في هذه الحالة، يجب أن ينتظر الجهاز رسالة notify_request_queue_not_empty() قبل محاولة إزالة الطلبات من "قائمة الانتظار" مرة أخرى. يجب إرجاع المخازن المؤقتة التي تم الحصول عليها بهذه الطريقة إلى الإطار باستخدام الإجراء free_request() .

التعريف في السطر 237 من الملف camera2.h .

int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

عرض مخزن مؤقت للبيانات الوصفية في إطار العمل بعد استخدامه أو في حال حدوث خطأ أو إيقاف تشغيل

التعريف في السطر 243 من الملف camera2.h .

int(* request_count)(const struct camera2_request_queue_src_ops *q)

الحصول على عدد طلبات التخزين المؤقت في انتظار المراجعة في قائمة الانتظار قد يعرض القيمة CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS إذا تم حاليًا ضبط طلب متكرر (طلب البث). لا يؤثّر استدعاء هذه الطريقة في ما إذا كان إطار العمل سيستدعي notify_request_queue_not_empty()‎.

التعريف في السطر 228 من الملف camera2.h .


تم إنشاء مستندات هذه البنية من الملف التالي: