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) |
توصیف همراه با جزئیات
درخواست پروتکل صف ورودی:
فریم ورک صف و محتویات آن را نگه می دارد. در شروع، صف خالی است.
- هنگامی که اولین بافر ابرداده در صف قرار می گیرد، چارچوب با فراخوانی notify_request_queue_not_empty() به دستگاه سیگنال می دهد.
- پس از دریافت notify_request_queue_not_empty، دستگاه باید dequeue() را پس از آماده شدن برای مدیریت بافر بعدی فراخوانی کند.
- هنگامی که دستگاه یک بافر را پردازش کرد و برای بافر بعدی آماده شد، باید به جای منتظر ماندن برای اعلان، دوباره ()dequeue را فراخوانی کند. اگر بافر دیگری در دسترس نباشد، dequeue() NULL را برمی گرداند. پس از این مرحله، هنگامی که یک بافر در دسترس می شود، فریم ورک باید دوباره notify_request_queue_not_empty() را فراخوانی کند. اگر دستگاه یک بازگشت NULL از dequeue دریافت کند، تا زمانی که یک تماس notify_request_queue_not_empty() از منبع دریافت نشود، نیازی به پرس و جوی مجدد صف ندارد.
- اگر دستگاه باffer_count() را فراخوانی کرد و 0 دریافت کرد، این بدان معنا نیست که فریم ورک یک فراخوان notify_request_queue_not_empty() را ارائه می دهد. این فریم ورک تنها پس از دریافت NULL از Dequeue یا در راه اندازی اولیه، چنین اعلانی را ارائه می دهد.
- فراخوانی dequeue() در پاسخ به notify_request_queue_not_empty() ممکن است در همان رشته تماس notify_request_queue_not_empty() باشد و ممکن است از درون تماس notify انجام شود.
- تمام بافرهای درخواست حذف شده باید با فراخوانی free_request به چارچوب برگردانده شوند، از جمله زمانی که خطا رخ می دهد، درخواست فلاش دستگاه یا زمانی که دستگاه در حال خاموش شدن است.
مستندات میدانی
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
یک بافر ابرداده از چارچوب دریافت کنید. اگر خطایی وجود نداشته باشد، OK را برمیگرداند. اگر صف خالی باشد، NULL را در بافر برمیگرداند. در این صورت، دستگاه باید منتظر پیام notify_request_queue_not_empty () بنشیند و قبل از اینکه دوباره از صف خارج شود. بافرهایی که از این طریق به دست می آیند باید با ()free_request به چارچوب برگردانده شوند.
int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
int(* request_count)(const struct camera2_request_queue_src_ops *q) |
تعداد بافرهای درخواستی معلق در صف را دریافت کنید. اگر یک درخواست تکراری (درخواست جریان) در حال حاضر پیکربندی شده باشد، ممکن است CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS را برگرداند. فراخوانی این متد تأثیری بر فراخوانی متد notify_request_queue_not_empty () توسط فریمورک ندارد.
مستندات این ساختار از فایل زیر تولید شده است:
- hardware/libhardware/include/hardware/ camera2.h