Camera_info Odniesienie do struktury

Camera_info Odniesienie do struktury

#include < camera_common.h >

Pola danych

wew okładzina
wew orientacja
uint32_t wersja_urządzenia
stała kamera_metadane_t * charakterystyka_statycznej_kamery
wew koszt_zasobu
znak** urządzenia_konfliktowe
rozmiar_t konflikt_długości_urządzeń

szczegółowy opis

Definicja w linii 161 pliku kamera_common.h .

Dokumentacja terenowa

char** konfliktujące_urządzenia

Tablica identyfikatorów kamer reprezentowana jako ciągi zakończone znakiem NULL, wskazujące inne urządzenia, których nie można jednocześnie otworzyć, gdy kamera jest używana.

To pole ma na celu wskazanie, że to urządzenie kamery jest połączeniem kilku innych kamer lub w inny sposób ma zależności sprzętowe, które uniemożliwiają jednoczesne użycie. Jeśli nie ma żadnych 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 z kamerą jest otwarte.

Ciągi wskazane w tym polu nie zostaną usunięte przez serwis aparatu i muszą pozostać, dopóki urządzenie jest podłączone.

Informacje o wersji (na podstawie modułu_kamery_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 lub niższa:

Nieważny. Można założyć, że ma wartość NULL. Nie czytaj tego pola.

CAMERA_MODULE_API_VERSION_2_4 lub nowsza:

Zawsze aktualne.

Definicja w linii 404 pliku kamera_common.h .

size_t długość_urządzenia będącego w konflikcie

Długość tablicy podana w polu konfliktowym_devices.

Informacje o wersji (na podstawie modułu_kamery_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 lub niższa:

Nieważny. Można założyć, że wynosi 0. Nie czytaj tego pola.

CAMERA_MODULE_API_VERSION_2_4 lub nowsza:

Zawsze aktualne.

Definicja w linii 419 pliku kamera_common.h .

uint32_t wersja_urządzenia

Wartość Camera_device_t.common.version.

Informacje o wersji (na podstawie modułu_kamery_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Nieważny. 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 aktualne

Definicja w linii 219 pliku kamera_common.h .

zwrócony w stronę

Kierunek, w który skierowana jest kamera. Zobacz system/core/include/system/camera.h, aby zapoznać się z definicjami skierowanymi w stronę kamery.

Informacje o wersji (na podstawie modułu_kamery_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 lub niższa:

Powinno być CAMERA_FACING_BACK lub CAMERA_FACING_FRONT.

CAMERA_MODULE_API_VERSION_2_4 lub nowsza:

Powinna to być CAMERA_FACING_BACK, CAMERA_FACING_FRONT lub CAMERA_FACING_EXTERNAL.

Definicja w linii 177 pliku kamera_common.h .

orientacja wewnętrzna

Orientacja obrazu z kamery. Wartość to kąt, o jaki należy obrócić obraz z kamery w kierunku zgodnym z ruchem wskazówek zegara, aby był prawidłowo wyświetlany na wyświetlaczu w swojej naturalnej orientacji. Powinna wynosić 0, 90, 180 lub 270.

Załóżmy na przykład, że urządzenie ma naturalnie wysoki ekran. Tylny czujnik kamery jest montowany w orientacji poziomej. Patrzysz na ekran. Jeśli górna część czujnika kamery jest wyrównana z prawą krawędzią ekranu w naturalnej orientacji, wartość powinna wynosić 90. Jeśli górna część czujnika kamery skierowanej do przodu jest wyrównana z prawą krawędzią ekranu, wartość powinna być 270.

Informacje o wersji (na podstawie modułu_kamery_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 lub niższa:

Obowiązuje we wszystkich wersjach modułu kamery .

CAMERA_MODULE_API_VERSION_2_4 lub nowsza:

Obowiązuje, jeśli kamera jest skierowana w stronę CAMERA_FACING_BACK lub CAMERA_FACING_FRONT, nie obowiązuje, jeśli kamera jest skierowana w stronę CAMERA_FACING_EXTERNAL.

Definicja w linii 202 pliku kamera_common.h .

int koszt_zasobu

Całkowity „koszt” zasobu korzystania z tej kamery, reprezentowany jako wartość całkowita z zakresu [0, 100], gdzie 100 oznacza całkowite wykorzystanie współdzielonego zasobu, który stanowi ograniczające wąskie gardło podsystemu kamery. Może to być bardzo przybliżony szacunek i służy jako wskazówka dla usługi aparatu w celu ustalenia, kiedy uniemożliwić wielu aplikacjom jednoczesne otwieranie różnych kamer reklamowanych przez usługę aparatu.

Usługa kamery musi mieć możliwość jednoczesnego otwierania i korzystania z dowolnej kombinacji kamer udostępnionych przez warstwę HAL, gdzie suma kosztów zasobów tych kamer wynosi <= 100. Aby określić koszt, należy założyć, że każde urządzenie z kamerą jest skonfigurowane i działa przy maksymalnie zasobożernych ustawieniach szybkości klatek i rozmiaru strumienia dostępnych w ustawieniach konfiguracyjnych udostępnianych dla tego urządzenia za pośrednictwem metadanych kamery.

Usługa kamery może nadal próbować jednocześnie otwierać kombinacje kamer o całkowitym koszcie zasobów > 100. Może się to udać lub zakończyć niepowodzeniem. Jeśli to się powiedzie, kombinacje konfiguracji, które nie są obsługiwane ze względu na ograniczenia zasobów wynikające z posiadania wielu otwartych urządzeń, powinny zakończyć się niepowodzeniem podczas wywołań konfiguracyjnych. Jeśli całkowity koszt zasobów wynosi <= 100, otwieranie i konfigurowanie nigdy nie powinno zakończyć się niepowodzeniem w przypadku jakichkolwiek ustawień konfiguracji strumienia lub innych funkcji urządzenia, które normalnie byłyby skuteczne w przypadku urządzenia, gdy jest to jedyne otwarte urządzenie z kamerą.

To pole będzie używane do określenia, czy aplikacje działające w tle mogą używać tego aparatu, podczas gdy inne aplikacje korzystają z innego aparatu. Uwaga: usługa aparatu nigdy nie pozwoli wielu aplikacjom na jednoczesne otwieranie tego samego urządzenia z kamerą.

Przykładowe przypadki użycia:

Były. 1: Urządzenie z kamerą 0 = Kamera tylna Urządzenie z kamerą 1 = Kamera przednia

  • Korzystanie z obu kamer powoduje duże spowolnienie liczby klatek na sekundę ze względu na ograniczoną przepustowość dostawcy usług internetowych.

Konfiguracja:

Urządzenie kamery 0 — koszt_zasobu = 51 urządzeń_konfliktowych = null Urządzenie kamery 1 — koszt_zasobu = 51 urządzeń_konfliktu = null

Wynik:

Ponieważ suma kosztów zasobów wynosi > 100, jeśli aplikacja o wyższym priorytecie ma otwarte którekolwiek urządzenie, usługa kamery nie zezwoli żadnym aplikacjom o niższym priorytecie na otwarcie żadnego urządzenia. Jeśli aplikacja o niższym priorytecie korzysta z urządzenia, które następnie próbuje otworzyć aplikacja o wyższym priorytecie, aplikacja o niższym priorytecie będzie zmuszona odłączyć to urządzenie.

Jeśli wybierze aplikację o najwyższym priorytecie, może nadal próbować otworzyć oba urządzenia (ponieważ urządzenia te nie są wymienione jako powodujące konflikt w polach konfliktowych_devices), ale użycie tych urządzeń może zakończyć się niepowodzeniem podczas otwierania lub konfigurowania wywołań.

Były. 2: Urządzenie z kamerą 0 = Lewa tylna kamera Urządzenie z kamerą 1 = Prawa tylna kamera Urządzenie z kamerą 2 = Połączona kamera stereo wykorzystująca czujniki prawej i lewej tylnej kamery używane przez urządzenia 0 i 1 Kamera 3 = Kamera przednia

  • Ze względu na ograniczenia sprzętowe jednocześnie mogą być otwarte maksymalnie dwie kamery. Połączonej kamery stereoskopowej nie można nigdy używać jednocześnie z którymkolwiek z dwóch tylnych aparatów (urządzenie 0, 1) i zazwyczaj wymaga zbyt dużej przepustowości, aby można było jej używać w tym samym czasie co przednia kamera (urządzenie 3).

Konfiguracja:

Urządzenie kamery 0 - koszt_zasobu = 50 urządzeń_konfliktowych = { 2 } Urządzenie kamery 1 - koszt_zasobu = 50 urządzeń_konfliktu = { 2 } Urządzenie kamery 2 - koszt_zasobu = 100 urządzeń_konfliktu = { 0, 1 } Urządzenie kamery 3 - koszt_zasobu = 50 urządzeń_konfliktu = null

Wynik:

Na podstawie pól konfliktowych_devices usługa kamery gwarantuje, że następujące zestawy otwartych urządzeń nigdy nie będą dozwolone: ​​{ 1, 2 }, { 0, 2 }.

Z pól Resource_cost wynika, że ​​jeśli aplikacja działająca na pierwszym planie korzysta z kamery 0, aplikacja działająca w tle będzie mogła otworzyć kamerę 1 lub 3 (ale będzie zmuszona je ponownie rozłączyć, jeśli aplikacja na pierwszym planie otworzy inne urządzenie).

Aplikacja o najwyższym priorytecie może w dalszym ciągu podejmować próbę jednoczesnego otwarcia urządzeń 0, 2 i 3, ale warstwa HAL może nie powieść się podczas otwierania lub konfigurowania wywołań dla tej kombinacji.

Były. 3: Urządzenie z kamerą 0 = Kamera tylna Urządzenie z kamerą 1 = Kamera z przodu Urządzenie z kamerą 2 = Kamera przednia o niskim poborze mocy, która wykorzystuje ten sam czujnik co urządzenie 1, ale udostępnia tylko rozdzielczości strumienia obrazu, których można używać w trybie niskiego zużycia energii

  • Korzystanie z obu przednich kamer (urządzenie 1, 2) jednocześnie jest niemożliwe ze względu na wspólny fizyczny czujnik. Korzystanie z tylnej kamery i przedniej kamery o „dużej mocy” (urządzenie 1) może być niemożliwe w przypadku niektórych konfiguracji strumieniowych ze względu na ograniczenia sprzętowe, ale zawsze można użyć opcji przedniej kamery „niskiej mocy”, ponieważ ma ona specjalny, dedykowany sprzęt.

    Konfiguracja:

    Urządzenie kamery 0 — koszt_zasobu = 100 urządzeń_konfliktu = null Urządzenie kamery 1 — koszt_zasobu = 100 urządzeń_konfliktu = { 2 } Urządzenie kamery 2 — koszt_zasobu = 0 urządzeń_konfliktu = { 1} Wynik:

    Na podstawie pól konfliktowych_devices usługa kamery 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 korzysta z urządzenia 1 lub 2, aplikacja działająca w tle o niskim priorytecie może otworzyć urządzenie 2 (ale będzie zmuszona je odłączyć, jeśli aplikacja o wyższym priorytecie otworzy następnie urządzenie 1 lub 2).

Informacje o wersji (na podstawie modułu_kamery_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 lub niższa:

Nieważny. Można przyjąć, że wynosi 100. Nie czytaj tego pola.

CAMERA_MODULE_API_VERSION_2_4 lub nowsza:

Zawsze aktualne.

Definicja w linii 376 pliku kamera_common.h .

const metadata_kamery_t * charakterystyka_statycznej_kamery

Stała charakterystyka kamery, która obejmuje wszystkie statyczne metadane kamery określone w pliku system/media/camera/docs/docs.html. Powinien to być posortowany bufor metadanych i nie może być modyfikowany ani zwalniany przez osobę wywołującą. Wskaźnik powinien pozostać ważny przez cały okres istnienia modułu kamery, a zawarte w nim wartości nie mogą się zmienić po zwróceniu przez funkcję get_camera_info().

Informacje o wersji (na podstawie modułu_kamery_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Nieważny. Dodatkowe funkcje nie są dostępne. Nie czytaj tego pola.

CAMERA_MODULE_API_VERSION_2_0 lub nowsza:

Prawidłowe, jeśli wersja_urządzenia >= CAMERA_DEVICE_API_VERSION_2_0. Nie czytaj inaczej.

Definicja w linii 241 pliku kamera_common.h .


Dokumentacja tej struktury została wygenerowana z następującego pliku: