camera3_callback_ops مرجع ساختار
#include < camera3.h >
فیلدهای داده | |
خالی(* | process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *نتیجه) |
خالی(* | notify )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg) |
توصیف همراه با جزئیات
مستندات میدانی
void(* notify)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg) |
اعلام کردن:
پاسخ تماس اعلان ناهمزمان از HAL، به دلایل مختلف انجام می شود. فقط برای اطلاعاتی مستقل از گرفتن فریم، یا نیاز به زمان بندی خاصی دارد. مالکیت ساختار پیام در اختیار HAL است و پیام فقط باید برای مدت این تماس معتبر باشد.
ممکن است چندین رشته به طور همزمان notify() را فراخوانی کنند.
<= CAMERA_DEVICE_API_VERSION_3_1:
اعلان شروع قرار گرفتن در معرض برای یک درخواست معین باید قبل از اولین تماس با process_capture_result() برای آن درخواست توسط HAL ارسال شود.
>= CAMERA_DEVICE_API_VERSION_3_2:
بافرهای تحویلشده به چارچوب به لایه برنامه ارسال نمیشوند تا زمانی که مهر زمانی شروع نوردهی (یا مهر زمانی شروع نوردهی تصویر ورودی برای درخواست پردازش مجدد) از طریق یک فراخوان SHUTTER notify() دریافت شود. اکیداً توصیه می شود این تماس را در اسرع وقت ارسال کنید.
ملزومات اجرا:
این یک تماس غیر مسدود است. فریم ورک این تماس را در 5 میلی ثانیه برمی گرداند.
void(* process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *نتیجه) |
process_capture_result:
ارسال نتایج از یک ضبط کامل به چارچوب. () process_capture_result ممکن است چندین بار توسط HAL در پاسخ به یک درخواست ضبط واحد فراخوانی شود. به عنوان مثال، این امکان را میدهد تا متادیتا و بافرهای با وضوح پایین در یک تماس، و بافرهای JPEG پس از پردازش در تماس بعدی، پس از در دسترس بودن، برگردانده شوند. هر تماس باید شامل شماره فریم درخواستی باشد که متادیتا یا بافرهای مربوط به آن را برمی گرداند.
یک جزء (بافر یا ابرداده) از نتیجه کامل ممکن است فقط در یک فراخوانی process_capture_result گنجانده شود. یک بافر برای هر جریان، و متادیتای نتیجه، باید توسط HAL برای هر درخواست در یکی از فراخوانی های process_capture_result، حتی در صورت بروز خطاهایی که برخی از خروجی ها را تولید می کند، برگرداند. فراخوانی به process_capture_result() بدون بافر خروجی یا فراداده نتیجه مجاز نیست.
ترتیب برگرداندن ابرداده و بافرها برای یک نتیجه مهم نیست، اما بافرهای یک جریان معین باید به ترتیب FIFO برگردانده شوند. بنابراین بافر درخواست 5 برای جریان A باید همیشه قبل از بافر درخواست 6 برای جریان A برگردانده شود. این در مورد فراداده نتیجه نیز صدق می کند. فراداده درخواست 5 باید قبل از فراداده درخواست 6 بازگردانده شود.
با این حال، جریان های مختلف مستقل از یکدیگر هستند، بنابراین قابل قبول و انتظار است که بافر برای درخواست 5 برای جریان A ممکن است پس از بازگشت بافر برای درخواست 6 برای جریان B، بازگردانده شود. و قابل قبول است که فراداده نتیجه درخواست 6 برای جریان B قبل از بافر درخواست 5 برای جریان A بازگردانده شود.
HAL مالکیت ساختار نتیجه را حفظ می کند، که فقط برای دسترسی در طول این تماس باید معتبر باشد. فریم ورک هر آنچه را که نیاز دارد قبل از بازگشت این تماس کپی می کند.
بافرهای خروجی هنوز نیازی به پر شدن ندارند. چارچوب قبل از خواندن داده های بافر روی حصار همگام سازی انتشار بافر جریان منتظر می ماند. بنابراین، این روش باید در اسرع وقت توسط HAL فراخوانی شود، حتی اگر برخی یا همه بافرهای خروجی هنوز در حال پر شدن باشند. HAL باید شامل حصارهای همگام سازی انتشار معتبر در هر ورودی بافر جریان output_buffers باشد، یا -1 اگر بافر جریان از قبل پر شده باشد.
اگر بافر نتیجه را نتوان برای یک درخواست ساخت، HAL باید یک بافر ابرداده خالی را برگرداند، اما همچنان بافرهای خروجی و حصارهای همگام سازی آنها را فراهم کند. علاوه بر این، notify() باید با یک پیام ERROR_RESULT فراخوانی شود.
اگر بافر خروجی پر نمی شود، فیلد وضعیت آن باید روی STATUS_ERROR تنظیم شود. علاوه بر این، notify() باید با یک پیام ERROR_BUFFER فراخوانی شود.
اگر کل ضبط ناموفق باشد، این روش همچنان باید فراخوانی شود تا بافرهای خروجی به چارچوب بازگردانده شود. همه وضعیتهای بافر باید STATUS_ERROR باشند و متادیتای نتیجه باید یک بافر خالی باشد. علاوه بر این، notify() باید با یک پیام ERROR_REQUEST فراخوانی شود. در این مورد، پیام های ERROR_RESULT/ERROR_BUFFER منفرد نباید ارسال شوند.
ملزومات اجرا:
این یک تماس غیر مسدود است. فریم ورک این تماس را در 5 میلی ثانیه برمی گرداند.
تأخیر خط لوله (برای تعریف به S7 مراجعه کنید) باید کمتر یا مساوی 4 بازه فریم باشد و باید کمتر یا مساوی 8 بازه فریم باشد.
مستندات این ساختار از فایل زیر تولید شده است:
- hardware/libhardware/include/hardware/ camera3.h