Camera3_capture_result مرجع الهيكل

Camera3_capture_result مرجع الهيكل

#include < camera3.h >

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

uint32_t رقم الإطار
الكاميرا الثابتة_metadata_t * نتيجة
uint32_t num_output_buffers
كاميرا ثابتة3_stream_buffer_t * input_buffers
كاميرا ثابتة3_stream_buffer_t * input_buffer
uint32_t Part_result

وصف تفصيلي

Camera3_capture_result_t:

نتيجة التقاط/إعادة معالجة واحدة بواسطة جهاز الكاميرا HAL. يتم إرسال هذا إلى إطار العمل بشكل غير متزامن باستخدام Process_capture_result()، استجابةً لطلب التقاط واحد تم إرساله إلى HAL باستخدام Process_capture_request(). قد يتم إجراء استدعاءات متعددة لـprocess_capture_result() بواسطة HAL لكل طلب.

قد تحتوي كل مكالمة، جميعها بنفس رقم الإطار، على مجموعة فرعية من المخازن المؤقتة للإخراج و/أو بيانات التعريف الناتجة. لا يجوز توفير البيانات التعريفية إلا مرة واحدة لرقم إطار معين؛ يجب على كافة الاستدعاءات الأخرى تعيين بيانات تعريف النتيجة على NULL.

تحتوي البنية الناتجة على بيانات تعريف الإخراج من هذا الالتقاط، ومجموعة المخازن المؤقتة للإخراج التي تم/سيتم ملؤها لهذا الالتقاط. قد يأتي كل مخزن مؤقت للإخراج مزودًا بسياج مزامنة الإصدار الذي سينتظره إطار العمل قبل القراءة، في حالة عدم ملء المخزن المؤقت بواسطة HAL.

>= CAMERA_DEVICE_API_VERSION_3_2:

قد يتم توفير البيانات التعريفية عدة مرات لرقم إطار واحد. سيقوم الإطار بتجميع النتيجة النهائية المحددة من خلال دمج كل نتيجة جزئية معًا في مجموعة النتائج الإجمالية.

إذا تم توفير مخزن مؤقت للإدخال في الطلب، فيجب أن تعيده طبقة توصيف سطح الأرض (HAL) في إحدى استدعاءاتprocess_capture_result، وقد يكون الاستدعاء مجرد إرجاع المخزن المؤقت للإدخال، بدون بيانات تعريف ومخازن مؤقتة للإخراج؛ يجب التعامل مع أسوار المزامنة بنفس الطريقة التي يتم بها التعامل مع المخازن المؤقتة للإخراج.

اعتبارات الأداء:

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

قد تكون حالة الاستخدام النموذجية هي حساب حالة التركيز البؤري التلقائي في منتصف الطريق عبر المسار؛ من خلال إعادة الحالة إلى إطار العمل على الفور، نحصل على زيادة في الأداء بنسبة 50% والاستجابة الملموسة للتركيز التلقائي.

التعريف في السطر 2251 من ملف Camera3.h .

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

uint32_t رقم الإطار

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

التعريف في السطر 2258 من ملف Camera3.h .

كاميرا ثابتة3_stream_buffer_t * input_buffer

>= CAMERA_DEVICE_API_VERSION_3_2:

مقبض المخزن المؤقت لدفق الإدخال لهذا الالتقاط. قد لا يتم استهلاكه بعد في الوقت الذي تستدعي فيه طبقة تصديق الأجهزة (HAL) عملية_capture_result(); سينتظر إطار العمل أسوار مزامنة الإصدار المقدمة من HAL قبل إعادة استخدام المخزن المؤقت.

يجب أن يتعامل HAL مع أسوار المزامنة بنفس الطريقة التي يتم بها التعامل مع Output_buffers.

يُسمح بإرسال مخزن مؤقت واحد فقط لكل طلب. كما هو الحال مع المخازن المؤقتة للإخراج، يجب الحفاظ على ترتيب المخازن المؤقتة للإدخال بواسطة HAL.

اعتبارات الأداء:

يجب إرجاع المخزن المؤقت للإدخال في أقرب وقت ممكن. إذا كانت طبقة HAL تدعم أسوار المزامنة، فيمكنها استدعاء Process_capture_result لإعادتها مع تعيين أسوار المزامنة بشكل مناسب. إذا كانت أسوار المزامنة غير مدعومة، فلا يمكن إرجاع المخزن المؤقت إلا عند استهلاكه، الأمر الذي قد يستغرق وقتًا طويلاً؛ قد يختار HAL نسخ المخزن المؤقت للإدخال هذا لإرجاع المخزن المؤقت بشكل أسرع.

التعريف في السطر 2361 من ملف Camera3.h .

uint32_t num_output_buffers

عدد المخازن المؤقتة للإخراج التي تم إرجاعها في بنية النتيجة هذه. يجب أن يكون أقل من أو يساوي عدد طلبات الالتقاط المتطابقة. إذا كان هذا أقل من عدد المخزن المؤقت في طلب الالتقاط، فيجب إجراء استدعاء آخر على الأقل لـprocess_capture_result بنفس رقم الإطار، لإرجاع المخازن المؤقتة المتبقية للمخرجات إلى إطار العمل. قد يكون هذا صفرًا فقط إذا كانت البنية تتضمن بيانات تعريف نتيجة صالحة أو تم إرجاع مخزن مؤقت للإدخال في هذه النتيجة.

