camera_info-Strukturreferenz

camera_info-Strukturreferenz

#include < camera_common.h >

Datenfelder

int gegenüber
int Orientierung
uint32_t Geräteversion
const camera_metadata_t * static_camera_characteristics
int Ressourcenkosten
char ** widersprüchliche_Geräte
size_t widersprüchliche_Gerätelänge

detaillierte Beschreibung

Definition in Zeile 161 der Datei camera_common.h .

Felddokumentation

char** widersprüchliche_Geräte

Ein Array von Kamerageräte-IDs, dargestellt als NULL-terminierte Zeichenfolgen, die andere Geräte angeben, die nicht gleichzeitig geöffnet werden können, während dieses Kameragerät verwendet wird.

Dieses Feld soll verwendet werden, um anzugeben, dass dieses Kameragerät aus mehreren anderen Kamerageräten besteht oder anderweitig Hardwareabhängigkeiten aufweist, die eine gleichzeitige Verwendung verhindern. Wenn keine Abhängigkeiten bestehen, kann in diesem Feld ein NULL-Wert zurückgegeben werden, um dies anzuzeigen.

Der Kameradienst öffnet niemals gleichzeitig eines der Geräte in dieser Liste, während dieses Kameragerät geöffnet ist.

Die Zeichenfolgen, auf die in diesem Feld verwiesen wird, werden vom Kameradienst nicht bereinigt und müssen bestehen bleiben, solange dieses Gerät angeschlossen ist.

Versionsinformationen (basierend auf camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 oder niedriger:

Ungültig. Kann als NULL angenommen werden. Lesen Sie dieses Feld nicht.

CAMERA_MODULE_API_VERSION_2_4 oder höher:

Immer gültig.

Definition in Zeile 404 der Datei camera_common.h .

size_t widersprüchliche_Gerätelänge

Die Länge des im Feld „conflicting_devices“ angegebenen Arrays.

Versionsinformationen (basierend auf camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 oder niedriger:

Ungültig. Kann als 0 angenommen werden. Dieses Feld nicht lesen.

CAMERA_MODULE_API_VERSION_2_4 oder höher:

Immer gültig.

Definition in Zeile 419 der Datei camera_common.h .

uint32_t Geräteversion

Der Wert von camera_device_t.common.version.

Versionsinformationen (basierend auf camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Ungültig. Es kann davon ausgegangen werden, dass es sich um CAMERA_DEVICE_API_VERSION_1_0 handelt. Lesen Sie dieses Feld nicht.

CAMERA_MODULE_API_VERSION_2_0 oder höher:

Immer gültig

Definition in Zeile 219 der Datei camera_common.h .

nach innen gerichtet

Die Richtung, in die die Kamera zeigt. Definitionen zur Kameraausrichtung finden Sie unter system/core/include/system/camera.h.

Versionsinformationen (basierend auf camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 oder niedriger:

Es sollte CAMERA_FACING_BACK oder CAMERA_FACING_FRONT sein.

CAMERA_MODULE_API_VERSION_2_4 oder höher:

Es sollte CAMERA_FACING_BACK, CAMERA_FACING_FRONT oder CAMERA_FACING_EXTERNAL sein.

Definition in Zeile 177 der Datei camera_common.h .

int Orientierung

Die Ausrichtung des Kamerabildes. Der Wert ist der Winkel, um den das Kamerabild im Uhrzeigersinn gedreht werden muss, damit es in seiner natürlichen Ausrichtung korrekt auf dem Display angezeigt wird. Es sollte 0, 90, 180 oder 270 sein.

Angenommen, ein Gerät verfügt über einen von Natur aus hohen Bildschirm. Der nach hinten gerichtete Kamerasensor ist im Querformat montiert. Du schaust auf den Bildschirm. Wenn die Oberseite des Kamerasensors in natürlicher Ausrichtung am rechten Bildschirmrand ausgerichtet ist, sollte der Wert 90 betragen. Wenn die Oberseite eines nach vorne gerichteten Kamerasensors am rechten Bildschirmrand ausgerichtet ist, sollte der Wert 90 betragen 270 sein.

Versionsinformationen (basierend auf camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 oder niedriger:

Gültig in allen camera_module- Versionen.

CAMERA_MODULE_API_VERSION_2_4 oder höher:

Gültig, wenn die Kameraausrichtung CAMERA_FACING_BACK oder CAMERA_FACING_FRONT ist, nicht gültig, wenn die Kameraausrichtung CAMERA_FACING_EXTERNAL ist.

Definition in Zeile 202 der Datei camera_common.h .

int resources_cost

Die Gesamtressourcenkosten für die Verwendung dieser Kamera, dargestellt als ganzzahliger Wert im Bereich [0, 100], wobei 100 die Gesamtnutzung der gemeinsam genutzten Ressource darstellt, die den begrenzenden Engpass des Kamerasubsystems darstellt. Dies kann eine sehr grobe Schätzung sein und wird als Hinweis für den Kameradienst verwendet, um zu bestimmen, wann mehreren Anwendungen das gleichzeitige Öffnen verschiedener vom Kameradienst angekündigter Kameras untersagt werden soll.

Der Kameradienst muss in der Lage sein, jede Kombination von Kamerageräten, die von der HAL bereitgestellt werden, gleichzeitig zu öffnen und zu verwenden, wenn die Summe der Ressourcenkosten dieser Kameras <= 100 beträgt. Zur Ermittlung der Kosten muss davon ausgegangen werden, dass jedes Kameragerät konfiguriert und betriebsbereit ist mit den maximal ressourcenintensiven Einstellungen für Framerate und Streamgröße, die in den Konfigurationseinstellungen verfügbar sind, die für dieses Gerät über die Kamerametadaten verfügbar gemacht werden.

Der Kameradienst versucht möglicherweise immer noch, Kombinationen von Kamerageräten gleichzeitig zu öffnen, deren Gesamtressourcenkosten > 100 sind. Dies kann erfolgreich sein oder fehlschlagen. Wenn dies gelingt, sollten Konfigurationskombinationen, die aufgrund von Ressourceneinschränkungen aufgrund mehrerer geöffneter Geräte nicht unterstützt werden, während der Konfigurationsaufrufe fehlschlagen. Wenn die Gesamtressourcenkosten <= 100 sind, sollte das Öffnen und Konfigurieren niemals für Stream-Konfigurationseinstellungen oder andere Gerätefunktionen fehlschlagen, die normalerweise für ein Gerät erfolgreich wären, wenn es das einzige geöffnete Kameragerät ist.

Dieses Feld wird verwendet, um zu bestimmen, ob Hintergrundanwendungen dieses Kameragerät verwenden dürfen, während andere Anwendungen andere Kamerageräte verwenden. Hinweis: Der Kameradienst wird niemals zulassen, dass mehrere Anwendungen gleichzeitig dasselbe Kameragerät öffnen.

Beispielhafte Anwendungsfälle:

Ex. 1: Kameragerät 0 = Rückkamera, Kameragerät 1 = Vorderkamera

  • Die Verwendung beider Kamerageräte führt aufgrund der begrenzten ISP-Bandbreite zu einer starken Verlangsamung der Bildrate.

Aufbau:

Kameragerät 0 – Resource_cost = 51conflicting_devices = null Kameragerät 1 – resources_cost = 51conflict_devices = null

Ergebnis:

Da die Summe der Ressourcenkosten > 100 ist, erlaubt der Kameradienst keinen Anwendungen mit niedrigerer Priorität, eines der Geräte zu öffnen, wenn eine Anwendung mit höherer Priorität eines der Geräte geöffnet hat. Wenn eine Anwendung mit niedrigerer Priorität ein Gerät verwendet, das anschließend von einer Anwendung mit höherer Priorität zu öffnen versucht wird, wird die Anwendung mit niedrigerer Priorität gezwungen, die Verbindung zum Gerät zu trennen.

Wenn die Anwendung mit der höchsten Priorität dies auswählt, versucht sie möglicherweise immer noch, beide Geräte zu öffnen (da diese Geräte in den Feldern „conflicting_devices“ nicht als widersprüchlich aufgeführt sind), aber die Verwendung dieser Geräte kann bei den Aufrufen „open“ oder „configure“ fehlschlagen.

Ex. 2: Kameragerät 0 = Linke hintere Kamera, Kameragerät 1 = Rechte hintere Kamera, Kameragerät 2 = Kombinierte Stereokamera, die sowohl die rechten als auch die linken hinteren Kamerasensoren verwendet, die von den Geräten 0 und 1 verwendet werden. Kameragerät 3 = Vordere Kamera

  • Aufgrund von Hardwarebeschränkungen können bis zu zwei Kameras gleichzeitig geöffnet sein. Die kombinierte Stereokamera darf niemals gleichzeitig mit einem der beiden Rückkamerageräte (Gerät 0, 1) verwendet werden und erfordert normalerweise zu viel Bandbreite, um sie gleichzeitig mit der Frontkamera (Gerät 3) zu verwenden.

Aufbau:

Kameragerät 0 – Resource_cost = 50 Conflicting_devices = { 2 } Kameragerät 1 – Resource_cost = 50 Conflicting_devices = { 2 } Kameragerät 2 – Resource_cost = 100 Conflicting_devices = { 0, 1 } Kameragerät 3 – Resource_cost = 50 Conflict_devices = null

Ergebnis:

Basierend auf den Feldern „conflicting_devices“ garantiert der Kameradienst, dass die folgenden Sätze offener Geräte niemals zugelassen werden: { 1, 2 }, { 0, 2 }.

Wenn eine Vordergrundanwendung mit hoher Priorität Kameragerät 0 verwendet, wäre es basierend auf den Feldern „resource_cost“ einer Hintergrundanwendung gestattet, Kameragerät 1 oder 3 zu öffnen (sie wäre jedoch gezwungen, die Verbindung wieder zu trennen, wenn die Vordergrundanwendung ein anderes Gerät öffnete).

Die Anwendung mit der höchsten Priorität versucht möglicherweise immer noch, die Geräte 0, 2 und 3 gleichzeitig zu öffnen, aber die HAL schlägt möglicherweise bei Öffnungs- oder Konfigurationsaufrufen für diese Kombination fehl.

Ex. 3: Kameragerät 0 = Rückkamera, Kameragerät 1 = Vorderkamera, Kameragerät 2 = Frontkamera mit geringem Stromverbrauch, die denselben Sensor wie Gerät 1 verwendet, aber nur Bildstreamauflösungen bereitstellt, die im Energiesparmodus verwendet werden können

  • Die gleichzeitige Nutzung beider Frontkameras (Gerät 1, 2) ist aufgrund eines gemeinsamen physischen Sensors nicht möglich. Die Verwendung der Rück- und „Hochleistungs“-Frontkamera (Gerät 1) kann bei einigen Stream-Konfigurationen aufgrund von Hardwareeinschränkungen möglicherweise nicht möglich sein, aber die „Low-Power“-Frontkameraoption kann immer verwendet werden, da sie über spezielle dedizierte Hardware verfügt.

    Aufbau:

    Kameragerät 0 – resources_cost = 100 contexting_devices = null Kameragerät 1 – resources_cost = 100 contexting_devices = { 2 } Kameragerät 2 – resources_cost = 0 contexting_devices = { 1 } Ergebnis:

    Basierend auf den Feldern „conflicting_devices“ garantiert der Kameradienst, dass die folgenden Sätze offener Geräte niemals zugelassen werden: { 1, 2 }.

    Basierend auf den Feldern „resource_cost“ darf nur die Anwendung mit der höchsten Priorität versuchen, Gerät 0 und 1 gleichzeitig zu öffnen. Wenn eine Anwendung mit höherer Priorität Gerät 1 oder 2 nicht verwendet, kann eine Hintergrundanwendung mit niedriger Priorität Gerät 2 öffnen (wird jedoch gezwungen, die Verbindung zu trennen, wenn anschließend eine Anwendung mit höherer Priorität Gerät 1 oder 2 öffnet).

Versionsinformationen (basierend auf camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 oder niedriger:

Ungültig. Kann als 100 angenommen werden. Dieses Feld nicht lesen.

CAMERA_MODULE_API_VERSION_2_4 oder höher:

Immer gültig.

Definition in Zeile 376 der Datei camera_common.h .

const camera_metadata_t * static_camera_characteristics

Die festen Eigenschaften der Kamera, zu denen alle statischen Kamerametadaten gehören, die in system/media/camera/docs/docs.html angegeben sind. Dies sollte ein sortierter Metadatenpuffer sein und darf vom Aufrufer nicht geändert oder freigegeben werden. Der Zeiger sollte für die gesamte Lebensdauer des Kameramoduls gültig bleiben und die darin enthaltenen Werte dürfen sich nach der Rückgabe durch get_camera_info() nicht ändern.

Versionsinformationen (basierend auf camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Ungültig. Zusätzliche Merkmale sind nicht verfügbar. Lesen Sie dieses Feld nicht.

CAMERA_MODULE_API_VERSION_2_0 oder höher:

Gültig, wenn Geräteversion >= CAMERA_DEVICE_API_VERSION_2_0. Lesen Sie nicht anders.

Definition in Zeile 241 der Datei camera_common.h .


Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert: