Konfigurasi streaming

Android menyertakan fitur yang memungkinkan klien kamera memilih streaming kamera yang optimal untuk kasus penggunaan tertentu dan memastikan bahwa kombinasi streaming tertentu didukung oleh perangkat kamera. Konfigurasi streaming mengacu pada satu streaming kamera yang dikonfigurasi di perangkat kamera dan kombinasi streaming mengacu pada satu atau beberapa set streaming yang dikonfigurasi di perangkat kamera. Untuk mengetahui informasi selengkapnya tentang fitur ini, lihat konfigurasi streaming yang direkomendasikan dan API untuk mengkueri kombinasi fitur.

Implementasi referensi

Ada penerapan referensi sisi vendor untuk aliran konfigurasi yang direkomendasikan dan API untuk mengkueri fitur kombinasi aliran. Anda dapat menemukan penerapan ini di QCamera3HWI.cpp

Vendor kamera dapat mengiklankan konfigurasi streaming yang direkomendasikan untuk kasus penggunaan tertentu kepada klien kamera. Konfigurasi streaming yang direkomendasikan ini, yang merupakan subset dari StreamConfigurationMap, dapat membantu klien kamera memilih konfigurasi yang optimal.

Meskipun StreamConfigurationMap memberikan informasi konfigurasi streaming yang lengkap kepada klien kamera, StreamConfigurationMap tidak memberikan informasi apa pun tentang efisiensi, daya, atau dampak performa dari pemilihan satu streaming dibandingkan streaming lainnya. Klien kamera dapat dengan bebas memilih dari semua kemungkinan konfigurasi streaming, tetapi dalam banyak kasus, hal ini menyebabkan klien menggunakan konfigurasi kamera yang kurang optimal dan aplikasi melakukan penelusuran menyeluruh yang memakan waktu.

Misalnya, meskipun beberapa format YUV yang diproses diperlukan dan harus didukung, perangkat kamera mungkin tidak memiliki dukungan native untuk format tersebut. Hal ini menghasilkan proses tambahan untuk konversi format dan mengurangi efisiensi. Ukuran dan rasio aspek yang sesuai juga dapat memiliki dampak yang serupa, sehingga dimensi tertentu lebih disukai dalam hal daya dan performa.

Peta konfigurasi streaming yang direkomendasikan tidak harus lengkap dibandingkan dengan StreamConfigurationMap. Peta konfigurasi yang disarankan harus mengikuti persyaratan di bagian implementasi dan dapat menyertakan format, ukuran, atau nilai lain yang tersedia yang ditemukan di StreamConfigurationMap. Format, ukuran, atau nilai tersembunyi lainnya yang tidak ditemukan di StreamConfigurationMap tidak dapat disertakan dalam peta konfigurasi streaming yang direkomendasikan.

Semua pengujian tetap tidak berubah dan tidak dilonggarkan, bergantung pada konfigurasi streaming yang direkomendasikan.

Konfigurasi streaming yang direkomendasikan yang disediakan oleh penerapan kamera bersifat opsional dan klien kamera dapat mengabaikannya.

Implementasi

Ikuti langkah-langkah berikut untuk menerapkan fitur ini.

Entri metadata

Untuk mengaktifkan fitur ini, HAL Kamera harus mengisi entri metadata statis berikut:

  • android.scaler.availableRecommendedStreamConfigurations: Subkumpulan konfigurasi streaming yang direkomendasikan untuk kasus penggunaan tertentu. Deklarasi menggunakan bitmap yang menunjukkan kasus penggunaan yang disarankan dalam bentuk [1 << PREVIEW | 1 << RECORD..]. Kasus penggunaan memperluas tuple reguler (format, lebar, tinggi, input) dengan satu entri tambahan. Kasus penggunaan publik yang tidak ada atau bit lain yang ditetapkan dalam rentang [PUBLIC_END, VENDOR_START] dilarang.

    Informasi ini disimpan dalam tag metadata availableRecommendedStreamConfigurations.

    Contoh berikut menunjukkan array untuk konfigurasi streaming yang direkomendasikan untuk perangkat kamera yang hanya mendukung 4K dan 1080p, dengan kedua resolusi lebih disukai untuk perekaman video, tetapi hanya 1080p yang disarankan untuk pratinjau.

    [3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT),
    1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
    
  • android.depth.availableRecommendedDepthStreamConfigurations (hanya tersedia jika didukung oleh perangkat): Konfigurasi streaming ruang data kedalaman yang direkomendasikan yang disarankan untuk perangkat kamera ini. Mirip dengan entri metadata di atas, bitmap kasus penggunaan tambahan menunjukkan kasus penggunaan yang disarankan.

    Informasi ini disimpan dalam tag metadata availableRecommendedInputOutputFormatsMap.

  • android.scaler.availableRecommendedInputOutputFormatsMap (hanya tersedia jika didukung oleh perangkat): Pemetaan format gambar yang direkomendasikan yang disarankan untuk perangkat kamera ini untuk aliran input, ke format output yang sesuai.

    Informasi ini disimpan dalam tag metadata availableRecommendedDepthStreamConfigurations.

Informasi ini tersedia untuk klien kamera melalui RecommendedStreamConfigurationMap API.

Kasus penggunaan yang diperlukan

Konfigurasi streaming yang direkomendasikan harus diberikan untuk kasus penggunaan berikut dan memenuhi persyaratan yang sesuai:

