Konfiguracje strumienia

Android udostępnia funkcje, które umożliwiają klientom aparatu aby wybrać optymalną kamerę strumieni do konkretnych przypadków użycia i zadbać o to, aby określone kombinacje strumieni są obsługiwane przez aparat. Konfiguracja strumienia odnosi się do strumień z kamery skonfigurowany w aparacie i kombinacja strumienia, która odnosi się do co najmniej 1 zbioru strumieni skonfigurowanych w kamerze. Więcej informacji: tych funkcji znajdziesz zalecane konfiguracje strumieni oraz Interfejs API do wysyłania zapytań o kombinacje funkcji.

Implementacja referencyjna

Zalecana konfiguracja jest wdrożona po stronie dostawcy. strumieni danych i interfejsu API do wysyłania zapytań dotyczących funkcji kombinacji strumieni. Znajdziesz to wdrożenie na poziomie QCamera3HWI.cpp,

Dostawcy aparatów fotograficznych mogą reklamować zalecane konfiguracje strumieni do określonych zastosowań do klientów kamer. Zalecane konfiguracje strumieni, podzbiory StreamConfigurationMap, może pomóc klientom korzystającym z aparatów wybrać optymalne konfiguracje.

Chociaż StreamConfigurationMap – dostarcza szczegółowych informacji o konfiguracji strumienia danych klientom kamery, nie zawiera żadnych informacji o wydajności, mocy obliczeniowej ani wydajności wpływu wyboru jednego strumienia na drugi. Klienci korzystający z aparatu mogą dowolnie wybrać ze wszystkich możliwych konfiguracji strumieni, ale w wielu przypadkach prowadzi to do klientów korzystających z nieoptymalnej konfiguracji kamery i tworzenia aplikacji, czasochłonne, wyczerpujące wyszukiwania.

Na przykład chociaż niektóre przetworzone formaty YUV są wymagane i muszą być aparat może nie mieć natywnej obsługi tych formatów. Ten powoduje dodatkowe przejście przetwarzania dla konwersji formatu i zmniejsza efektywność. Rozmiar i format obrazu również mogą być podobne. wpływa na poprawę preferencji poszczególnych wymiarów pod względem mocy skuteczność reklam.

Zalecane mapy konfiguracji strumienia nie muszą być wyczerpujące w porównaniu z StreamConfigurationMap, Sugerowane mapy konfiguracji muszą być zgodne z wymaganiami implementacji i może zawierać wszystkie formatów, rozmiarów lub innych wartości występujących w StreamConfigurationMap, Ukryte formaty, rozmiary i inne wartości, których nie ma w StreamConfigurationMap nie można uwzględnić w zalecanych mapach konfiguracji strumienia.

Wszystkie testy nie zmieniają się i nie są relaksowane w zależności od zalecanej skuteczności konfiguracji strumieni danych.

Zalecane konfiguracje strumienia dostarczane przez implementację kamery to są opcjonalne, a klient kamery może je zignorować.

Implementacja

Aby wdrożyć tę funkcję, wykonaj poniższe czynności.

Wpisy metadanych

Aby można było włączyć tę funkcję, HAL aparatu musi wypełnić ten statyczny wpisy metadanych:

  • android.scaler.availableRecommendedStreamConfigurations: zalecany podzbiór konfiguracji strumieni do określonych przypadków użycia. deklaracja używa map bitowych wskazujących sugerowane przypadki użycia ma postać [1 << PREVIEW | 1 << RECORD..]. Przypadki użycia wykraczają poza zakres krotką standardową (format, szerokość, wysokość, dane wejściowe) z jednym dodatkowym wpisem. Nieistniejące publiczne przypadki użycia lub wszelkie inne bity ustawione w zakresie [PUBLIC_END, VENDOR_START] są zabronione.

    Te informacje są przechowywane w availableRecommendedStreamConfigurations .

    Poniższy przykład pokazuje tablicę dla zalecanego strumienia. dla kamery, która obsługuje tylko rozdzielczość 4K i 1080p. obie rozdzielczości są preferowane do nagrywania filmów, ale tylko 1080p sugerowane do podglądu.

    [3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT),
    1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
    
  • android.depth.availableRecommendedDepthStreamConfigurations (dostępna tylko wtedy, gdy jest obsługiwana przez urządzenie): zalecana przestrzeń danych o głębi konfiguracje strumienia sugerowane dla tego urządzenia z kamerą. Podobne do powyżej wpisu metadanych, dodatkowa mapa bitowa przypadku użycia wskazuje i przypadków użycia.

    Te informacje są przechowywane w availableRecommendedInputOutputFormatsMap .

  • android.scaler.availableRecommendedInputOutputFormatsMap (dostępny tylko wtedy, gdy jest obsługiwany przez urządzenie): mapowanie zalecanych formatów obrazów, które są sugerowane dla tego urządzenia kamery dla strumieni wejściowych, z odpowiednimi formatami wyjściowymi.

    Te informacje są przechowywane w availableRecommendedDepthStreamConfigurations .

Te informacje są dostępne dla klientów aparatu w recommendedStreamConfigurationMap – API.

Wymagane przypadki użycia

Musisz podać zalecane konfiguracje strumienia dla poniższych przypadków użycia i spełniać odpowiednie wymagania:

