مرجع هيكل الكاميرا2_device_ops

مرجع هيكل الكاميرا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)

وصف تفصيلي

التعريف في السطر 527 من ملف Camera2.h .

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

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 إلى الحصول عليها في نفس الوقت. قد لا يحتوي الجهاز على مخازن مؤقتة تم الحصول عليها في نفس الوقت أكثر من هذه القيمة.

التعريف في السطر 708 من ملف Camera2.h .

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 دائمًا تحرير دفق إعادة المعالجة قبل أن يقوم بتحرير دفق الإخراج الذي يعتمد عليه.

التعريف في السطر 754 من ملف Camera2.h .

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 إلى وضعها في قائمة الانتظار في نفس الوقت. لا يجوز للجهاز إلغاء مخازن مؤقتة أكثر من هذه القيمة في نفس الوقت.

التعريف في السطر 632 من ملف Camera2.h .

int(* build_default_request)(const struct Camera2_device *, int request_template, Camera_metadata_t **request)

قم بإنشاء طلب افتراضي مملوء لحالات استخدام الكاميرا القياسية.

يجب أن يقوم الجهاز بإرجاع طلب كامل تم تكوينه لتلبية حالة الاستخدام المطلوبة، والتي يجب أن تكون أحد تعدادات 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)(الهيكل الثابت للكاميرا2_device *)

مسح جميع اللقطات الجارية. يتضمن ذلك جميع الطلبات التي تم وضعها في قائمة الانتظار (العادية أو التي تتم إعادة معالجتها) والتي لم تضع بعد أي مخرجات في الدفق أو قائمة انتظار الإطارات. يجب أن تكتمل اللقطات المكتملة جزئيًا بشكل طبيعي. لا يجوز فصل أي طلبات جديدة من قائمة انتظار الطلبات حتى يكتمل التدفق.

التعريف في السطر 567 من ملف Camera2.h .

int(* get_in_progress_count)(تركيبة الكاميرا2_device *)

عدد طلبات الكاميرا التي تتم معالجتها بواسطة الجهاز في الوقت الحالي (الالتقاط/عمليات إعادة المعالجة التي تم وضع طلبها في قائمة الانتظار، ولكن لم يتم إدراجها بعد في مسار (خطوط) الإخراج). لا يجوز لإطار العمل إصدار أي تدفقات حتى يصبح العدد قيد التقدم 0.

التعريف في السطر 558 من ملف Camera2.h .

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:

صالح. يمكن استدعاؤها بواسطة الإطار.

التعريف في السطر 820 من ملف Camera2.h .

int(* get_metadata_vendor_tag_ops)(const struct Camera2_device *, sales_tag_query_ops_t **ops)

احصل على طرق للاستعلام عن معلومات علامة بيانات تعريف ملحق البائع. قد يتم تعيين ops على NULL إذا لم يتم تحديد علامات ملحق البائع.

التعريف في السطر 795 من ملف Camera2.h .

int(* notify_request_queue_not_empty)(const struct Camera2_device *)

قم بإعلام الجهاز بأن قائمة انتظار الطلبات لم تعد فارغة. يجب أن يتم استدعاؤه فقط عند إضافة المخزن المؤقت الأول إلى قائمة انتظار جديدة، أو بعد أن يقوم المصدر بإرجاع NULL استجابة لاستدعاء قائمة الانتظار.

التعريف في السطر 544 من ملف Camera2.h .

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 الخاص بالكاميرا بفحص المخازن المؤقتة التي تم تمريرها هنا لتحديد أي معلومات تنسيق بكسل خاصة بالنظام الأساسي.

التعريف في السطر 657 من ملف Camera2.h .

int(* Release_reprocess_stream)(const struct Camera2_device *, uint32_tstream_id)

الافراج عن دفق إعادة المعالجة. يُرجع خطأً إذا تم استدعاؤه عندما تكون قيمة get_in_progress_count غير صفرية، أو إذا كان معرف الدفق غير صالح.

التعريف في السطر 765 من ملف Camera2.h .

int(* Release_stream)(const struct Camera2_device *, uint32_tstream_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 .


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