Oturum parametreleri

Oturum parametreleri özelliği, kamera istemcilerinin pahalı istek parametrelerinin alt kümesini (yani oturum parametrelerini) yakalama oturumu başlatma aşamasında etkin bir şekilde yapılandırmasına olanak tanıyarak gecikmeleri azaltır. Bu özellik sayesinde, HAL uygulamalarınız ilk yakalama isteği yerine akış yapılandırma aşamasında istemci parametrelerini alır ve değerlerine bağlı olarak dahili işlem hattını daha verimli bir şekilde hazırlayıp oluşturabilir.

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

Örnekler ve kaynak

Bir referans oturum parametresi uygulaması zaten CameraHal'ın bir parçasıdır. Bu HAL, eski HAL API'sini kullanıyor. Kamera HIDL API'sini uygulayan bağlayıcılaştırılmış CameraHal, akış yapılandırması sırasında yeni gelen oturum parametrelerine erişmek için ilgili HIDL sessionParams girişini kullanmalıdır.

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

Uygulama

CameraHal uygulamanız, ilgili statik kamera meta verilerinde ANDROID_REQUEST_AVAILABLE_SESSION_KEYS değerini doldurmalı ve ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS değerinin bir alt kümesini sağlamalıdır. Bu alt küme, kare başına uygulanması zor olan ve yakalama oturumu süresince değiştirildiğinde beklenmedik gecikmelere neden olabilecek bir anahtar listesi içerir.

Zaman alan bir donanım yeniden yapılandırması veya dahili kamera işlem hattı değişikliği gerektiren parametreler bu durumun tipik örneklerindendir. Oturum parametreleri üzerinde kontrol, yakalama isteklerinde hâlâ uygulanabilir ancak istemciler uygulamalarında gecikmeler olabileceğini bilmeli ve buna hazırlıklı olmalıdır.

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

Özelleştirme

Etiketleri, CameraHal tarafında doldurulan mevcut oturum parametresi listesinde tanımlayabilirsiniz. CameraHal, kullanılabilir oturum parametreleri listesini boş bırakırsa bu özellik etkin olmaz.

Doğrulama

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

Genel olarak, belirli bir parametre oturum anahtarı listesinde yer aldıktan sonra geçerli değeri, HAL katmanındaki akış yapılandırması sırasında iletilen oturum parametrelerine dahil edilir.

Oturum parametreleri dikkatli bir şekilde seçilmelidir. Değerler, akış yapılandırmaları arasında sık sık değişmemelidir. Sık değişen parametreler (ör. yakalama amacı) uygun değildir ve bu parametrelerin oturum parametresi listesine eklenmesi, aşırı dahili yeniden yapılandırma nedeniyle CTS hatalarına neden olabilir.

Oturum yeniden yapılandırma sorgusu

Android 10, oturum parametresi değeri değişikliklerinden kaynaklanan dahili akış yeniden yapılandırmaları performansı düşürebileceğ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 sonraki sürümler, dahili oturum parametresi yeniden yapılandırma mantığı üzerinde ayrıntılı kontrol sağlayan isReconfigurationRequired yöntemini destekler. Bu yöntem kullanıldığında akış yeniden yapılandırması tam olarak gerektiğinde gerçekleşebilir.

isReconfigurationRequired için bağımsız değişkenler, bekleyen her oturum parametresi değişikliği hakkında gerekli bilgileri sağlar ve cihaza özel çeşitli özelleştirmelere olanak tanır.

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

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, reklamı yapılan herhangi bir oturum parametresinin değerini değiştirirse kamera çerçevesi isReconfigurationRequired yöntemini çağırır. HAL, belirli değerlere bağlı olarak tam bir akış yeniden yapılandırmasının gerekip gerekmediğine karar verir. HAL false değerini 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, yeni parametreler içeren bir istek HAL'ye gönderilmeden bir süre önce çerçeve tarafından çağrılabilir ve istek gönderilmeden önce iptal edilebilir. Bu nedenle, HAL bu yöntem çağrısını davranışını herhangi bir şekilde değiştirmek için kullanmamalıdır.

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

  • Çerçeve, etkin oturum yapılandırmasından sonra isReconfigurationRequired yöntemini istediği zaman çağırabilmelidir.
  • Bekleyen kamera isteklerinin performansı etkilenmemelidir. Özellikle normal kamera yayını sırasında aksaklık veya gecikme olmamalıdır.

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

  • Donanım ve yazılım kamera ayarları değiştirilmemelidir.
  • Kamera performansı, kullanıcı tarafından görülecek şekilde etkilenmemelidir.

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öndürme durum kodları şunlardır:

  • OK: Başarılı yeniden yapılandırma için sorgu gerekir.
  • 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öndürülen değerler şunlardır:

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

HAL, oturum yeniden yapılandırma sorgusunu yoksaymak için METHOD_NOT_SUPPORTED veya false değerini döndürür. Bu durumda, her oturum parametresi değişikliğinde akışın yeniden yapılandırılmasının tetiklendiği varsayılan kamera hizmeti davranışı ortaya çıkar.

Doğrulama

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