مرجع بنية camera_module

مرجع بنية camera_module

#include < camera_common.h >

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

hw_module_t   شائعة
 
int(*  get_number_of_cameras )(void)
 
int(*  get_camera_info )(int camera_id, struct camera_info *info)
 
int(*  set_callbacks )(const camera_module_callbacks_t *callbacks)
 
void(*  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 enabled)
 
int(*  init )()
 
void *  reserved [5]
 

وصف مفصّل

التعريف في السطر 646 من الملف camera_common.h .

مستندات الحقل

الطرق الشائعة لوحدة الكاميرا يجب أن يكون هذا العنصر العنصر الأول من camera_module لأنّ مستخدمي هذه البنية سيحوّلون hw_module_t إلى مؤشر camera_module في السياقات التي يُعرف فيها أنّ hw_module_t يشير إلى camera_module .

قيم العرض لـ common.methods->open for 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)

‫get_number_of_cameras:

لعرض عدد أجهزة الكاميرا التي يمكن الوصول إليها من خلال وحدة الكاميرا يتم ترقيم أجهزة الكاميرا من 0 إلى N-1، حيث يكون N هو القيمة التي تعرضها هذه الدعوة. اسم جهاز الكاميرا لـ open() هو ببساطة الرقم الذي تم تحويله إلى سلسلة. وهذا يعني "0" لرقم تعريف الكاميرا 0، و"1" لرقم تعريف الكاميرا 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) في القيمة المعروضة في هذه الدعوة. ستستخدم الإطارات الأساسية دالة الاستدعاء camera_device_status_change لإدارة عدد الكاميرات الخارجية.

التعريف في السطر 701 من الملف camera_common.h .

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:

الحصول على طرق لطلب معلومات علامة البيانات الوصفية لإضافة المورّد يجب أن تملأ HAL جميع طرق تشغيل علامة المورّد، أو يجب عدم تغيير ops في حال عدم تحديد أي علامات مورّد.

تم تحديد بنية 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)()

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 للكاميرا إذا كانت هذه الوحدة متوافقة مع إصدارات متعددة من واجهة برمجة التطبيقات لطبقة HAL للأجهزة. على سبيل المثال، إذا كانت وحدة الكاميرا متوافقة مع واجهتَي برمجة التطبيقات CAMERA_DEVICE_API_VERSION_1_0 وCAMERA_DEVICE_API_VERSION_3_2 للجهاز نفسه، يمكن للإطار الأساسي استدعاء هذه الدالة لفتح جهاز الكاميرا كجهاز CAMERA_DEVICE_API_VERSION_1_0.

هذه طريقة اختيارية. لا تحتاج وحدة HAL للكاميرا إلى التوافق مع أكثر من إصدار واحد من HAL للجهاز لكل جهاز، وقد تُعرِض هذه الوحدات الخطأ -ENOSYS لجميع طلبات الاتصال بهذه الطريقة. بالنسبة إلى جميع الإصدارات القديمة من واجهة برمجة التطبيقات لجهاز 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 method)، بغض النظر عن إصدار HAL للجهاز الذي تم فتحه به.

‫-EUSERS: سبق أن تم فتح الحد الأقصى لعدد أجهزة الكاميرا التي يمكن فتحها في الوقت نفسه، إما باستخدام هذه الطريقة أو باستخدام الطريقة common.methods->open.

التعريف في السطر 824 من الملف camera_common.h .

void* reserved[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: معرّف الكاميرا غير صالح.

التعريف في السطر 878 من الملف camera_common.h .


تم إنشاء مستندات هذه البنية من الملف التالي: