اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
مرجع بنية camera3_callback_ops
#include <
camera3.h
>
تم تحديدها في السطر
2397
من الملف
camera3.h
.
notify:
يتم تشغيل عملية ردّ الاتصال غير المتزامنة للإشعارات من طبقة HAL لأسباب مختلفة. يُستخدم فقط للمعلومات المستقلة عن التقاط اللقطات أو التي تتطلب توقيتًا محدّدًا. تظل ملكية بنية الرسالة مع طبقة تجريد الأجهزة (HAL)، ولا يلزم أن تكون الرسالة صالحة إلا لمدة هذه المكالمة.
قد تستدعي سلاسل محادثات متعددة الطريقة
notify()
في الوقت نفسه.
<= CAMERA_DEVICE_API_VERSION_3_1:
يجب أن يرسل HAL إشعارًا ببدء التعرّض لطلب معيّن قبل إجراء أول عملية استدعاء للدالة
process_capture_result()
لهذا الطلب.
>= 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
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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)"]]