27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main
yerine android-latest-release
kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Tek üretici, birden fazla tüketici kamera arabelleği aktarımı
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Bu özellik, kamera istemcilerinin kayıt oturumu etkinken ve kamera aktarımı devam ederken çıkış yüzeylerini dinamik olarak eklemesine ve kaldırmasına olanak tanıyan bir dizi yöntem sunar. Yeni bir çıkış, kullanıcı tarafından seçilen belirli bir ortak kamera akışıyla eşlenebilir. Eklenen yüzeyler dilediğiniz zaman kaldırılabilir.
Genel fikir, belirli bir kamera akışıyla ilişkili arabellekleri birkaç çıkış yüzeyinde paylaşmaktır. Tüketici tarafında daha fazla işleme hazır hale geldikçe dahili bir referans sayacı, arabelleklerin takibini yapar.
Tüm tüketiciler kendi görevlerini tamamladığında arabellek sıra dışı bırakılır ve kamera için kullanılabilir hale gelir.
Şekil 1. Arabellek paylaşımı
Şekil 1'de, kamera akış 2 tarafından işlenen arabelleklerin dinamik olarak eklenip kaldırıldığı, referans sayıldığı ve kamera hizmetindeki özel bir paylaşılan çıkış akışı içindeki akış ayırıcı bileşeni tarafından yönetildiği bir örnek senaryo gösterilmektedir.
Örnekler ve kaynak
Bu özelliğin temel uygulamasını Camera3StreamSplitter
modülünde bulabilirsiniz. Bu özellikle ilgili dokümanları geliştirici referansında bulabilirsiniz:
Uygulama
Bu özellik çerçeve tarafında uygulandığından Kamera HAL tarafında uygulama gerekmez.
Doğrulama
Uygulamanız, MultiViewTest modülündeki ve yerel API için yerel JNI kitaplığındaki bu özelliği kapsayan CTS testlerini geçmelidir.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-26 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-26 UTC."],[],[],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."]]