مرجع هيكل الكاميرا2_request_queue_src_ops

مرجع هيكل الكاميرا2_request_queue_src_ops

#include < camera2.h >

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

كثافة العمليات (* request_count )(const struct Camera2_request_queue_src_ops *q)
كثافة العمليات (* dequeue_request )(const struct Camera2_request_queue_src_ops *q, Camera_metadata_t **buffer)
كثافة العمليات (* 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 من قائمة الانتظار، فلن يحتاج إلى الاستعلام عن قائمة الانتظار مرة أخرى حتى يتم تلقي استدعاء notify_request_queue_not_empty() من المصدر.
  4. إذا قام الجهاز باستدعاء buffer_count() واستقبل 0، فهذا لا يعني أن إطار العمل سيوفر استدعاء notify_request_queue_not_empty(). لن يقدم إطار العمل مثل هذا الإشعار إلا بعد أن يتلقى الجهاز قيمة NULL من قائمة الانتظار، أو عند بدء التشغيل الأولي.
  5. قد يكون استدعاء dequeue() ردًا على notify_request_queue_not_empty() على نفس مؤشر الترابط مثل استدعاء notify_request_queue_not_empty()، ويمكن تنفيذه من داخل استدعاء الإخطار.
  6. يجب إرجاع كافة المخازن المؤقتة للطلبات التي تم وضعها في قائمة الانتظار إلى إطار العمل عن طريق استدعاء free_request، بما في ذلك عند حدوث أخطاء، أو طلب تدفق الجهاز، أو عند إيقاف تشغيل الجهاز.

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

التوثيق الميداني

int(* dequeue_request)(const struct Camera2_request_queue_src_ops *q, Camera_metadata_t **buffer)

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


تم إنشاء وثائق هذه البنية من الملف التالي: