Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Konfigurasi Aliran

Android 10 memperkenalkan fitur yang memungkinkan klien kamera memilih aliran kamera yang optimal untuk kasus penggunaan tertentu dan untuk memastikan bahwa kombinasi aliran tertentu didukung oleh perangkat kamera. Sebuah konfigurasi aliran mengacu pada aliran kamera tunggal dikonfigurasi di perangkat kamera dan kombinasi aliran mengacu pada satu atau lebih set aliran dikonfigurasi di perangkat kamera. Untuk lebih lanjut tentang fitur ini, lihat direkomendasikan konfigurasi aliran dan API untuk kombinasi aliran permintaan .

Implementasi referensi

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

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

Meskipun StreamConfigurationMap menyediakan informasi konfigurasi aliran lengkap kepada klien kamera, itu tidak memberikan informasi apapun tentang efisiensi, daya, atau dampak kinerja memilih satu aliran atas yang lain. Klien kamera dapat dengan bebas memilih dari semua konfigurasi streaming yang mungkin, tetapi dalam banyak kasus, hal ini menyebabkan klien menggunakan konfigurasi kamera dan aplikasi yang kurang optimal yang membuat pencarian menyeluruh yang memakan waktu.

Misalnya, meskipun beberapa format YUV yang diproses diperlukan dan harus didukung, perangkat kamera mungkin tidak memiliki dukungan asli untuk format tersebut. Ini menghasilkan pass pemrosesan tambahan untuk konversi format dan mengurangi efisiensi. Ukuran dan rasio aspek yang sesuai juga dapat memiliki dampak serupa yang membuat dimensi tertentu lebih disukai dalam hal kekuatan dan kinerja.

Peta konfigurasi aliran direkomendasikan Anda tidak diharuskan untuk menjadi lengkap dibandingkan dengan StreamConfigurationMap . Peta konfigurasi disarankan harus mengikuti persyaratan dalam pelaksanaan bagian dan dapat mencakup salah satu yang tersedia format, ukuran, atau nilai-nilai lain yang ditemukan di StreamConfigurationMap . Format, ukuran, atau nilai tersembunyi lainnya yang tidak ditemukan di StreamConfigurationMap tidak dapat disertakan dalam peta konfigurasi aliran yang direkomendasikan.

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

Konfigurasi aliran yang direkomendasikan yang disediakan oleh implementasi kamera adalah opsional dan klien kamera dapat mengabaikannya.

Penerapan

Ikuti langkah-langkah ini untuk menerapkan fitur ini.

Entri metadata

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

  • android.scaler.availableRecommendedStreamConfigurations : bagian yang dianjurkan konfigurasi aliran untuk kasus penggunaan tertentu. Deklarasi tersebut menggunakan bitmap sederhana yang menunjukkan kasus penggunaan yang disarankan dalam bentuk [1 << PREVIEW | 1 << RECORD..] . Kasus penggunaan memperluas tupel reguler (format, lebar, tinggi, input) dengan satu entri tambahan. Non-ada kasus penggunaan umum atau potongan lain diatur dalam kisaran [PUBLIC_END, VENDOR_START] dilarang.

    Informasi ini disimpan dalam availableRecommendedStreamConfigurations tag metadata.

    Contoh berikut menunjukkan larik untuk konfigurasi streaming yang direkomendasikan untuk perangkat kamera yang hanya mendukung 4K dan 1080p, di mana 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): The direkomendasikan mendalam dataspace konfigurasi aliran disarankan untuk perangkat kamera ini. Mirip dengan entri metadata di atas, bitmap kasus penggunaan tambahan menunjukkan kasus penggunaan yang disarankan.

    Informasi ini disimpan dalam availableRecommendedInputOutputFormatsMap tag metadata.

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

    Informasi ini disimpan dalam availableRecommendedDepthStreamConfigurations tag metadata.

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 Sebuah preview harus hanya termasuk non-mengulur-ulur konfigurasi aliran diproses dengan format output seperti YUV_420_888 dan IMPLEMENTATION_DEFINED .
RECORD Sebuah merekam video harus mencakup konfigurasi aliran yang sesuai media yang diiklankan didukung profil dengan IMPLEMENTATION_DEFINED Format.
VIDEO_SNAPSHOT Cuplikan video harus menyertakan konfigurasi aliran yang setidaknya sebesar resolusi RECORD maksimum dan hanya dengan kombinasi format/ruang data BLOB + DATASPACE_JFIF (JPEG). Konfigurasi seharusnya tidak menyebabkan gangguan pratinjau dan harus dapat berjalan pada 30 fps.
SNAPSHOT Konfigurasi aliran Snapshot harus menyertakan setidaknya satu dengan ukuran dekat dengan android.sensor.info.activeArraySize dengan format BLOB + DATASPACE_JFIF / dataspace kombinasi (JPEG). Dengan mempertimbangkan pembatasan rasio aspek, penyelarasan, dan pembatasan khusus vendor lainnya, area ukuran maksimum yang disarankan tidak boleh kurang dari 97% dari area ukuran array sensor.
ZSL (jika didukung) Jika didukung oleh perangkat kamera, konfigurasi aliran input yang disarankan hanya boleh diiklankan bersama dengan format output lain yang diproses atau terhenti.
RAW (jika didukung) Jika didukung oleh perangkat kamera, konfigurasi aliran mentah yang disarankan hanya boleh menyertakan format output berbasis RAW.

