camera_module مرجع ساختار

camera_module مرجع ساختار

#include < camera_common.h >

فیلدهای داده

hw_module_t مشترک
int(* دریافت_تعداد_دوربین )(باطل)
int(* get_camera_info )(int camera_id، struct camera_info *info)
int(* set_callbacks )(const camera_module_callbacks_t *callbacks)
خالی(* get_vendor_tag_ops )(vendor_tag_ops_t *ops)
int(* open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)
int(* set_torch_mode )(const char *camera_id، bool فعال است)
int(* شروع )()
خالی * رزرو شده [5]

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

تعریف در خط 646 فایل camera_common.h .

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

hw_module_t رایج است

روش های رایج ماژول دوربین این باید اولین عضو camera_module باشد زیرا کاربران این ساختار در زمینه‌هایی که مشخص است hw_module_t به یک camera_module اشاره می‌کند، نشانگر hw_module_t را به camera_module ارسال می‌کنند.

مقادیر بازگشتی برای common.methods->open برای camera_module عبارتند از:

0: در باز شدن موفقیت آمیز دستگاه دوربین.

-ENODEV: دستگاه دوربین به دلیل یک خطای داخلی باز نمی شود.

-EINVAL: آرگومان های ورودی نامعتبر هستند، یعنی شناسه نامعتبر است، و/یا ماژول نامعتبر است.

-EBUSY: دستگاه دوربین قبلاً برای این شناسه دوربین باز شده است (با استفاده از این روش یا open_legacy)، صرف نظر از نسخه HAL دستگاه که به عنوان باز شده است.

-EUSERS: حداکثر تعداد دستگاه‌های دوربینی که می‌توانند همزمان باز شوند، قبلاً باز شده‌اند، یا با این روش یا روش open_legacy.

سایر مقادیر بازگشتی از common.methods->open به عنوان -ENODEV در نظر گرفته می شوند.

تعریف در خط 674 فایل camera_common.h .

int(* get_camera_info)(int camera_id, struct camera_info *info)

get_camera_info:

اطلاعات استاتیک دوربین را برای یک دستگاه دوربین معین برگردانید. این اطلاعات ممکن است برای یک دستگاه دوربین تغییر نکند.

مقادیر برگشتی:

0: در یک عملیات موفقیت آمیز

-ENODEV: اطلاعات به دلیل یک خطای داخلی قابل ارائه نیست.

-EINVAL: آرگومان های ورودی نامعتبر هستند، یعنی شناسه نامعتبر است، و/یا ماژول نامعتبر است.

اطلاعات نسخه (بر اساس camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_4 یا بالاتر:

وقتی دوربین قطع می شود، شناسه دوربین آن نامعتبر می شود. با فراخوانی این روش با این شناسه دوربین نامعتبر، متادیتای استاتیک دوربین -EINVAL و NULL دریافت می‌شود ( camera_info.static_camera_characteristics ).

تعریف در خط 727 فایل camera_common.h .

int(* get_number_of_cameras)(void)

دریافت_تعداد_دوربین:

تعداد دستگاه‌های دوربین قابل دسترسی از طریق ماژول دوربین را برمی‌گرداند. دستگاه های دوربین از 0 تا N-1 شماره گذاری می شوند که N مقداری است که با این تماس برگردانده می شود. نام دستگاه دوربین برای open() به سادگی عددی است که به یک رشته تبدیل شده است. یعنی "0" برای دوربین ID 0، "1" برای دوربین ID 1.

اطلاعات نسخه (بر اساس camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 یا پایین تر:

مقدار در اینجا باید ثابت باشد و پس از اولین فراخوانی این متد نمی تواند تغییر کند.

CAMERA_MODULE_API_VERSION_2_4 یا بالاتر:

مقدار در اینجا باید ثابت باشد و فقط باید دوربین‌های داخلی را که دارای مقادیر روبروی دوربین CAMERA_FACING_BACK یا CAMERA_FACING_FRONT ( camera_info.facing ) هستند، حساب کند. HAL نباید دوربین های خارجی ( camera_info.facing == CAMERA_FACING_EXTERNAL) را در مقدار برگشتی این تماس شامل شود. Frameworks از camera_device_status_change برای مدیریت تعداد دوربین های خارجی استفاده می کند.

تعریف در خط 701 فایل camera_common.h .

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:

روش هایی برای پرس و جو برای اطلاعات برچسب فراداده پسوند فروشنده دریافت کنید. HAL باید تمام روش‌های عملیات تگ فروشنده را پر کند یا اگر تگ فروشنده تعریف نشده باشد، عملیات را بدون تغییر باقی بگذارد.

ساختار vendor_tag_ops مورد استفاده در اینجا به شرح زیر تعریف شده است: system/media/camera/include/system/vendor_tags.h

اطلاعات نسخه (بر اساس camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: توسط ماژول HAL ارائه نشده است. فریم ورک ممکن است این تابع را فراخوانی نکند.

CAMERA_MODULE_API_VERSION_2_2: برای فراخوانی توسط چارچوب معتبر است.

تعریف در خط 778 فایل camera_common.h .

int(* init)()

شروع:

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

این می تواند توسط پیاده سازی های HAL برای انجام مقداردهی اولیه و سایر عملیات های یک بار استفاده شود.

اطلاعات نسخه (بر اساس camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: توسط ماژول HAL ارائه نشده است. فریم ورک این تابع را فراخوانی نخواهد کرد.

CAMERA_MODULE_API_VERSION_2_4: اگر NULL نباشد، همیشه یک بار پس از بارگیری ماژول HAL، قبل از فراخوانی هر روش دیگر ماژول HAL، توسط فریم ورک فراخوانی می شود.

مقادیر برگشتی:

0: در یک عملیات موفقیت آمیز.

-ENODEV: مقداردهی اولیه را نمی توان به دلیل یک خطای داخلی کامل کرد. HAL باید در حالت غیرعملکردی فرض شود.

تعریف در خط 909 فایل camera_common.h .

int(* open_legacy)(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)

open_legacy:

اگر چندین نسخه HAL API دستگاه توسط این ماژول HAL دوربین پشتیبانی می‌شود، یک دستگاه HAL دوربین قدیمی را باز کنید. برای مثال، اگر ماژول دوربین هر دو CAMERA_DEVICE_API_VERSION_1_0 و CAMERA_DEVICE_API_VERSION_3_2 API دستگاه را برای یک شناسه دوربین پشتیبانی می‌کند، فریمورک می‌تواند این عملکرد را برای باز کردن دستگاه دوربین به‌عنوان دستگاه CAMERA_DEVICE_API_VERSION_1_0 فراخوانی کند.

این یک روش اختیاری است. یک ماژول دوربین HAL نیازی به پشتیبانی از بیش از یک نسخه HAL دستگاه در هر دستگاه ندارد و چنین ماژول‌هایی ممکن است برای همه تماس‌های این روش -ENOSYS را برگردانند. برای همه نسخه‌های قدیمی‌تر API دستگاه HAL که پشتیبانی نمی‌شوند، ممکن است -EOPNOTSUPP برگردد. هنگامی که موارد فوق رخ می دهد، متد open() معمولی (common.methods->open) به جای آن توسط فریمورک استفاده می شود.

اطلاعات نسخه (بر اساس camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: توسط ماژول HAL ارائه نشده است. فریم ورک این تابع را فراخوانی نخواهد کرد.

CAMERA_MODULE_API_VERSION_2_3: برای فراخوانی توسط چارچوب معتبر است.

مقادیر برگشتی:

0: در باز شدن موفقیت آمیز دستگاه دوربین.

-ENOSYS این روش پشتیبانی نمی شود.

-EOPNOTSUPP: نسخه HAL درخواستی توسط این روش پشتیبانی نمی شود.

-EINVAL: آرگومان های ورودی نامعتبر هستند، یعنی شناسه نامعتبر است، و/یا ماژول نامعتبر است.

-EBUSY: دستگاه دوربین قبلاً برای این شناسه دوربین باز شده است (با استفاده از این روش یا روش common.methods->open)، صرف نظر از نسخه HAL دستگاه که به عنوان باز شده است.

-EUSERS: حداکثر تعداد دستگاه های دوربینی که می توانند همزمان باز شوند قبلاً باز شده اند، یا با این روش یا با روش common.methods->open.

تعریف در خط 824 فایل camera_common.h .

void* رزرو شده[5]

تعریف در خط 912 فایل camera_common.h .

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

set_callbacks:

برای اطلاع از چارچوب رویدادهای ماژول دوربین ناهمزمان، نشانگرهای عملکرد برگشت به تماس را به ماژول HAL ارائه دهید. فریم ورک این تابع را یک بار پس از بارگیری اولیه ماژول HAL دوربین، پس از فراخوانی متد get_number_of_cameras() برای اولین بار و قبل از هر تماس دیگری با ماژول فراخوانی می کند.

اطلاعات نسخه (بر اساس camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0، CAMERA_MODULE_API_VERSION_2_0:

توسط ماژول HAL ارائه نشده است. فریم ورک ممکن است این تابع را فراخوانی نکند.

CAMERA_MODULE_API_VERSION_2_1:

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

مقادیر برگشتی:

0: در یک عملیات موفقیت آمیز

-ENODEV: عملیات به دلیل یک خطای داخلی تکمیل نمی شود.

-EINVAL: آرگومان های ورودی نامعتبر هستند، یعنی بازخوانی ها تهی هستند

تعریف در خط 758 فایل camera_common.h .

int(* set_torch_mode)(const char *camera_id, bool enabled)

set_torch_mode:

حالت مشعل واحد فلاش مرتبط با شناسه دوربین مشخص را روشن یا خاموش کنید. اگر عملیات موفقیت آمیز باشد، HAL باید وضعیت مشعل چارچوب را با فراخوانی camera_module_callbacks.torch_mode_status_change () با وضعیت جدید مطلع کند.

دستگاه دوربین برای دسترسی به واحد فلاش اولویت بیشتری دارد. هنگامی که هر گونه تضاد منبعی وجود دارد، مانند open() برای باز کردن یک دستگاه دوربین، ماژول HAL باید چارچوب را از طریق camera_module_callbacks.torch_mode_status_change() مطلع کند که حالت مشعل خاموش شده است و وضعیت حالت مشعل به TORCH_MODE_STATUS_NOT_AVAILABLE تبدیل شده است. هنگامی که منابع برای روشن کردن حالت مشعل دوباره در دسترس قرار گرفت، ماژول HAL باید چارچوب را از طریق camera_module_callbacks.torch_mode_status_change() مطلع کند که وضعیت حالت مشعل به TORCH_MODE_STATUS_AVAILABLE_OFF تبدیل شده است تا set_torch_mode() فراخوانی شود.

هنگامی که فریم ورک ()set_torch_mode را برای روشن کردن حالت مشعل یک واحد فلاش فراخوانی می کند، اگر HAL نتواند چندین حالت مشعل را به طور همزمان روشن نگه دارد، HAL باید حالت مشعل را که توسط یک فراخوان قبلی set_torch_mode () روشن شده بود خاموش کند و به چارچوب اطلاع دهد. که حالت مشعل آن واحد فلاش تبدیل به TORCH_MODE_STATUS_AVAILABLE_OFF شده است.

اطلاعات نسخه (بر اساس camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: توسط ماژول HAL ارائه نشده است. فریم ورک این تابع را فراخوانی نخواهد کرد.

CAMERA_MODULE_API_VERSION_2_4: برای فراخوانی توسط چارچوب معتبر است.

مقادیر برگشتی:

0: در یک عملیات موفقیت آمیز.

-ENOSYS: دستگاه دوربین از این عملیات پشتیبانی نمی کند. اگر و فقط در صورتی که android.flash.info.available نادرست باشد، برگردانده می شود.

-EBUSY: دستگاه دوربین در حال حاضر در حال استفاده است.

-EUSERS: منابع مورد نیاز برای روشن کردن حالت مشعل در دسترس نیست، معمولاً به این دلیل که سایر دستگاه‌های دوربین منابعی را برای عدم امکان استفاده از واحد فلاش در اختیار دارند.

-EINVAL: camera_id نامعتبر است.

تعریف در خط 878 فایل camera_common.h .


مستندات این ساختار از فایل زیر تولید شده است: