Odwołanie do struktury camera3_stream
#include <
camera3.h
>
Pola danych |
|
int | stream_type |
uint32_t | szerokość |
uint32_t | height |
int | format |
uint32_t | usage |
uint32_t | max_buffers |
void * | priv |
android_dataspace_t | data_space |
int | obrót |
void * | reserved [7] |
Szczegółowy opis
camera3_stream_t:
uchwyt do strumienia wejściowego lub wyjściowego pojedynczej kamery; Strumień jest definiowany przez ramkę za pomocą rozdzielczości i formatu bufora, a dodatkowo przez HAL z flagami użycia gralloc i maksymalną liczbą buforów w transmisji.
Struktury strumieni należą do frameworka, ale wskaźniki do camera3_stream przekazywane do HAL przez funkcję configure_streams() są ważne do końca pierwszego kolejnego wywołania funkcji configure_streams(), które nie zawiera tego camera3_stream jako argumentu lub do końca wywołania funkcji close().
Wszystkie elementy sterowane przez framework camera3_stream są niezmienne po przekazaniu sterownika do funkcji configure_streams(). Podczas wywołania funkcji configure_streams() sterownik HAL może zmienić tylko parametry kontrolowane przez sterownik HAL (z wyjątkiem zawartości prywatnego wskaźnika).
Jeśli wywołanie funkcji configure_streams() zwraca błąd niekrytyczny, wszystkie aktywne strumienie pozostają ważne, tak jakby nie zostało wywołane configure_streams().
Punkt końcowy strumienia nie jest widoczny dla urządzenia HAL aparatu. W wersji DEVICE_API_VERSION_3_1 zmieniono to, aby udostępniać flagi użytkowania przez konsumenta w przypadku strumieni, w których kamera jest producentem (typy strumieni OUTPUT i BIDIRECTIONAL). Zobacz pole „usage” poniżej.
Dokumentacja pola
android_dataspace_t data_space |
Pole opisujące zawartość bufora. Wymiary formatu i bufora definiują układ i strukturę pamięci buforów strumienia, a wymiar dataSpace określa znaczenie danych w buforze.
W przypadku większości formatów przestrzeń danych określa przestrzeń barw danych obrazu. W przypadku niektórych formatów dataSpace wskazuje, czy żądane są dane oparte na obrazie czy głębi. Szczegółowe informacje o formatach i prawidłowych wartościach dataSpace dla każdego formatu znajdziesz w pliku system/core/include/system/graphics.h.
Informacje o wersji:
< CAMERA_DEVICE_API_VERSION_3_3:
Nie zdefiniowano i nie należy uzyskiwać do niego dostępu. Należy przyjąć, że dataSpace ma wartość HAL_DATASPACE_UNKNOWN, a odpowiednia przestrzeń kolorów itp. powinna być określana na podstawie flag użycia i formatu.
= CAMERA_DEVICE_API_VERSION_3_3:
Zawsze ustawiany przez usługę kamery. HAL musi używać tego dataSpace do konfigurowania strumienia w odpowiednim modelu kolorów lub do wyboru wyjścia koloru i głębi (jeśli jest obsługiwane). Wartości przestrzeni danych to starsze definicje w pliku graphics.h
>= CAMERA_DEVICE_API_VERSION_3_4:
Zawsze ustawiany przez usługę kamery. HAL musi używać tego dataSpace do konfigurowania strumienia pod kątem prawidłowej przestrzeni barw lub do wyboru wyjścia koloru i głębi (jeśli jest obsługiwane). Wartości przestrzeni danych są ustawiane za pomocą definicji przestrzeni danych V0 w pliku graphics.h
format int |
Format pikseli dla 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 związanych z danym urządzeniem.
Jeśli używana jest flaga HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, moduł gralloc platformy wybierze format na podstawie flag użycia dostarczonych przez urządzenie z kamerą i drugi punkt końcowy strumienia.
<= CAMERA_DEVICE_API_VERSION_3_1:
Urządzenie HAL aparatu musi sprawdzić bufory przekazane mu w kolejnych wywołaniach register_stream_buffers(), aby w razie potrzeby uzyskać szczegóły formatu specyficzne dla danej implementacji.
>= CAMERA_DEVICE_API_VERSION_3_2:
Framework nie wywoła funkcji register_stream_buffers(), więc HAL powinien skonfigurować ISP i przetwarzanie czujników wyłącznie na podstawie rozmiarów, flag użycia i formatów skonfigurowanych strumieni.
uint32_t height |
uint32_t max_buffers |
void* priv |
rotacja int |
Wymagana rotacja wyjściowa strumienia, jedna z wartości camera3_stream_rotation_t. HAL musi sprawdzić te wartości wraz z szerokością i wysokością strumienia. Jeśli na przykład obrót wynosi 90°, a szerokość i wysokość strumienia to odpowiednio 720 i 1280, usługa aparatu dostarczy bufory o wymiarach 720 x 1280, a HAL powinien zarejestrować obraz o wymiarach 1280 x 720 i obrócić go o 90° w przeciwnym kierunku do ruchu wskazówek zegara. Pole rotacji jest nieaktywne, gdy typ strumienia to dane wejściowe. Interfejs HAL aparatu musi ignorować pole obrotu w przypadku strumienia wejściowego.
<= CAMERA_DEVICE_API_VERSION_3_2:
Nie zdefiniowany i niedostępny. HAL nie może stosować żadnego obrotu na wyjściowych obrazach.
>= CAMERA_DEVICE_API_VERSION_3_3:
Zawsze ustawiany przez usługę aparatu. HAL musi sprawdzić to pole podczas konfiguracji strumienia i zwraca -EINVAL, jeśli nie może wykonać takiej rotacji. HAL musi zawsze obsługiwać CAMERA3_STREAM_ROTATION_0, więc wywołanie configure_streams() nie może się zakończyć niepowodzeniem w przypadku nieobsługiwanego obracania, jeśli pole obracania wszystkich strumieni ma wartość CAMERA3_STREAM_ROTATION_0.
int stream_type |
Użycie typu uint32_t |
Flagi gralloc używane w tym strumieniu, zgodnie z potrzebami HAL. Flagi użycia są zdefiniowane w pliku gralloc.h (GRALLOC_USAGE_*) lub w nagłówkach charakterystycznych dla danego urządzenia.
W przypadku strumieni wyjściowych są to flagi producenta HAL. W przypadku strumieni danych są to flagi użytkowania przez konsumenta w HAL. Flagi użycia pochodzące od producenta i konsumenta zostaną połączone, a następnie przekazane do modułu platformy gralloc HAL w celu przydzielenia buforów gralloc do każdego strumienia.
Informacje o wersji:
== CAMERA_DEVICE_API_VERSION_3_0:
Nie gwarantuje się żadnej wartości początkowej, gdy jest ona przekazywana za pomocą funkcji configure_streams(). HAL może nie używać tego pola jako wejścia i musi zastąpić to pole flagami użycia.
>= CAMERA_DEVICE_API_VERSION_3_1:
W przypadku wartości wyjściowej stream_type OUTPUT i BIDIRECTIONAL, gdy jest ona przekazywana za pomocą funkcji configure_streams(), jej początkowa wartość to flagi użycia konsumenta. HAL może używać tych flag konsumenta do określenia konfiguracji strumienia. W przypadku parametru stream_type INPUT, gdy jest on przekazywany za pomocą funkcji configure_streams(), jego początkowa wartość wynosi 0. W przypadku wszystkich strumieni przekazywanych za pomocą funkcji configure_streams() HAL musi zapisać w tym polu swoje flagi użycia.
uint32_t width |
Dokumentacja tego typu danych została wygenerowana z tego pliku:
- hardware/libhardware/include/hardware/ camera3.h