از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
camera3_callback_ops مرجع ساختار
#include < camera3.h >
تعریف در خط 2397 فایل camera3.h .
اعلام کردن:
پاسخ تماس اعلان ناهمزمان از HAL، به دلایل مختلف انجام می شود. فقط برای اطلاعاتی مستقل از گرفتن فریم، یا نیاز به زمان بندی خاصی دارد. مالکیت ساختار پیام در اختیار HAL است و پیام فقط باید برای مدت این تماس معتبر باشد.
ممکن است چندین رشته به طور همزمان notify() را فراخوانی کنند.
<= CAMERA_DEVICE_API_VERSION_3_1:
اعلان شروع قرار گرفتن در معرض برای یک درخواست معین باید قبل از اولین تماس با process_capture_result() برای آن درخواست توسط HAL ارسال شود.
>= CAMERA_DEVICE_API_VERSION_3_2:
بافرهای تحویلشده به چارچوب به لایه برنامه ارسال نمیشوند تا زمانی که مهر زمانی شروع نوردهی (یا مهر زمانی شروع نوردهی تصویر ورودی برای درخواست پردازش مجدد) از طریق یک فراخوان SHUTTER notify() دریافت شود. اکیداً توصیه می شود این تماس را در اسرع وقت ارسال کنید.
ملزومات اجرا:
این یک تماس غیر مسدود است. فریم ورک این تماس را در 5 میلی ثانیه برمی گرداند.
تعریف در خط 2499 فایل camera3.h .
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 بازه فریم باشد.
تعریف در خط 2466 فایل camera3.h .
مستندات این ساختار از فایل زیر تولید شده است:
- hardware/libhardware/include/hardware/ camera3.h
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Android Hardware Abstraction Layer: camera3_callback_ops Struct Reference\n\ncamera3_callback_ops Struct Reference\n=====================================\n\n[Data Fields](#pub-attribs) \ncamera3_callback_ops Struct Reference \n\n`\n#include \u003c\n`[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)`\n\u003e\n`\n\n|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| void(\\* | [process_capture_result](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n| ||\n| void(\\* | [notify](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nDefinition at line\n[2397](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\nField Documentation\n-------------------\n\n\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* notify)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n\n\nnotify:\n\n\nAsynchronous notification callback from the HAL, fired for various reasons. Only for information independent of frame capture, or that require specific timing. The ownership of the message structure remains with the HAL, and the msg only needs to be valid for the duration of this call.\n\n\nMultiple threads may call\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nsimultaneously.\n\n\n\\\u003c= CAMERA_DEVICE_API_VERSION_3_1:\n\n\nThe notification for the start of exposure for a given request must be sent by the HAL before the first call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nfor that request is made.\n\n\n\\\u003e= CAMERA_DEVICE_API_VERSION_3_2:\n\n\nBuffers delivered to the framework will not be dispatched to the application layer until a start of exposure timestamp (or input image's start of exposure timestamp for a reprocess request) has been received via a SHUTTER\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\ncall. It is highly recommended to dispatch this call as early as possible.\n\n*** ** * ** ***\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nDefinition at line\n[2499](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* process_capture_result)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n\n\nprocess_capture_result:\n\n\nSend results from a completed capture to the framework.\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nmay be invoked multiple times by the HAL in response to a single capture request. This allows, for example, the metadata and low-resolution buffers to be returned in one call, and post-processed JPEG buffers in a later call, once it is available. Each call must include the frame number of the request it is returning metadata or buffers for.\n\n\nA component (buffer or metadata) of the complete result may only be included in one process_capture_result call. A buffer for each stream, and the result metadata, must be returned by the HAL for each request in one of the process_capture_result calls, even in case of errors producing some of the output. A call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nwith neither output buffers or result metadata is not allowed.\n\n\nThe order of returning metadata and buffers for a single result does not matter, but buffers for a given stream must be returned in FIFO order. So the buffer for request 5 for stream A must always be returned before the buffer for request 6 for stream A. This also applies to the result metadata; the metadata for request 5 must be returned before the metadata for request 6.\n\n\nHowever, different streams are independent of each other, so it is acceptable and expected that the buffer for request 5 for stream A may be returned after the buffer for request 6 for stream B is. And it is acceptable that the result metadata for request 6 for stream B is returned before the buffer for request 5 for stream A is.\n\n\nThe HAL retains ownership of result structure, which only needs to be valid to access during this call. The framework will copy whatever it needs before this call returns.\n\n\nThe output buffers do not need to be filled yet; the framework will wait on the stream buffer release sync fence before reading the buffer data. Therefore, this method should be called by the HAL as soon as possible, even if some or all of the output buffers are still in being filled. The HAL must include valid release sync fences into each output_buffers stream buffer entry, or -1 if that stream buffer is already filled.\n\n\nIf the result buffer cannot be constructed for a request, the HAL should return an empty metadata buffer, but still provide the output buffers and their sync fences. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with an ERROR_RESULT message.\n\n\nIf an output buffer cannot be filled, its status field must be set to STATUS_ERROR. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_BUFFER message.\n\n\nIf the entire capture has failed, then this method still needs to be called to return the output buffers to the framework. All the buffer statuses should be STATUS_ERROR, and the result metadata should be an empty buffer. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_REQUEST message. In this case, individual ERROR_RESULT/ERROR_BUFFER messages should not be sent.\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nThe pipeline latency (see S7 for definition) should be less than or equal to 4 frame intervals, and must be less than or equal to 8 frame intervals.\n\n\nDefinition at line\n[2466](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)"]]