Informacje o strukturze camera_info
#include <
camera_common.h
>
Pola danych |
|
int | facing |
int | orientacja |
uint32_t | device_version |
const camera_metadata_t * | static_camera_characteristics |
int | resource_cost |
char ** | conflicting_devices |
size_t | conflicting_devices_length |
Szczegółowy opis
Definicja w wierszu 161 pliku camera_common.h .
Dokumentacja pola
char** conflicting_devices |
Tablica identyfikatorów urządzeń reprezentowanych jako ciągi znaków zakończone wartością NULL, wskazujące inne urządzenia, których nie można otworzyć jednocześnie, gdy to urządzenie jest używane.
To pole służy do wskazania, że to urządzenie z kamerą jest połączeniem kilku innych urządzeń z kamerą lub ma inne zależności sprzętowe, które uniemożliwiają jednoczesne korzystanie z niego. Jeśli nie ma zależności, w tym polu może zostać zwrócona wartość NULL, aby to wskazać.
Usługa aparatu nigdy nie otworzy jednocześnie żadnego z urządzeń na tej liście, gdy to urządzenie jest otwarte.
Łańcuchy znaków wskazywane w tym polu nie będą usuwane przez usługę aparatu i mu pozostać, gdy urządzenie jest podłączone.
Informacje o wersji (na podstawie camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 lub starsza:
Nieprawidłowy. Może być uznana za NULL. Nie czytaj tego pola.
CAMERA_MODULE_API_VERSION_2_4 lub nowsza:
Zawsze prawidłowy.
Definicja w wierszu 404 pliku camera_common.h .
size_t conflicting_devices_length |
Długość tablicy podanej w polu conflicting_devices.
Informacje o wersji (na podstawie camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 lub starsza:
Nieprawidłowy. Może być założona wartość 0. Nie czytaj tego pola.
CAMERA_MODULE_API_VERSION_2_4 lub nowsza:
Zawsze prawidłowy.
Definicja w wierszu 419 pliku camera_common.h .
uint32_t device_version |
Wartość parametru camera_device_t.common.version.
Informacje o wersji (na podstawie camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_1_0:
Nieprawidłowe. Można założyć, że jest to CAMERA_DEVICE_API_VERSION_1_0. Nie czytaj tego pola.
CAMERA_MODULE_API_VERSION_2_0 lub nowsza:
Zawsze prawidłowe
Definicja w wierszu 219 pliku camera_common.h .
int facing |
Kierunek, w którym skierowany jest aparat. Definicje stron aparatu znajdziesz w pliku system/core/include/system/camera.h.
Informacje o wersji (na podstawie camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 lub starsza:
Powinien to być CAMERA_FACING_BACK lub CAMERA_FACING_FRONT.
CAMERA_MODULE_API_VERSION_2_4 lub nowsza:
Powinien to być CAMERA_FACING_BACK, CAMERA_FACING_FRONT lub CAMERA_FACING_EXTERNAL.
Definicja w wierszu 177 pliku camera_common.h .
int orientation |
Orientacja obrazu z kamery. Wartość ta określa kąt, o ile obraz z kamery musi zostać obrócony zgodnie z kierunkiem ruchu wskazówek zegara, aby wyświetlał się prawidłowo na ekranie w naturalnej orientacji. Powinien on wynosić 0, 90, 180 lub 270.
Załóżmy na przykład, że urządzenie ma naturalnie wysoki ekran. Czujnik tylnego aparatu jest zamontowany w orientacji poziomej. Patrzysz na ekran. Jeśli górna strona czujnika aparatu jest wyrównana z prawą krawędzią ekranu w naturalnej orientacji, wartość powinna wynosić 90. Jeśli górna strona czujnika przedniego aparatu jest wyrównana z prawą stroną ekranu, wartość powinna wynosić 270.
Informacje o wersji (na podstawie camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 lub starsza:
Ważne we wszystkich wersjach camera_module .
CAMERA_MODULE_API_VERSION_2_4 lub nowsza:
Właściwe, jeśli kierunek kamery to CAMERA_FACING_BACK lub CAMERA_FACING_FRONT, nieprawidłowe, jeśli kierunek kamery to CAMERA_FACING_EXTERNAL.
Definicja w wierszu 202 pliku camera_common.h .
int resource_cost |
Łączny „koszt” zasobów używany przez tę kamerę, reprezentowany jako wartość całkowita w zakresie [0, 100], gdzie 100 reprezentuje łączne wykorzystanie zasobu współdzielonego, który jest ograniczającym wąskim gardłem podsystemu kamery. Może to być bardzo przybliżona wartość, która służy jako wskazówka dla usługi aparatu do określenia, kiedy zablokować otwieranie przez wiele aplikacji różnych aparatów reklamowanych przez usługę aparatu.
Usługa aparatu musi mieć możliwość jednoczesnego otwierania i używania dowolnej kombinacji urządzeń aparatu udostępnionych przez HAL, przy czym suma kosztów zasobów tych aparatów musi być <= 100. W celu określenia kosztu należy założyć, że każde urządzenie z kamerą jest skonfigurowane i działa z maksymalnie obciążającą zasoby częstotliwością klatek i rozmiarem strumienia dostępnymi w ustawieniach konfiguracji udostępnionych dla tego urządzenia za pomocą metadanych kamery.
Usługa aparatu może nadal próbować otwierać jednocześnie kombinacje urządzeń aparatu o łącznym koszcie zasobów > 100. Może się to udać lub nie. Jeśli to się uda, podczas wywołań konfiguracji nie powinny się pojawiać błędy w przypadku kombinacji konfiguracji, które nie są obsługiwane z powodu ograniczeń zasobów wynikających z otwartych wielu urządzeń. Jeśli łączny koszt zasobów jest <= 100, otwieranie i konfigurowanie nie powinno się nigdy nie powieść w przypadku żadnych ustawień konfiguracji strumienia ani innych funkcji urządzenia, które normalnie działają, gdy urządzenie jest jedynym otwartym urządzeniem z kamerą.
To pole będzie używane do określania, czy aplikacje działające w tle mogą korzystać z tego urządzenia z kamerą, gdy inne aplikacje korzystają z innych urządzeń z kamerą. Uwaga: usługa aparatu nigdy nie zezwoli na jednoczesne otwieranie tego samego urządzenia przez wiele aplikacji.
Przykładowe przypadki użycia:
Np. 1: urządzenie z kamerą 0 = tylna kamera, urządzenie z kamerą 1 = przednia kamera
- Korzystanie z obu kamer powoduje znaczne spowolnienie liczby klatek na sekundę z powodu ograniczonej przepustowości dostawcy usług internetowych.
Konfiguracja:
Urządzenie z kamerą 0 – resource_cost = 51, conflicting_devices = null Urządzenie z kamerą 1 – resource_cost = 51, conflicting_devices = null
Efekt:
Ponieważ suma kosztów zasobów wynosi > 100, jeśli aplikacja o wyższym priorytecie ma otwarte któreś z urządzeń, usługa aparatu nie zezwoli aplikacjom o niższym priorytecie na otwarcie któregokolwiek z nich. Jeśli aplikacja o niższym priorytecie używa urządzenia, które następnie próbuje otworzyć aplikacja o wyższym priorytecie, aplikacja o niższym priorytecie zostanie zmuszona do odłączenia od urządzenia.
Jeśli aplikacja o najwyższym priorytecie wybierze, może nadal próbować otworzyć oba urządzenia (ponieważ te urządzenia nie są wymienione jako konfliktowe w kolumnach conflicting_devices), ale korzystanie z tych urządzeń może się nie udać w przypadku wywołania open lub configure.
Np. 2: Urządzenie z kamerą 0 = lewy tylny aparat; urządzenie z kamerą 1 = prawy tylny aparat; urządzenie z kamerą 2 = połączona kamera stereo, która wykorzystuje czujniki lewego i prawego tylnego aparatu używane przez urządzenia 0 i 1; urządzenie z kamerą 3 = przedni aparat
- Ze względu na ograniczenia sprzętowe jednocześnie można otworzyć maksymalnie 2 kamery. Połączony aparat stereo nie może być używany jednocześnie z żadnym z 2 tylnych aparatów (urządzenie 0 i 1) i zwykle wymaga zbyt dużej przepustowości, aby można było go używać jednocześnie z przednim aparatem (urządzenie 3).
Konfiguracja:
Urządzenie do rejestrowania obrazu 0 – resource_cost = 50 conflicting_devices = { 2 } Urządzenie do rejestrowania obrazu 1 – resource_cost = 50 conflicting_devices = { 2 } Urządzenie do rejestrowania obrazu 2 – resource_cost = 100 conflicting_devices = { 0, 1 } Urządzenie do rejestrowania obrazu 3 – resource_cost = 50 conflicting_devices = null
Efekt:
Na podstawie pól conflicting_devices usługa aparatu gwarantuje, że następujące zestawy otwartych urządzeń nigdy nie będą dozwolone: { 1, 2 }, { 0, 2 }.
Na podstawie pól resource_cost, jeśli aplikacja na pierwszym planie o wysokiej priorytecie używa urządzenia z aparatem 0, aplikacja w tle może otworzyć urządzenie z aparatem 1 lub 3 (ale będzie zmuszona ponownie je odłączyć, jeśli aplikacja na pierwszym planie otworzy inne urządzenie).
Aplikacja o najwyższym priorytecie może nadal próbować otwierać jednocześnie urządzenia 0, 2 i 3, ale HAL może nie otworzyć lub skonfigurować połączeń w tej kombinacji.
Np. 3: Urządzenie z kamerą 0 = tylny aparat; urządzenie z kamerą 1 = przedni aparat; urządzenie z kamerą 2 = przedni aparat o niskim poborze mocy, który używa tego samego czujnika co urządzenie 1, ale udostępnia tylko rozdzielczości strumienia obrazu, które można wykorzystać w trybie niskiego poboru mocy
-
Korzystanie z obu przednich aparatów (urządzenie 1 i 2) jednocześnie jest niemożliwe ze względu na wspólny czujnik fizyczny. Korzystanie z tylnego i „wysokowydajnego” przedniego aparatu (urządzenie 1) może być niemożliwe w przypadku niektórych konfiguracji strumieniowania ze względu na ograniczenia sprzętowe, ale można zawsze używać opcji „Niski pobór mocy” przedniego aparatu, ponieważ ma on specjalny sprzęt.
Konfiguracja:
Urządzenie z aparatem 0 – resource_cost = 100 conflicting_devices = null Urządzenie z aparatem 1 – resource_cost = 100 conflicting_devices = { 2 } Urządzenie z aparatem 2 – resource_cost = 0 conflicting_devices = { 1 } Wynik:
Na podstawie pól conflicting_devices usługa aparatu gwarantuje, że następujące zestawy otwartych urządzeń nigdy nie będą dozwolone: { 1, 2 }.
Na podstawie pól resource_cost tylko aplikacja o najwyższym priorytecie może próbować otworzyć jednocześnie urządzenie 0 i 1. Jeśli aplikacja o wyższym priorytecie nie używa urządzenia 1 ani 2, aplikacja o niskim priorytecie może otworzyć urządzenie 2 (ale zostanie zmuszona do odłączenia, jeśli aplikacja o wyższym priorytecie otworzy urządzenie 1 lub 2).
Informacje o wersji (na podstawie camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 lub starsza:
Nieprawidłowy. Zakładamy, że wynosi 100. Nie czytaj tego pola.
CAMERA_MODULE_API_VERSION_2_4 lub nowsza:
Zawsze prawidłowy.
Definicja w wierszu 376 pliku camera_common.h .
const camera_metadata_t * static_camera_characteristics |
Stałe właściwości aparatu, które obejmują wszystkie statyczne metadane aparatu określone w system/media/camera/docs/docs.html. Powinien to być posortowany bufor metadanych, którego wywołujący nie może zmodyfikować ani zwolnić. Wskaźnik powinien pozostać prawidłowy przez cały czas działania modułu kamery, a wartości w nim nie mogą się zmieniać po zwróceniu przez funkcję get_camera_info().
Informacje o wersji (na podstawie camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_1_0:
Nieprawidłowy. Dodatkowe cechy są niedostępne. Nie czytaj tego pola.
CAMERA_MODULE_API_VERSION_2_0 lub nowsza:
Właściwe, jeśli device_version >= CAMERA_DEVICE_API_VERSION_2_0. W przeciwnym razie nie czytaj.
Definicja w wierszu 241 w pliku camera_common.h .
Dokumentacja tego typu danych została wygenerowana z tego pliku:
- hardware/libhardware/include/hardware/ camera_common.h