Camera3_stream — odniesienie do struktury
#include < camera3.h >
Pola danych | |
wew | typ_strumienia |
uint32_t | szerokość |
uint32_t | wysokość |
wew | format |
uint32_t | stosowanie |
uint32_t | max_bufory |
próżnia * | prywatny |
android_dataspace_t | przestrzeń_danych |
wew | obrót |
próżnia * | zarezerwowane [7] |
szczegółowy opis
kamera3_stream_t:
Uchwyt do strumienia wejściowego lub wyjściowego pojedynczej kamery. Strumień jest definiowany przez framework na podstawie rozdzielczości i formatu bufora, a dodatkowo przez warstwę HAL z flagami użycia gralloc i maksymalną liczbą buforów w locie.
Struktury strumieni są własnością frameworka, ale wskaźniki do strumienia kamery3_stream przekazywane do warstwy HAL przez funkcję konfiguracji_streams() obowiązują do końca pierwszego kolejnego wywołania konfiguracji_streams(), które nie zawiera tego strumienia kamery3_stream jako argumentu, lub do końca wywołanie zamknięcia().
Wszystkie elementy kontrolowane przez platformę Camera3_stream są niezmienne po przekazaniu strumienia Camera3_stream do konfiguracji_streams(). HAL może zmieniać parametry kontrolowane przez HAL tylko podczas wywołania konfiguracji_streams(), z wyjątkiem zawartości prywatnego wskaźnika.
Jeśli wywołanie konfiguracji_streams() zwróci błąd niekrytyczny, wszystkie aktywne strumienie pozostaną ważne, tak jakby nie została wywołana funkcjaconfigure_streams().
Punkt końcowy strumienia nie jest widoczny dla urządzenia HAL kamery. W DEVICE_API_VERSION_3_1 zmieniono to, aby udostępniać flagi użytkowania konsumenckiego w strumieniach, których producentem jest kamera (typy strumieni OUTPUT i BIDIRECTIONAL), patrz pole użycia poniżej.
Dokumentacja terenowa
android_dataspace_t data_space |
Pole opisujące zawartość bufora. Format i wymiary bufora definiują układ pamięci i strukturę buforów strumienia, podczas gdy dataSpace definiuje znaczenie danych w buforze.
W przypadku większości formatów dataSpace definiuje przestrzeń kolorów danych obrazu. Ponadto w przypadku niektórych formatów dataSpace wskazuje, czy wymagane są dane oparte na obrazie, czy na głębokości. Zobacz system/core/include/system/graphics.h, aby uzyskać szczegółowe informacje na temat formatów i prawidłowych wartości dataSpace dla każdego formatu.
Informacje o wersji:
< CAMERA_DEVICE_API_VERSION_3_3:
Niezdefiniowany i nie powinien być dostępny. Należy przyjąć, że dataSpace to HAL_DATASPACE_UNKNOWN, a odpowiednią przestrzeń kolorów itp. należy określić na podstawie flag użycia i formatu.
= CAMERA_DEVICE_API_VERSION_3_3:
Zawsze ustawiane przez serwis aparatu. HAL musi używać tej przestrzeni danych, aby skonfigurować strumień do właściwej przestrzeni kolorów lub wybrać pomiędzy kolorem i głębią, jeśli jest obsługiwana. Wartości przestrzeni danych to starsze definicje w Graphics.h
>= CAMERA_DEVICE_API_VERSION_3_4:
Zawsze ustawiane przez serwis aparatu. HAL musi używać tej przestrzeni danych, aby skonfigurować strumień do właściwej przestrzeni kolorów lub wybrać pomiędzy kolorem i głębią, jeśli jest obsługiwana. Wartości przestrzeni danych są ustawiane przy użyciu definicji przestrzeni danych V0 w Graphics.h
formacie int |
Format pikseli buforów w tym strumieniu. Format to wartość z listy HAL_PIXEL_FORMAT_* w pliku system/core/include/system/graphics.h lub z nagłówków specyficznych dla urządzenia.
Jeśli zostanie użyty HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, moduł gralloc platformy wybierze format w oparciu o flagi użytkowania dostarczone przez kamerę i drugi punkt końcowy strumienia.
<= CAMERA_DEVICE_API_VERSION_3_1:
Urządzenie HAL kamery musi sprawdzić bufory przekazane mu w kolejnym wywołaniu funkcji Register_stream_buffers(), aby w razie potrzeby uzyskać szczegółowe informacje na temat formatu specyficznego dla implementacji.
>= CAMERA_DEVICE_API_VERSION_3_2:
funkcja Register_stream_buffers() nie zostanie wywołana przez platformę, więc warstwa HAL powinna skonfigurować potok dostawcy usług internetowych i czujnika wyłącznie w oparciu o rozmiary, flagi użycia i formaty skonfigurowanych strumieni.
wysokość uint32_t |
uint32_t max_buffers |
nieważne* prywatne |
obrót wewnętrzny |
Wymagana rotacja wyjściowa strumienia, jedna z wartości kamery3_stream_rotation_t. Musi to zostać sprawdzone przez HAL wraz z szerokością i wysokością strumienia. Na przykład, jeśli obrót wynosi 90 stopni, a szerokość i wysokość strumienia wynoszą odpowiednio 720 i 1280, usługa kamery dostarczy bufory o rozmiarze 720x1280, a HAL powinien przechwycić obraz o rozdzielczości 1280x720 i obrócić obraz o 90 stopni w kierunku przeciwnym do ruchu wskazówek zegara. Pole rotacji nie działa po wprowadzeniu typu strumienia. Kamera HAL musi ignorować pole obrotu dla strumienia wejściowego.
<= CAMERA_DEVICE_API_VERSION_3_2:
Niezdefiniowany i nie można uzyskać do niego dostępu. HAL nie może stosować żadnego obrotu obrazów wyjściowych.
>= CAMERA_DEVICE_API_VERSION_3_3:
Zawsze ustawiane przez serwis aparatu. HAL musi sprawdzić to pole podczas konfiguracji strumienia i zwraca -EINVAL, jeśli HAL nie może wykonać takiej rotacji. HAL musi zawsze obsługiwać CAMERA3_STREAM_ROTATION_0, więc wywołanie konfiguracji_streams() nie może zakończyć się niepowodzeniem w przypadku nieobsługiwanej rotacji, jeśli pole obrotu wszystkich strumieni to CAMERA3_STREAM_ROTATION_0.
int typ_strumienia |
użycie uint32_t |
Flagi użycia gralloc dla tego strumienia, zgodnie z potrzebami warstwy HAL. Flagi użycia są zdefiniowane w gralloc.h (GRALLOC_USAGE_*) lub w nagłówkach specyficznych dla urządzenia.
W przypadku strumieni wyjściowych są to flagi użycia producenta warstwy HAL. W przypadku strumieni wejściowych są to flagi użytkowania konsumenckiego warstwy HAL. Flagi użycia od producenta i konsumenta zostaną połączone razem, a następnie przekazane do modułu HAL platformy gralloc w celu przydzielenia buforów gralloc dla każdego strumienia.
Informacje o wersji:
== CAMERA_DEVICE_API_VERSION_3_0:
Żadna wartość początkowa nie jest gwarantowana przy przekazywaniu za pomocą konfiguracji_streams(). HAL nie może używać tego pola jako danych wejściowych i musi nad nim zapisywać swoje flagi użycia.
>= CAMERA_DEVICE_API_VERSION_3_1:
Dla typu stream_type OUTPUT i BIDIRECTIONAL, gdy są przekazywane za pomocą konfiguracji_streams(), wartością początkową są flagi użytkowania konsumenta. HAL może używać tych flag konsumenckich do decydowania o konfiguracji strumienia. Dla WEJŚCIA typu stream_type, przekazywanego za pomocą konfiguracji_streams(), wartość początkowa wynosi 0. W przypadku wszystkich strumieni przekazywanych za pomocą konfiguracji_streams() warstwa HAL musi zapisywać to pole ze swoimi flagami użycia.
szerokość uint32_t |
Dokumentacja tej struktury została wygenerowana z następującego pliku:
- hardware/libhardware/include/hardware/ camera3.h