مرجع هيكل الكاميرا_module

مرجع هيكل الكاميرا_module

#include < camera_common.h >

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

hw_module_t شائع
كثافة العمليات (* get_number_of_cameras (باطلة)
كثافة العمليات (* get_camera_info )(int Camera_id، struct Camera_info *info)
كثافة العمليات (* set_callbacks )(const Camera_module_callbacks_t *callbacks)
فارغ(* get_vendor_tag_ops )(vendor_tag_ops_t *ops)
كثافة العمليات (* open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)
كثافة العمليات (* set_torch_mode )(const char *camera_id، منطقي ممكّن)
كثافة العمليات (* فيه )()
فارغ * محفوظة [5]

وصف تفصيلي

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

التوثيق الميداني

hw_module_t شائع

الطرق الشائعة لوحدة الكاميرا. يجب أن يكون هذا هو العضو الأول في 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، هيكل كاميرا_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 .

كثافة العمليات (* get_number_of_cameras) (باطلة)

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 .

باطلة(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:

احصل على طرق للاستعلام عن معلومات علامة بيانات تعريف ملحق البائع. يجب أن يقوم HAL بملء جميع أساليب تشغيل علامة البائع، أو ترك العمليات دون تغيير إذا لم يتم تحديد علامات البائع.

يتم تعريف بنية البائع_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 .

كثافة العمليات (* الحرف الأول) ()

فيه:

يتم استدعاء هذه الطريقة بواسطة خدمة الكاميرا قبل استدعاء أي طرق أخرى، مباشرة بعد تحميل مكتبة HAL الخاصة بالكاميرا بنجاح. قد يتم تركه كـ NULL بواسطة وحدة HAL، إذا لم تكن هناك حاجة إلى التهيئة.

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

هذه طريقة اختيارية. لا تحتاج وحدة Camera 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->طريقة مفتوحة)، بغض النظر عن إصدار HAL للجهاز الذي تم فتحه به.

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

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

باطلة* محفوظة[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، منطقي ممكّن)

وضع_الشعلة:

قم بتشغيل أو إيقاف تشغيل وضع الشعلة لوحدة الفلاش المرتبطة بمعرف الكاميرا المحدد. إذا نجحت العملية، فيجب أن يقوم 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: جهاز الكاميرا قيد الاستخدام بالفعل.

-المستخدمون: الموارد اللازمة لتشغيل وضع الشعلة غير متوفرة، وذلك عادةً لأن أجهزة الكاميرا الأخرى تحتفظ بالموارد اللازمة لجعل استخدام وحدة الفلاش غير ممكن.

-EINVAL: معرف الكاميرا غير صالح.

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


تم إنشاء وثائق هذه البنية من الملف التالي: