Kamera HAL

Die Kamera-Hardware-Abstraktionsschicht (HAL) von Android verbindet die höhere Ebene Kamera-Framework-APIs in android.hardware.camera2 an den zugrunde liegenden Kameratreiber und an die Hardware an. Ab Android 13: Kamera-HAL-Schnittstelle bei der Entwicklung mit AIDL. Einführung von Android 8.0 Höhen, Wechsel der Camera HAL API zu einer stabilen Schnittstelle, die durch die HAL Interface Description Language (HIDL) definiert wird. Wenn Sie bereits ein Kamera-HAL-Modul und einen Kameratreiber für Android 7.0 entwickelt haben und geringer sind, sollten Sie sich in der Kamera-Pipeline zu ändern.

AIDL-Kamera HAL

Bei Geräten mit Android 13 oder höher hat die Kamera unterstützt AIDL-Kamera-HALs. Auch die Kamera unterstützt HIDL-Kamera-HALs. Die neuen Kamerafunktionen Android 13 oder höher ist nur über die HAL-Schnittstellen für AIDL-Kamera Um diese Funktionen auf Geräten zu implementieren, die ein Upgrade auf Android 13 oder höher müssen Gerätehersteller ihren HAL-Prozess von HIDL-Kameraschnittstellen auf die AIDL-Kamera umstellen Schnittstellen.

Weitere Informationen zu den Vorteilen von AIDL finden Sie unter AIDL für HALs

AIDL-Kamera-HAL implementieren

Eine Referenzimplementierung eines AIDL-Kamera-HAL finden Sie unter hardware/google/camera/common/hal/aidl_service/

Die HAL-Spezifikationen der AIDL-Kamera finden Sie an folgenden Stellen:

Bei Geräten, die zu AIDL migrieren, müssen Gerätehersteller möglicherweise die Android SELinux-Richtlinie (sepolicy) und RC-Dateien abhängig vom Code Struktur.

AIDL-Kamera-HAL validieren

Prüfen Sie zum Testen der HAL-Implementierung Ihrer AIDL-Kamera, ob das Gerät alle CTS- und VTS-Tests AIDL VTS wird mit Android 13 eingeführt Test, VtsAidlHalCameraProvider_TargetTest.cpp

Kamera-HAL3-Funktionen

Ziel der Neugestaltung der Android Camera API ist es, können Apps das Kamerasubsystem von Android-Geräten steuern, um sie effizienter und einfacher zu verwalten. Die zusätzliche ist es einfacher, hochwertige Kamera-Apps auf Android-Geräten zu entwickeln. Geräte, die produktübergreifend zuverlässig funktionieren und gleichzeitig gerätespezifische Algorithmen verwenden, um die Qualität und die Leistung.

In Version 3 des Kamera-Subsystems sind die Betriebsmodi Einheitliche Ansicht erstellen, mit der jeder der vorherigen Modi implementiert werden kann und einige andere, z. B. den Burst-Modus. Dies führt zu einer besseren Steuerung der Fokus und Belichtung sowie mehr Nachbearbeitung wie Rauschunterdrückung, Kontrast und Schärfen verwenden. Außerdem erleichtert diese vereinfachte Ansicht die verschiedenen Kamerafunktionen nutzen können.

Die API modelliert das Kamerasubsystem als Pipeline, die eingehende Anforderungen für Frame Captures auf 1:1-Basis in Frames. Die Ersuchen alle Konfigurationsinformationen zur Erfassung und Verarbeitung einer Frame. Dazu gehören Auflösung und Pixelformat, manueller Sensor, Objektiv und Blitz Kontrolle; 3A-Betriebsmodi; RAW->YUV-Verarbeitungskontrolle; Erstellung von Statistiken und so weiter.

In einfachen Worten fordert das Anwendungs-Framework einen Frame von der Kamera an. und das Kamerasubsystem gibt die Ergebnisse an einen Ausgabestream zurück. In Metadaten, die Informationen wie Farbräume und Linse enthalten, für jeden Satz von Ergebnissen eine Schattierung generiert. Bei der Kameraversion 3 als Pipeline zum Einwegstream der Kameraversion 1. Jede Erfassung wird konvertiert. in ein vom Sensor erfasstes Bild umwandeln, das in folgende Elemente verarbeitet wird:

  • Ein Ergebnisobjekt mit Metadaten zur Aufnahme.
  • Ein bis N Puffer von Bilddaten, jeweils in einer eigenen Zieloberfläche.

Die möglichen Ausgabeoberflächen sind vorkonfiguriert:

  • Jede Oberfläche ist ein Ziel für einen Strom von Bildpuffern einer festen Problembehebung.
  • Nur wenige Oberflächen können gleichzeitig als Ausgaben konfiguriert werden (~3).

Eine Anfrage enthält alle gewünschten Erfassungseinstellungen und die Liste der Ausgabe Oberflächen, in die Bildzwischenspeicher für diese Anfrage verschoben werden sollen (aus der Gesamtzahl konfigurierten Satz). Anfragen können in einem Schritt (mit capture()) oder kann unbegrenzt wiederholt werden (mit setRepeatingRequest()). Aufnahmen Vorrang vor wiederkehrenden Anfragen.

Kameradatenmodell

Abbildung 1: Hauptbetriebsmodell der Kamera

Kamera-HAL1 – Übersicht

Version 1 des Kamera-Subsystems wurde als Blackbox mit und die folgenden drei Betriebsmodi:

  • Vorschau
  • Videoaufnahme
  • Foto aufnehmen

Die Funktionen der einzelnen Modi unterscheiden sich geringfügig und überschneiden sich. Das wars neue Funktionen wie den Burst-Modus, der zwischen zwei der die Betriebsmodi.

Kamera-Blockdiagramm

Abbildung 2: Kamerakomponenten

Android 7.0 unterstützt weiterhin Kamera-HAL1, da viele Geräte immer noch . Außerdem unterstützt der Android-Kameradienst die Implementierung beider HALs (1 und 3). Diese Funktion ist nützlich, wenn Sie ein weniger leistungsfähiges Kamera mit Kamera HAL1 und einer moderneren Rückkamera mit Kamera HAL3.

Es gibt ein einzelnes Kamera-HAL-Modul (mit eigenem Version Nummer). Hier sind mehrere unabhängige Kamerageräte aufgeführt, die jeweils mit eine eigene Versionsnummer haben. Für die Unterstützung ist das Kameramodul 2 oder höher erforderlich Geräte mit Version 2 oder höher. Diese Kameramodule können mehrere Versionen verfügbar sind (das meinen wir, wenn wir sagen, dass Android die Implementierung HALs.