camera2_device_ops مرجع ساختار
#include < camera2.h >
فیلدهای داده | |
int(* | set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* | notify_request_queue_not_empty )(const struct camera2_device *) |
int(* | set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* | get_in_progress_count )(Const struct camera2_device *) |
int(* | flush_captures_in_progress )(Const struct camera2_device *) |
int(* | construct_default_request )(const struct camera2_device *، int request_template، camera_metadata_t **درخواست) |
int(* | allocate_stream )(const struct camera2_device *، uint32_t عرض، uint32_t ارتفاع، int format، const camera2_stream_ops_t *stream_ops، uint32_t *stream_id، uint32_t *format_actual، uint32_t *usage، uintx_buffers *ma. |
int(* | register_stream_buffers (const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
int(* | release_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | allocate_reprocess_stream )(const struct camera2_device *، عرض uint32_t، ارتفاع uint32_t، فرمت uint32_t، const camera2_stream_in_ops_t *reprocess_stream_ops، uint32_t *stream_id، uint32_t *consumer_ffer_usage، uint) |
int(* | allocate_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id) |
int(* | release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | trigger_action )(const struct camera2_device *، uint32_t trigger_id، int32_t ext1، int32_t ext2) |
int(* | set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* | get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* | dump )(const struct camera2_device *, int fd) |
int(* | get_instance_metadata )(const struct camera2_device *، camera_metadata **instance_metadata) |
توصیف همراه با جزئیات
مستندات میدانی
int(* allocate_reprocess_stream)(const struct camera2_device *، uint32_t عرض، uint32_t ارتفاع، uint32_t فرمت، const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id، uint32_t *consumer_buff, uint32_t *consumer_but) |
allocate_reprocess_stream:
یک جریان ورودی جدید را برای استفاده اختصاص دهید که با عرض بافر خروجی، ارتفاع و قالب پیکسل تعریف شده است. در صورت موفقیت، شناسه جریان جدید، پرچمهای استفاده از gralloc و تعداد بافر قابل دستیابی همزمان مورد نیاز را برمیگرداند. شرایط خطا:
- درخواست یک ترکیب عرض/ارتفاع/قالب که بهعنوان ویژگیهای استاتیک سنسور پشتیبانی نمیشود
- درخواست برای پیکربندی همزمان تعداد زیادی جریان پردازش مجدد.
پارامترهای ورودی:
- عرض، ارتفاع، فرمت: مشخصات بافرهایی که باید از طریق این جریان ارسال شوند. قالب باید مقداری از لیست HAL_PIXEL_FORMAT_* باشد.
- reprocess_stream_ops: ساختاری از نشانگرهای تابع برای بدست آوردن و انتشار بافر برای این جریان. جریان اصلی بر اساس استفاده و خروجی max_buffers پیکربندی خواهد شد.
پارامترهای خروجی:
- stream_id: یک عدد صحیح بدون علامت که این جریان را شناسایی می کند. این مقدار در درخواست های دریافتی برای شناسایی جریان و در انتشار جریان استفاده می شود. این شناسه ها جدا از شناسه های جریان ورودی شماره گذاری می شوند.
- Consumer_usage: ماسک استفاده از gralloc مورد نیاز دستگاه HAL برای مصرف نوع داده درخواستی. این در تخصیص بافرهای جدید gralloc برای صف بافر جریان استفاده می شود.
- max_buffers: حداکثر تعداد بافرهایی که دستگاه HAL ممکن است نیاز داشته باشد همزمان داشته باشد. ممکن است دستگاه بیشتر از این مقدار بافرهای همزمان به دست آمده نداشته باشد.
int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id) |
allocate_reprocess_stream_from_stream:
یک جریان ورودی جدید را برای استفاده اختصاص دهید، که از بافرهای اختصاص داده شده برای یک جریان خروجی موجود استفاده می کند. یعنی بعد از اینکه HAL یک بافر را در جریان خروجی قرار داد، ممکن است همان بافر را ببیند که از این جریان پردازش مجدد ورودی به آن تحویل داده شده است. پس از اینکه HAL بافر را به جریان پردازش مجدد بازگرداند، برای استفاده مجدد به صف خروجی بازگردانده می شود.
شرایط خطا:
- استفاده از یک جریان خروجی با اندازه/قالب نامناسب برای پایه جریان پردازش مجدد.
- تلاش برای تخصیص تعداد زیادی جریان پردازش مجدد به طور همزمان.
پارامترهای ورودی:
- output_stream_id: شناسه یک جریان خروجی موجود که دارای اندازه و قالب مناسب برای پردازش مجدد است.
- reprocess_stream_ops: ساختاری از نشانگرهای تابع برای بدست آوردن و انتشار بافر برای این جریان. جریان اصلی از همان دسته های بافر گرافیکی استفاده می کند که جریان خروجی استفاده می کند.
پارامترهای خروجی:
- stream_id: یک عدد صحیح بدون علامت که این جریان را شناسایی می کند. این مقدار در درخواست های دریافتی برای شناسایی جریان و در انتشار جریان استفاده می شود. این شناسه ها جدا از شناسه های جریان ورودی شماره گذاری می شوند.
کلاینت HAL باید قبل از اینکه جریان خروجی مبتنی بر آن را منتشر کند، جریان پردازش مجدد را آزاد کند.
int(* allocate_stream)(const struct camera2_device *,uint32_t عرض, uint32_t, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage_t, uintx3 |
allocate_stream:
یک جریان خروجی جدید را برای استفاده اختصاص دهید که با عرض بافر خروجی، ارتفاع، هدف، و احتمالاً قالب پیکسل تعریف شده است. در صورت موفقیت، شناسه جریان جدید، پرچمهای استفاده از gralloc، حداقل تعداد بافر صف و احتمالاً قالب پیکسل را برمیگرداند. شرایط خطا:
- درخواست یک ترکیب عرض/ارتفاع/قالب که بهعنوان ویژگیهای استاتیک سنسور پشتیبانی نمیشود
- درخواست برای تعداد زیادی جریان از یک نوع قالب مشخص (مثلاً 2 جریان خام بایر).
پارامترهای ورودی:
- عرض، ارتفاع، فرمت: مشخصات بافرهایی که باید از طریق این جریان ارسال شوند. قالب یک مقدار از لیست HAL_PIXEL_FORMAT_* است. اگر از HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED استفاده شود، ماژول پلتفرم gralloc قالبی را بر اساس پرچم های استفاده ارائه شده توسط دوربین HAL و مصرف کننده جریان انتخاب می کند. دوربین HAL باید بافرهایی را که در فراخوانی register_stream_buffers به آن تحویل داده شده است بازرسی کند تا در صورت لزوم فرمت مخصوص پیاده سازی را بدست آورد.
- stream_ops: ساختاری از نشانگرهای تابع برای به دست آوردن و صف بندی بافرها برای این جریان. جریان اصلی بر اساس استفاده و خروجی max_buffers پیکربندی خواهد شد. متدهای این ساختار ممکن است تا پس از بازگشت allocate_stream فراخوانی نشوند.
پارامترهای خروجی:
- stream_id: یک عدد صحیح بدون علامت که این جریان را شناسایی می کند. این مقدار در درخواست های دریافتی برای شناسایی جریان و در انتشار جریان استفاده می شود.
- استفاده: ماسک استفاده از gralloc مورد نیاز دستگاه HAL برای تولید نوع داده درخواستی. این در تخصیص بافرهای جدید gralloc برای صف بافر جریان استفاده می شود.
- max_buffers: حداکثر تعداد بافرهایی که دستگاه HAL ممکن است نیاز داشته باشد در همان زمان صف بکشد. دستگاه ممکن است همزمان بافرهای بیشتری از این مقدار را حذف نکند.
int(* construct_default_request)(const struct camera2_device *، int request_template، camera_metadata_t **درخواست) |
یک درخواست پیشفرض تکمیلشده برای موارد استفاده از دوربین استاندارد ایجاد کنید.
دستگاه باید یک درخواست کامل را برگرداند که برای مطابقت با مورد درخواستی پیکربندی شده است، که باید یکی از فهرستهای CAMERA2_TEMPLATE_* باشد. همه فیلدهای کنترل درخواست باید گنجانده شوند، به جز android.request.outputStreams.
بافر ابرداده برگشتی باید با allocate_camera_metadata تخصیص داده شود. چارچوب مالکیت بافر را در اختیار می گیرد.
int(* dump)(const struct camera2_device *, int fd) |
int(* flush_captures_in_progress)(const struct camera2_device *) |
تمام عکسهای در حال انجام را فلاش کنید. این شامل تمام درخواستهای بدون صف (معمولی یا در حال پردازش مجدد) میشود که هنوز هیچ خروجی را در یک جریان یا صف فریم قرار ندادهاند. عکسبرداری های نیمه تکمیل شده باید به طور معمول تکمیل شود. هیچ درخواست جدیدی نمی تواند از صف درخواست حذف شود تا زمانی که فلاش کامل شود.
int(* get_in_progress_count)(const struct camera2_device *) |
int(* get_instance_metadata)(const struct camera2_device *، camera_metadata **instance_metadata) |
فراداده مخصوص نمونه دستگاه را دریافت کنید. این ابرداده باید برای یک نمونه از دستگاه دوربین ثابت باشد، اما ممکن است بین فراخوانی های open() متفاوت باشد. اشاره گر camera_metadata برگردانده شده باید تا زمانی که متد ()close فراخوانی شود معتبر باشد.
اطلاعات نسخه:
CAMERA_DEVICE_API_VERSION_2_0:
در دسترس نیست. چارچوب ممکن است به این نشانگر تابع دسترسی نداشته باشد.
CAMERA_DEVICE_API_VERSION_2_1:
معتبر. می توان توسط فریمورک فراخوانی کرد.
int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(const struct camera2_device *) |
int(* register_stream_buffers)(const struct camera2_device *، uint32_t stream_id، int num_buffers، buffer_handle_t *buffers) |
بافرها را برای یک جریان مشخص ثبت کنید. این پس از یک تماس موفقیت آمیز allocate_stream فراخوانی می شود، و قبل از اینکه اولین درخواست ارجاع به جریان در صف قرار گیرد. این روش در نظر گرفته شده است تا به دستگاه HAL اجازه دهد تا بافرها را برای استفاده بعدی آماده کند. num_buffers حداقل max_buffers (از allocate_stream) تضمین شده است، اما ممکن است بزرگتر باشد. بافرها از قبل برای استفاده قفل خواهند شد. در پایان تماس، تمام بافرها باید آماده باشند تا به صف بازگردانده شوند. اگر قالب پخش جریانی روی HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED تنظیم شده بود، دوربین HAL باید بافرهای منتقل شده را در اینجا بررسی کند تا اطلاعات قالب پیکسل خصوصی پلتفرم را مشخص کند.
int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* release_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* trigger_action)(const struct camera2_device *، uint32_t trigger_id، int32_t ext1، int32_t ext2) |
مستندات این ساختار از فایل زیر تولید شده است:
- hardware/libhardware/include/hardware/ camera2.h