مرجع بنية camera3_stream
#include <
camera3.h
>
حقول البيانات |
|
int | stream_type |
uint32_t | width |
uint32_t | height |
int | format |
uint32_t | الاستخدام |
uint32_t | max_buffers |
void * | priv |
android_dataspace_t | data_space |
int | التدوير |
void * | reserved [7] |
وصف مفصّل
camera3_stream_t:
معرّف لبث إدخال أو إخراج كاميرا واحد يحدِّد إطار العمل البث من خلال دقة المخزن المؤقت وتنسيقه، بالإضافة إلى HAL مع علامات استخدام gralloc والحد الأقصى لعدد المخزن المؤقت أثناء التشغيل.
تكون هياكل البث مملوكة للإطار العمل، ولكن تكون الإشارات إلى camera3_stream التي تم تمريرها إلى HAL من خلال دالة configure_streams() صالحة حتى نهاية أول طلب لاحق لدالة configure_streams() الذي لا يتضمّن camera3_stream كوسيطة، أو حتى نهاية طلب دالة close().
إنّ جميع العناصر التي يتحكم فيها إطار العمل في camera3_stream غير قابلة للتغيير بعد تمرير camera3_stream إلى دالة configure_streams(). ولا يمكن لواجهة HAL تغيير المَعلمات التي تتحكّم فيها إلا أثناء طلب دالة configure_streams()، باستثناء محتوى المؤشر الخاص.
إذا أدّت الدعوة configure_streams() إلى ظهور خطأ غير مميت، تظلّ جميع مصادر البيانات النشطة صالحة كما لو لم يتمّ استدعاء configure_streams().
لا تظهر نقطة نهاية البث لجهاز HAL للكاميرا. في DEVICE_API_VERSION_3_1، تم تغيير هذا الإعداد لمشاركة علامات استخدام المستهلكين في أحداث البث التي تكون فيها الكاميرا منتجًا (نوعَا البث OUTPUT وBIDIRECTIONAL)، اطّلِع على حقل الاستخدام أدناه.
مستندات الحقل
android_dataspace_t data_space |
حقل يصف محتوى المخزن المؤقت تحدِّد سمات التنسيق ووحدة التخزين المؤقت تنسيق الذاكرة وبنية وحدات تخزين البث، في حين تحدِّد مساحة البيانات معنى البيانات داخل وحدة التخزين المؤقت.
في معظم التنسيقات، تحدِّد سمة dataSpace مساحة الألوان لبيانات الصورة. بالإضافة إلى ذلك، بالنسبة إلى بعض التنسيقات، يشير dataSpace إلى ما إذا كان يتم طلب بيانات مستندة إلى الصور أو العمق. اطّلِع على system/core/include/system/graphics.h لمعرفة تفاصيل التنسيقات وقيم dataSpace الصالحة لكل تنسيق.
معلومات الإصدار:
< CAMERA_DEVICE_API_VERSION_3_3:
لم يتم تحديده ويجب عدم الوصول إليه. يجب افتراض أنّ dataSpace هي HAL_DATASPACE_UNKNOWN، ويجب تحديد مساحة اللون المناسبة وما إلى ذلك من علامات الاستخدام والتنسيق.
= CAMERA_DEVICE_API_VERSION_3_3:
يتم ضبطه دائمًا من خلال خدمة الكاميرا. يجب أن يستخدم HAL مساحة البيانات هذه لضبط البث على مساحة الألوان الصحيحة، أو للاختيار بين مخرجات اللون والعمق إذا كان ذلك متاحًا. قيم مساحة البيانات هي التعريفات القديمة في graphics.h
>= CAMERA_DEVICE_API_VERSION_3_4:
يتم ضبطه دائمًا من خلال خدمة الكاميرا. يجب أن يستخدم HAL مساحة البيانات هذه لضبط البث على مساحة الألوان الصحيحة، أو للاختيار بين مخرجات اللون والعمق إذا كان ذلك متاحًا. يتم ضبط قيم مساحة البيانات باستخدام تعريفات مساحة البيانات V0 في graphics.h
تنسيق int |
تنسيق البكسل لمخازن الوسائط المؤقتة في هذا البث التنسيق هو قيمة من قائمة HAL_PIXEL_FORMAT_* في system/core/include/system/graphics.h أو من العناوين الخاصة بالجهاز.
في حال استخدام HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED، ستختار وحدة gralloc في النظام الأساسي تنسيقًا استنادًا إلى علامات الاستخدام التي يوفّرها جهاز الكاميرا ونقطة النهاية الأخرى للبث.
<= CAMERA_DEVICE_API_VERSION_3_1:
يجب أن يتحقّق جهاز HAL للكاميرا من المخزن المؤقت الذي تم تسليمه إليه في طلب register_stream_buffers() التالي للحصول على تفاصيل التنسيق الخاصة بالتنفيذ، إذا لزم الأمر.
>= CAMERA_DEVICE_API_VERSION_3_2:
لن يستدعي إطار العمل دالة register_stream_buffers()، لذا يجب أن يضبط HAL مسار ISP ومسار الاستشعار استنادًا إلى الأحجام وعلامات الاستخدام وتنسيقات أحداث البث التي تم ضبطها.
uint32_t height |
uint32_t max_buffers |
void* priv |
int rotation |
اتجاه الإخراج المطلوب للبث، وهو إحدى قيم camera3_stream_rotation_t. يجب أن يتحقّق HAL من ذلك بالإضافة إلى عرض البث وارتفاعه. على سبيل المثال، إذا كانت عملية التدوير 90 درجة وكان عرض البث وارتفاعه 720 و1280 على التوالي، ستقدّم خدمة الكاميرا وحدات تخزين مؤقت بحجم 720×1280، ومن المفترض أن تلتقط HAL صورة بحجم 1280×720 وتدير الصورة 90 درجة بعكس عقارب الساعة. لا يُستخدَم حقل "العرض بالتناوب" عندما يكون نوع البث هو "إدخال". يجب أن تتجاهل Camera HAL حقل التدوير لمصدر بيانات الإدخال.
<= CAMERA_DEVICE_API_VERSION_3_2:
لم يتم تحديده ويجب عدم الوصول إليه. يجب ألا يطبّق HAL أيّ عملية تدوير على صور الإخراج.
>= CAMERA_DEVICE_API_VERSION_3_3:
يتم ضبطه دائمًا من خلال خدمة الكاميرا. يجب أن يتحقّق HAL من هذا الحقل أثناء ضبط البث ويعرض الخطأ -EINVAL إذا تعذّر على HAL تنفيذ هذا التناوب. يجب أن يكون HAL متوافقًا دائمًا مع CAMERA3_STREAM_ROTATION_0، لذا يجب ألا يتعذّر إكمال طلب configure_streams() في حال عدم توفّر قيمة مناسبة لدوران الصورة إذا كان حقل الدوران لجميع مصادر البيانات هو CAMERA3_STREAM_ROTATION_0.
int stream_type |
استخدام uint32_t |
يُرسِل gralloc علامات استخدام لهذا البث، حسب الحاجة إلى HAL. يتم تحديد علامات الاستخدام فيملف gralloc.h (GRALLOC_USAGE_*)، أو في العناوين الخاصة بالجهاز.
بالنسبة إلى مصادر البث، هذه هي علامات استخدام HAL للمنتج. بالنسبة إلى مصادر الإدخال، هذه هي علامات استخدام المستهلك في HAL. سيتم تجميع علامات الاستخدام من المنتج والمستهلك معًا ثم تمريرها إلى وحدة HAL gralloc للنظام الأساسي لتخصيص مخازن gralloc لكل بث.
معلومات الإصدار:
== CAMERA_DEVICE_API_VERSION_3_0:
لا يمكن ضمان أي قيمة أولية عند تمريرها من خلال دالة configure_streams(). قد لا يستخدم HAL هذا الحقل كمدخل، ويجب الكتابة فوق هذا الحقل باستخدام علامات الاستخدام.
>= CAMERA_DEVICE_API_VERSION_3_1:
بالنسبة إلى stream_type OUTPUT وBIDIRECTIONAL، عند تمريرها من خلال configure_streams()، تكون القيمة الأولية لهذا هي علامات استخدام المستهلِك. قد يستخدم HAL علامات المستهلك هذه لتحديد إعدادات البث. بالنسبة إلى stream_type INPUT، تكون القيمة الأولية لهذا العنصر هي 0 عند تمريرها من خلال configure_streams(). بالنسبة إلى جميع أحداث البث التي يتم تمريرها من خلال دالة configure_streams()، يجب أن تُعيد HAL كتابة هذا الحقل باستخدام علامات الاستخدام.
uint32_t width |
تم إنشاء مستندات هذه البنية من الملف التالي:
- hardware/libhardware/include/hardware/ camera3.h