camera3_stream Struct مرجع
#include < camera3.h >
فیلدهای داده | |
بین المللی | stream_type |
uint32_t | عرض |
uint32_t | ارتفاع |
بین المللی | قالب |
uint32_t | استفاده |
uint32_t | max_buffers |
خالی * | خصوصی |
android_dataspace_t | فضای_داده |
بین المللی | چرخش |
خالی * | رزرو شده [7] |
توصیف همراه با جزئیات
camera3_stream_t:
یک دسته برای یک جریان ورودی یا خروجی دوربین. یک جریان توسط چارچوب با وضوح بافر و قالب آن، و علاوه بر این توسط HAL با پرچمهای استفاده از gralloc و حداکثر تعداد بافر در پرواز تعریف میشود.
ساختارهای جریان متعلق به فریمورک هستند، اما اشاره گرهای یک camera3_stream که توسط configure_streams() به HAL منتقل می شود تا پایان اولین فراخوانی configure_streams() بعدی که شامل آن camera3_stream به عنوان آرگومان نمی شود ، یا تا پایان فراخوانی ()close.
پس از اینکه camera3_stream به configure_streams () منتقل شود، همه اعضای کنترل شده توسط frame3_stream غیرقابل تغییر هستند. HAL فقط ممکن است پارامترهای کنترل شده با HAL را در طول یک فراخوانی configure_streams() تغییر دهد، به جز محتویات اشاره گر خصوصی.
اگر یک فراخوانی configure_streams() یک خطای غیرمرگبار را برگرداند، تمام جریانهای فعال مانند اینکه configure_streams () فراخوانی نشده باشد معتبر میمانند.
نقطه پایان جریان برای دستگاه HAL دوربین قابل مشاهده نیست. در DEVICE_API_VERSION_3_1، این تغییر برای به اشتراک گذاشتن پرچمهای مصرف مصرفکننده در جریانهایی که دوربین تولیدکننده آن است (نوعهای جریانی OUTPUT و BIDIRECTIONAL) به فیلد استفاده در زیر مراجعه کنید.
مستندات میدانی
android_dataspace_t data_space |
فیلدی که محتویات بافر را توصیف می کند. ابعاد قالب و بافر، چیدمان و ساختار حافظه بافرهای جریانی را مشخص می کند، در حالی که dataSpace معنای داده های درون بافر را مشخص می کند.
برای اکثر فرمت ها، dataSpace فضای رنگی داده های تصویر را مشخص می کند. علاوه بر این، برای برخی از فرمتها، dataSpace نشان میدهد که دادههای مبتنی بر تصویر یا عمق درخواست شده است. برای جزئیات فرمت ها و مقادیر معتبر dataSpace برای هر قالب، به system/core/include/system/graphics.h مراجعه کنید.
اطلاعات نسخه:
< CAMERA_DEVICE_API_VERSION_3_3:
تعریف نشده و نباید به آن دسترسی داشت. dataSpace باید HAL_DATASPACE_UNKNOWN در نظر گرفته شود و فضای رنگی مناسب و غیره باید از روی پرچمهای استفاده و قالب تعیین شود.
= CAMERA_DEVICE_API_VERSION_3_3:
همیشه توسط سرویس دوربین تنظیم می شود. HAL باید از این dataSpace برای پیکربندی جریان به فضای رنگی صحیح یا انتخاب بین خروجی رنگ و عمق در صورت پشتیبانی استفاده کند. مقادیر فضای داده تعاریف قدیمی در graphics.h هستند
>= CAMERA_DEVICE_API_VERSION_3_4:
همیشه توسط سرویس دوربین تنظیم می شود. HAL باید از این dataSpace برای پیکربندی جریان به فضای رنگی صحیح یا انتخاب بین خروجی رنگ و عمق در صورت پشتیبانی استفاده کند. مقادیر فضای داده با استفاده از تعاریف فضای داده V0 در graphics.h تنظیم می شوند
فرمت int |
قالب پیکسل برای بافرهای این جریان. Format مقداری از لیست 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 max_buffers |
باطل * خصوصی |
چرخش درونی |
چرخش خروجی مورد نیاز جریان، یکی از مقادیر camera3_stream_rotation_t. این باید توسط HAL به همراه عرض و ارتفاع جریان بررسی شود. به عنوان مثال، اگر چرخش 90 درجه و عرض و ارتفاع جریان به ترتیب 720 و 1280 باشد، سرویس دوربین بافرهایی با اندازه 720x1280 را ارائه می دهد و HAL باید یک تصویر 1280x720 بگیرد و تصویر را 90 درجه در خلاف جهت عقربه های ساعت بچرخاند. وقتی نوع جریان ورودی وارد می شود، فیلد چرخش بدون عملیات است. دوربین HAL باید فیلد چرخش جریان ورودی را نادیده بگیرد.
<= CAMERA_DEVICE_API_VERSION_3_2:
تعریف نشده و نباید به آن دسترسی داشت. HAL نباید هیچ چرخشی روی تصاویر خروجی اعمال کند.
>= CAMERA_DEVICE_API_VERSION_3_3:
همیشه توسط سرویس دوربین تنظیم می شود. HAL باید این فیلد را در طول پیکربندی جریان بررسی کند و اگر HAL نتواند چنین چرخشی را انجام دهد -EINVAL را برمیگرداند. HAL باید همیشه CAMERA3_STREAM_ROTATION_0 را پشتیبانی کند، بنابراین اگر فیلد چرخش همه جریانها CAMERA3_STREAM_ROTATION_0 باشد، تماس configure_streams() نباید برای چرخش پشتیبانینشده از کار بیفتد.
استفاده از uint32_t |
طبق نیاز HAL، پرچم استفاده از gralloc برای این جریان. پرچمهای استفاده در gralloc.h (GRALLOC_USAGE_*) یا در سرصفحههای خاص دستگاه تعریف شدهاند.
برای جریانهای خروجی، اینها پرچمهای استفاده تولیدکننده HAL هستند. برای جریانهای ورودی، اینها پرچمهای استفاده مصرفکننده HAL هستند. پرچمهای استفاده از تولیدکننده و مصرفکننده با هم ترکیب میشوند و سپس به ماژول gralloc HAL برای تخصیص بافرهای gralloc برای هر جریان منتقل میشوند.
اطلاعات نسخه:
== CAMERA_DEVICE_API_VERSION_3_0:
هنگامی که از طریق configure_streams () ارسال می شود، هیچ مقدار اولیه تضمین نمی شود. HAL ممکن است از این فیلد به عنوان ورودی استفاده نکند و باید روی این فیلد با پرچم های استفاده آن بنویسد.
>= CAMERA_DEVICE_API_VERSION_3_1:
برای OUTPUT stream_type و BIDIRECTIONAL، وقتی از configure_streams() ارسال میشود، مقدار اولیه آن پرچمهای استفاده مصرفکننده است. HAL ممکن است از این پرچم های مصرف کننده برای تصمیم گیری در مورد پیکربندی جریان استفاده کند. برای stream_type INPUT، زمانی که از طریق configure_streams () ارسال می شود، مقدار اولیه این 0 است. برای تمام جریان های ارسال شده از طریق configure_streams()، HAL باید روی این فیلد با پرچم های استفاده خود بنویسد.
مستندات این ساختار از فایل زیر تولید شده است:
- hardware/libhardware/include/hardware/ camera3.h