Parameter sesi

Fitur parameter sesi mengurangi penundaan dengan memungkinkan klien kamera mengonfigurasi secara aktif 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 streaming, bukan permintaan pengambilan pertama, dan dapat, bergantung pada nilainya, menyiapkan dan membangun pipeline internal secara lebih efisien.

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

Contoh dan sumber

Penerapan parameter sesi rujukan sudah menjadi bagian dari CameraHal. HAL ini menggunakan Hal API lama. CameraHal yang terikat yang menerapkan Camera HIDL API harus menggunakan entri sessionParams HIDL masing-masing untuk mengakses parameter sesi masuk baru selama konfigurasi streaming.

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

Implementasi

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 frame dan dapat menyebabkan penundaan yang tidak terduga saat diubah selama masa aktif sesi pengambilan gambar.

Contoh umumnya mencakup parameter yang memerlukan konfigurasi ulang hardware yang memakan waktu atau perubahan pipeline kamera internal. Kontrol atas parameter sesi masih dapat dilakukan dalam permintaan pengambilan, tetapi klien harus mengetahui dan mengharapkan penundaan di aplikasi mereka.

Framework memantau semua permintaan masuk dan jika mendeteksi perubahan pada nilai parameter sesi, framework akan mengonfigurasi ulang kamera secara internal. Konfigurasi streaming baru yang diteruskan ke CameraHal kemudian menyertakan nilai parameter sesi yang telah diupdate, yang digunakan untuk mengonfigurasi pipeline kamera secara lebih efisien.

Penyesuaian

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

Validasi

CTS menyertakan kasus baru berikut untuk menguji parameter sesi:

Secara umum, setelah parameter tertentu menjadi bagian dari daftar kunci sesi, nilai saat ini akan disertakan sebagai bagian dari parameter sesi yang diteruskan selama konfigurasi streaming di lapisan HAL.

Parameter sesi harus dipilih dengan cermat. Nilai tidak boleh sering berubah, jika ada, di antara konfigurasi streaming. 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.

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 versi 3.5 dan yang lebih tinggi mendukung metode isReconfigurationRequired, yang memberikan kontrol terperinci atas logika konfigurasi ulang parameter sesi internal.ICameraDeviceSession Dengan menggunakan metode ini, rekonfigurasi streaming dapat terjadi tepat saat diperlukan.

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

Fitur ini hanya diterapkan di layanan kamera dan HAL kamera. Tidak ada API yang menghadap publik. Jika fitur ini diterapkan, klien kamera akan melihat peningkatan performa saat bekerja dengan parameter sesi.

Implementasi

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

Jika klien mengubah nilai parameter sesi yang diiklankan, framework kamera akan memanggil metode isReconfigurationRequired. Bergantung pada nilai tertentu, HAL memutuskan apakah konfigurasi ulang streaming lengkap diperlukan. Jika HAL menampilkan false, framework kamera akan melewati konfigurasi ulang internal. Jika HAL menampilkan true, framework akan mengonfigurasi ulang aliran dan meneruskan nilai parameter sesi baru sebagaimana mestinya.

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 panggilan metode ini untuk mengubah perilakunya dengan cara apa pun.

Implementasi HAL harus memenuhi persyaratan berikut:

  • Framework harus dapat memanggil metode isReconfigurationRequired kapan saja setelah konfigurasi sesi aktif.
  • Tidak boleh ada dampak pada performa permintaan kamera yang menunggu keputusan. Secara khusus, tidak boleh ada gangguan atau penundaan selama streaming kamera normal.

Implementasi perangkat dan HAL harus memenuhi persyaratan performa berikut:

  • Setelan kamera hardware dan software tidak boleh diubah.
  • Tidak boleh ada dampak yang terlihat oleh pengguna pada performa kamera.

Metode isReconfigurationRequired menggunakan 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: Kueri yang diperlukan untuk konfigurasi ulang yang berhasil.
  • METHOD_NOT_SUPPORTED: Perangkat kamera tidak mendukung kueri rekonfigurasi.
  • INTERNAL_ERROR: Kueri konfigurasi ulang tidak dapat diselesaikan karena error internal.

Nilai yang ditampilkan adalah:

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

Untuk mengabaikan kueri konfigurasi ulang sesi, HAL menampilkan METHOD_NOT_SUPPORTED atau false. Hal ini menghasilkan perilaku layanan kamera default yang memicu konfigurasi ulang streaming pada setiap perubahan parameter sesi.

Validasi

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