Parametry sesji

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:

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