مرجع بنية camera_info
#include <
camera_common.h
>
حقول البيانات |
|
int | مواجهًا |
int | الاتجاه |
uint32_t | device_version |
const camera_metadata_t * | static_camera_characteristics |
int | resource_cost |
char ** | conflicting_devices |
size_t | conflicting_devices_length |
وصف مفصّل
التعريف في السطر 161 من الملف camera_common.h .
مستندات الحقل
char** conflicting_devices |
صفيف من أرقام تعريف أجهزة الكاميرا يتم تمثيله كسلسلة تنتهي بقيمة 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 conflicting_devices_length |
طول الصفيف الوارد في الحقل conflicting_devices
معلومات الإصدار (استنادًا إلى 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 device_version |
قيمة 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 .
int facing |
اتجاه الكاميرا اطّلِع على 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 .
int orientation |
اتجاه صورة الكاميرا هذه القيمة هي الزاوية التي يجب تدوير صورة الكاميرا بها باتجاه عقارب الساعة حتى تظهر بشكل صحيح على الشاشة باتجاهها الطبيعي. يجب أن يكون 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 .
int resource_cost |
إجمالي "تكلفة" استخدام هذه الكاميرا للموارد، ويتم تمثيلها كقيمة عددية صحيحة في النطاق [0, 100] حيث يمثّل 100 إجمالي استخدام المورد المشترَك الذي يشكّل عنق الزجاجة في النظام الفرعي للكاميرا. قد يكون هذا تقديرًا تقريبيًا جدًا، ويتم استخدامه كإشارة لخدمة الكاميرا لتحديد الحالات التي يجب فيها منع تطبيقات متعددة من فتح كاميرات مختلفة في الوقت نفسه تعلن عنها خدمة الكاميرا.
يجب أن تكون خدمة الكاميرا قادرة على فتح أي مجموعة من أجهزة الكاميرا التي يعرضها HAL واستخدامها في الوقت نفسه، وذلك عندما يكون مجموع تكاليف الموارد لهذه الكاميرات أقل من أو يساوي 100. لتحديد التكلفة، يجب افتراض أنّه تم ضبط كل جهاز كاميرا وتشغيله وفقًا لإعدادات معدل عرض اللقطات وحجم البث الأكثر استهلاكًا للموارد في إعدادات الضبط المعروضة لهذا الجهاز من خلال البيانات الوصفية للكاميرا.
قد تحاول خدمة الكاميرا فتح مجموعات من أجهزة الكاميرا في الوقت نفسه بإجمالي تكلفة موارد تزيد عن 100. وقد ينجح هذا الإجراء أو لا ينجح. في حال نجاح ذلك، من المفترض أن تفشل مجموعات الإعدادات غير المتوافقة بسبب قيود الموارد الناتجة عن توفّر عدة أجهزة مفتوحة أثناء عمليات الضبط. إذا كانت التكلفة الإجمالية للموارد أقل من أو تساوي 100، من المفترض ألا يتعذّر فتح أي إعدادات لضبط البث أو إمكانات الجهاز الأخرى التي تنجح عادةً في الجهاز عندما يكون هو جهاز الكاميرا الوحيد المفتوح.
سيتم استخدام هذا الحقل لتحديد ما إذا كان يُسمح للتطبيقات التي تعمل في الخلفية باستخدام جهاز الكاميرا هذا بينما تستخدم تطبيقات أخرى أجهزة كاميرا أخرى. ملاحظة: لن تسمح خدمة الكاميرا أبدًا لعدة تطبيقات بفتح جهاز الكاميرا نفسه في الوقت نفسه.
أمثلة على حالات الاستخدام:
مثال 1: جهاز الكاميرا 0 = الكاميرا الخلفية، جهاز الكاميرا 1 = الكاميرا الأمامية
- يؤدي استخدام كلا جهازَي الكاميرا إلى إبطاء كبير في معدّل عرض اللقطات بسبب محدودية معدل نقل البيانات لمزوّد خدمة الإنترنت.
الإعداد:
جهاز الكاميرا 0 - resource_cost = 51 conflicting_devices = null جهاز الكاميرا 1 - resource_cost = 51 conflicting_devices = null
النتيجة:
بما أنّ مجموع تكاليف الموارد أكبر من 100، إذا كان أحد الجهازَين مفتوحًا من خلال تطبيق ذو أولوية أعلى، لن تسمح خدمة الكاميرا لأي تطبيقات ذات أولوية أقل بفتح أي من الجهازَين. إذا كان تطبيق ذو أولوية أقل يستخدم جهازًا يحاول تطبيق ذو أولوية أعلى فتحه لاحقًا، سيتم إجبار التطبيق ذي الأولوية الأقل على إلغاء ربط الجهاز.
إذا اختار التطبيق الأعلى أولوية، قد يستمر في محاولة فتح كلا الجهازَين (لأنّ هذين الجهازَين غير مدرَجين على أنّهما متعارضان في حقول conflicting_devices)، ولكن قد يتعذّر استخدام هذين الجهازَين في عمليات فتح المكالمات أو ضبطها.
مثال 2: جهاز الكاميرا 0 = الكاميرا الخلفية اليسرى، جهاز الكاميرا 1 = الكاميرا الخلفية اليمنى، جهاز الكاميرا 2 = كاميرا الاستيريو المدمجة التي تستخدم كلاً من كاميراَي الكاميرا الخلفية اليمنى واليسرى اللتين يستخدمهما الجهازان 0 و1، جهاز الكاميرا 3 = الكاميرا الأمامية
- بسبب قيود الأجهزة، يمكن فتح ما يصل إلى كاميرتَين في الوقت نفسه. لا يجوز أبدًا استخدام الكاميرا الاستيريو المدمجة في الوقت نفسه مع أي من جهازَي الكاميرا الخلفية (الجهاز 0 والجهاز 1)، وتتطلّب عادةً قدرًا كبيرًا جدًا من معدل نقل البيانات لاستخدامها في الوقت نفسه مع الكاميرا الأمامية (الجهاز 3).
الإعداد:
جهاز الكاميرا 0 - resource_cost = 50 conflicting_devices = { 2 } جهاز الكاميرا 1 - resource_cost = 50 conflicting_devices = { 2 } جهاز الكاميرا 2 - resource_cost = 100 conflicting_devices = { 0, 1 } جهاز الكاميرا 3 - resource_cost = 50 conflicting_devices = null
النتيجة:
استنادًا إلى حقول conflicting_devices، تضمن خدمة الكاميرا عدم السماح أبدًا بالمجموعات التالية من الأجهزة المفتوحة: { 1, 2 }, { 0, 2 }.
استنادًا إلى حقول resource_cost، إذا كان تطبيق ذي أولوية عالية يعمل في المقدّمة يستخدم جهاز الكاميرا 0، سيتم السماح لتطبيق يعمل في الخلفية بفتح جهاز الكاميرا 1 أو 3 (ولكن سيتم إجباره على فصله مرة أخرى إذا فتح التطبيق الذي يعمل في المقدّمة جهازًا آخر).
قد يستمر التطبيق الأعلى أولوية في محاولة فتح الأجهزة 0 و2 و3 في الوقت نفسه، ولكن قد يتعذّر على HAL فتح المكالمات أو ضبطها لهذه المجموعة.
مثال 3: جهاز الكاميرا 0 = الكاميرا الخلفية، جهاز الكاميرا 1 = الكاميرا الأمامية، جهاز الكاميرا 2 = الكاميرا الأمامية ذات الطاقة المنخفضة التي تستخدم أداة الاستشعار نفسها المستخدَمة في الجهاز 1، ولكنّها تعرض فقط درجات دقة بث الصور التي يمكن استخدامها في وضع الطاقة المنخفضة
-
لا يمكن استخدام كلتا الكاميرتَين الأماميتَين (الجهاز 1 والجهاز 2) في الوقت نفسه بسبب استخدام أداة استشعار مادية مشتركة. قد يكون استخدام الكاميرا الخلفية والكاميرا الأمامية "ذات الطاقة العالية" (الجهاز 1) مستحيلًا في بعض إعدادات البث بسبب قيود الأجهزة، ولكن يمكن استخدام خيار الكاميرا الأمامية "ذات الطاقة المنخفضة" في أي وقت لأنّها تتضمّن أجهزة مخصّصة خاصة.
الإعداد:
جهاز الكاميرا 0 - resource_cost = 100 conflicting_devices = null جهاز الكاميرا 1 - resource_cost = 100 conflicting_devices = { 2 } جهاز الكاميرا 2 - resource_cost = 0 conflicting_devices = { 1 } النتيجة:
استنادًا إلى حقول conflicting_devices، تضمن خدمة الكاميرا عدم السماح أبدًا بالمجموعات التالية من الأجهزة المفتوحة: { 1, 2 }.
استنادًا إلى حقول resource_cost، يمكن للتطبيق الأعلى أولوية فقط محاولة فتح الجهازَين 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 * static_camera_characteristics |
الخصائص الثابتة للكاميرا، والتي تتضمّن جميع البيانات الوصفية الثابتة للكاميرا المحدّدة في 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 أو إصدار أحدث:
تكون صالحة إذا كان device_version >= CAMERA_DEVICE_API_VERSION_2_0. لا تقرأ خلاف ذلك.
التعريف في السطر 241 من الملف camera_common.h .
تم إنشاء مستندات هذه البنية من الملف التالي:
- hardware/libhardware/include/hardware/ camera_common.h