Metadane i kontrolki

Obsługa metadanych

Aby umożliwić zapisywanie nieprzetworzonych plików obrazów przez platformę Android, wymagane są znaczne metadane dotyczące charakterystyki czujnika. Obejmuje to takie informacje, jak przestrzenie kolorów i funkcje cieniowania soczewek.

Większość tych informacji jest statyczną właściwością podsystemu kamery i dlatego można je sprawdzić przed skonfigurowaniem jakichkolwiek potoków wyjściowych lub przesłaniem jakichkolwiek żądań. Nowe interfejsy API kamer znacznie rozszerzają informacje dostarczane przez metodę getCameraInfo() w celu dostarczenia tych informacji do aplikacji.

Dodatkowo ręczne sterowanie podsystemem kamery wymaga informacji zwrotnej od poszczególnych urządzeń o ich aktualnym stanie oraz rzeczywistych parametrach zastosowanych przy przechwytywaniu danej klatki. Rzeczywiste wartości elementów sterujących (czas ekspozycji, czas trwania klatki i czułość) faktycznie wykorzystywane przez sprzęt muszą zostać uwzględnione w metadanych wyjściowych. Jest to niezbędne, aby aplikacje wiedziały, kiedy miało miejsce zaciskanie lub zaokrąglanie, i aby aplikacja mogła kompensować rzeczywiste ustawienia używane do przechwytywania obrazu.

Na przykład, jeśli aplikacja ustawi w żądaniu czas trwania ramki na 0, warstwa HAL musi ograniczyć czas trwania ramki do rzeczywistego minimalnego czasu trwania ramki dla tego żądania i zgłosić ten ustalony minimalny czas trwania w metadanych wyniku wyjściowego.

Jeśli więc aplikacja musi zaimplementować niestandardową procedurę 3A (na przykład, aby prawidłowo zmierzyć serię HDR), musi znać ustawienia używane do przechwytywania najnowszego zestawu otrzymanych wyników, aby zaktualizować ustawienia dla następnego żądania. Dlatego nowy interfejs API kamery dodaje znaczną ilość dynamicznych metadanych do każdej przechwyconej klatki. Obejmuje to żądane i rzeczywiste parametry użyte do przechwytywania, a także dodatkowe metadane dotyczące ramki, takie jak znaczniki czasu i dane wyjściowe generatora statystyk.

Kontrola według ustawień

W przypadku większości ustawień oczekuje się, że można je zmieniać w każdej klatce, bez wprowadzania znaczących zacięć lub opóźnień do wyjściowego strumienia klatek. W idealnym przypadku wyjściowa częstotliwość klatek powinna być kontrolowana wyłącznie przez pole czasu trwania ramki żądania przechwytywania i niezależna od jakichkolwiek zmian w konfiguracji bloków przetwarzania. W rzeczywistości wiadomo, że niektóre specyficzne kontrole zmieniają się powoli; obejmują one rozdzielczość wyjściową i format wyjściowy potoku kamery, a także elementy sterujące wpływające na urządzenia fizyczne, takie jak odległość ogniskowania obiektywu. Dokładne wymagania dla każdego zestawu kontrolnego są szczegółowo opisane w dalszej części.

Obsługa surowych danych z czujnika

Oprócz formatów pikseli obsługiwanych przez stary interfejs API, nowy interfejs API dodaje wymóg obsługi nieprzetworzonych danych z czujnika (Bayer RAW), zarówno w przypadku zaawansowanych aplikacji aparatu, jak i obsługi nieprzetworzonych plików obrazów.