Oturum Parametreleri

Oturum parametreleri özelliği, kamera istemcilerinin maliyetli istek parametrelerinin alt kümesini, yani oturum parametrelerini yakalama oturumu başlatma aşamasının bir parçası olarak etkin bir şekilde yapılandırmasını sağlayarak gecikmeleri azaltır. Bu özellik sayesinde, HAL uygulamalarınız, ilk yakalama isteği yerine akış yapılandırma aşaması sırasında istemci parametrelerini alır ve değerlerine bağlı olarak, dahili işlem hattını daha verimli bir şekilde hazırlayabilir ve oluşturabilir.

Android 10'da, dahili oturum parametresi yeniden yapılandırma mantığı üzerinde daha fazla kontrol için isteğe bağlı oturum yeniden yapılandırma sorgusu özelliğini kullanarak performansı artırabilirsiniz. Daha fazla bilgi için bkz. Oturum yeniden yapılandırma sorgusu .

Örnekler ve kaynak

Bir referans oturum parametre uygulaması zaten CameraHal'ın bir parçasıdır. Bu HAL, eski Hal API'sini kullanır. Kamera HIDL API'sini uygulayan birleştirilmiş CameraHal, akış yapılandırması sırasında herhangi bir yeni gelen oturum parametresine erişmek için ilgili HIDL sessionParams girişini kullanmalıdır.

Kamera istemcileri, getAvailableSessionKeys() çağırarak desteklenen tüm oturum parametrelerinin anahtarlarını sorgulayabilir ve sonunda setSessionParameters() aracılığıyla başlangıç ​​değerlerini ayarlayabilir.

uygulama

CameraHal uygulamanız, ilgili statik kamera meta verileri içinde ANDROID_REQUEST_AVAILABLE_SESSION_KEYS doldurmalı ve çerçeve başına uygulanması zor olan ve yakalama oturumu ömrü boyunca değiştirildiğinde beklenmeyen gecikmelere neden olabilecek anahtarların bir listesini içeren bir ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS alt kümesi sağlamalıdır.

Tipik örnekler, zaman alan bir donanım yeniden yapılandırması veya dahili bir kamera boru hattı değişikliği gerektiren parametreleri içerir. Oturum parametreleri üzerinde kontrol, yakalama isteklerinde hala uygulanabilir, ancak istemciler uygulamalarında gecikmelerin farkında olmalı ve bunu beklemelidir.

Çerçeve, gelen tüm istekleri izler ve bir oturum parametresinin değerinde bir değişiklik tespit ederse, kamerayı dahili olarak yeniden yapılandırır. CameraHal'a iletilen yeni akış yapılandırması, kamera ardışık düzenini daha verimli bir şekilde yapılandırmak için kullanılan güncellenmiş oturum parametresi değerlerini içerir.

özelleştirme

CameraHal tarafında doldurulan mevcut oturum parametre listesinde etiketleri tanımlayabilirsiniz. CameraHal, kullanılabilir oturum parametre listesini boş bırakırsa bu özellik etkin değildir.

doğrulama

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

Genel olarak, belirli bir parametre oturum anahtarı listesinin bir parçası olduktan sonra, geçerli değeri HAL katmanında akış yapılandırması sırasında geçirilen oturum parametrelerinin bir parçası olarak dahil edilir.

Oturum parametreleri dikkatle seçilmelidir. Değerler, akış konfigürasyonları arasında sık sık değişmemelidir. Yakalama amacı gibi sık sık değişen parametreler uygun değildir ve bunları oturum parametre listesine eklemek, aşırı dahili yeniden yapılandırma nedeniyle CTS hatalarına neden olabilir.

Oturum yeniden yapılandırma sorgusu

Android 10, oturum parametre değeri değişikliklerinden kaynaklanan dahili akış yeniden yapılandırmaları performansı azaltabileceğinden, performansı artırmak için isteğe bağlı bir oturum yeniden yapılandırma sorgusu özelliği sunar. Bu sorunu gidermek için HIDL ICameraDeviceSession sürüm 3.5 ve üstü, dahili oturum parametresi yeniden yapılandırma mantığı üzerinde ayrıntılı denetim sağlayan isReconfigurationRequired yöntemini destekler. Bu yöntemi kullanarak, gerektiğinde akış yeniden yapılandırması tam olarak gerçekleşebilir.

isReconfigurationRequired argümanları, bekleyen her oturum parametresi değişikliği hakkında gerekli bilgileri sağlayarak, çeşitli türde cihaza özel özelleştirmelere izin verir.

Bu özellik yalnızca kamera hizmetinde ve kamera HAL'de uygulanmaktadır. Herkese açık API yoktur. Bu özellik uygulanırsa, kamera istemcileri, oturum parametreleriyle çalışırken performans iyileştirmeleri görmelidir.

uygulama

Oturum yeniden yapılandırma sorgularını desteklemek için, yeni oturum parametre değerleri için tam akış yeniden yapılandırmasının gerekli olup olmadığını kontrol etmek üzere isReconfigurationRequired yöntemini uygulamanız gerekir.

İstemci, bildirilen herhangi bir oturum parametresinin değerini değiştirirse, kamera çerçevesi isReconfigurationRequired yöntemini çağırır. Belirli değerlere bağlı olarak HAL, tam bir akış yeniden yapılandırmasının gerekli olup olmadığına karar verir. HAL false döndürürse, kamera çerçevesi dahili yeniden yapılandırmayı atlar. HAL true değerini döndürürse, çerçeve akışları yeniden yapılandırır ve yeni oturum parametresi değerlerini buna göre iletir.

isReconfigurationRequired yöntemi, HAL'a yeni parametreler içeren bir istek gönderilmeden bir süre önce çerçeve tarafından çağrılabilir ve istek gönderilmeden önce iptal edilebilir. Bu nedenle, HAL, davranışını herhangi bir şekilde değiştirmek için bu yöntem çağrısını kullanmamalıdır.

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

  • Çerçeve, etkin oturum yapılandırmasından sonra herhangi bir zamanda isReconfigurationRequired yöntemini çağırabilmelidir.
  • Bekleyen kamera isteklerinin performansı üzerinde hiçbir etkisi olmamalıdır. Özellikle, normal kamera akışı sırasında herhangi bir aksaklık veya gecikme olmamalıdır.

Aygıt ve HAL uygulaması aşağıdaki performans gereksinimlerini karşılamalıdır:

  • Donanım ve yazılım kamera ayarları değiştirilmemelidir.
  • Kamera performansı üzerinde kullanıcı tarafından görülebilen bir etki olmamalıdır.

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

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

Beklenen dönüş durum kodları şunlardır:

  • OK : Başarılı yeniden yapılandırma gerekli sorgu.
  • METHOD_NOT_SUPPORTED : Kamera cihazı yeniden yapılandırma sorgusunu desteklemiyor.
  • INTERNAL_ERROR : Dahili bir hata nedeniyle yeniden yapılandırma sorgusu tamamlanamıyor.

Dönüş değerleri şunlardır:

  • true : Akışın yeniden yapılandırılması gerekiyor.
  • false : Akışın yeniden yapılandırılması gerekli değildir.

Bir oturum yeniden yapılandırma sorgusunu yok saymak için HAL, METHOD_NOT_SUPPORTED veya false döndürür. Bu, her oturum parametresi değişikliğinde akışın yeniden yapılandırılmasının tetiklendiği varsayılan kamera hizmeti davranışıyla sonuçlanır.

doğrulama

Oturum yeniden yapılandırma sorgusu özelliği, CameraHidlTest#configureStreamsWithSessionParameters içindeki VTS test durumu kullanılarak doğrulanabilir.