【Atlas500】入门到放弃(六)——【DVPP】浅析HFBC格式数据存在的意义

转载自:https://bbs.huaweicloud.com/blogs/156199, 作者:山人

【摘要】 HFBC格式是一种数据压缩格式,是VDEC解码后输出的每一帧数据的格式(Hisi Frame Buffer Compress),而对此格式进行解压缩由VPC完成,因VDEC和VPC是两个独立模块,所以用户在使用过程中可以看到HFBC数据。

HFBC格式是一种数据压缩格式,是VDEC解码后输出的每一帧数据的格式(Hisi Frame Buffer Compress),而对此格式进行解压缩由VPC完成,因VDEC和VPC是两个独立模块,所以用户在使用过程中可以看到HFBC数据。

为什么要有HFBC格式呢?

因为VDEC解码每一帧后,将此帧图像进行HFBC压缩之后再写入内存,既可以降低写入内存的数据量,又可以减少输出此帧的耗时,从而获取更高解码性能。

举例:如下图,比如此帧图像分辨率为19201080,正常一帧图像大小为19201080*3/2=3110400‬B,所以需要写入内存的数据量为3110400B,而经过HFBC压缩后(一般压缩率为50%),写入内存数据量仅有1555200B,所以既减少了写入内存的数量,也减少了写入内存的耗时,从而性能更高。

【Atlas500】入门到放弃(六)——【DVPP】浅析HFBC格式数据存在的意义_第1张图片

怎么使用HFBC格式更优?

因用户最终需要的是YUV数据,而VDEC输出的是HFBC数据,所以用户需要调用VPC模块对HFBC数据进行解压缩得到YUV数据。而一般场景下,用户最终想要的是送入网络大小的图(比如224x224),并不是原始图像(比如1920x1080),所以当VDEC解码后输出每帧HFBC数据后,用户可以将HFBC数据送入VPC并同时配置好resize/crop参数,驱使VPC直接输出需要的图像数据,即一次性完成【HFBC解压缩+resize/crop】操作,这样是最佳使用方式。

若用户需要原始图像,则VDEC输出HFBC格式相比VDEC直接输出YUV格式并没有优势(因为VDEC输出HFBC后,还需要VPC读入HFBC数据解压缩后再输出YUV数据),但当前芯片VDEC不能直接输出YUV数据,所以只能使用HFBC格式数据给VPC进行处理。

【Atlas500】入门到放弃(六)——【DVPP】浅析HFBC格式数据存在的意义_第2张图片

你可能感兴趣的:(【Atlas500】入门到放弃(六)——【DVPP】浅析HFBC格式数据存在的意义)