8.2. 设计概述

8.2.1. 码流发送方式

VDEC 提供的码流发送方式:

  • 按帧发送(VIDEO_MODE_FRAME):每次发送完整一帧码流到解码器,每调用一次发送接口,解码器就认为该帧码流已经结束,开始解码图像, 需保证每次调用发送接口发送的码流必须为一帧。

8.2.2. 时间戳(PTS)处理

PTS指的是当前Frame在播放时的时间点,当前Frame的PTS可以由 CVI_VENC_GetFrame 中获得,而该Frame的PTS会等于 CVI_VENC_SendStream 时,所附加的PTS。

8.2.3. 解码帧存分配方式

  • Common Mode:自动建立ION内存进行帧缓存,ION大小根据解码后Width和Height自动分配,不需要使用者管理

  • User Mode:使用者需要使用CVI_VB_CreatePool, 建立VB Pool, 在创建通道后, 透过 CVI_VDEC_AttachVbPool 绑定该VB Pool至通道

  • Private Mode:在创建通道时, 会自动建立Private VB Pool, 使用者不需自行建立VB Pool, 可以透过CVI_VDEC_CreateChn, 设定Private VB Pool的u32FrameBufSize和u32FrameBufCnt

可使用 CVI_VDEC_SetModParam 设定 enVdecVBSource 来选择解码帧存分配方式, 目前只支持COMMON 和 USER Mode。

使用User Mode时,在通道还没有detach VB Pool前, 不能直接destroy VB Pool,需要确定Decoder正确结束才可以destroy。