【Atlas 200 DK玩转系列】【DVPP】浅析HFBC格式数据存在的意义

举报
山人_mhc 发表于 2020/03/28 17:20:27 2020/03/28
【摘要】 HFBC格式是一种数据压缩格式,是VDEC解码后输出的每一帧数据的格式(Hisi Frame Buffer Compress),而对此格式进行解压缩由VPC完成,因VDEC和VPC是两个独立模块,所以用户在使用过程中可以看到HFBC数据。

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


为什么要有HFBC格式呢?

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

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

image.png


怎么使用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进行处理。


image.png


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。