مرجع هيكل الكاميرا
#include < camera_common.h >
حقول البيانات | |
كثافة العمليات | مواجهة |
كثافة العمليات | توجيه |
uint32_t | إصدار الجهاز |
الكاميرا الثابتة_metadata_t * | خصائص_الكاميرا_الثابتة |
كثافة العمليات | Resource_cost |
شار ** | الأجهزة المتعارضة |
size_t | الأجهزة المتعارضة_طول |
وصف تفصيلي
التعريف في السطر 161 من الملف Camera_common.h .
التوثيق الميداني
شار** الأجهزة المتعارضة |
مجموعة من معرفات أجهزة الكاميرا ممثلة كسلاسل منتهية بـ NULL تشير إلى الأجهزة الأخرى التي لا يمكن فتحها في نفس الوقت أثناء استخدام جهاز الكاميرا هذا.
يهدف هذا الحقل إلى استخدامه للإشارة إلى أن جهاز الكاميرا هذا مركب من العديد من أجهزة الكاميرا الأخرى، أو أنه يحتوي على تبعيات أجهزة تمنع الاستخدام المتزامن. إذا لم تكن هناك تبعيات، فقد يتم إرجاع NULL في هذا الحقل للإشارة إلى ذلك.
لن تقوم خدمة الكاميرا مطلقًا بفتح أي من الأجهزة الموجودة في هذه القائمة في نفس الوقت أثناء فتح جهاز الكاميرا هذا.
لن يتم تنظيف السلاسل المشار إليها في هذا الحقل بواسطة خدمة الكاميرا، ويجب أن تظل أثناء توصيل هذا الجهاز.
معلومات الإصدار (استنادًا إلى Camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 أو أقل:
غير صالح. يمكن افتراض أنها فارغة. لا تقرأ هذا المجال.
CAMERA_MODULE_API_VERSION_2_4 أو أعلى:
صالحة دائما.
التعريف في السطر 404 من الملف Camera_common.h .
size_t المتعارضة_الأجهزة_طول |
طول المصفوفة الواردة في حقل الأجهزة المتعارضة.
معلومات الإصدار (استنادًا إلى Camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 أو أقل:
غير صالح. يمكن افتراض أن يكون 0. لا تقرأ هذا الحقل.
CAMERA_MODULE_API_VERSION_2_4 أو أعلى:
صالحة دائما.
التعريف في السطر 419 من الملف Camera_common.h .
uint32_t جهاز_الإصدار |
قيمة Camera_device_t.common.version.
معلومات الإصدار (استنادًا إلى Camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_1_0:
غير صالح. يمكن افتراض أنه CAMERA_DEVICE_API_VERSION_1_0. لا تقرأ هذا المجال.
CAMERA_MODULE_API_VERSION_2_0 أو أعلى:
صالحة دائما
التعريف في السطر 219 من الملف Camera_common.h .
تواجه كثافة العمليات |
الاتجاه الذي تواجهه الكاميرا. راجع system/core/include/system/camera.h للتعرف على تعريفات مواجهة الكاميرا.
معلومات الإصدار (استنادًا إلى Camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 أو أقل:
ينبغي أن يكون CAMERA_FACING_BACK أو CAMERA_FACING_FRONT.
CAMERA_MODULE_API_VERSION_2_4 أو أعلى:
ينبغي أن يكون CAMERA_FACING_BACK، أو CAMERA_FACING_FRONT، أو CAMERA_FACING_EXTERNAL.
التعريف في السطر 177 من الملف Camera_common.h .
التوجه الدولي |
اتجاه صورة الكاميرا. القيمة هي الزاوية التي تحتاج صورة الكاميرا إلى تدويرها في اتجاه عقارب الساعة حتى تظهر بشكل صحيح على الشاشة في اتجاهها الطبيعي. يجب أن تكون 0 أو 90 أو 180 أو 270.
على سبيل المثال، لنفترض أن الجهاز يحتوي على شاشة طويلة بشكل طبيعي. تم تثبيت مستشعر الكاميرا الخلفية في الوضع الأفقي. أنت تنظر إلى الشاشة. إذا كان الجانب العلوي من مستشعر الكاميرا محاذيًا للحافة اليمنى للشاشة في الاتجاه الطبيعي، فيجب أن تكون القيمة 90. وإذا كان الجانب العلوي لمستشعر الكاميرا الأمامية محاذيًا لليمين من الشاشة، فيجب أن تكون القيمة يكون 270.
معلومات الإصدار (استنادًا إلى Camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 أو أقل:
صالح في جميع إصدارات Camera_module .
CAMERA_MODULE_API_VERSION_2_4 أو أعلى:
صالح إذا كانت مواجهة الكاميرا هي CAMERA_FACING_BACK أو CAMERA_FACING_FRONT، وغير صالحة إذا كانت مواجهة الكاميرا هي CAMERA_FACING_EXTERNAL.
التعريف في السطر 202 من الملف Camera_common.h .
كثافة الموارد_تكلفة |
إجمالي "تكلفة" المورد لاستخدام هذه الكاميرا، والذي يتم تمثيله كقيمة عددية في النطاق [0، 100] حيث يمثل 100 إجمالي استخدام المورد المشترك الذي يمثل عنق الزجاجة المحدود لنظام الكاميرا الفرعي. قد يكون هذا تقديرًا تقريبيًا للغاية، ويستخدم كتلميح لخدمة الكاميرا لتحديد متى يتم منع تطبيقات متعددة من فتح كاميرات مختلفة في وقت واحد تعلن عنها خدمة الكاميرا.
يجب أن تكون خدمة الكاميرا قادرة على فتح واستخدام أي مجموعة من أجهزة الكاميرا المكشوفة بواسطة HAL حيث يكون مجموع تكاليف الموارد لهذه الكاميرات <= 100. لتحديد التكلفة، يجب افتراض تكوين كل جهاز كاميرا وتشغيله في إعدادات معدل الإطارات وحجم الدفق التي تستهلك الموارد القصوى والمتوفرة في إعدادات التكوين المكشوفة لهذا الجهاز من خلال البيانات التعريفية للكاميرا.
قد تستمر خدمة الكاميرا في محاولة فتح مجموعات من أجهزة الكاميرا في وقت واحد بتكلفة إجمالية للموارد > 100. وقد ينجح هذا الأمر أو يفشل. إذا نجح ذلك، فيجب أن تفشل مجموعات التكوينات غير المدعومة بسبب قيود الموارد الناتجة عن وجود أجهزة مفتوحة متعددة أثناء استدعاءات التكوين. إذا كانت تكلفة المورد الإجمالية <= 100، فيجب ألا يفشل الفتح والتكوين مطلقًا لأي إعدادات تكوين دفق أو إمكانيات جهاز أخرى قد تنجح عادةً لجهاز عندما يكون جهاز الكاميرا المفتوح الوحيد.
سيتم استخدام هذا الحقل لتحديد ما إذا كان يُسمح لتطبيقات الخلفية باستخدام جهاز الكاميرا هذا بينما تستخدم التطبيقات الأخرى أجهزة كاميرا أخرى. ملاحظة: لن تسمح خدمة الكاميرا مطلقًا لتطبيقات متعددة بفتح جهاز الكاميرا نفسه في وقت واحد.
أمثلة لحالات الاستخدام:
السابق. 1: جهاز الكاميرا 0 = جهاز الكاميرا الخلفية 1 = الكاميرا الأمامية
- يؤدي استخدام كلا جهازي الكاميرا إلى تباطؤ كبير في معدل الإطارات بسبب النطاق الترددي المحدود لمزود خدمة الإنترنت.
إعدادات:
جهاز الكاميرا 0 - تكلفة_الموارد = 51 جهازًا متعارضًا = خاليًا جهاز الكاميرا 1 - تكلفة_الموارد = 51 جهازًا متعارضًا = خاليًا
نتيجة:
نظرًا لأن مجموع تكاليف الموارد > 100، إذا كان أحد التطبيقات ذات الأولوية العليا مفتوحًا على أي من الجهازين، فلن تسمح خدمة الكاميرا لأي تطبيقات ذات أولوية أقل بفتح أي من الجهازين. إذا كان أحد التطبيقات ذات الأولوية المنخفضة يستخدم جهازًا يحاول تطبيق ذو أولوية أعلى فتحه لاحقًا، فسيضطر التطبيق ذو الأولوية المنخفضة إلى قطع اتصال الجهاز.
إذا اختار التطبيق ذو الأولوية الأعلى، فقد يستمر في محاولة فتح كلا الجهازين (نظرًا لأن هذه الأجهزة غير مدرجة على أنها متعارضة في حقول الأجهزة المتعارضة)، ولكن قد يفشل استخدام هذه الأجهزة في فتح المكالمات أو تكوينها.
السابق. 2: جهاز الكاميرا 0 = جهاز الكاميرا الخلفي الأيسر 1 = جهاز الكاميرا الخلفي الأيمن 2 = كاميرا استريو مدمجة تستخدم مستشعرات الكاميرا الخلفية اليمنى واليسرى التي يستخدمها الجهاز 0، وجهاز كاميرا واحد 3 = الكاميرا الأمامية
- نظرًا للقيود المفروضة على الأجهزة، قد يتم فتح ما يصل إلى كاميرتين في وقت واحد. لا يجوز أبدًا استخدام كاميرا الاستريو المدمجة في نفس الوقت مع أي من جهازي الكاميرا الخلفية (الجهاز 0، 1)، وتتطلب عادةً قدرًا كبيرًا من النطاق الترددي لاستخدامها في نفس الوقت مع الكاميرا الأمامية (الجهاز 3).
إعدادات:
جهاز الكاميرا 0 - تكلفة_المورد = 50 جهازًا متعارضًا = { 2} جهاز الكاميرا 1 - تكلفة_المورد = 50 جهازًا متعارضًا = { 2} جهاز الكاميرا 2 - تكلفة_المورد = 100 جهازًا متعارضًا = { 0, 1 } جهاز الكاميرا 3 - تكلفة_المورد = 50 جهازًا متضاربًا = null
نتيجة:
استنادًا إلى حقول الأجهزة المتعارضة، تضمن خدمة الكاميرا عدم السماح مطلقًا بالمجموعات التالية من الأجهزة المفتوحة: { 1, 2 }, { 0, 2 }.
استنادًا إلى حقول تكلفة الموارد، إذا كان أحد التطبيقات الأمامية ذات الأولوية العالية يستخدم جهاز الكاميرا 0، فسيتم السماح لتطبيق الخلفية بفتح جهاز الكاميرا 1 أو 3 (ولكن سيتم إجباره على قطع اتصاله مرة أخرى إذا فتح التطبيق الأمامي جهازًا آخر).
قد يستمر التطبيق ذو الأولوية القصوى في محاولة فتح الأجهزة 0 و2 و3 في نفس الوقت، ولكن قد يفشل HAL في فتح المكالمات أو تكوينها لهذه المجموعة.
السابق. 3: جهاز الكاميرا 0 = جهاز الكاميرا الخلفية 1 = جهاز الكاميرا الأمامية 2 = كاميرا أمامية منخفضة الطاقة تستخدم نفس المستشعر مثل الجهاز 1، ولكنها تعرض فقط دقة تدفق الصور التي يمكن استخدامها في وضع الطاقة المنخفضة
من المستحيل استخدام الكاميرتين الأماميتين (الجهاز 1، 2) في نفس الوقت بسبب وجود مستشعر فعلي مشترك. قد يكون استخدام الكاميرا الخلفية والأمامية "عالية الطاقة" (الجهاز 1) مستحيلًا بالنسبة لبعض تكوينات البث بسبب قيود الأجهزة، ولكن يمكن دائمًا استخدام خيار الكاميرا الأمامية "منخفضة الطاقة" لأنها تحتوي على أجهزة مخصصة خاصة.
إعدادات:
جهاز الكاميرا 0 - تكلفة_الموارد = 100 الأجهزة المتضاربة = صفر جهاز الكاميرا 1 - تكلفة_الموارد = 100 الأجهزة المتعارضة = { 2} جهاز الكاميرا 2 - تكلفة_الموارد = 0 الأجهزة المتعارضة = { 1 } النتيجة:
استنادًا إلى حقول الأجهزة المتعارضة، تضمن خدمة الكاميرا عدم السماح مطلقًا بالمجموعات التالية من الأجهزة المفتوحة: { 1, 2 }.
استنادًا إلى حقول تكلفة الموارد، قد يحاول التطبيق ذو الأولوية الأعلى فقط فتح كلا الجهازين 0 و1 في نفس الوقت. إذا كان التطبيق ذو الأولوية الأعلى لا يستخدم الجهاز 1 أو 2، فقد يفتح تطبيق الخلفية ذو الأولوية المنخفضة الجهاز 2 (ولكن سيتم إجباره على قطع اتصاله إذا فتح تطبيق ذو أولوية أعلى الجهاز 1 أو 2 لاحقًا).
معلومات الإصدار (استنادًا إلى Camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 أو أقل:
غير صالح. يمكن افتراض أن يكون 100. لا تقرأ هذا الحقل.
CAMERA_MODULE_API_VERSION_2_4 أو أعلى:
صالحة دائما.
التعريف في السطر 376 من الملف Camera_common.h .
const Camera_metadata_t * خصائص_الكاميرا_الثابتة |
الخصائص الثابتة للكاميرا، والتي تتضمن جميع البيانات التعريفية للكاميرا الثابتة المحددة في system/media/camera/docs/docs.html. يجب أن يكون هذا مخزنًا مؤقتًا للبيانات الوصفية، ولا يجوز للمتصل تعديله أو تحريره. يجب أن يظل المؤشر صالحًا طوال عمر وحدة الكاميرا، وقد لا تتغير القيم فيه بعد إعادته بواسطة get_camera_info().
معلومات الإصدار (استنادًا إلى Camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_1_0:
غير صالح. الخصائص الإضافية غير متوفرة. لا تقرأ هذا المجال.
CAMERA_MODULE_API_VERSION_2_0 أو أعلى:
صالح إذا كان إصدار الجهاز >= CAMERA_DEVICE_API_VERSION_2_0. لا تقرأ خلاف ذلك.
التعريف في السطر 241 من الملف Camera_common.h .
تم إنشاء وثائق هذه البنية من الملف التالي:
- الأجهزة/libhardware/include/hardware/ camera_common.h