Oturum parametreleri özelliği, kamera istemcilerinin yakalama oturumu başlatma aşamasının bir parçası olarak maliyetli istek parametrelerinin alt kümesini (yani oturum parametrelerini) etkin bir şekilde yapılandırmasına olanak tanıyarak gecikmeleri azaltır. Bu özellik sayesinde, HAL uygulamalarınız istemci parametrelerini ilk yakalama isteği yerine akış yapılandırması aşamasında alır ve değerlerine bağlı olarak dahili ardışık düzeni hazırlayıp daha verimli bir şekilde 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 sorgu ö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
Referans oturumu parametresi uygulaması zaten CameraHal'ın bir parçasıdır. Bu HAL, eski Hal API'yi kullanır. Kamera HIDL API'sini uygulayan bağlantılandırılmış CameraHal, akış yapılandırması sırasında gelen yeni oturum parametrelerine erişmek için ilgili HIDL sessionParams girişini kullanmalıdır.
Kamera istemcileri, getAvailableSessionKeys()
çağrısını yaparak desteklenen tüm oturum parametrelerinin anahtarlarını sorgulayabilir ve setSessionParameters()
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
alt kümesini sağlamalıdır. Bu alt küme, kare başına uygulanması zor olan ve kayıt oturumu süresi boyunca değiştirildiğinde beklenmedik gecikmelere neden olabilecek anahtarların listesini içerir.
Zaman alıcı bir donanım yeniden yapılandırması veya dahili kamera ardışık düzeni değişikliği gerektiren parametreler bu durumun tipik örnekleridir. Oturum parametreleri, yakalama isteklerinde kontrol edilebilir ancak istemcilerin uygulamalarında gecikmelerin olabileceğini göz önünde bulundurmaları gerekir.
Çerçeve, gelen tüm istekleri izler ve bir oturum parametresinin değerinde değişiklik algılarsa kamerayı dahili olarak yeniden yapılandırır. Ardından CameraHal'a iletilen yeni yayın 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 parametresi listesinde etiketler tanımlayabilirsiniz. CameraHal, kullanılabilir oturum parametresi listesini boş bırakırsa bu özellik etkin olmaz.
Doğrulama
CTS, oturum parametrelerini test etmek için aşağıdaki yeni durumları içerir:
CameraDeviceTest#testSessionConfiguration
CameraDeviceTest#testCreateSessionWithParameters
CameraDeviceTest#testSessionParametersStateLeak
NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters
Genel olarak, belirli bir parametre oturum anahtarı listesine eklendikten sonra mevcut değeri, HAL katmanında akış yapılandırması sırasında iletilen oturum parametrelerinin bir parçası olarak dahil edilir.
Oturum parametreleri dikkatli bir şekilde seçilmelidir. Değerler, yayın yapılandırmaları arasında sık sık değişmemelidir. Yakalama amacı gibi sık değişen parametreler uygun değildir ve bunları oturum parametresi listesine eklemek, aşırı dahili yeniden yapılandırma nedeniyle CTS hatalarına neden olabilir.
Oturum yeniden yapılandırma sorgusu
Android 10, oturum parametresi değerindeki değişikliklerden 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
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öntemle, akış yeniden yapılandırması tam olarak gerektiğinde gerçekleşebilir.
isReconfigurationRequired
bağımsız değişkenleri, beklemedeki her oturum parametresi değişikliği hakkında gerekli bilgileri sağlayarak cihaza özel çeşitli özelleştirmelerin yapılmasına olanak tanır.
Bu özellik yalnızca kamera hizmetinde ve kamera HAL'inde 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 parametresi değerleri için tam akış yeniden yapılandırmasının gerekip gerekmediğini 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
döndürürse kamera çerçevesi dahili yeniden yapılandırmayı atlar. HAL true
döndürürse çerçeve, akışları yeniden yapılandırır ve yeni oturum parametresi değerlerini uygun şekilde iletir.
isReconfigurationRequired
yöntemi, HAL'e yeni parametreler içeren bir istek gönderilmeden ö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 koşulları 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 herhangi bir etkisi olmamalıdır. Özellikle, normal kamera yayını sırasında herhangi bir 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ı üzerinde kullanıcı tarafından görülebilecek 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
: Müşteri 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 gerekli.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:
true
: Yayının yeniden yapılandırılması gerekir.false
: Akış yeniden yapılandırma gerektirmez.
HAL, oturum yeniden yapılandırma sorgusunu yoksaymak için METHOD_NOT_SUPPORTED
veya false
döndürür. Bu, her oturum parametresi değişikliğinde akış yeniden yapılandırması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
'daki VTS test durumu kullanılarak doğrulanabilir.