مرجع الهيكل الخاص بكاميرا3_callback_ops
#include < camera3.h >
حقول البيانات | |
فارغ(* | Process_capture_result )(const struct Camera3_callback_ops *, const Camera3_capture_result_t *result) |
فارغ(* | إعلام )(const struct Camera3_callback_ops *, const Camera3_notify_msg_t *msg) |
وصف تفصيلي
التوثيق الميداني
باطلة (* إعلام) (const struct Camera3_callback_ops *، const Camera3_notify_msg_t *msg) |
يخطر:
تم إطلاق رد اتصال إعلام غير متزامن من HAL لأسباب مختلفة. فقط للمعلومات المستقلة عن التقاط الإطار، أو التي تتطلب توقيتًا محددًا. تظل ملكية بنية الرسالة في طبقة HAL، ويجب أن تكون الرسالة صالحة طوال مدة هذه المكالمة فقط.
يمكن لخيوط متعددة استدعاء notify() في وقت واحد.
<= CAMERA_DEVICE_API_VERSION_3_1:
يجب إرسال الإشعار الخاص ببدء التعرض لطلب معين بواسطة HAL قبل إجراء أول استدعاء لـ process_capture_result() لهذا الطلب.
>= CAMERA_DEVICE_API_VERSION_3_2:
لن يتم إرسال المخازن المؤقتة التي تم تسليمها إلى إطار العمل إلى طبقة التطبيق حتى يتم استلام بداية الطابع الزمني للتعريض (أو بداية الطابع الزمني للتعريض للصورة المدخلة لطلب إعادة المعالجة) عبر استدعاء SHUTTER notify() . يوصى بشدة بإرسال هذه المكالمة في أقرب وقت ممكن.
متطلبات الأداء:
هذه مكالمة غير محظورة. سيعيد الإطار هذه المكالمة خلال 5 مللي ثانية.
باطلة(*process_capture_result)(const struct Camera3_callback_ops *, const Camera3_capture_result_t *result) |
عملية_التقاط_النتيجة:
إرسال النتائج من الالتقاط المكتمل إلى الإطار. قد يتم استدعاء عملية_capture_result() عدة مرات بواسطة طبقة تصديق الأجهزة (HAL) استجابةً لطلب التقاط واحد. يسمح هذا، على سبيل المثال، بإرجاع البيانات التعريفية والمخازن المؤقتة ذات الدقة المنخفضة في مكالمة واحدة، ومخازن JPEG المؤقتة التي تمت معالجتها لاحقًا في مكالمة لاحقة، بمجرد توفرها. يجب أن تتضمن كل مكالمة رقم إطار الطلب الذي تقوم بإرجاع البيانات التعريفية أو المخازن المؤقتة له.
لا يجوز تضمين مكون (مخزن مؤقت أو بيانات تعريف) للنتيجة الكاملة إلا في استدعاء واحد لـprocess_capture_result. يجب إرجاع المخزن المؤقت لكل دفق، وبيانات تعريف النتيجة، بواسطة HAL لكل طلب في أحد استدعاءاتprocess_capture_result، حتى في حالة وجود أخطاء تنتج بعض المخرجات. غير مسموح باستدعاء Process_capture_result() بدون وجود مخازن مؤقتة للإخراج أو بيانات تعريف للنتيجة.
لا يهم ترتيب إرجاع البيانات التعريفية والمخازن المؤقتة لنتيجة واحدة، ولكن يجب إرجاع المخازن المؤقتة لتدفق معين بترتيب FIFO. لذلك يجب دائمًا إرجاع المخزن المؤقت للطلب 5 للتدفق A قبل المخزن المؤقت للطلب 6 للتدفق A. وينطبق هذا أيضًا على البيانات التعريفية الناتجة؛ يجب إرجاع البيانات التعريفية للطلب 5 قبل البيانات التعريفية للطلب 6.
ومع ذلك، فإن التدفقات المختلفة مستقلة عن بعضها البعض، لذا فمن المقبول والمتوقع أن يتم إرجاع المخزن المؤقت للطلب 5 للتدفق A بعد إرجاع المخزن المؤقت للطلب 6 للتدفق B. ومن المقبول أن يتم إرجاع بيانات التعريف الناتجة للطلب 6 للدفق B قبل أن يتم إرجاع المخزن المؤقت للطلب 5 للدفق A.
تحتفظ HAL بملكية بنية النتيجة، والتي تحتاج فقط إلى أن تكون صالحة للوصول إليها أثناء هذا الاستدعاء. سيقوم إطار العمل بنسخ كل ما يحتاجه قبل عودة هذه المكالمة.
لا يلزم ملء المخازن المؤقتة للإخراج بعد؛ سينتظر إطار العمل سياج مزامنة إصدار المخزن المؤقت للتيار قبل قراءة بيانات المخزن المؤقت. لذلك، يجب استدعاء هذا الأسلوب بواسطة HAL في أقرب وقت ممكن، حتى لو كانت بعض أو كل المخازن المؤقتة للإخراج لا تزال قيد التعبئة. يجب أن يتضمن HAL أسوار مزامنة إصدار صالحة في كل إدخال للمخزن المؤقت لدفق الإخراج، أو -1 إذا كان المخزن المؤقت للتدفق ممتلئًا بالفعل.
إذا تعذر إنشاء المخزن المؤقت للنتيجة لطلب ما، فيجب أن تقوم طبقة توصيف سطح الأرض (HAL) بإرجاع مخزن مؤقت فارغ لبيانات التعريف، مع الاستمرار في توفير المخازن المؤقتة للإخراج وأسوار المزامنة الخاصة بها. بالإضافة إلى ذلك، يجب استدعاء notify() برسالة ERROR_RESULT.
إذا تعذر ملء المخزن المؤقت للإخراج، فيجب تعيين حقل الحالة الخاص به إلى STATUS_ERROR. بالإضافة إلى ذلك، يجب استدعاء notify() برسالة ERROR_BUFFER.
إذا فشل الالتقاط بالكامل، فلا يزال يتعين استدعاء هذه الطريقة لإعادة المخازن المؤقتة للإخراج إلى إطار العمل. يجب أن تكون كافة حالات المخزن المؤقت STATUS_ERROR، ويجب أن تكون بيانات التعريف الناتجة مخزنًا مؤقتًا فارغًا. بالإضافة إلى ذلك، يجب استدعاء notify() برسالة ERROR_REQUEST. في هذه الحالة، يجب عدم إرسال رسائل ERROR_RESULT/ERROR_BUFFER الفردية.
متطلبات الأداء:
هذه مكالمة غير محظورة. سيعيد الإطار هذه المكالمة خلال 5 مللي ثانية.
يجب أن يكون زمن انتقال خط الأنابيب (انظر S7 للحصول على التعريف) أقل من أو يساوي 4 فترات زمنية للإطارات، ويجب أن يكون أقل من أو يساوي 8 فترات زمنية للإطارات.
تم إنشاء وثائق هذه البنية من الملف التالي:
- الأجهزة/libhardware/تشمل/الأجهزة/ الكاميرا3.h