Funkcja parametrów sesji ogranicza opóźnienia, umożliwiając klientom aparatu aktywnie konfiguruje podzbiór kosztownych parametrów żądań, tj. sesja, w ramach fazy inicjowania sesji przechwytywania. W związku z tym implementacje HAL otrzymują parametry klienta w trakcie konfiguracji strumienia, a nie pierwszego żądania przechwytywania. w zależności od swoich wartości dobrze jest przygotować i zbudować wewnętrzny potok i oszczędność czasu.
W Androidzie 10 można zwiększyć wydajność za pomocą: opcjonalną funkcję zapytania o ponowną konfigurację sesji, która daje większą kontrolę logikę ponownej konfiguracji parametrów sesji wewnętrznej. Więcej informacji: Zapytanie o ponowną konfigurację sesji.
Przykłady i źródło
Implementacja parametrów sesji referencyjnej jest już częścią CameraHal, Ta lista HAL korzysta ze starszej wersji interfejsu Hal API. Komponent powiązany CameraHal, który implementuje interfejs API HIDL aparatu, musi używać odpowiedniego HIDL sessionParams , aby uzyskać dostęp do wszystkich nowych parametrów sesji przychodzących podczas konfiguracji strumienia.
Klienty aparatu mogą wysyłać zapytania dotyczące kluczy wszystkich obsługiwanych parametrów sesji, wywołując
getAvailableSessionKeys()
a później ustawiają swoje wartości początkowe
setSessionParameters()
Implementacja
Implementacja CameraHal musi zawierać parametr
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
w odpowiednich metadanych kamery statycznej i zapewnia podzbiór
ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS
,
który zawiera listę kluczy, które trudno jest zastosować w przypadku danej klatki i może
mogą spowodować nieoczekiwane opóźnienia w przypadku modyfikacji w trakcie trwania sesji przechwytywania.
Typowe przykłady to parametry, które wymagają czasochłonnego sprzętu po zmianie konfiguracji lub zmianie wewnętrznego potoku kamery. Kontrola nad sesją wciąż mogą być stosowane w żądaniach przechwytywania, ale klienci powinni mieć świadomość tego, i spodziewają się opóźnień w aplikacjach.
Platforma monitoruje wszystkie żądania przychodzące i jeśli wykryje zmianę parametru sesji, wewnętrznie zmienia konfigurację kamery. Nowy konfiguracja strumienia przekazywana do CameraHal, a następnie uwzględnia zaktualizowaną sesję wartości parametrów, które są używane do bardziej szczegółowego konfigurowania potoku kamery i wydajną pracę.
Dostosowywanie
Możesz zdefiniować tagi na liście dostępnych parametrów sesji, która jest wypełniana od strony CameraHal. Ta funkcja nie będzie aktywna, jeśli CameraHal opuści lista parametrów dostępnych sesji pusta.
Weryfikacja
Funkcja CTS uwzględnia te nowe przypadki testowania parametrów sesji:
CameraDeviceTest#testSessionConfiguration
CameraDeviceTest#testCreateSessionWithParameters
CameraDeviceTest#testSessionParametersStateLeak
NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters
Ogólnie, gdy dany parametr znajduje się na liście kluczy sesji, jego bieżąca wartość jest uwzględniana w parametrach sesji przekazywanych podczas transmisji w warstwie HAL.
Parametry sesji należy wybierać z rozwagą. Wartości nie powinny się zmieniać często, o ile w ogóle, między konfiguracjami strumieni. Parametry, które się zmieniają często, np. dotyczące zamiarów przechwytywania, i dodawania ich do lista parametrów sesji może powodować błędy CTS z powodu nadmiernej liczby parametrów wewnętrznych ponowną konfigurację.
Zapytanie o ponowną konfigurację sesji
Android 10 wprowadza opcjonalną sesję
zmień konfigurację funkcji zapytania na
poprawia wydajność po wprowadzeniu wewnętrznych zmian konfiguracji strumienia wynikającego z sesji.
modyfikacje wartości parametrów mogą zmniejszyć skuteczność. Aby rozwiązać ten problem,
HIDL
ICameraDeviceSession
w wersji 3.5 i nowszych obsługuje
isReconfigurationRequired
Zapewnia szczegółową kontrolę nad parametrem sesji wewnętrznej
zasady ponownej konfiguracji. Przy użyciu tej metody może nastąpić ponowna konfiguracja strumienia
dokładnie wtedy, gdy jest to wymagane.
Argumenty funkcji isReconfigurationRequired
podaj wymagane informacje o każdym oczekujących parametrach sesji
w celu wprowadzenia różnych zmian w zależności od urządzenia.
Ta funkcja jest zaimplementowana tylko w usłudze aparatu i w HAL. OK nie są dostępne publicznie. Jeśli ta funkcja jest wdrożona, klienty aparatu powinny poprawić wydajność pracy z parametrami sesji.
Implementacja
Aby obsługiwać zapytania o zmianę konfiguracji sesji, musisz zaimplementować
isReconfigurationRequired
aby sprawdzić, czy dla nowych jest wymagana pełna ponowna konfiguracja strumienia
wartości parametrów sesji.
Jeśli klient zmieni wartość dowolnego reklamowanego parametru sesji, kamera
platforma nazywa isReconfigurationRequired
. W zależności od określonych wartości HAL określa, czy
wymagana jest ponowna konfiguracja strumienia. Jeśli HAL zwraca wartość false
, kamera
platforma pomija wewnętrzną ponowną konfigurację. Jeśli HAL zwraca wartość true
, makro
platforma ponownie konfiguruje strumienie i przekazuje nowe wartości parametrów sesji
odpowiednio się zmienia.
Metoda isReconfigurationRequired
może zostać wywołana przez platformę za jakiś czas
przed przesłaniem do HAL żądania z nowymi parametrami,
można anulować przed przesłaniem. Dlatego w HAL nie można używać tego
, aby w jakikolwiek sposób zmienić jego działanie.
Implementacja HAL musi spełniać te wymagania:
- Platforma musi mieć możliwość wywołania metody
isReconfigurationRequired
w dowolnym momencie po konfiguracji aktywnej sesji. - Nie może to mieć wpływu na wydajność oczekujących żądań kamery. W nie mogą występować żadne zakłócenia ani opóźnienia podczas normalnego działania kamery. strumieniowanie danych.
Implementacja urządzenia i HAL musi spełniać poniższe wymagania wymagania:
- Nie można zmieniać ustawień dotyczących sprzętu ani oprogramowania kamery.
- Działanie kamery nie może być widoczne dla użytkownika.
isReconfigurationRequired
metoda przyjmuje następujące argumenty:
oldSessionParams
: parametry sesji z poprzedniej sesji. Zwykle dotychczasowe parametry sesji.newSessionParams
: nowe parametry sesji ustawiane przez klienta.
Oczekiwane kody stanu zwrotu:
OK
: wymagana zmiana konfiguracji powiodła się.METHOD_NOT_SUPPORTED
: aparat nie obsługuje ponowna konfiguracja.INTERNAL_ERROR
: nie można wykonać zapytania o ponownej konfiguracji z powodu błędu błąd wewnętrzny.
Zwracane wartości:
true
: wymagana jest ponowna konfiguracja strumienia.false
: ponowna konfiguracja strumienia nie jest wymagana.
Aby zignorować zapytanie o ponowną konfigurację sesji, HAL zwraca
METHOD_NOT_SUPPORTED
lub false
. Powoduje to utworzenie domyślnej usługi kamery
Sposób, w jaki w przypadku każdego parametru sesji wyzwalana jest ponowna konfiguracja strumienia
.
Weryfikacja
Funkcję zapytania dotyczącą ponownej konfiguracji sesji można zweryfikować za pomocą testu VTS
przypadku w
CameraHidlTest#configureStreamsWithSessionParameters