Przypadek użycia Wymaganie
PREVIEW Podgląd może zawierać tylko niedziałające konfiguracje przetworzonych strumieni z formatami wyjściowymi takimi jak YUV_420_888 czy IMPLEMENTATION_DEFINED
RECORD Rekord wideo musi zawierać konfiguracje strumienia pasujące do rozgłaszanego obsługiwane profile multimediów w formacie IMPLEMENTATION_DEFINED.
VIDEO_SNAPSHOT Podsumowanie filmu musi zawierać konfiguracje strumienia, które mają co najmniej duże jak maksymalne rozdzielczości RECORD, a jedynie przy użyciu BLOB + Kombinacja formatu DATASPACE_JFIF/przestrzeni danych (JPEG). Konfiguracje nie powinno powodować błędów w podglądzie i powinna działać z szybkością 30 kl./s.
SNAPSHOT Konfiguracje zrzutu dysku muszą zawierać co najmniej jedną z konfiguracją rozmiaru zamknięcia do android.sensor.info.activeArraySize za pomocą BLOB + Kombinacja formatu DATASPACE_JFIF/przestrzeni danych (JPEG). Uwzględnianie ograniczenie formatu obrazu, dopasowania i innych ograniczeń dotyczących konkretnego dostawcy, obszar maksymalnego sugerowanego rozmiaru nie powinien być mniejszy niż 97% czujnika rozmiaru tablicy.
ZSL (jeśli jest obsługiwana) Zalecane konfiguracje strumienia wejściowego (jeśli go obsługuje) mogą być reklamowane wyłącznie razem z innymi przetwarzanymi lub zawieszającymi się wynikami formatów reklam.
RAW (jeśli jest obsługiwana) Zalecane konfiguracje nieprzetworzonych strumieni, jeśli kamera je obsługuje musi zawierać wyłącznie formaty wyjściowe oparte na RAW.

Inne przypadki użycia

Możesz dodać dodatkowe zalecane strumienie konfiguracji na potrzeby przypadków użycia do Twojej implementacji.

Weryfikacja

Aby przetestować wdrożenie zalecanych strumieni konfiguracji, uruchom następujące testy CTS i VTS:

Interfejs API do wysyłania zapytań dotyczących kombinacji funkcji

Począwszy od Androida 15, platforma Android zapewnia API do wysyłania zapytań o kombinacje funkcji. Ten interfejs API pozwala klientom aparatu zapytać, czy urządzenie może obsługiwać określoną kombinację funkcji. Ten interfejs API jest ponieważ interfejs Camera2 API modeluje różne funkcje, takie jak 4K, 60 kl./s Film HDR, UltraHDR, zoom ultraszerokokątny i stabilizacja jako elementy sterujące ortogonalne.

Wymagania

Aby interfejs API mógł wysyłać zapytania o kombinacje funkcji, interfejs HAL kamery musi zaimplementować wersji 3 interfejsu ICameraDevice. Więcej informacji: Implementacja.

Jeśli interfejs API jest obsługiwany, stabilizacja podglądu musi być ortogonalna do i innych funkcji. Oznacza to, że w przypadku aparatu obsługującego podgląd stabilizacja, wartość zwrotna isStreamCombinationWithSettingsSupported dla danej kombinacji musi mieć tę samą wartość w przypadku stabilizacji w podglądzie jest włączony lub wyłączony. Zmniejsza to obszar wyszukiwania na potrzeby zapytań zawierających kombinację cech.

Dodatkowo w przypadku klasy wydajności multimediów 15 główny tylny aparat musi: obsługuje 10-bitową stabilizację podglądu HLG10 w rozdzielczości 1080p i 720p. podgląd i maksymalny rozmiar plików JPEG. Więcej informacji na temat tych wymagań znajdziesz w artykule (sekcja) 2.2.7.2. Aparat obrony CDD.

Implementacja

Aby umożliwić interfejs API do wysyłania zapytań dotyczących kombinacji funkcji, zaimplementuj te interfejsy API zapytań w zakresie kombinacji funkcji w wersji 3 ICameraDevice:

W przypadku wersji interfejsu ICameraDevice starszych niż 3 plik HAL powinien wdrożyć isStreamCombinationSupported. .

Więcej informacji o kombinacjach funkcji, których dotyczy zapytanie, znajdziesz w dokumentacja sessionConfigurationQueryVersion w system/media/camera/docs/metadata_definitions.xml

Przykłady referencyjnej implementacji tej funkcji znajdziesz w artykule hardware/google/camera/devices/EmulatedCamera/hwl/

Publiczne interfejsy API

Aplikacje mogą używać poniższych publicznych interfejsów API do wysyłania zapytań dotyczących obsługiwanych kombinacji funkcji dla urządzenia:

  • CameraDevice.CameraDeviceSetup: Ograniczona reprezentacja właściwości CameraDevice, której można używać do wysyłania zapytań dotyczących funkcji nie wymaga instancji CameraDevice.

  • getCameraDeviceSetup: Pobiera obiekt CameraDeviceSetup dla podanego identyfikatora kamery, jeśli isCameraDeviceSetupSupported zwraca true.

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: Obsługuje zapytania dotyczące kombinacji cech, jeśli ta wartość to VANILLA_ICE_CREAM lub wyższą.

  • OutputConfiguration: Klasa opisująca dane wyjściowe kamery, która może zawierać odroczoną powierzchnię dla zapytań dotyczących kombinacji cech o krótkim czasie oczekiwania.

  • SessionConfiguration: Klasa narzędzia opisująca konfigurację sesji, w tym strumień kombinacji i parametrów sesji, które mogą być wykorzystywane w przypadku funkcji zapytań kombinacji.

Weryfikacja

Aby sprawdzić poprawność implementacji tej funkcji, użyj tych elementów: VTS, CTS Testy kamer ITS (CTS Verifier):

VTS

wskaźnik CTS

Kamera IT