مرجع بنية camera2_device_ops

مرجع بنية camera2_device_ops

#include < camera2.h >

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

int(*  set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)
 
int(*  notify_request_queue_not_empty )(const struct camera2_device *)
 
int(*  set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)
 
int(*  get_in_progress_count )(const struct camera2_device *)
 
int(*  flush_captures_in_progress )(const struct camera2_device *)
 
int(*  construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request)
 
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)
 
int(*  register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)
 
int(*  release_stream )(const struct camera2_device *, uint32_t stream_id)
 
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)
 
int(*  allocate_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id)
 
int(*  release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id)
 
int(*  trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)
 
int(*  set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)
 
int(*  get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops)
 
int(*  dump )(const struct camera2_device *, int fd)
 
int(*  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)

allocate_reprocess_stream:

تخصيص مصدر إدخال جديد للاستخدام، يتم تحديده من خلال عرض وارتفاع وحدة تخزين مؤقت للإخراج وتنسيق البكسل في حال نجاح العملية، يتم عرض معرّف البث الجديد وعلامات استخدام gralloc وعدد المخزن المؤقت المطلوب اكتسابه في الوقت نفسه. حالات الخطأ:

  • طلب مجموعة من العرض/الارتفاع/التنسيق غير المُدرَجة على أنّها متوافقة مع الخصائص الثابتة لجهاز الاستشعار
  • طلب ضبط عدد كبير جدًا من مصادر إعادة المعالجة في آنٍ واحد

مَعلمات الإدخال:

  • width وheight وformat: مواصفات للمخازن المؤقتة التي سيتم إرسالها من خلال هذا البث يجب أن تكون قيمة التنسيق من قائمة HAL_PIXEL_FORMAT_*.
  • reprocess_stream_ops: بنية مؤشرات الدوالّ للحصول على وحدات التخزين المؤقت وإطلاقها لهذا البث سيتم ضبط البث الأساسي استنادًا إلى مخرجات الاستخدام وmax_buffers.

مَعلمات الإخراج:

  • ‫stream_id: عدد صحيح غير موقَّت يحدّد هذا البث تُستخدَم هذه القيمة في الطلبات الواردة لتحديد البث، وفي إصدار البث. ويتم ترقيم هذه المعرّفات بشكل منفصل عن معرّفات مصادر الإدخال.
  • consumer_usage: قناع استخدام gralloc الذي يحتاجه جهاز HAL لاستخدام النوع المطلوب من البيانات يتم استخدام هذا في تخصيص مخازن gralloc جديدة لقائمة انتظار مخزن البث.
  • max_buffers: الحد الأقصى لعدد وحدات التخزين المؤقت التي قد يحتاج جهاز HAL إلى الحصول عليها في الوقت نفسه. قد لا يكون لدى الجهاز عدد أكبر من وحدات التخزين المؤقت التي تم الحصول عليها في الوقت نفسه مقارنةً بهذه القيمة.

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

int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id)

allocate_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)

allocate_stream:

تخصيص بث إخراج جديد لاستخدامه، يتم تحديده من خلال عرض وارتفاع وهدف وحدة تخزين مؤقت للإخراج وربما تنسيق البكسل في حال نجاح الإجراء، يتم عرض رقم تعريف البث الجديد، وعلامات استخدام gralloc، والحد الأدنى لعدد وحدات التخزين المؤقت للصف، وربما تنسيق البكسل. حالات الخطأ:

  • طلب تركيبة العرض/الارتفاع/التنسيق غير المُدرَجة على أنّها متوافقة مع الخصائص الثابتة لجهاز الاستشعار
  • طلب عدد كبير جدًا من أحداث البث بنوع تنسيق معيّن (مثل حدثَي بث لصور Bayer الخام)

مَعلمات الإدخال:

  • width وheight وformat: مواصفات للمخازن المؤقتة التي سيتم إرسالها من خلال هذا البث التنسيق هو قيمة من قائمة HAL_PIXEL_FORMAT_*. في حال استخدام HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED، ستختار وحدة gralloc في النظام الأساسي تنسيقًا استنادًا إلى علامات الاستخدام التي يوفّرها HAL للكاميرا ومستهلك البث. يجب أن يتحقّق HAL للكاميرا من المخازن المؤقتة التي تم تسليمها إليه في طلب register_stream_buffers للحصول على التنسيق الخاص بالتنفيذ إذا لزم الأمر.
  • ‫stream_ops: بنية مؤشرات وظائف للحصول على وحدات التخزين المؤقت ووضعها في قائمة الانتظار لهذا البث سيتم ضبط البث الأساسي استنادًا إلى مخرجات الاستخدام وmax_buffers. قد لا يتمّ استدعاء الطُرق في هذه البنية إلا بعد أن تُرجع allocate_stream.

