| <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> |