
从Android13开始,Android支持为每个摄像头的output stream设置时间戳基数,本文介绍了如何使用它
Android13在OutputConfiguration类中添加了以下常量,以表示不同的时间戳基数
常量 | 值 | 描述 |
|---|---|---|
TIMESTAMP_BASE_CHOREOGRAPHER_SYNCED | 4 | 时间戳与choreographer同步 |
TIMESTAMP_BASE_DEFAULT | 0 | 默认时间基 |
TIMESTAMP_BASE_MONOTONIC | 2 | 时间基大致与SystemClock.uptimeMillis()相同 |
TIMESTAMP_BASE_REALTIME | 3 | 时间基大致与SystemClock.elapsedRealtime()相同 |
TIMESTAMP_BASE_SENSOR | 1 | CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE |
TIMESTAMP_BASE_CHOREOGRAPHER_SYNCED
输出图像的时间戳被来自显示子系统的choreographer脉冲覆盖,以更平滑的显示相机帧
TIMESTAMP_BASE_DEFAULT
相机设备基于Surface的特性来决定具体使用哪种时间基
TIMESTAMP_BASE_MONOTONIC
输出图像的时间戳是单调递增的,与SystemClock.uptimeMillis()大致处于相同的时基,具有此时基的时间戳可直接用于视频录制中的音频-视频同步
CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE是REALTIME时,则具有此时基的时间戳是不能和CaptureResult的sensor timestamp、CameraCaptureSession.CaptureCallback#onCaptureStarted携带的timestamp进行匹配的
TIMESTAMP_BASE_REALTIME
输出图像的时间戳与SystemClock.elapsedRealtime()大致处于相同的时基,具有此时基的时间戳不能直接用于视频录制中的音频-视频同步
CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE是UNKNOWN时,则具有此时基的时间戳是不能和CaptureResult的sensor timestamp、CameraCaptureSession.CaptureCallback#onCaptureStarted携带的timestamp进行匹配的
如果在仅支持TIMESTAMP_SOURCE_UNKNOWN的设备上使用此时间基,时间戳的准确性是无法保证的。因为不能保证足够精确,所以不能用于将图像数据与惯性传感器的输出进行融合,以实现图像稳定或增强现实等功能
TIMESTAMP_BASE_SENSOR
输出图像的时间戳位于CameraCharacteristics.SENSOR_INFO_TIMESTAMP_SOURCE指定的时基中。应用程序可以使用该时间戳查找特定输出图像的相应结果元数据
接口
Android 13在OutputConfiguration类中添加了两个API来设置和获取当前OutputConfiguration的时间戳基
set接口
/**
* 设置timestamp base
* 时间基描述与CameraCharacteristics.SENSOR_INFO_TIMESTAMP_SOURCE有关
* 如果该方法未调用,默认为TIMESTAMP_BASE_DEFAULT
**/
public void setTimestampBase (int timestampBase)get接口
/**
* 获取当前时间基
* 如果setTimestampBase(int)未调用,则返回TIMESTAMP_BASE_DEFAULT
**/
public int getTimestampBase ()示例
TIMESTAMP_BASE_DEFAULT
当我们给预览的OutputConfiguration的时间基设置为TIMESTAMP_BASE_DEFAULT时,从SurfaceTexture获取的时间戳能匹配从Camera的onCaptureStarted携带的时间戳

TIMESTAMP_BASE_CHOREOGRAPHER_SYNCED
当我们给预览的OutputConfiguration的时间基设置为TIMESTAMP_BASE_CHOREOGRAPHER_SYNCED时,从SurfaceTexture获取的时间戳不能匹配从Camera的onCaptureStarted携带的时间戳

英文原文:
https://android-camera.com/android-camera-api/android13-camera-new-feature/camera-timestamp-base-support.html
~~END~~