Kasus penggunaan lainnya

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

Validasi

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

API untuk mengkueri kombinasi aliran

Platform Android mendukung API untuk mengkueri kombinasi aliran. Menerapkan API ini memungkinkan klien kamera dengan aman permintaan kombinasi aliran pada setiap titik setelah menerima valid CameraDevice misalnya, menghapus overhead menginisialisasi sesi capture kamera dan potensi memiliki pengecualian kamera berikutnya termasuk kamera kerusakan, dan memungkinkan untuk query lebih cepat.

Fitur ini juga memungkinkan klien kamera untuk menerima daftar kombinasi aliran disusun sesuai dengan pedoman untuk CameraDevice dan tingkat HW yang didukung. Tes CTS tersedia untuk menegakkan kebenaran hasil kueri sebanyak mungkin yang mencakup sebagian kecil dari kombinasi aliran yang paling umum.

Anda dapat memilih untuk mendukung fitur ini dengan menerapkan satu panggilan API HIDL tambahan di HAL Kamera.

Penerapan

Untuk mendukung API untuk permintaan kombinasi aliran, HAL Kamera harus menyediakan implementasi untuk isStreamCombinationSupported API antarmuka HIDL. Antarmuka ini memeriksa apakah perangkat kamera mendukung kombinasi aliran kamera tertentu.

Saat dipanggil, API harus mengembalikan salah satu kode status berikut:

  • OK : Kombinasi aliran permintaan berhasil.
  • METHOD_NOT_SUPPORTED : Perangkat kamera tidak mendukung query kombinasi aliran.
  • INTERNAL_ERROR : Kombinasi aliran permintaan tidak bisa lengkap karena kesalahan internal.

API mengembalikan nilai true jika kombinasi aliran didukung. Jika tidak, ia mengembalikan false.

Kerangka kerja ini menggunakan API publik isSessionConfigurationSupported untuk memeriksa apakah konfigurasi sesi tertentu didukung oleh perangkat kamera.

Panggilan ke API tidak boleh memiliki efek samping apa pun pada pengoperasian kamera normal. Panggilan API tidak boleh mengubah status internal apa pun atau memperlambat kinerja kamera. Pastikan bahwa setelah Camera HAL berhasil memvalidasi kombinasi aliran, klien kamera dapat berhasil mengonfigurasi kombinasi aliran. Untuk menghindari masalah, pastikan implementasi tidak menyimpan informasi apa pun selama kueri kombinasi aliran, mengubah status internalnya, atau terlibat dalam operasi yang memakan waktu.

Validasi

Untuk memvalidasi fitur ini, jalankan kasus uji CTS dan VTS kamera berikut ini:

Modul kamera CTS:

Kamera VTS:

VtsHalCameraProviderV2_4TargetTest.cpp