第27讲 Android Camera2 API CameraCaptureSession.CaptureCallback详解

本讲是Android Camera专题系列的第27讲,我们介绍Android Camera2 API专题的CameraCaptureSession.CaptureCallback详解,包括如下内容:

 

  • CameraCaptureSession.CaptureCallback详解
  • CameraCaptureSession.CaptureCallback状态转换

视频在线观看:

CameraCaptureSession.CaptureCallback详解

用于监控Camera HAL处理某个CaptureRequest的处理状态

APIDescription
onCaptureStarted(session, request, long timestamp, long frameNumber)当Camera HAL开始处理这个CaptureRequest时调用,对应这一张图像开始曝光时。或者开始reprocess这个CaptureRequest时调用。
onCaptureProgressed(session, request, CaptureResult partialResult)Camera HAL Pipeline中,部分模块完成这个CaptureRequest的处理,有Partial Result上报时调用。
onCaptureCompleted(session, request, TotalCaptureResult result)这个CaptureRequest处理完成后调用,会打包所有的partial result一起上报给App。
onCaptureBufferLost(session, request, Surface target, long frameNumber)指定Surface不会收到这个CaptureRequest处理后的Buffer了,通常原因是底层处理这路Stream发生错误或因Flush而主动丢帧。
onCaptureFailed(session, request, CaptureFailure failure)整个CaptureRequest处理失败时调用,不会有TotalCaptureResult了,onCaptureCompleted不会被调用。如果CaptureFailure#wasImageCaptured为true则表示某些路Surfaces可能会收到Image Buffer。
onCaptureSequenceAborted(session, int sequenceId)整个序列的CaptureRequest放弃继续处理时调用,通常是由于stopRepeating 或 abortCaptures调用了
onCaptureSequenceCompleted(session, int sequenceId, long frameNumber)整个序列的CaptureRequest处理完后调用,sequence id等于调用送CaptureRequest方法(ex. capture)的返回值

onCaptureStarted

App如何使用

  • 针对拍照的CaptureRequest,比较适合在这个Callback中播放拍照声音,提示用户开始拍照了

参数

  • request:正在处理的CaptureRequest实例
  • timestamp

    • Regular CaptureRequest:这一帧图像开始曝光时的时间戳
    • Reprocess CaptureRequest:输入图像开始曝光时的时间戳

    • 通常用于同步CaptureResult和Image

frameNumber

  • 这一帧的编号,与CaptureResult#getFrameNumber获取到的值一样

onCaptureProgressed

调用次数和时机

  • 处理一个CaptureRequest,可能会有多次onCaptureProgressed回调。最多回调CameraCharacteristics#REQUEST_PARTIAL_RESULT_COUNT次

不同CaptureRequest可以有不同的回调次数

可能发生在onCaptureStarted之前或之后

每次回调的partial result内容都不重复

App如何使用

  • 在性能要求高的场景中,App可以在partial result里面去查询关心的Metadata值,避免在TotalCaptureResult上来时才去查询
    • 比如需要插入到数据库的信息或后处理Image Buffer时需要的信息

CameraCaptureSession.CaptureCallback状态转换

CameraCaptureSession.CaptureCallback状态转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

deepinout_camera

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值