Parameter Sesi

Fitur parameter sesi mengurangi penundaan dengan memungkinkan klien kamera untuk secara aktif mengonfigurasi subset parameter permintaan yang mahal, yaitu parameter sesi, sebagai bagian dari fase inisialisasi sesi pengambilan. Dengan fitur ini, implementasi HAL Anda menerima parameter klien selama fase konfigurasi aliran, bukan permintaan pengambilan pertama, dan dapat, bergantung pada nilainya, mempersiapkan dan membangun alur internal dengan lebih efisien.

Di Android 10, Anda dapat meningkatkan performa dengan menggunakan fitur kueri konfigurasi ulang sesi opsional untuk kontrol lebih besar atas logika konfigurasi ulang parameter sesi internal. Untuk informasi selengkapnya, lihat Kueri konfigurasi ulang sesi .

Contoh dan sumber

Implementasi parameter sesi referensi sudah menjadi bagian dari CameraHal . HAL ini menggunakan Hal API lama. CameraHal yang dibinderisasi yang mengimplementasikan API HIDL kamera harus menggunakan entri HIDL sessionParams masing-masing untuk mengakses parameter sesi baru yang masuk selama konfigurasi streaming.

Klien kamera dapat menanyakan kunci semua parameter sesi yang didukung dengan memanggil getAvailableSessionKeys() dan akhirnya menetapkan nilai awalnya melalui setSessionParameters() .

Penerapan

Implementasi CameraHal Anda harus mengisi ANDROID_REQUEST_AVAILABLE_SESSION_KEYS dalam masing-masing metadata kamera statis dan menyediakan subset ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS , yang berisi daftar kunci yang sulit diterapkan per frame dan dapat mengakibatkan penundaan yang tidak terduga ketika diubah selama masa sesi pengambilan.

Contoh umum mencakup parameter yang memerlukan konfigurasi ulang perangkat keras yang memakan waktu atau perubahan saluran kamera internal. Kontrol atas parameter sesi masih dapat diterapkan dalam permintaan pengambilan tetapi klien harus menyadari dan memperkirakan adanya penundaan dalam aplikasi mereka.

Kerangka kerja memantau semua permintaan masuk dan jika mendeteksi perubahan nilai parameter sesi, kerangka kerja akan mengkonfigurasi ulang kamera secara internal. Konfigurasi streaming baru yang diteruskan ke CameraHal kemudian menyertakan nilai parameter sesi yang diperbarui, yang digunakan untuk mengonfigurasi pipeline kamera dengan lebih efisien.

Kustomisasi

Anda dapat menentukan tag dalam daftar parameter sesi yang tersedia yang diisi di sisi CameraHal. Fitur ini tidak aktif jika CameraHal membiarkan daftar parameter sesi yang tersedia kosong.

Validasi

CTS menyertakan kasus baru berikut untuk menguji parameter sesi:

Secara umum, setelah parameter tertentu menjadi bagian dari daftar kunci sesi, nilainya saat ini disertakan sebagai bagian dari parameter sesi yang diteruskan selama konfigurasi aliran pada lapisan HAL.

Parameter sesi harus dipilih dengan cermat. Nilainya tidak boleh sering berubah, jika ada, di antara konfigurasi aliran. Parameter yang sering berubah, seperti maksud pengambilan, tidak sesuai dan menambahkannya ke daftar parameter sesi dapat menyebabkan kegagalan CTS karena konfigurasi ulang internal yang berlebihan.

Kueri konfigurasi ulang sesi

Android 10 memperkenalkan fitur kueri konfigurasi ulang sesi opsional untuk meningkatkan performa karena konfigurasi ulang aliran internal yang dihasilkan dari modifikasi nilai parameter sesi dapat mengurangi performa. Untuk mengatasi masalah ini, HIDL ICameraDeviceSession versi 3.5 dan lebih tinggi mendukung metode isReconfigurationRequired , yang memberikan kontrol menyeluruh atas logika konfigurasi ulang parameter sesi internal. Dengan menggunakan metode ini, konfigurasi ulang aliran dapat dilakukan tepat saat diperlukan.

Argumen untuk isReconfigurationRequired memberikan informasi yang diperlukan tentang setiap modifikasi parameter sesi yang tertunda, memungkinkan berbagai jenis penyesuaian khusus perangkat.

Fitur ini hanya diterapkan pada layanan kamera dan kamera HAL. Tidak ada API yang dapat dilihat publik. Jika fitur ini diterapkan, klien kamera akan melihat peningkatan kinerja saat bekerja dengan parameter sesi.

Penerapan

Untuk mendukung kueri konfigurasi ulang sesi, Anda harus menerapkan metode isReconfigurationRequired untuk memeriksa apakah konfigurasi ulang aliran lengkap diperlukan untuk nilai parameter sesi baru.

Jika klien mengubah nilai parameter sesi apa pun yang diiklankan, kerangka kamera akan memanggil metode isReconfigurationRequired . Bergantung pada nilai spesifiknya, HAL memutuskan apakah konfigurasi ulang aliran lengkap diperlukan. Jika HAL mengembalikan false , kerangka kamera akan melewatkan konfigurasi ulang internal. Jika HAL mengembalikan true , kerangka kerja akan mengkonfigurasi ulang aliran dan meneruskan nilai parameter sesi baru.

Metode isReconfigurationRequired dapat dipanggil oleh framework beberapa saat sebelum permintaan dengan parameter baru dikirimkan ke HAL, dan permintaan dapat dibatalkan sebelum dikirimkan. Oleh karena itu, HAL tidak boleh menggunakan pemanggilan metode ini untuk mengubah perilakunya dengan cara apa pun.

Penerapan HAL harus memenuhi persyaratan sebagai berikut:

  • Kerangka kerja harus dapat memanggil metode isReconfigurationRequired kapan saja setelah konfigurasi sesi aktif.
  • Tidak boleh ada dampak terhadap kinerja permintaan kamera yang tertunda. Khususnya, tidak boleh ada gangguan atau penundaan apa pun selama streaming kamera normal.

Perangkat dan implementasi HAL harus memenuhi persyaratan kinerja berikut:

  • Pengaturan perangkat keras dan perangkat lunak kamera tidak boleh diubah.
  • Tidak boleh ada dampak yang terlihat oleh pengguna terhadap kinerja kamera.

Metode isReconfigurationRequired mengambil argumen berikut:

  • oldSessionParams : Parameter sesi dari sesi sebelumnya. Biasanya parameter sesi yang ada.
  • newSessionParams : Parameter sesi baru yang ditetapkan oleh klien.

Kode status pengembalian yang diharapkan adalah:

  • OK : Permintaan konfigurasi ulang yang berhasil diperlukan.
  • METHOD_NOT_SUPPORTED : Perangkat kamera tidak mendukung permintaan konfigurasi ulang.
  • INTERNAL_ERROR : Kueri konfigurasi ulang tidak dapat diselesaikan karena kesalahan internal.

Nilai yang dikembalikan adalah:

  • true : Diperlukan konfigurasi ulang aliran.
  • false : Konfigurasi ulang aliran tidak diperlukan.

Untuk mengabaikan kueri konfigurasi ulang sesi, HAL mengembalikan METHOD_NOT_SUPPORTED atau false . Hal ini menghasilkan perilaku layanan kamera default di mana konfigurasi ulang aliran dipicu pada setiap perubahan parameter sesi.

Validasi

Fitur kueri konfigurasi ulang sesi dapat divalidasi menggunakan kasus uji VTS di CameraHidlTest#configureStreamsWithSessionParameters .