Kasus penggunaan Persyaratan
PREVIEW Pratinjau hanya boleh menyertakan konfigurasi streaming yang diproses tanpa jeda dengan format output seperti YUV_420_888 dan IMPLEMENTATION_DEFINED.
RECORD Rekaman video harus menyertakan konfigurasi streaming yang cocok dengan profil media yang didukung dan diiklankan dengan format IMPLEMENTATION_DEFINED.
VIDEO_SNAPSHOT Snapshot video harus menyertakan konfigurasi streaming yang setidaknya sama besar dengan resolusi REKAMAN maksimum dan hanya dengan kombinasi format/ruang data BLOB + DATASPACE_JFIF (JPEG). Konfigurasi tidak boleh menyebabkan gangguan pratinjau dan harus dapat berjalan pada 30 fps.
SNAPSHOT Konfigurasi streaming snapshot harus menyertakan setidaknya satu dengan ukuran yang mendekati android.sensor.info.activeArraySize dengan kombinasi format/ruang data BLOB + DATASPACE_JFIF (JPEG). Dengan mempertimbangkan batasan rasio aspek, perataan, dan batasan khusus vendor lainnya, area ukuran maksimum yang disarankan tidak boleh kurang dari 97% area ukuran susunan sensor.
ZSL (jika didukung) Jika didukung oleh perangkat kamera, konfigurasi aliran input yang direkomendasikan hanya boleh diiklankan bersama dengan format output yang diproses atau tertunda lainnya.
RAW (jika didukung) Jika didukung oleh perangkat kamera, konfigurasi streaming mentah yang direkomendasikan hanya boleh menyertakan format output berbasis RAW.

Kasus penggunaan lainnya

Anda dapat memberikan aliran konfigurasi tambahan yang direkomendasikan untuk kasus penggunaan tertentu pada penerapan Anda.

Validasi

Untuk menguji penerapan aliran konfigurasi yang direkomendasikan, jalankan pengujian CTS dan VTS berikut:

API untuk membuat kueri kombinasi fitur

Mulai Android 15, platform Android menyediakan API untuk mengkueri kombinasi fitur. API ini memungkinkan klien kamera membuat kueri apakah kombinasi fitur tertentu dapat didukung oleh perangkat. API ini diperlukan karena API camera2 memodelkan berbagai fitur seperti video 4k, 60 fps, HDR, UltraHDR, zoom Ultrawide, dan stabilisasi sebagai kontrol ortogonal.

Persyaratan

Untuk mendukung API guna membuat kueri kombinasi fitur, HAL kamera harus menerapkan antarmuka ICameraDevice versi 3. Untuk mengetahui detailnya, lihat bagian Penerapan.

Jika API didukung, stabilisasi pratinjau harus ortogonal terhadap fitur lainnya. Artinya, untuk perangkat kamera yang mendukung stabilisasi pratinjau, nilai yang ditampilkan dari isStreamCombinationWithSettingsSupported untuk kombinasi tertentu harus sama saat stabilisasi pratinjau aktif atau nonaktif. Hal ini mengurangi ruang penelusuran untuk kueri kombinasi fitur.

Selain itu, untuk kelas performa media 15, kamera belakang utama harus mendukung stabilisasi pratinjau dengan pratinjau HLG10 10-bit untuk pratinjau 1080p dan 720p serta JPEG ukuran maksimum. Untuk mengetahui detail selengkapnya tentang persyaratan ini, lihat bagian 2.2.7.2. Kamera CDD.

Implementasi

Untuk mendukung API guna mengkueri kombinasi fitur, terapkan API kueri kombinasi fitur berikut di ICameraDevice versi 3:

Untuk versi yang lebih rendah dari antarmuka ICameraDevice versi 3, HAL harus menerapkan metode isStreamCombinationSupported.

Untuk mengetahui informasi selengkapnya tentang kombinasi fitur yang dikueri oleh API, lihat dokumentasi tentang sessionConfigurationQueryVersion di system/media/camera/docs/metadata_definitions.xml.

Untuk mengetahui penerapan referensi fitur ini, lihat hardware/google/camera/devices/EmulatedCamera/hwl/.

API Publik

Aplikasi dapat menggunakan API publik berikut untuk membuat kueri kombinasi fitur yang didukung untuk perangkat:

  • CameraDevice.CameraDeviceSetup: Representasi terbatas dari CameraDevice yang dapat digunakan untuk mengkueri kombinasi fitur tanpa memerlukan instance CameraDevice.

  • getCameraDeviceSetup: Mendapatkan objek CameraDeviceSetup untuk ID kamera tertentu jika isCameraDeviceSetupSupported menampilkan true.

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: Mendukung kueri kombinasi fitur jika nilai ini adalah VANILLA_ICE_CREAM atau lebih tinggi.

  • OutputConfiguration: Class yang menjelaskan output kamera, yang dapat berisi permukaan yang ditangguhkan untuk tujuan kueri kombinasi fitur latensi rendah.

  • SessionConfiguration: Class utilitas yang menjelaskan konfigurasi sesi termasuk kombinasi streaming dan parameter sesi, yang dapat digunakan untuk kueri kombinasi fitur.

Validasi

Untuk memvalidasi penerapan fitur ini, gunakan pengujian VTS, CTS, dan ITS Kamera (CTS Verifier) berikut:

VTS

CTS

ITS Kamera