camera2_device_ops مرجع ساختار

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)

توصیف همراه با جزئیات

تعریف در خط 527 فایل camera2.h .

مستندات میدانی

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 ممکن است نیاز داشته باشد همزمان داشته باشد. ممکن است دستگاه بیشتر از این مقدار بافرهای همزمان به دست آمده نداشته باشد.

تعریف در خط 708 فایل camera2.h .

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 باید قبل از اینکه جریان خروجی مبتنی بر آن را منتشر کند، جریان پردازش مجدد را آزاد کند.

تعریف در خط 754 فایل camera2.h .

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 ممکن است نیاز داشته باشد در همان زمان صف بکشد. دستگاه ممکن است همزمان بافرهای بیشتری از این مقدار را حذف نکند.

تعریف در خط 632 فایل camera2.h .

int(* construct_default_request)(const struct camera2_device *، int request_template، camera_metadata_t **درخواست)

یک درخواست پیش‌فرض تکمیل‌شده برای موارد استفاده از دوربین استاندارد ایجاد کنید.

دستگاه باید یک درخواست کامل را برگرداند که برای مطابقت با مورد درخواستی پیکربندی شده است، که باید یکی از فهرست‌های CAMERA2_TEMPLATE_* باشد. همه فیلدهای کنترل درخواست باید گنجانده شوند، به جز android.request.outputStreams.

بافر ابرداده برگشتی باید با allocate_camera_metadata تخصیص داده شود. چارچوب مالکیت بافر را در اختیار می گیرد.

تعریف در خط 580 فایل camera2.h .

int(* dump)(const struct camera2_device *, int fd)

وضعیت تخلیه سخت افزار دوربین

تعریف در خط 801 فایل camera2.h .

int(* flush_captures_in_progress)(const struct camera2_device *)

تمام عکس‌های در حال انجام را فلاش کنید. این شامل تمام درخواست‌های بدون صف (معمولی یا در حال پردازش مجدد) می‌شود که هنوز هیچ خروجی را در یک جریان یا صف فریم قرار نداده‌اند. عکسبرداری های نیمه تکمیل شده باید به طور معمول تکمیل شود. هیچ درخواست جدیدی نمی تواند از صف درخواست حذف شود تا زمانی که فلاش کامل شود.

تعریف در خط 567 فایل camera2.h .

int(* get_in_progress_count)(const struct camera2_device *)

تعداد درخواست‌های دوربین در حال پردازش توسط دستگاه در حال حاضر (فیلم‌برداری/فرآوری‌هایی که درخواست‌هایشان در نوبت مانده است، اما هنوز در خط لوله(های) خروجی قرار نگرفته‌اند). هیچ جریانی نمی‌تواند توسط فریم‌ورک منتشر شود تا زمانی که تعداد در حال پیشرفت 0 باشد.

تعریف در خط 558 فایل camera2.h .

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:

معتبر. می توان توسط فریمورک فراخوانی کرد.

تعریف در خط 820 فایل camera2.h .

int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops)

روش هایی برای پرس و جو برای اطلاعات برچسب فراداده پسوند فروشنده دریافت کنید. اگر هیچ تگ پسوند فروشنده تعریف نشده باشد، ممکن است عملیات را روی NULL تنظیم کند.

تعریف در خط 795 فایل camera2.h .

int(* notify_request_queue_not_empty)(const struct camera2_device *)

به دستگاه اطلاع دهید که صف درخواست دیگر خالی نیست. فقط زمانی باید فراخوانی شود که اولین بافر یک صف جدید اضافه شود، یا پس از اینکه منبع در پاسخ به یک تماس Dequeue NULL را برگرداند.

تعریف در خط 544 فایل camera2.h .

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 باید بافرهای منتقل شده را در اینجا بررسی کند تا اطلاعات قالب پیکسل خصوصی پلتفرم را مشخص کند.

تعریف در خط 657 فایل camera2.h .

int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id)

یک جریان در حال پردازش مجدد منتشر کنید. اگر زمانی که get_in_progress_count غیر صفر است، یا اگر شناسه جریان معتبر نباشد، خطایی را برمی‌گرداند.

تعریف در خط 765 فایل camera2.h .

int(* release_stream)(const struct camera2_device *, uint32_t stream_id)

پخش جریانی اگر زمانی که get_in_progress_count غیر صفر باشد یا شناسه جریان نامعتبر باشد، خطایی را برمی‌گرداند.

تعریف در خط 667 فایل camera2.h .

int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)

روش‌های رابط صف فریم خروجی را پاس کنید

تعریف در خط 549 فایل camera2.h .

int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)

تنظیم پاسخ تماس اعلان

تعریف در خط 787 فایل camera2.h .

int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)

روش‌های رابط صف درخواست ورودی را ارسال کنید.

تعریف در خط 536 فایل camera2.h .

int(* trigger_action)(const struct camera2_device *، uint32_t trigger_id، int32_t ext1، int32_t ext2)

فعالیت ناهمزمان را فعال کنید. این برای تحریک رفتارهای خاص روتین های دوربین 3A در هنگام استفاده استفاده می شود. برای جزئیات بیشتر شناسه‌های راه‌انداز و آرگومان‌های آنها، به مستندات CAMERA2_TRIGGER_* در بالا مراجعه کنید.

تعریف در خط 779 فایل camera2.h .


مستندات این ساختار از فایل زیر تولید شده است:
  • hardware/libhardware/include/hardware/ camera2.h