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 alih-alih permintaan pengambilan pertama dan dapat, bergantung pada nilainya, mempersiapkan dan membangun pipa internal dengan lebih efisien.

Di Android 10, Anda dapat meningkatkan kinerja 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 API Hal lama. CameraHal yang di-binder 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 mengkueri kunci dari semua parameter sesi yang didukung dengan memanggil getAvailableSessionKeys() dan akhirnya menyetel nilai awalnya melalui setSessionParameters() .

Penerapan

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

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

Kerangka kerja memantau semua permintaan yang masuk dan jika mendeteksi perubahan nilai parameter sesi, itu akan mengonfigurasi ulang kamera secara internal. Konfigurasi aliran baru yang diteruskan ke CameraHal kemudian menyertakan nilai parameter sesi yang diperbarui, yang digunakan untuk mengonfigurasi saluran kamera secara 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 dimasukkan sebagai bagian dari parameter sesi yang diteruskan selama konfigurasi aliran di lapisan HAL.

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

Permintaan konfigurasi ulang sesi

Android 10 memperkenalkan fitur kueri konfigurasi ulang sesi opsional untuk meningkatkan kinerja karena konfigurasi ulang aliran internal yang dihasilkan dari modifikasi nilai parameter sesi dapat mengurangi kinerja. Untuk mengatasi masalah ini, HIDL ICameraDeviceSession versi 3.5 dan yang lebih tinggi mendukung metode isReconfigurationRequired , yang menyediakan kontrol halus atas logika konfigurasi ulang parameter sesi internal. Dengan menggunakan metode ini, konfigurasi ulang aliran dapat terjadi secara 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 di layanan kamera dan kamera HAL. Tidak ada API yang menghadap 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 kerja kamera akan memanggil metode isReconfigurationRequired . Bergantung pada nilai spesifik, HAL memutuskan apakah konfigurasi ulang aliran lengkap diperlukan. Jika HAL mengembalikan false , kerangka kerja kamera melewatkan konfigurasi ulang internal. Jika HAL mengembalikan true , kerangka kerja mengonfigurasi ulang aliran dan meneruskan nilai parameter sesi baru yang sesuai.

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

Pelaksanaan HAL harus memenuhi persyaratan sebagai berikut:

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

Perangkat dan implementasi HAL harus memenuhi persyaratan kinerja berikut:

  • Pengaturan kamera perangkat keras dan perangkat lunak tidak boleh diubah.
  • Tidak boleh ada dampak yang terlihat oleh pengguna pada 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 : Konfigurasi ulang yang berhasil diperlukan kueri.
  • METHOD_NOT_SUPPORTED : Perangkat kamera tidak mendukung kueri konfigurasi ulang.
  • INTERNAL_ERROR : Kueri konfigurasi ulang tidak dapat diselesaikan karena kesalahan internal.

Nilai kembalian adalah:

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

Untuk mengabaikan kueri konfigurasi ulang sesi, HAL mengembalikan METHOD_NOT_SUPPORTED atau false . 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 .