Metadatenunterstützung
Zum Speichern von Rohbilddateien durch das Android-Framework sind umfangreiche Metadaten zu den Eigenschaften des Sensors erforderlich. Dazu gehören Informationen wie Farbräume und Objektivschattenfunktionen.
Die meisten dieser Informationen sind eine statische Eigenschaft des Kamera-Subsystems und können daher abgefragt werden, bevor Ausgabepipelines konfiguriert oder Anfragen gesendet werden. Die neuen Kamera-APIs erweitern die Informationen, die mit der Methode getCameraInfo()
bereitgestellt werden, erheblich, um diese Informationen an die App weiterzugeben.
Außerdem erfordert die manuelle Steuerung des Kamera-Subsystems Feedback von den verschiedenen Geräten zu ihrem aktuellen Status und zu den tatsächlichen Parametern, die bei der Aufnahme eines bestimmten Frames verwendet werden. Die tatsächlichen Werte der Einstellungen (Belichtungszeit, Framedauer und Empfindlichkeit), die von der Hardware verwendet werden, müssen in den Ausgabemetadaten enthalten sein. Dies ist wichtig, damit Apps wissen, wann eine Begrenzung oder Rundung stattgefunden hat, und damit die App die tatsächlichen Einstellungen für die Bildaufnahme kompensieren kann.
Wenn eine App beispielsweise in einer Anfrage die Framedauer auf „0“ festlegt, muss die HAL die Framedauer auf die tatsächliche Mindestdauer für diese Anfrage begrenzen und diese begrenzte Mindestdauer in den Metadaten der Ausgabeergebnisse angeben.
Wenn also eine App einen benutzerdefinierten 3A-Ablauf implementieren muss (z. B. um eine korrekte Belichtung für einen HDR-Burst zu erzielen), muss sie die Einstellungen kennen, die zum Erfassen der letzten Ergebnisse verwendet wurden, um die Einstellungen für die nächste Anfrage zu aktualisieren. Daher fügt die neue Kamera-API jedem aufgenommenen Frame eine große Menge an dynamischen Metadaten hinzu. Dazu gehören die angeforderten und tatsächlich verwendeten Parameter für die Aufnahme sowie zusätzliche Metadaten pro Frame, z. B. Zeitstempel und die Ausgabe des Statistikgenerators.
Einstellungsspezifische Steuerung
Bei den meisten Einstellungen wird davon ausgegangen, dass sie für jeden Frame geändert werden können, ohne dass der Ausgabe-Frame-Stream erheblich ruckelt oder verzögert wird. Idealerweise sollte die Ausgabeframerate ausschließlich über das Feld „Framedauer“ der Aufnahmeanfrage gesteuert werden und unabhängig von Änderungen an der Konfiguration der Verarbeitungsblöcke sein. In der Praxis ist bekannt, dass sich einige Steuerelemente nur langsam ändern lassen. Dazu gehören die Ausgabeauflösung und das Ausgabeformat der Kamerapipeline sowie Steuerelemente, die sich auf physische Geräte auswirken, z. B. die Fokusdistanz des Objektivs. Die genauen Anforderungen für die einzelnen Steuerelemente werden später erläutert.
Unterstützung von Rohsensordaten
Zusätzlich zu den von der alten API unterstützten Pixelformaten muss die neue API auch Rohsensordaten (Bayer RAW) unterstützen, sowohl für erweiterte Kamera-Apps als auch für die Unterstützung von Rohbilddateien.