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 ke satu atau beberapa kumpulan streaming yang dikonfigurasi di perangkat kamera. Untuk mengetahui informasi selengkapnya tentang fitur ini, lihat konfigurasi streaming yang direkomendasikan dan API untuk membuat kueri kombinasi fitur.
Penerapan referensi
Ada implementasi referensi sisi vendor dari aliran konfigurasi yang direkomendasikan dan API untuk mengkueri fitur kombinasi aliran. Anda dapat menemukan implementasi ini di QCamera3HWI.cpp
Konfigurasi streaming yang direkomendasikan
Vendor kamera dapat mengiklankan konfigurasi streaming yang direkomendasikan untuk kasus penggunaan tertentu kepada klien kamera. Konfigurasi streaming yang direkomendasikan ini, yang merupakan subkumpulan 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 dampak efisiensi, daya, atau performa dari memilih satu streaming daripada streaming lainnya. Klien kamera dapat memilih secara bebas dari semua kemungkinan konfigurasi streaming, tetapi dalam banyak kasus, hal ini menyebabkan klien menggunakan konfigurasi kamera dan aplikasi yang kurang optimal sehingga 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 pemrosesan tambahan untuk konversi format dan mengurangi efisiensi. Ukuran dan rasio aspek yang sesuai juga dapat memiliki dampak 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 di StreamConfigurationMap. Format, ukuran, atau nilai lain yang tersembunyi yang tidak ditemukan di StreamConfigurationMap tidak dapat disertakan dalam peta konfigurasi streaming yang direkomendasikan.
Semua pengujian tetap tidak berubah dan tidak longgar, bergantung pada konfigurasi streaming yang direkomendasikan.
Konfigurasi streaming yang direkomendasikan yang disediakan oleh implementasi 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
: Subset 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 tersebut 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 untuk perangkat kamera ini. Serupa dengan entri metadata di atas, bitmap kasus penggunaan tambahan menunjukkan kasus penggunaan yang disarankan.Informasi ini disimpan di 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 disediakan untuk kasus penggunaan berikut dan memenuhi persyaratan yang sesuai:
Kasus penggunaan | Persyaratan |
---|---|
PREVIEW |
Pratinjau hanya boleh menyertakan konfigurasi aliran data yang diproses yang tidak stabil
dengan format output seperti YUV_420_888 dan
IMPLEMENTATION_DEFINED . |
RECORD |
Kumpulan data 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 sebesar resolusi RECORD maksimum dan hanya dengan kombinasi format/dataspace BLOB + DATASPACE_JFIF (JPEG). Konfigurasi tidak boleh menyebabkan gangguan pratinjau dan harus dapat berjalan pada 30 fps. |
SNAPSHOT |
Konfigurasi streaming snapshot harus menyertakan minimal satu dengan ukuran yang mendekati android.sensor.info.activeArraySize dengan kombinasi format/dataspace BLOB + DATASPACE_JFIF (JPEG). Dengan mempertimbangkan
batasan pada rasio aspek, perataan, dan batasan khusus vendor lainnya,
area ukuran maksimum yang disarankan tidak boleh kurang dari 97% area ukuran array
sensor. |
ZSL (jika didukung) |
Jika didukung oleh perangkat kamera, konfigurasi streaming input yang direkomendasikan hanya boleh diiklankan bersama dengan format output lain yang diproses atau terhenti. |
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 menyediakan aliran konfigurasi tambahan yang direkomendasikan untuk kasus penggunaan yang spesifik untuk penerapan Anda.
Validasi
Untuk menguji implementasi aliran konfigurasi yang direkomendasikan, jalankan pengujian CTS dan VTS berikut:
API untuk membuat kueri kombinasi fitur
Mulai Android 15, platform Android menyediakan API untuk membuat kueri kombinasi fitur. API ini memungkinkan klien kamera membuat kueri tentang apakah kombinasi fitur yang ditentukan dapat didukung oleh perangkat. API ini diperlukan karena camera2 API membuat model fitur yang berbeda seperti 4k, 60 fps, video 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 dengan
fitur lainnya. Artinya, untuk perangkat kamera yang mendukung stabilisasi
pratinjau, nilai yang ditampilkan isStreamCombinationWithSettingsSupported
untuk kombinasi tertentu harus sama dengan nilai saat stabilisasi pratinjau
aktif atau nonaktif. Hal ini mengurangi ruang penelusuran untuk kueri kombinasi fitur.
Selain itu, untuk performa media kelas 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 dari CDD.
Implementasi
Untuk mendukung API guna membuat kueri kombinasi fitur, terapkan API kueri kombinasi fitur
berikut di
ICameraDevice
versi 3:
constructDefaultRequestSettings
: Membuat setelan default untuk jenisCaptureRequest
yang ditentukan. HAL dapat menggunakan implementasiICameraDeviceSession::constructDefaultRequestSettings
.isStreamCombinationWithSettingsSupported
: Memeriksa dukungan perangkat untuk kombinasi streaming kamera yang ditentukan dengan parameter sesi dan kunciCaptureRequest
tambahan. Harus menampilkantrue
untuk kombinasi yang didukung danfalse
untuk kombinasi fitur yang tidak didukung. HAL dapat menggunakan penerapanisStreamCombinationSupported
dan menambahkan dukungan untuk memeriksa setelanCaptureRequest
yang diteruskan disessionParams
.getSessionCharacteristics
: Mengambil kombinasi streaming yang didukung dengan parameter sesi dan menampilkan karakteristik khusus sesi.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Mencantumkan semua konfigurasi sesi yang umum digunakan. Konfigurasi ini diverifikasi oleh pengujian kepatuhan.
Untuk versi antarmuka ICameraDevice
yang lebih rendah dari versi 3, HAL
harus menerapkan
metode
isStreamCombinationSupported
.
Untuk informasi selengkapnya tentang kombinasi fitur yang dikueri oleh API, lihat dokumentasi tentang sessionConfigurationQueryVersion
di system/media/camera/docs/metadata_definitions.xml
.
Untuk implementasi 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 terbatasCameraDevice
yang dapat digunakan untuk membuat kueri kombinasi fitur tanpa memerlukan instanceCameraDevice
.getCameraDeviceSetup
: Mendapatkan objekCameraDeviceSetup
untuk ID kamera tertentu jikaisCameraDeviceSetupSupported
menampilkantrue
.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Mendukung kueri kombinasi fitur jika nilai ini adalahVANILLA_ICE_CREAM
atau lebih tinggi.OutputConfiguration
: Class yang menjelaskan output kamera, yang dapat berisi platform 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 Camera ITS (CTS Verifier) berikut:
VTS
CTS
- cts/tests/camera/src/android/hardware/camera2/cts/FeatureCombinationTest.java
- cts/tests/camera/src/android/hardware/camera2/cts/CameraDeviceSetupTest.java
ITS Kamera