blob: b57f9b8888116ad5fca32700e82d3c1ac4f14979 [file] [log] [blame]
<html devsite><head>
<title>元数据和控件</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
<body>
<!--
Copyright 2017 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<h2 id="metadata">元数据支持</h2>
<p>要支持通过 Android 框架保存原始图片文件,需要具有大量有关传感器特性的元数据,包括色彩空间和镜头遮蔽功能等信息。</p>
<p>其中大多数信息是相机子系统的静态属性,因此可以在配置任何输出通道或提交任何请求之前进行查询。新的相机 API 极大地扩展了 getCameraInfo() 方法提供的信息,以便将此类信息提供给应用。</p>
<p>此外,手动控制相机子系统需要各种设备提供的有关其当前状态的反馈,以及在捕获指定帧时使用的实际参数。必须在输出元数据中包含硬件实际使用的控件(曝光时间、帧持续时间和敏感度)的实际值。这一点至关重要,这样应用就知道钳位或舍入何时发生,并且可以补偿用于图片捕获的实际设置。</p>
<p>例如,如果应用在请求中将帧持续时间设置为 0,则 HAL 必须将帧持续时间钳位到该请求的实际最小帧持续时间,并在输出结果元数据中报告这一钳位最小持续时间。</p>
<p>因此,如果应用需要实现一个自定义 3A 例程(例如,为了适当地测量 HDR 连拍),则需要知道用于捕获其收到的最新一组结果的设置,以便更新下一个请求的设置。因此,新的相机 API 会向每个捕获的帧添加大量动态元数据。这包括用于捕获的已请求参数和实际参数,以及时间戳和统计信息生成器输出等其他每帧元数据。</p>
<h2 id="per-setting">每个设置的控件</h2>
<p>对于大多数设置而言,它们应该能够随着每一个帧进行更改,而不会给输出帧流带来明显的卡顿或延迟。理想情况下,输出帧速率应该仅由捕获请求的帧持续时间字段控制,且不受处理块配置发生的任何变化影响。实际上,我们已经知道一些特定控件发生变化的速度非常缓慢;这些控件包括相机通道的输出分辨率和输出格式,以及影响镜头聚焦距离等物理设备的控件。下文稍后会详细说明每个控件集的确切要求。</p>
<h2 id="raw-sensor">原始传感器数据支持</h2>
<p>除了旧 API 支持的像素格式之外,新 API 还针对高级相机应用增加了对原始传感器数据 (Bayer RAW) 的支持要求,同时需支持原始图片文件。</p>
</body></html>