مرجع هيكل الكاميرا2_device_ops
#include < camera2.h >
حقول البيانات | |
كثافة العمليات (* | set_request_queue_src_ops )(const struct Camera2_device *, const Camera2_request_queue_src_ops_t *request_src_ops) |
كثافة العمليات (* | notify_request_queue_not_empty )(تركيبة الكاميرا 2_device *) |
كثافة العمليات (* | set_frame_queue_dst_ops )(const struct Camera2_device *, const Camera2_frame_queue_dst_ops_t *frame_dst_ops) |
كثافة العمليات (* | get_in_progress_count )(تركيبة الكاميرا 2_device *) |
كثافة العمليات (* | Flush_captures_in_progress )(بنية الكاميرا الثابتة 2_device *) |
كثافة العمليات (* | build_default_request )(const struct Camera2_device *, int request_template, Camera_metadata_t **request) |
كثافة العمليات (* | تخصيص_دفق )(const struct Camera2_device *، عرض uint32_t، ارتفاع uint32_t، تنسيق int، const Camera2_stream_ops_t *stream_ops، uint32_t *stream_id، uint32_t *format_actual، uint32_t *usage، uint32_t *max_buffers) |
كثافة العمليات (* | Register_stream_buffers )(const struct Camera2_device *, uint32_tstream_id, int num_buffers, buffer_handle_t *buffers) |
كثافة العمليات (* | Release_stream )(const struct Camera2_device *، uint32_tstream_id) |
كثافة العمليات (* | تخصيص_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_usage، uint32_t *max_buffers) |
كثافة العمليات (* | تخصيص_reprocess_stream_from_stream )(const struct Camera2_device *، uint32_tput_stream_id، const Camera2_stream_in_ops_t *reprocess_stream_ops، uint32_t *stream_id) |
كثافة العمليات (* | Release_reprocess_stream )(const struct Camera2_device *، uint32_tstream_id) |
كثافة العمليات (* | Trigger_action )(const struct Camera2_device *، uint32_t Trigger_id، int32_t ext1، int32_t ext2) |
كثافة العمليات (* | set_notify_callback )(const struct Camera2_device *, Camera2_notify_callback notify_cb, void *user) |
كثافة العمليات (* | get_metadata_vendor_tag_ops ) (const struct Camera2_device *، sales_tag_query_ops_t **ops) |
كثافة العمليات (* | تفريغ )(const struct Camera2_device *, int fd) |
كثافة العمليات (* | get_instance_metadata )(const struct Camera2_device *, Camera_metadata **instance_metadata) |
وصف تفصيلي
التوثيق الميداني
int(* allocate_reprocess_stream)(const struct Camera2_device *, uint32_t width, uint32_t height, uint32_t format, const Camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
تخصيص_reprocess_stream:
تخصيص دفق إدخال جديد للاستخدام، يتم تحديده بواسطة عرض المخزن المؤقت للإخراج وارتفاعه وتنسيق البكسل. إرجاع معرف الدفق الجديد، وإشارات استخدام gralloc، وعدد المخزن المؤقت المطلوب الحصول عليه في نفس الوقت، عند النجاح. شروط الخطأ:
- طلب مجموعة عرض/ارتفاع/تنسيق غير مدرجة على أنها مدعومة بخصائص المستشعر الثابتة
- المطالبة بتكوين عدد كبير جدًا من تدفقات إعادة المعالجة مرة واحدة.
معلمات الإدخال:
- العرض والارتفاع والتنسيق: مواصفات المخازن المؤقتة التي سيتم إرسالها عبر هذا الدفق. يجب أن يكون التنسيق قيمة من القائمة HAL_PIXEL_FORMAT_*.
- reprocess_stream_ops: بنية المؤشرات الوظيفية للحصول على المخازن المؤقتة لهذا الدفق وتحريرها. سيتم تكوين الدفق الأساسي بناءً على الاستخدام ومخرجات max_buffers.
معلمات الإخراج:
- Stream_id: عدد صحيح غير موقّع يحدد هذا الدفق. يتم استخدام هذه القيمة في الطلبات الواردة لتحديد الدفق، وفي تحرير الدفق. يتم ترقيم هذه المعرفات بشكل منفصل عن معرفات دفق الإدخال.
- Consumer_usage: قناع استخدام gralloc الذي يحتاجه جهاز HAL لاستهلاك نوع البيانات المطلوب. يُستخدم هذا في تخصيص مخازن مؤقتة جديدة لقائمة انتظار المخزن المؤقت للتيار.
- max_buffers: الحد الأقصى لعدد المخازن المؤقتة التي قد يحتاج جهاز HAL إلى الحصول عليها في نفس الوقت. قد لا يحتوي الجهاز على مخازن مؤقتة تم الحصول عليها في نفس الوقت أكثر من هذه القيمة.
int(* allocate_reprocess_stream_from_stream)(const struct Camera2_device *, uint32_tput_stream_id, const Camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id) |
تخصيص_reprocess_stream_from_stream:
تخصيص دفق إدخال جديد للاستخدام، والذي سيستخدم المخازن المؤقتة المخصصة لدفق الإخراج الموجود. أي أنه بعد أن يقوم HAL بوضع مخزن مؤقت في دفق الإخراج، فإنه قد يرى نفس المخزن المؤقت الذي تم تسليمه إليه من دفق إعادة معالجة الإدخال هذا. بعد أن تقوم HAL بتحرير المخزن المؤقت مرة أخرى إلى دفق إعادة المعالجة، سيتم إعادته إلى قائمة انتظار الإخراج لإعادة استخدامه.
شروط الخطأ:
- استخدام تدفق مخرجات بحجم/تنسيق غير مناسب كأساس لتدفق إعادة المعالجة.
- محاولة تخصيص عدد كبير جدًا من تدفقات إعادة المعالجة مرة واحدة.
معلمات الإدخال:
- Output_stream_id: معرف قطار الإخراج الموجود الذي له حجم وشكل مناسب لإعادة المعالجة.
- reprocess_stream_ops: بنية المؤشرات الوظيفية للحصول على المخازن المؤقتة لهذا الدفق وتحريرها. سيستخدم الدفق الأساسي نفس مقابض المخزن المؤقت للرسومات التي يستخدمها دفق الإخراج.
معلمات الإخراج:
- Stream_id: عدد صحيح غير موقّع يحدد هذا الدفق. يتم استخدام هذه القيمة في الطلبات الواردة لتحديد الدفق، وفي تحرير الدفق. يتم ترقيم هذه المعرفات بشكل منفصل عن معرفات دفق الإدخال.
يجب على عميل HAL دائمًا تحرير دفق إعادة المعالجة قبل أن يقوم بتحرير دفق الإخراج الذي يعتمد عليه.
int(* allocate_stream)(const struct Camera2_device *,uint32_t width, uint32_t height, int format, const Camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers) |
تخصيص_الدفق:
تخصيص دفق إخراج جديد للاستخدام، يتم تحديده بواسطة عرض المخزن المؤقت للإخراج والارتفاع والهدف وربما تنسيق البكسل. يُرجع معرف الدفق الجديد، وإشارات استخدام gralloc، والحد الأدنى لعدد المخزن المؤقت لقائمة الانتظار، وربما تنسيق البكسل، عند النجاح. شروط الخطأ:
- طلب مجموعة عرض/ارتفاع/تنسيق غير مدرجة على أنها مدعومة بخصائص المستشعر الثابتة
- طلب عدد كبير جدًا من التدفقات من نوع تنسيق معين (على سبيل المثال، تدفقان خام من Bayer).
معلمات الإدخال:
- العرض والارتفاع والتنسيق: مواصفات المخازن المؤقتة التي سيتم إرسالها عبر هذا الدفق. التنسيق هو قيمة من القائمة HAL_PIXEL_FORMAT_*. إذا تم استخدام HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED، فستحدد وحدة النظام الأساسي gralloc تنسيقًا بناءً على إشارات الاستخدام المقدمة من HAL للكاميرا ومستهلك البث. يجب أن يقوم HAL الخاص بالكاميرا بفحص المخازن المؤقتة التي تم تسليمها إليها في استدعاء Register_stream_buffers للحصول على التنسيق الخاص بالتنفيذ إذا لزم الأمر.
- Stream_ops: بنية المؤشرات الوظيفية للحصول على المخازن المؤقتة لهذا الدفق ووضعها في قائمة الانتظار. سيتم تكوين الدفق الأساسي بناءً على الاستخدام ومخرجات max_buffers. قد لا يتم استدعاء الأساليب الموجودة في هذه البنية إلا بعد إرجاع تخصيص_الدفق.
معلمات الإخراج:
- Stream_id: عدد صحيح غير موقّع يحدد هذا الدفق. يتم استخدام هذه القيمة في الطلبات الواردة لتحديد الدفق، وفي تحرير الدفق.
- الاستخدام: قناع استخدام غرالوك الذي يحتاجه جهاز HAL لإنتاج نوع البيانات المطلوب. يُستخدم هذا في تخصيص مخازن مؤقتة جديدة لقائمة انتظار المخزن المؤقت للتيار.
- max_buffers: الحد الأقصى لعدد المخازن المؤقتة التي قد يحتاج جهاز HAL إلى وضعها في قائمة الانتظار في نفس الوقت. لا يجوز للجهاز إلغاء مخازن مؤقتة أكثر من هذه القيمة في نفس الوقت.
int(* build_default_request)(const struct Camera2_device *, int request_template, Camera_metadata_t **request) |
قم بإنشاء طلب افتراضي مملوء لحالات استخدام الكاميرا القياسية.
يجب أن يقوم الجهاز بإرجاع طلب كامل تم تكوينه لتلبية حالة الاستخدام المطلوبة، والتي يجب أن تكون أحد تعدادات CAMERA2_TEMPLATE_*. يجب تضمين جميع حقول التحكم في الطلب، باستثناء android.request.outputStreams.
يجب تخصيص المخزن المؤقت للبيانات التعريفية الذي تم إرجاعه باستخدام allocate_camera_metadata. يأخذ الإطار ملكية المخزن المؤقت.
int(* dump)(const struct Camera2_device *, int fd) |
int(* Flush_captures_in_progress)(الهيكل الثابت للكاميرا2_device *) |
مسح جميع اللقطات الجارية. يتضمن ذلك جميع الطلبات التي تم وضعها في قائمة الانتظار (العادية أو التي تتم إعادة معالجتها) والتي لم تضع بعد أي مخرجات في الدفق أو قائمة انتظار الإطارات. يجب أن تكتمل اللقطات المكتملة جزئيًا بشكل طبيعي. لا يجوز فصل أي طلبات جديدة من قائمة انتظار الطلبات حتى يكتمل التدفق.
int(* get_in_progress_count)(تركيبة الكاميرا2_device *) |
int(* get_instance_metadata)(const struct Camera2_device *, Camera_metadata **instance_metadata) |
احصل على البيانات التعريفية الخاصة بمثيل الجهاز. يجب أن تكون هذه البيانات التعريفية ثابتة لمثيل واحد لجهاز الكاميرا، ولكنها قد تكون مختلفة بين مكالمات open(). يجب أن يكون مؤشر Camera_metadata الذي تم إرجاعه صالحًا حتى يتم استدعاء طريقة إغلاق الجهاز ().
معلومات الإصدار:
CAMERA_DEVICE_API_VERSION_2_0:
غير متاح. قد لا يتمكن الإطار من الوصول إلى مؤشر الوظيفة هذا.
CAMERA_DEVICE_API_VERSION_2_1:
صالح. يمكن استدعاؤها بواسطة الإطار.
int(* get_metadata_vendor_tag_ops)(const struct Camera2_device *, sales_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(const struct Camera2_device *) |
int(* Register_stream_buffers)(const struct Camera2_device *, uint32_tstream_id, int num_buffers, buffer_handle_t *buffers) |
تسجيل المخازن المؤقتة لتيار معين. يتم استدعاء هذا بعد استدعاء allocate_stream ناجح، وقبل وضع الطلب الأول الذي يشير إلى الدفق في قائمة الانتظار. تهدف هذه الطريقة إلى السماح لجهاز HAL بتعيين المخازن المؤقتة أو إعدادها لاستخدامها لاحقًا. من المؤكد أن يكون num_buffers بحد أقصى max_buffers (من تخصيص_الدفق)، ولكن قد يكون أكبر. سيتم بالفعل تأمين المخازن المؤقتة للاستخدام. في نهاية المكالمة، يجب أن تكون كافة المخازن المؤقتة جاهزة للإرجاع إلى قائمة الانتظار. إذا تم تعيين تنسيق الدفق إلى HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED، فيجب أن يقوم HAL الخاص بالكاميرا بفحص المخازن المؤقتة التي تم تمريرها هنا لتحديد أي معلومات تنسيق بكسل خاصة بالنظام الأساسي.
int(* Release_reprocess_stream)(const struct Camera2_device *, uint32_tstream_id) |
int(* Release_stream)(const struct Camera2_device *, uint32_tstream_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) |
تم إنشاء وثائق هذه البنية من الملف التالي:
- الأجهزة/libhardware/تشمل/الأجهزة/ الكاميرا2.h