VDEC功能
功能及约束说明
实现视频的解码。
- VDEC支持两种输入格式:
H264 bp/mp/hp level5.1 yuv420sp编码的码流。
H265 8/10bit level5.1 yuv420sp编码的码流。
- VDEC支持的分辨率
最大分辨率4096 * 4096,最小分辨率128 * 128。
- VDEC输出格式为:yuv420sp压缩后的HFBC数据。
HFBC,是VDEC输出的一种压缩图像格式,使用这种方式压缩图像,VDEC的处理性能更优。
- 若码流中有坏帧、缺帧等情况,解码器VDEC可能会丢帧。
- 通过隔行扫描方式编码出来的码流,VDEC不支持解码。
- VDEC比较特殊,由于当前内部不是单例模式,所以其对外提供C接口函数与其他不同。
性能指标说明
场景举例 |
总帧率 |
---|---|
1080p n路(n>=2且n<=16) |
480fps |
1080p *1路 |
240fps |
4k * n路(n>=2且n<=16) |
120fps |
4k * 1路 |
60fps |
如果用户使用Matrix模块编排应用的流程,那么在使用DVPP对多路(Channel)输入的视频流进行解码时,由于视频流中每帧的数据之间有关联关系,因此为保证同一个视频流中每帧数据的顺序,要求每个VDEC固定对应一路视频流,否则DVPP中的VDEC无法解码视频流。
- 多路视频流解码时,为保证视频流中每帧数据的顺序,可能存在多种实现方式,推荐使用以下配置:
- 在Graph配置文件中,在graphs配置段内,配置多个进行视频解码的Engine,一路视频流对应一个Engine。
- 在Graph配置文件中,在视频解码的engine配置段内,将thread_num配置为1,一个Engine对应一个线程。
- 关于Matrix的功能及其Graph配置文件的配置,请参见《 Matrix API参考》。
- 一个Graph(一个进程)最大可以对应16路的视频流。
- 如果在多路视频流解码时,在Graph配置文件中,仅配置一个视频解码的Engine,并将thread_num配置为n(n的值就是视频流channel的数量),在不同时刻,在Matrix中各路视频流可能会在不同的Thread处理,但是在DVPP中,一个VDEC需要固定一路视频流数据,一路视频流数据对应一个线程,这样可能导致VDEC解码时无法保证视频流中每帧数据的顺序,如图所示。
图1 VDEC处理流程