از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
تولید کننده واحد، حمل و نقل بافر دوربین چندگانه مصرف کننده
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
این ویژگی مجموعهای از روشها را معرفی میکند که به مشتریان دوربین اجازه میدهد تا سطوح خروجی را به صورت پویا اضافه و حذف کنند، در حالی که جلسه عکسبرداری فعال است و پخش جریانی دوربین ادامه دارد. یک خروجی جدید می تواند به یک جریان دوربین اشتراکی خاص و انتخاب شده توسط کاربر نگاشت شود. پس از اضافه شدن یک سطح، می توان آن را در هر زمان حذف کرد.
ایده کلی این است که بافرهای مرتبط با یک جریان دوربین خاص را در چندین سطح خروجی به اشتراک بگذارید. یک شمارنده مرجع داخلی، بافرها را هنگامی که برای پردازش بیشتر در سمت مصرف کننده آماده می شوند، پیگیری می کند. هنگامی که همه مصرف کنندگان وظایف مربوطه خود را انجام می دهند، بافر از صف خارج می شود و برای دوربین در دسترس است.

شکل 1. اشتراک بافر
شکل 1 یک سناریوی نمونه را نشان می دهد که در آن بافرهای پردازش شده توسط جریان دوربین 2 به صورت پویا متصل و جدا می شوند، مرجع شمارش می شوند و توسط جزء تقسیم کننده جریان در یک جریان خروجی مشترک اختصاصی در سرویس دوربین مدیریت می شوند.
مثال ها و منبع
پیاده سازی اصلی این ویژگی را می توان در ماژول Camera3StreamSplitter
یافت. اسناد مربوط به این ویژگی را می توان در مرجع توسعه دهنده یافت:
پیاده سازی
هیچ پیاده سازی در سمت دوربین HAL مورد نیاز نیست زیرا این ویژگی در سمت چارچوب پیاده سازی شده است.
اعتبار سنجی
پیاده سازی شما باید موارد CTS را که این ویژگی را از ماژول MultiViewTest و کتابخانه بومی JNI برای API اصلی پوشش می دهد، ارسال کند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و 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,["# Single producer, multiple consumer camera buffer transport\n\nThis feature introduces a set of methods that allows camera clients to add and\nremove output surfaces dynamically while the capture session is active and\ncamera streaming is ongoing. A new output can map to a specific, user-selected\n[shared camera](https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#enableSurfaceSharing())\nstream. After a surface is added, it can be removed at any time.\n\nThe general idea is to share the buffers associated with a particular camera\nstream within several output surfaces. An internal reference counter keeps track\nof the buffers as they become ready for further processing on the consumer side.\nWhen all consumers complete their respective tasks the buffer gets dequeued and\nis available for the camera.\n\n**Figure 1.** Buffer sharing\n\nFigure 1 depicts one example scenario where the buffers processed by camera\nstream 2 are dynamically attached and detached, reference counted, and managed\nby the stream splitter component inside a dedicated shared output stream within\nthe camera service.\n\nExamples and source\n-------------------\n\nThe core implementation of this feature can be found in the\n[`Camera3StreamSplitter`](https://android.googlesource.com/platform/frameworks/av/+/android16-release/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp)\nmodule. Documentation on this feature can be found in the developer reference:\n\n- [`updateOutputConfiguration()`](https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession.html#updateOutputConfiguration(android.hardware.camera2.params.OutputConfiguration))\n- [`addSurface()`](https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#addSurface(android.view.Surface))\n- [`removeSurface()`](https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#removeSurface(android.view.Surface))\n\nImplementation\n--------------\n\nNo implementation is required on the Camera HAL side as this feature is\nimplemented on the framework side.\n\nValidation\n----------\n\nYour implementation must pass CTS cases that cover this feature from the\n[MultiViewTest](https://android.googlesource.com/platform/cts/+/android16-release/tests/camera/src/android/hardware/camera2/cts/MultiViewTest.java)\nmodule and the\n[native JNI library](https://android.googlesource.com/platform/cts/+/android16-release/tests/camera/libctscamera2jni/native-camera-jni.cpp)\nfor the native API."]]