Oturum parametreleri

Oturum parametreleri özelliği, kamera istemcilerinin maliyetli istek parametrelerinin alt kümesini (ör. oturum parametrelerini kullanır. Bununla özelliğini kullanıyorsanız, HAL uygulamalarınız ilk yakalama isteği yerine akış yapılandırma aşamasına dahili ardışık düzeni, ihtiyaçlarına uygun şekilde hazırlayarak ve yolları aranır.

Android 10'da performansı iyileştirmek için isteğe bağlı oturum yeniden yapılandırma sorgu özelliğini, dahili oturum parametresi yeniden yapılandırma mantığını inceleyin. Daha fazla bilgi için bkz. Oturum yeniden yapılandırma sorgusu.

Örnekler ve kaynak

Referans oturum parametresi uygulaması zaten KameraHal'a gidin. Bu HAL, eski Hal API'sini kullanır. binderized Kamera HIDL API'sini uygulayan CameraHal, ilgili HIDL'yi kullanmalıdır. sessionParams oturum açma/kapatma işlevini kullanın.

Kamera istemcileri, desteklenen tüm oturum parametrelerinin anahtarlarını getAvailableSessionKeys() ve sonunda başlangıç değerlerini setSessionParameters().

Uygulama

CameraHal uygulamanız ANDROID_REQUEST_AVAILABLE_SESSION_KEYS ilgili statik kamera meta verisine ekleyin ve ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS, çerçeve başına uygulanması zor olan ve 20/32'ye kadar uygulanabilen anahtarların yakalama oturumu ömrü boyunca değiştirildiğinde beklenmedik gecikmelere neden olabilir.

Tipik örnekler arasında zaman alan donanım gerektiren parametreler veya dahili kamera ardışık düzeni değişikliği olabilir. Oturum üzerinde kontrol parametrelerin yine de yakalama isteklerine uygulanabileceğini unutmayın. Ancak müşteriler gecikmeleri de yaşayabiliyor.

Çerçeve, gelen tüm istekleri izler ve değerini görürseniz kamerayı dahili olarak yeniden yapılandırır. Yeni StreamHal'a aktarılan akış yapılandırması, güncellenen oturumu içerir kamera ardışık düzenini daha fazla yapılandırmak için kullanılan yolları aranır.

Özelleştirme

Etiketleri, şurada doldurulan kullanılabilir oturum parametresi listesinde tanımlayabilirsiniz: KameraHal tarafına da bakacağız. CameraHal, fotoğraf makinesinden ayrılırsa bu özellik etkin değildir. mevcut oturum parametresi listesi boş.

Doğrulama

CTS, oturum parametrelerinin test edilmesi için aşağıdaki yeni durumları içerir:

Genel olarak, belirli bir parametre oturum anahtar listesinde yer aldıktan sonra, geçerli değer, akış sırasında iletilen oturum parametrelerinin bir parçası olarak eklenir yapılandırmasıdır.

Oturum parametreleri dikkatli bir şekilde seçilmelidir. Değerler değişmemelidir. akış yapılandırmalarını kullanın. Değişen parametreler pek çok yöntem için uygun değildir ve bunları oturum parametresi listesi, aşırı miktarda dahili değer nedeniyle CTS hatalarına neden olabilir yeniden yapılandırma.

Oturum yeniden yapılandırma sorgusu

Android 10, isteğe bağlı bir oturum sunuyor sorgu özelliğini oturumdan kaynaklanan dahili akış yeniden yapılandırmaları olarak performansı artırır parametre değerlerinde yapılan değişiklikler performansı düşürebilir. Bu sorunu gidermek için İDL ICameraDeviceSession 3.5 ve sonraki sürümler isReconfigurationRequired yönteminde dahili oturum parametresi üzerinde ayrıntılı kontrol yeniden yapılandırma mantığına dayanıyor. Bu yöntem kullanıldığında akış yeniden yapılandırılabilir tam olarak isabetli olur.

isReconfigurationRequired için bağımsız değişkenler beklemedeki her oturum parametresi hakkında gerekli bilgileri sağlama kullanarak cihaza özel çeşitli özelleştirmeler yapabilirsiniz.

Bu özellik yalnızca kamera hizmetinde ve kamera donanım soyutlama katmanında uygulanır. Orada herkese açık API değildir. Bu özellik uygulanırsa kamera istemcileri oturum parametreleriyle çalışırken performans iyileştirmeleri görebilirsiniz.

Uygulama

Oturum yeniden yapılandırma sorgularını desteklemek için isReconfigurationRequired yeni dönüşüm izleme sistemi için gerekli akışı yeniden yapılandırmanın gerekli olup olmadığını oturum parametresi değerleri.

Müşteri, reklamı yapılan herhangi bir oturum parametresinin değerini değiştirirse kameranın çerçeve, isReconfigurationRequired öğesini çağırır yöntemidir. Belirli değerlere bağlı olarak, HAL, tam bir Akışın yeniden yapılandırılması gerekiyor. HAL, false sonucunu döndürürse kamera dahili yeniden yapılandırmayı atlar. HAL, true sonucunu döndürürse çerçeve, akışları yeniden yapılandırır ve yeni oturum parametresi değerlerini iletir buna göre hazırlar.

isReconfigurationRequired yöntemi, çerçeve tarafından bir süre çağrılabilir HAL'ye yeni parametreler içeren bir istek gönderilmeden ve gönderilmeden önce iptal edilebilir. Dolayısıyla, HAL, başka bir sunucu tarafından yöntemini çağırın.

HAL uygulaması aşağıdaki şartları karşılamalıdır:

  • Çerçeve, isReconfigurationRequired yöntemini çağırabilmelidir .
  • Bu durumun, beklemedeki kamera isteklerinin performansı üzerinde herhangi bir etkisi olmamalıdır. İçinde normal kamera sırasında herhangi bir aksama veya gecikme olmamalıdır. yayın.

Cihaz ve HAL uygulaması, aşağıdaki performansı karşılamalıdır koşullar:

  • Donanım ve yazılımın kamera ayarları değiştirilmemelidir.
  • Kullanıcıların kamera performansı üzerinde herhangi bir etkisi olmamalıdır.

isReconfigurationRequired yöntemi aşağıdaki bağımsız değişkenleri alır:

  • oldSessionParams: Önceki oturumun oturum parametreleri. Genellikle mevcut oturum parametreleridir.
  • newSessionParams: İstemci tarafından ayarlanan yeni oturum parametreleri.

Beklenen dönüş durumu kodları:

  • OK: Sorgu yeniden yapılandırma işlemi başarıyla tamamlandı.
  • METHOD_NOT_SUPPORTED: Kamera cihazı şunları desteklemiyor: yeniden yapılandırma sorgusu.
  • INTERNAL_ERROR: Yeniden yapılandırma sorgusu, dahili hata.

Döndürülen değerler şunlardır:

  • true: Akışın yeniden yapılandırılması gerekiyor.
  • false: Akışı yeniden yapılandırmanız gerekmez.

Bir oturum yeniden yapılandırma sorgusunu yoksaymak için HAL, METHOD_NOT_SUPPORTED veya false. Bu işlem, varsayılan kamera hizmetinin kullanılmasını sağlar Her oturum parametresinde akış yeniden yapılandırmasının tetiklendiği davranış unutmayın.

Doğrulama

Oturum yeniden yapılandırma sorgu özelliği, VTS testi kullanılarak doğrulanabilir büyük/küçük harf kullanımı CameraHidlTest#configureStreamsWithSessionParameters.