بنية camera3_stream_buffer
#include <
camera3.h
>
حقول البيانات |
|
camera3_stream_t * | stream |
buffer_handle_t * | التخزين المؤقت |
int | status |
int | acquire_fence |
int | release_fence |
وصف مفصّل
camera3_stream_buffer_t:
ذاكرة تخزين مؤقت واحدة من بث كاميرا3 ويتضمن معرّفًا للبث الرئيسي، ومعرّفًا لوحدة تخزين gralloc نفسها، وحدود المزامنة.
لا يحدِّد المخزن المؤقت ما إذا كان سيتم استخدامه للإدخال أو الإخراج، ويتم تحديد ذلك حسب نوع البث الرئيسي وكيفية تمرير المخزن المؤقت إلى جهاز HAL.
مستندات الحقل
int acquire_fence |
الحصول على سياج المزامنة لهذا المخزن المؤقت يجب أن ينتظر HAL على fd هذا قبل محاولة القراءة من هذا المخزن المؤقت أو الكتابة فيه.
يمكن ضبط الإطار على -1 للإشارة إلى أنّه ليس من الضروري الانتظار لهذا المخزن المؤقت.
عندما يعرض HAL مخزنًا مؤقتًا للإخراج إلى إطار العمل باستخدام عملية process_capture_result()، يجب ضبط acquire_fence على -1. إذا لم ينتظر HAL أبدًا على acquire_fence بسبب خطأ في ملء المخزن المؤقت، عند استدعاء process_capture_result()، يجب أن يضبط HAL قيمة release_fence للمخزن المؤقت لتكون acquire_fence التي تم تمريرها إليه من خلال الإطار. سيسمح ذلك للإطار بالانتظار قبل إعادة استخدام المخزن المؤقت.
بالنسبة إلى وحدات تخزين المؤقتة للدخل، يجب ألا يغيّر HAL حقل acquire_fence أثناء طلب process_capture_request().
>= CAMERA_DEVICE_API_VERSION_3_2:
عندما يعرض HAL وحدة تخزين مؤقت للإدخال إلى إطار العمل باستخدام process_capture_result()، يجب ضبط acquire_fence على -1. إذا لم ينتظر HAL أبدًا على سياج اكتساب مخزن مؤقت للإدخال بسبب خطأ، يجب التعامل مع سياج المزامنة بشكل مشابه للطريقة التي يتم بها التعامل مع مخازن مؤقتة للإخراج.
buffer_handle_t* buffer |
int release_fence |
حدّ مزامنة الإصدار لهذا المخزن المؤقت. يجب أن يضبط HAL هذا الفاصل عند إرجاع المخزن المؤقت إلى إطار العمل، أو يكتب -1 للإشارة إلى أنّه لا يلزم الانتظار لهذا المخزن المؤقت.
بالنسبة إلى وحدات تخزين الإخراج، يجب ضبط حدودها في صفيف output_buffers الذي يتم تمريره إلى دالة process_capture_result().
<= CAMERA_DEVICE_API_VERSION_3_1:
بالنسبة إلى وحدة تخزين مؤقت للإدخال، يجب ضبط حدود الإصدار من خلال طلب process_capture_request().
>= CAMERA_DEVICE_API_VERSION_3_2:
بالنسبة إلى وحدة تخزين مؤقت للإدخال، يجب ضبط حدود الإطارات في input_buffer التي تم تمريرها إلى process_capture_result().
بعد إرسال إشارة release_fence لهذا المخزن المؤقت، يجب ألا يحاول HAL الوصول إلى هذا المخزن المؤقت مرة أخرى لأنّه تم نقل الملكية بالكامل مرة أخرى إلى إطار العمل.
إذا تم تحديد قيمة -1 للحاجز، يتم نقل ملكية هذا المخزن المؤقت مرة أخرى على الفور عند استدعاء process_capture_result.
حالة int |
الحالة الحالية للذاكرة المؤقتة، وهي إحدى قيم camera3_buffer_status_t. لن يُرسِل إطار العمل وحدات التخزين المؤقت إلى HAL التي تكون في حالة خطأ. في حال تعذّر على HAL ملء المخزن المؤقت، يجب ضبط حالته على CAMERA3_BUFFER_STATUS_ERROR عند إرجاعه إلى إطار العمل باستخدام process_capture_result().
camera3_stream_t * stream |
تم إنشاء مستندات هذه البنية من الملف التالي:
- hardware/libhardware/include/hardware/ camera3.h