التعريف في السطر 2296 من ملف Camera3.h .

كاميرا ثابتة3_stream_buffer_t * مخرجات_مخازن مؤقتة

مقابض المخازن المؤقتة لدفق الإخراج لهذا الالتقاط. قد لا يتم ملؤها بعد في الوقت الذي يستدعي فيه HAL عملية_capture_result(); سينتظر إطار العمل أسوار مزامنة الإصدار التي يوفرها HAL قبل قراءة المخازن المؤقتة.

يجب أن يقوم HAL بتعيين سياج مزامنة إصدار المخزن المؤقت للتيار إلى fd مزامنة صالحة، أو إلى -1 إذا كان المخزن المؤقت ممتلئًا بالفعل.

إذا واجه HAL خطأً أثناء معالجة المخزن المؤقت، ولم يتم ملء المخزن المؤقت، فيجب تعيين حقل حالة المخزن المؤقت إلى CAMERA3_BUFFER_STATUS_ERROR. إذا لم ينتظر HAL على سياج الاكتساب قبل مواجهة الخطأ، فيجب نسخ سياج الاكتساب إلى سياج التحرير، للسماح لإطار العمل بالانتظار على السياج قبل إعادة استخدام المخزن المؤقت.

يجب تعيين سياج الاكتساب على -1 لكافة المخازن المؤقتة للإخراج. إذا كانت قيمة num_output_buffers تساوي صفرًا، فقد يكون هذا فارغًا. في هذه الحالة، يجب إجراء استدعاء Process_capture_result واحد على الأقل بواسطة HAL لتوفير المخازن المؤقتة للإخراج.

عندما يتم استدعاءprocess_capture_result بمخزن مؤقت جديد للإطار، يجب أن تكون جميع المخازن المؤقتة للإطارات السابقة لذلك الدفق المقابل قد تم تسليمها بالفعل (ليس من الضروري أن يتم الإشارة إلى الأسوار بعد).

>= CAMERA_DEVICE_API_VERSION_3_2:

قد يتم إرسال مخازن Gralloc المؤقتة للإطار إلى إطار العمل قبل إخطار SHUTTER المقابل.

اعتبارات الأداء:

لن يتم إرسال المخازن المؤقتة التي تم تسليمها إلى إطار العمل إلى طبقة التطبيق حتى يتم استلام بداية الطابع الزمني للتعرض عبر استدعاء SHUTTER notify(). يوصى بشدة بإرسال هذه المكالمة في أقرب وقت ممكن.

التعريف في السطر 2335 من ملف Camera3.h .

uint32_t Part_result

>= CAMERA_DEVICE_API_VERSION_3_2:

للاستفادة من النتائج الجزئية، يجب على HAL تعيين بيانات التعريف الثابتة android.request.partialResultCount على عدد النتائج الجزئية التي سيرسلها لكل إطار.

يجب على كل نتيجة التقاط جديدة ذات نتيجة جزئية تعيين هذا الحقل (partial_result) على قيمة شاملة مميزة بين 1 وandroid.request.partialResultCount.

يجب على أجهزة HAL التي لا ترغب في الاستفادة من هذه الميزة عدم تعيين android.request.partialResultCount أو Part_result على قيمة أخرى غير 1.

يجب تعيين هذه القيمة على 0 عندما تحتوي نتيجة الالتقاط على مخازن مؤقتة فقط ولا تحتوي على بيانات تعريف.

التعريف في السطر 2381 من ملف Camera3.h .

const Camera_metadata_t * النتيجة

البيانات الوصفية الناتجة لهذا الالتقاط. يحتوي هذا على معلومات حول معلمات الالتقاط النهائية، وحالة أجهزة الالتقاط والمعالجة اللاحقة، وحالة خوارزميات 3A، إذا تم تمكينها، وإخراج أي وحدات إحصائية ممكّنة.

قد يتضمن استدعاء واحد فقط لـprocess_capture_result() مع رقم إطار محدد البيانات التعريفية للنتيجة. يجب أن تقوم جميع الاستدعاءات الأخرى لنفس رقم الإطار بتعيين هذا إلى NULL.

إذا كان هناك خطأ في إنتاج البيانات التعريفية للنتيجة، فيجب أن تكون النتيجة مخزنًا مؤقتًا فارغًا للبيانات التعريفية، ويجب استدعاء notify() باستخدام ERROR_RESULT.

>= CAMERA_DEVICE_API_VERSION_3_2:

قد تتضمن الاستدعاءات المتعددة لـprocess_capture_result() مع رقم إطار محدد البيانات التعريفية للنتيجة.

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

إذا تم استدعاء الإخطار باستخدام ERROR_RESULT، فسيتم تجاهل جميع النتائج الجزئية الإضافية لهذا الإطار بواسطة إطار العمل.

التعريف في السطر 2285 من ملف Camera3.h .


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