اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
مرجع بنية camera2_request_queue_src_ops
#include <
camera2.h
>
بروتوكول طلب إدخال البيانات:
يتضمّن الإطار المحتوى في "قائمة المحتوى التالي". في البداية، تكون قائمة المحتوى التالي فارغة.
-
عند وضع أول وحدة تخزين مؤقت للبيانات الوصفية في "قائمة الانتظار"، يُرسِل إطار العمل إشارة إلى الجهاز من خلال استدعاء notify_request_queue_not_empty().
-
بعد تلقّي notify_request_queue_not_empty، يجب أن يستدعي الجهاز dequeue() عندما يصبح جاهزًا لمعالجة المخزن المؤقت التالي.
-
بعد أن يعالج الجهاز ذاكرة التخزين المؤقت ويصبح جاهزًا للذاكرة المؤقتة التالية، يجب أن يستدعي dequeue() مرة أخرى بدلاً من انتظار إشعار. إذا لم تتوفّر أيّ وحدات تخزين مؤقتة أخرى، ستُرجع الدالة dequeue() القيمة NULL. بعد هذه المرحلة، عندما يصبح مخزن مؤقت متاحًا، يجب أن يستدعي إطار العمل notify_request_queue_not_empty() مرة أخرى. إذا تلقّى الجهاز قيمة NULL من dequeue، لن يحتاج إلى طلب المعلومات من "قائمة الانتظار" مرة أخرى إلى أن يتم تلقّي طلب notify_request_queue_not_empty() من المصدر.
-
إذا طلب الجهاز buffer_count() وتلقّى القيمة 0، لا يعني ذلك أنّ الإطار سيقدّم طلب notify_request_queue_not_empty(). ولن يقدّم إطار العمل هذا الإشعار إلا بعد أن يتلقّى الجهاز قيمة NULL من قائمة الانتظار أو عند بدء التشغيل الأولي.
-
قد تكون طلب dequeue() استجابةً لطلب notify_request_queue_not_empty() في سلسلة المحادثات نفسها، وقد يتم تنفيذه من داخل طلب notify.
-
يجب إرجاع جميع وحدات تخزين مؤقت للطلبات التي تمّت إزالتها من "قائمة الانتظار" إلى إطار العمل من خلال استدعاء free_request، بما في ذلك عند حدوث أخطاء أو عند طلب تنظيف الجهاز أو عند إيقاف الجهاز.
التعريف في السطر
220
من الملف
camera2.h
.
الحصول على ذاكرة تخزين مؤقت للبيانات الوصفية من إطار العمل تعرِض OK إذا لم يكن هناك خطأ. إذا كانت "القائمة الانتظار" فارغة، يتم عرض NULL في المخزن المؤقت. في هذه الحالة، يجب أن ينتظر الجهاز رسالة notify_request_queue_not_empty() قبل محاولة إزالة الطلبات من "قائمة الانتظار" مرة أخرى. يجب إرجاع المخازن المؤقتة التي تم الحصول عليها بهذه الطريقة إلى الإطار باستخدام الإجراء
free_request()
.
التعريف في السطر
237
من الملف
camera2.h
.
عرض مخزن مؤقت للبيانات الوصفية في إطار العمل بعد استخدامه أو في حال حدوث خطأ أو إيقاف تشغيل
التعريف في السطر
243
من الملف
camera2.h
.
الحصول على عدد طلبات التخزين المؤقت في انتظار المراجعة في قائمة الانتظار قد يعرض القيمة CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS إذا تم حاليًا ضبط طلب متكرر (طلب البث). لا يؤثّر استدعاء هذه الطريقة في ما إذا كان إطار العمل سيستدعي notify_request_queue_not_empty().
التعريف في السطر
228
من الملف
camera2.h
.
تم إنشاء مستندات هذه البنية من الملف التالي:
-
hardware/libhardware/include/hardware/
camera2.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: camera2_request_queue_src_ops Struct Reference\n\ncamera2_request_queue_src_ops Struct Reference\n==============================================\n\n[Data Fields](#pub-attribs) \ncamera2_request_queue_src_ops Struct Reference \n\n`\n#include \u003c\n`[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)`\n\u003e\n`\n\n|--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| int(\\* | [request_count](/reference/hal/structcamera2__request__queue__src__ops#a19ec09251038ee392fedcaeb68ede229) )(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q) |\n| ||\n| int(\\* | [dequeue_request](/reference/hal/structcamera2__request__queue__src__ops#a79adee987dbd6a8ea0cfab81c89ae579) )(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*\\*buffer) |\n| ||\n| int(\\* | [free_request](/reference/hal/structcamera2__request__queue__src__ops#aa45ae2fd2aedf1843378e213e65a66f8) )(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*old_buffer) |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nRequest input queue protocol:\n\n\nThe framework holds the queue and its contents. At start, the queue is empty.\n\n1. When the first metadata buffer is placed into the queue, the framework signals the device by calling notify_request_queue_not_empty().\n2. After receiving notify_request_queue_not_empty, the device must call dequeue() once it's ready to handle the next buffer.\n3. Once the device has processed a buffer, and is ready for the next buffer, it must call dequeue() again instead of waiting for a notification. If there are no more buffers available, dequeue() will return NULL. After this point, when a buffer becomes available, the framework must call notify_request_queue_not_empty() again. If the device receives a NULL return from dequeue, it does not need to query the queue again until a notify_request_queue_not_empty() call is received from the source.\n4. If the device calls buffer_count() and receives 0, this does not mean that the framework will provide a notify_request_queue_not_empty() call. The framework will only provide such a notification after the device has received a NULL from dequeue, or on initial startup.\n5. The dequeue() call in response to notify_request_queue_not_empty() may be on the same thread as the notify_request_queue_not_empty() call, and may be performed from within the notify call.\n6. All dequeued request buffers must be returned to the framework by calling free_request, including when errors occur, a device flush is requested, or when the device is shutting down.\n\n\nDefinition at line\n[220](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\nField Documentation\n-------------------\n\n\n|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| int(\\* dequeue_request)(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*\\*buffer) |\n\n\nGet a metadata buffer from the framework. Returns OK if there is no error. If the queue is empty, returns NULL in buffer. In that case, the device must wait for a notify_request_queue_not_empty() message before attempting to dequeue again. Buffers obtained in this way must be returned to the framework with\n[free_request()](/reference/hal/structcamera2__request__queue__src__ops#aa45ae2fd2aedf1843378e213e65a66f8)\n.\n\n\nDefinition at line\n[237](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| int(\\* free_request)(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*old_buffer) |\n\n\nReturn a metadata buffer to the framework once it has been used, or if an error or shutdown occurs.\n\n\nDefinition at line\n[243](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\n|---------------------------------------------------------------------------------------------------------------------------------|\n| int(\\* request_count)(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q) |\n\n\nGet the count of request buffers pending in the queue. May return CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS if a repeating request (stream request) is currently configured. Calling this method has no effect on whether the notify_request_queue_not_empty() method will be called by the framework.\n\n\nDefinition at line\n[228](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)"]]