NVIDIA Jetson Nano视频解码需要注意的一个问题

文章详细介绍了在使用NVIDIA Jetson Nano进行视频解码时遇到的问题,即其YUV420数据存放不遵循通用规范,导致图像处理错误。通过分析Jetson Nano的解码器输出特性,提出了一个去空洞的精准拷贝函数,解决了数据转换问题,并展示了如何使用OpenCV或libyuv将YUV数据转换为BGR数据。

    NVIDIA的边缘计算的序列板子都配备了视频编码器和解码器,使用解码器硬件解码当然比使用OpenCV+ffmpeg之类的软解码要快多了。使用Jetson Nano的解码程序遇到个问题就是Jetson Nano在存放解码出来的图像的YUV数据时没有完全遵循一般的规范来做。

     一般在压缩视频(DV设备生成)中YUV420格式使用较多,YUV420准确的说应该叫YCbCr420,YCbCr是YUV(Y的取值范围为0~255,U的取值范围为-122~122、V的取值范围为-157~157)的缩放和偏移版本,Y的取值范围为16-255,Cb和Cr的取值范围为16-240,YCbCr有4:4:4、4:2:2、4:2:0、4:1:1这几张采样格式,YUV420指YCbCr在水平和垂直方向都对Cb和Cr采样减少为2:1,Y为黑白分量,在水平和垂直方向采样比值都是4,下图左边是H261/H263/MPEG1的采样方式,右图是H264/MPEG2的采样方式:

   

 

YUV的数据存放格式分为planar和packed两种。planar格式最常用,它是先连续存放所有像素点的Y分量数据,紧接着存放所有像素点的U分量数据,最后存放所有像素点的V分量数据。packed格式则是每个像素点的Y,U,V数据是交错连续存储的。YUV420中,一个像素点对应一个Y,一个4X4的小方块对应一个U和V,对于YUV420p,也就是说planar格式存放的,先存放完Y分量数据再存放U分量数据,再存放V分量数据,以一个分辨率为8X4的YUV图像为例,它们的420p存放格式如下图:

         

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Arnold-FY-Chen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值