مرجع ساختار camera_info

مرجع ساختار camera_info

#include < camera_common.h >

فیلدهای داده

بین المللی رو به رو
بین المللی گرایش
uint32_t دستگاه_نسخه
const camera_metadata_t * ویژگی های_دوربین_استاتیک
بین المللی منبع_هزینه
کاراکتر ** تداخل_دستگاه ها
اندازه_t Contrating_Devices_length

توصیف همراه با جزئیات

تعریف در خط 161 فایل camera_common.h .

مستندات میدانی

char** contracting_devices

آرایه‌ای از شناسه‌های دستگاه دوربین که به‌عنوان رشته‌های خاتمه‌یافته NULL نشان داده می‌شوند که نشان‌دهنده دستگاه‌های دیگری هستند که نمی‌توانند به طور همزمان در حین استفاده از این دستگاه دوربین باز شوند.

این فیلد برای نشان دادن اینکه این دستگاه دوربین ترکیبی از چندین دستگاه دوربین دیگر است یا وابستگی‌های سخت‌افزاری دارد که استفاده همزمان را ممنوع می‌کند، در نظر گرفته شده است. اگر هیچ وابستگی وجود نداشته باشد، ممکن است یک NULL در این قسمت برای نشان دادن آن برگردانده شود.

تا زمانی که این دستگاه دوربین باز است، سرویس دوربین هرگز هیچ یک از دستگاه های موجود در این لیست را به طور همزمان باز نمی کند.

رشته های اشاره شده در این قسمت توسط سرویس دوربین پاک نمی شوند و باید تا زمانی که این دستگاه به برق وصل است باقی بمانند.

اطلاعات نسخه (بر اساس camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 یا پایین تر:

معتبر نیست. می توان فرض کرد که NULL است. این فیلد را نخوانید.

CAMERA_MODULE_API_VERSION_2_4 یا بالاتر:

همیشه معتبر است.

تعریف در خط 404 فایل camera_common.h .

اندازه_t_contraling_devices_length

طول آرایه داده شده در قسمت contracting_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 .

رو به رو

جهتی که دوربین رو به آن است. برای تعاریف روبروی دوربین به 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 باشد. اگر قسمت بالایی سنسور دوربین جلویی با سمت راست صفحه تراز باشد، مقدار باید 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 = دوربین جلو

  • استفاده از هر دو دستگاه دوربین باعث کاهش سرعت فریم زیاد به دلیل پهنای باند محدود ISP می شود.

پیکربندی:

دستگاه دوربین 0 - منبع_هزینه = 51 دستگاه_contractioning = پوچ دوربین دستگاه 1 - منبع_هزینه = 51 دستگاه_conflicing = پوچ

نتیجه:

از آنجایی که مجموع هزینه‌های منابع بیش از 100 است، اگر برنامه‌ای با اولویت بالاتر هر یک از دستگاه‌ها را باز داشته باشد، سرویس دوربین به هیچ برنامه‌ای با اولویت پایین‌تر اجازه باز کردن هر یک از دستگاه‌ها را نخواهد داد. اگر یک برنامه با اولویت پایین تر از دستگاهی استفاده می کند که بعداً یک برنامه با اولویت بالاتر تلاش می کند آن را باز کند، برنامه با اولویت پایین تر مجبور می شود دستگاه را قطع کند.

اگر برنامه با بالاترین اولویت انتخاب کند، ممکن است همچنان تلاش کند هر دو دستگاه را باز کند (زیرا این دستگاه‌ها به عنوان متناقض در فیلدهای contracting_devices فهرست نشده‌اند)، اما استفاده از این دستگاه‌ها ممکن است در تماس‌های باز یا پیکربندی ناموفق باشد.

سابق. دو

  • به دلیل محدودیت‌های سخت‌افزاری، ممکن است حداکثر دو دوربین در آن واحد باز باشند. دوربین استریو ترکیبی ممکن است هرگز همزمان با هر یک از دو دستگاه دوربین پشتی (دستگاه 0، 1) استفاده نشود و معمولاً برای استفاده همزمان با دوربین جلو (دستگاه 3) به پهنای باند زیادی نیاز دارد.

پیکربندی:

Camera Device 0 - resource_cost = 50 contracting_devices = { 2 } Camera Device 1 - resource_cost = 50 contracting_devices = { 2 } Camera Device 2 - Resource_cost = 100 contracting_devices = { 0, 1 } Camera Device_cost = nusource_cost 3

نتیجه:

بر اساس فیلدهای contracting_devices، سرویس دوربین تضمین می‌کند که مجموعه‌های دستگاه‌های باز زیر هرگز مجاز نخواهند بود: { 1, 2 }, { 0, 2 }.

بر اساس قسمت‌های resource_cost، اگر یک برنامه پیش‌زمینه با اولویت بالا از دستگاه دوربین 0 استفاده می‌کند، یک برنامه پس‌زمینه مجاز است دستگاه دوربین 1 یا 3 را باز کند (اما اگر برنامه پیش‌زمینه دستگاه دیگری را باز کند، مجبور می‌شود دوباره آن را قطع کند).

برنامه با بالاترین اولویت ممکن است همچنان سعی کند دستگاه های 0، 2 و 3 را به طور همزمان باز کند، اما HAL ممکن است در تماس های باز یا پیکربندی این ترکیب شکست بخورد.

سابق. 3: دستگاه دوربین 0 = دوربین عقب دستگاه دوربین 1 = دوربین جلوی دستگاه 2 = دوربین جلو کم مصرف که از حسگر مشابه دستگاه 1 استفاده می کند، اما تنها وضوح جریان تصویر را نشان می دهد که می تواند در حالت کم مصرف استفاده شود

  • استفاده همزمان از هر دو دوربین جلو (دستگاه 1، 2) به دلیل داشتن سنسور فیزیکی مشترک غیرممکن است. استفاده از دوربین پشتی و جلویی «پرقدرت» (دستگاه 1) ممکن است به دلیل محدودیت‌های سخت‌افزاری برای برخی از پیکربندی‌های جریان غیرممکن باشد، اما گزینه دوربین جلوی «کم مصرف» ممکن است همیشه مورد استفاده قرار گیرد زیرا دارای سخت‌افزار اختصاصی ویژه است.

    پیکربندی:

    دستگاه دوربین 0 - منبع_هزینه = 100 تداخل_دستگاه = پوچ دوربین دستگاه 1 - منبع_هزینه = 100 دستگاه_conflicting = { 2 } دستگاه دوربین 2 - هزینه_منبع = 0 دستگاه_conflicing = { 1 } نتیجه:

    بر اساس فیلدهای contracting_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 .


مستندات این ساختار از فایل زیر تولید شده است: