Konfiguracje strumienia

Android zawiera funkcje umożliwiające klientom kamery wybieranie optymalnych strumieni kamery w przypadku konkretnych zastosowań oraz zapewnienie, że określone kombinacje strumieni są obsługiwane przez urządzenie z kamerą. Konfiguracja strumienia odnosi się do pojedynczego strumienia kamery skonfigurowanego w urządzeniu kamery, a kombinacja strumieni odnosi się do co najmniej 1 zestawu strumieni skonfigurowanych w urządzeniu kamery. 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. Implementację tę znajdziesz w pliku QCamera3HWI.cpp.

Dostawcy aparatów fotograficznych mogą reklamować zalecane konfiguracje strumieni do określonych zastosowań do klientów kamer. Te zalecane konfiguracje strumienia, które są podzbiorami mapy StreamConfigurationMap, mogą pomóc klientom kamer w wybieraniu optymalnych konfiguracji.

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. W efekcie konieczne jest przeprowadzenie dodatkowego przetwarzania w celu konwersji formatu, co zmniejsza wydajność. Rozmiar i odpowiednio współczynnik proporcji mogą mieć również podobny wpływ, co powoduje, że określone wymiary są preferowane pod względem mocy i wydajności.

Zaleca się, aby mapy konfiguracji strumienia nie były wyczerpujące w porównaniu z StreamConfigurationMap. Sugerowane mapy konfiguracji muszą spełniać wymagania podane w sekcji implementacja. Mogą one zawierać dowolne dostępne formaty, rozmiary lub inne wartości znalezione 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 pozostają niezmienione i nie są w nich luźne w zależności od zalecanego 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 zawiera bitmapy wskazujące sugerowane zastosowania w postaci [1 << PREVIEW | 1 << RECORD..]. Przypadki użycia rozszerzają zwykłą (format, szerokość, wysokość, dane wejściowe) tuplę o jeden dodatkowy element. Nieistniejące przypadki użycia publicznego lub inne bity ustawione w zakresie [PUBLIC_END, VENDOR_START] są zabronione.

    Te informacje są przechowywane w tagu metadanych 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 zaproponowane 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ą. Podobnie jak w powyższym wpisie metadanych, bitmapa dodatkowego zastosowania wskazuje sugerowane zastosowania.

    Te informacje są przechowywane w availableRecommendedInputOutputFormatsMap .

  • android.scaler.availableRecommendedInputOutputFormatsMap (dostępne tylko w przypadku urządzeń obsługujących tę funkcję): mapowanie zalecanych formatów obrazów sugerowanych dla tego urządzenia z kamerą w przypadku strumieni wejściowych na ich odpowiednie formaty wyjściowe.

    Te informacje są przechowywane w tagu metadanych availableRecommendedDepthStreamConfigurations.

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

Wymagane przypadki użycia

W przypadku tych zastosowań musisz podać zalecane konfiguracje transmisji i spełnić 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). Biorąc pod uwagę ograniczenia dotyczące formatu obrazu, wyrównania i innych ograniczeń narzuconych przez producenta, sugerowany maksymalny rozmiar nie powinien być mniejszy niż 97% obszaru rozmiaru matrycy czujnika.
ZSL (jeśli jest obsługiwana) Zalecane konfiguracje strumienia danych wejściowych (jeśli są obsługiwane przez urządzenie z kamerą) muszą być reklamowane tylko z innymi przetworzonymi formatami wyjściowymi lub formatami, które powodują zatrzymywanie obrazu.
RAW (jeśli jest obsługiwana) Jeśli jest to obsługiwane przez urządzenie z kamerą, zalecane konfiguracje strumienia RAW muszą zawierać tylko formaty wyjściowe 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

Od Androida 15 platforma Androida udostępnia interfejs 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. Szczegółowe informacje znajdziesz w sekcji Wdrażanie.

Jeśli interfejs API jest obsługiwany, stabilizacja podglądu musi być ortogonalna do i innych funkcji. Oznacza to, że w przypadku urządzenia z kamerą, które obsługuje stabilizację podglądu, zwracana wartość isStreamCombinationWithSettingsSupported w przypadku danej kombinacji musi być taka sama, gdy stabilizacja podglądu jest włączona lub wyłączona. Zmniejsza to przestrzeń wyszukiwania w przypadku zapytań dotyczących kombinacji funkcji.

Dodatkowo w przypadku klasy wydajności multimediów 15 główna tylna kamera musi obsługiwać stabilizację podglądu z podglądem 10-bitowym HLG10 w przypadku podglądu 1080p i 720p oraz plików JPEG o maksymalnym rozmiarze. Więcej informacji o tych wymaganiach znajdziesz w sekcji 2.2.7.2. Kameraz 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 interfejs HAL powinien implementować metodę isStreamCombinationSupported.

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

Implementację referencyjną 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: ograniczone odwzorowanie typu CameraDevice, które można wykorzystać do zapytania o kombinacje funkcji bez konieczności tworzenia instancji typu CameraDevice.

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

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: obsługuje zapytania o kombinacje funkcji, jeśli ta wartość wynosi VANILLA_ICE_CREAM lub więcej.

  • 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