Android menyertakan fitur yang memungkinkan klien kamera untuk memilih kamera yang optimal streaming 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 merujuk ke satu atau beberapa kumpulan streaming yang dikonfigurasi di perangkat kamera. Untuk info selengkapnya tentang fitur ini, lihat konfigurasi streaming yang direkomendasikan dan API untuk mengkueri kombinasi fitur.
Penerapan referensi
Terdapat penerapan referensi sisi vendor untuk konfigurasi yang direkomendasikan stream dan API untuk mengkueri fitur kombinasi streaming. Anda dapat menemukannya implementasi di QCamera3HWI.cpp
Konfigurasi streaming yang direkomendasikan
Vendor kamera dapat mengiklankan konfigurasi streaming yang direkomendasikan untuk penggunaan tertentu ke klien kamera. Konfigurasi streaming yang direkomendasikan ini, subhimpunan dari StreamConfigurationMap, dapat membantu klien kamera memilih konfigurasi yang optimal.
Meskipun StreamConfigurationMap memberikan informasi konfigurasi streaming yang lengkap ke klien kamera, tidak memberikan informasi apa pun tentang efisiensi, daya, atau kinerja dampak memilih satu aliran data daripada yang lain. Klien kamera dapat dengan bebas memilih dari semua kemungkinan konfigurasi aliran data, tetapi dalam banyak kasus, ini menyebabkan klien yang menggunakan konfigurasi kamera yang kurang optimal dan aplikasi penelusuran lengkap yang memakan waktu.
Misalnya, meskipun beberapa format YUV yang diproses diperlukan dan harus didukung, perangkat kamera mungkin tidak memiliki dukungan bawaan untuk format tersebut. Ini menghasilkan tahap pemrosesan tambahan untuk konversi format dan mengurangi tim dan efisiensi. Ukuran dan rasio aspek yang sesuai juga dapat memiliki kesamaan dampak sehingga dimensi tertentu lebih diuntungkan dalam hal daya dan tingkat tinggi.
Peta konfigurasi streaming yang direkomendasikan tidak harus lengkap dibandingkan dengan StreamConfigurationMap. Peta konfigurasi yang disarankan harus mengikuti persyaratan dalam implementation dan dapat mencakup salah satu format yang tersedia, ukuran, atau nilai lain yang ditemukan dalam StreamConfigurationMap. Format, ukuran, atau nilai lain tersembunyi yang tidak ditemukan di StreamConfigurationMap tidak dapat disertakan dalam rekomendasi peta konfigurasi streaming.
Semua pengujian tidak berubah dan tidak longgar bergantung pada rekomendasi konfigurasi aliran data.
Konfigurasi streaming yang direkomendasikan yang disediakan oleh penerapan kamera adalah opsional dan klien kamera dapat mengabaikannya.
Implementasi
Ikuti langkah-langkah berikut untuk menerapkan fitur ini.
Entri metadata
Untuk mengaktifkan fitur ini, Camera HAL harus mengisi statis berikut entri metadata:
android.scaler.availableRecommendedStreamConfigurations
: subset konfigurasi streaming yang direkomendasikan untuk kasus penggunaan tertentu. Tujuan menggunakan bitmap yang menunjukkan kasus penggunaan yang disarankan dalam 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 tersebut[PUBLIC_END, VENDOR_START]
dilarang.Informasi ini disimpan di
availableRecommendedStreamConfigurations
{i>metadata<i}.Contoh berikut menunjukkan array untuk streaming yang direkomendasikan untuk perangkat kamera yang hanya mendukung 4K dan 1080p, 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): Ruang data kedalaman yang direkomendasikan konfigurasi streaming yang disarankan untuk perangkat kamera ini. Serupa dengan di atas entri metadata, bitmap kasus penggunaan tambahan menunjukkan kasus penggunaan.Informasi ini disimpan di
availableRecommendedInputOutputFormatsMap
{i>metadata<i}.android.scaler.availableRecommendedInputOutputFormatsMap
(tersedia hanya jika didukung oleh perangkat): Pemetaan format gambar yang direkomendasikan yang disarankan untuk perangkat kamera ini untuk streaming input, ke format output yang sesuai.Informasi ini disimpan di
availableRecommendedDepthStreamConfigurations
{i>metadata<i}.
Informasi ini tersedia untuk klien kamera melalui RecommendedStreamConfigurationMap Compute Engine 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 yang tidak stabil
dengan format output seperti YUV_420_888 dan
IMPLEMENTATION_DEFINED . |
RECORD |
Rekaman video harus menyertakan konfigurasi streaming yang cocok dengan yang diiklankan
profil media yang didukung
dengan format IMPLEMENTATION_DEFINED . |
VIDEO_SNAPSHOT |
Cuplikan video harus menyertakan konfigurasi streaming yang setidaknya memiliki sebesar resolusi RECORD maksimum dan hanya dengan BLOB + Kombinasi format/ruang data DATASPACE_JFIF (JPEG). Konfigurasi seharusnya tidak menyebabkan gangguan pratinjau dan seharusnya dapat berjalan pada kecepatan 30 fps. |
SNAPSHOT |
Konfigurasi streaming snapshot harus menyertakan minimal satu konfigurasi dengan ukuran yang mendekati
ke android.sensor.info.activeArraySize dengan BLOB +
Kombinasi format/ruang data DATASPACE_JFIF (JPEG). Mempertimbangkan
batasan terkait rasio aspek, perataan, dan batasan khusus vendor lainnya,
area ukuran maksimum yang disarankan tidak boleh kurang dari 97% dari sensor
area ukuran array. |
ZSL (jika didukung) |
Jika didukung oleh perangkat kamera, konfigurasi aliran input yang direkomendasikan hanya boleh diiklankan bersama dengan output yang diproses atau terhenti lainnya format font. |
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 spesifik untuk implementasi Anda.
Validasi
Untuk menguji penerapan aliran konfigurasi yang direkomendasikan, jalankan uji CTS dan VTS berikut:
API untuk mengkueri kombinasi fitur
Mulai Android 15, platform Android menyediakan API untuk mengajukan kueri tentang kombinasi fitur. API ini memungkinkan klien kamera mengkueri apakah kombinasi fitur tertentu dapat didukung oleh perangkat. API ini merupakan diperlukan karena API camera2 memodelkan fitur yang berbeda seperti 4k, 60fps, Video HDR, UltraHDR, zoom Ultrawide, dan stabilisasi sebagai kontrol ortogonal.
Persyaratan
Untuk mendukung API dalam mengkueri kombinasi fitur, HAL kamera harus mengimplementasikan
versi 3 dari antarmuka ICameraDevice
. Untuk mengetahui detailnya, lihat
Penerapan.
Jika API didukung, stabilisasi pratinjau harus ortogonal untuk
fitur lainnya. Ini berarti bahwa untuk perangkat kamera
yang mendukung pratinjau
stabilisasi, nilai hasil isStreamCombinationWithSettingsSupported
untuk kombinasi tertentu harus bernilai sama saat stabilisasi pratinjau
sedang nyala atau mati. Tindakan 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 1080p dan 720p JPEG ukuran maksimum dan pratinjau. Untuk mengetahui detail selengkapnya tentang persyaratan ini, lihat bagian 2.2.7.2 Kamera dari CDD.
Implementasi
Untuk mendukung API guna mengkueri kombinasi fitur, implementasikan
API kueri kombinasi fitur di versi 3 dari
ICameraDevice
:
constructDefaultRequestSettings
: Membuat setelan default untuk jenisCaptureRequest
yang ditentukan. HAL dapat menggunakanICameraDeviceSession::constructDefaultRequestSettings
terlepas dari implementasi layanan.isStreamCombinationWithSettingsSupported
: Memeriksa dukungan perangkat dari kombinasi streaming kamera yang ditentukan dengan parameter sesi dan kunciCaptureRequest
tambahan. Harus tampilkantrue
untuk kombinasi yang didukung danfalse
untuk kombinasi yang tidak didukung kombinasi fitur. HAL dapat menggunakanisStreamCombinationSupported
dan menambahkan dukungan untuk memeriksa setelanCaptureRequest
yang diteruskan dalamsessionParams
.getSessionCharacteristics
: Mengambil file yang didukung kombinasi streaming dengan parameter sesi dan menampilkan karakteristik yang spesifik per sesi.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Mencantumkan semua konfigurasi sesi yang umum digunakan. Konfigurasi ini diverifikasi dengan uji kepatuhan.
Untuk versi yang lebih rendah dari versi 3 antarmuka ICameraDevice
, HAL
harus menerapkan
isStreamCombinationSupported
.
Untuk informasi selengkapnya mengenai 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 mengkueri kombinasi fitur yang didukung untuk perangkat:
CameraDevice.CameraDeviceSetup
: Representasi terbatas dariCameraDevice
yang dapat digunakan untuk mengkueri fitur kombinasi tanpa memerlukan instanceCameraDevice
.getCameraDeviceSetup
: Memperoleh objekCameraDeviceSetup
untuk ID kamera tertentu jikaisCameraDeviceSetupSupported
menampilkantrue
.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Mendukung kueri kombinasi fitur jika nilai iniVANILLA_ICE_CREAM
atau yang 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 streaming parameter sesi, dan kombinasinya, yang dapat digunakan untuk fitur kombinasi kueri.
Validasi
Untuk memvalidasi penerapan fitur ini, gunakan VTS, CTS, dan Uji Camera ITS (CTS Verifier):
VTS
CTS
- cts/tests/camera/src/android/hardware/camera2/cts/FeatureKombinasiTest.java
- cts/tests/camera/src/android/hardware/camera2/cts/CameraDeviceSetupTest.java
Kamera ITS