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

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 streaming alih-alih permintaan pengambilan pertama dan dapat, bergantung pada nilainya, menyiapkan 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 lebih lanjut, lihat Sesi konfigurasi ulang permintaan .

Contoh dan sumber

Implementasi parameter sesi referensi sudah bagian dari CameraHal . HAL ini menggunakan API Hal lama. The binderized CameraHal bahwa alat kamera HIDL API harus menggunakan masing HIDL sessionParams masuk untuk mengakses parameter sesi masuk baru selama konfigurasi aliran.

Klien kamera dapat query kunci dari semua parameter sesi didukung dengan memanggil getAvailableSessionKeys() dan akhirnya menetapkan nilai-nilai awal mereka melalui setSessionParameters() .

Penerapan

Pelaksanaan CameraHal Anda harus mengisi ANDROID_REQUEST_AVAILABLE_SESSION_KEYS dalam masing metadata kamera statis dan memberikan bagian dari ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS , yang berisi daftar kunci yang sulit untuk menerapkan per-frame dan dapat mengakibatkan penundaan tak terduga ketika dimodifikasi selama masa sesi capture.

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.

Kueri 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 lebih tinggi mendukung para isReconfigurationRequired metode, yang memberikan kontrol fine-grained lebih internal parameter sesi konfigurasi ulang logika. 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 tertunda, yang memungkinkan untuk berbagai jenis kustomisasi khusus perangkat.

Fitur ini hanya diterapkan di 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 dukungan query sesi konfigurasi ulang, Anda harus menerapkan isReconfigurationRequired metode untuk memeriksa apakah konfigurasi ulang aliran lengkap diperlukan untuk nilai parameter sesi baru.

Jika klien mengubah nilai dari setiap parameter sesi diiklankan, kerangka kamera panggilan isReconfigurationRequired metode. Bergantung pada nilai spesifik, HAL memutuskan apakah konfigurasi ulang aliran lengkap diperlukan. Jika HAL mengembalikan false , kerangka kamera melompat rekonfigurasi internal. Jika HAL kembali true , kerangka reconfigures sungai dan melewati nilai parameter sesi baru sesuai.

The isReconfigurationRequired metode dapat dipanggil oleh kerangka kerja beberapa waktu sebelum permintaan dengan parameter baru disampaikan kepada HAL, dan permintaan dapat dibatalkan sebelum diserahkan. 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 ini harus dapat memanggil isReconfigurationRequired metode setiap saat 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.

The isReconfigurationRequired metode mengambil argumen berikut:

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

Kode status pengembalian yang diharapkan adalah:

  • OK : rekonfigurasi Sukses diperlukan query.
  • METHOD_NOT_SUPPORTED : Perangkat kamera tidak mendukung query konfigurasi ulang.
  • INTERNAL_ERROR : The rekonfigurasi permintaan tidak bisa lengkap karena kesalahan internal.

Nilai kembalian adalah:

  • true : rekonfigurasi Streaming diperlukan.
  • false : rekonfigurasi Streaming tidak diperlukan.

Untuk mengabaikan permintaan sesi konfigurasi ulang, HAL kembali METHOD_NOT_SUPPORTED atau false . Ini menghasilkan perilaku layanan kamera default di mana konfigurasi ulang aliran dipicu pada setiap perubahan parameter sesi.

Validasi

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