مَعلمات الإخراج:

  • ‫stream_id: عدد صحيح غير موقَّت يحدّد هذا البث تُستخدَم هذه القيمة في الطلبات الواردة لتحديد البث، وفي إصدار البث.
  • الاستخدام: قناع استخدام gralloc الذي يحتاجه جهاز HAL لإنشاء النوع المطلوب من البيانات. ويُستخدَم هذا الإجراء في تخصيص وحدات تخزين gralloc جديدة لقائمة انتظار وحدة تخزين البث.
  • max_buffers: الحد الأقصى لعدد وحدات التخزين المؤقت التي قد يحتاج جهاز HAL إلى إزالة صفها في الوقت نفسه لا يمكن للجهاز إزالة المزيد من وحدات التخزين المؤقت من "قائمة الانتظار" أكثر من هذه القيمة في الوقت نفسه.

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

int(* construct_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)(const struct camera2_device *)

إزالة كل عمليات الالتقاط الجارية ويشمل ذلك جميع الطلبات التي تمّت إزالتها من "قائمة الانتظار" (الطلبات العادية أو طلبات إعادة المعالجة) التي لم تُدرِج أيّ نتائج في بثّ أو في "قائمة انتظار اللقطات". يجب إكمال عمليات الالتقاط المكتملة جزئيًا بشكلٍ طبيعي. لا يمكن إزالة أي طلبات جديدة من قائمة الطلبات إلى أن تكتمل عملية تفريغ ذاكرة التخزين المؤقت.

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

int(* get_in_progress_count)(const struct camera2_device *)

عدد طلبات الكاميرا التي يعالجها الجهاز في الوقت الحالي (عمليات الالتقاط/إعادة المعالجة التي تم إزالة طلبها من "قائمة الانتظار"، ولكن لم يتم إدراجها بعد في قنوات الإخراج)

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

int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata)

الحصول على البيانات الوصفية الخاصة بمثيل الجهاز يجب أن تكون هذه البيانات الوصفية ثابتة لمثيل واحد من جهاز الكاميرا، ولكن قد تختلف بين طلبات open()‎. يجب أن يكون مؤشر camera_metadata المعروض صالحًا إلى أن يتم استدعاء طريقة close() للجهاز.

معلومات الإصدار:

‫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 *, vendor_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_t stream_id, int num_buffers, buffer_handle_t *buffers)

تسجيل وحدات التخزين المؤقت لمصدر بيانات معيّن يتمّ استدعاء هذه الوظيفة بعد إجراء طلب allocate_stream ناجح، وقبل إضافة الطلب الأوّل الذي يشير إلى البث إلى "قائمة الانتظار". تهدف هذه الطريقة إلى السماح لجهاز HAL بربط أو إعداد المخزن المؤقت لاستخدامه لاحقًا. من المؤكد أنّ عدد المخزن المؤقت (num_buffers) لا يقل عن max_buffers (من allocate_stream)، ولكن قد يكون أكبر. سيكون قد سبق أن تم قفل وحدات التخزين المؤقت للاستخدام. في نهاية المكالمة، يجب أن تكون جميع وحدات التخزين المؤقت جاهزة لإعادتها إلى قائمة الانتظار. إذا تم ضبط تنسيق البث على HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED، من المفترض أن يتحقّق HAL للكاميرا من وحدات التخزين المؤقت التي تم تمريرها هنا لتحديد أي معلومات خاصة بالنظام الأساسي حول تنسيق البكسل.

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

int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id)

انشر بثًا لإعادة المعالجة. تعرِض هذه الدالة خطأ إذا تمّت دعوتها عندما يكون get_in_progress_count غير صفري، أو إذا لم يكن معرّف البث صالحًا.

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

int(* release_stream)(const struct camera2_device *, uint32_t stream_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 .


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