通过yuv数据错位生成伪随机图像

通过yuv数据错位生成伪随机图像的示例如下:

图中使用的播放器为YUVPlayer,yuv数据源为akiyo_352x288_30.yuv,数据格式为yuv420。当播放器的图像尺寸设为352x288时,图像正常显示;播放器的图像尺寸设为340x288时,图像显示异常。

背后的原理:
为了方便说明,假设图像的格式是YUV420 Planar模式,即YUV数据文件中先存放整张图像的Y数据(大小为352x288),然后存放U数据(大小为176x144),最后存放V数据(大小为176x144),显示的时候根据图像尺寸的设置情况到相应的位置取数即可。

正常显示:
(1) Y: 352 x 288(Y DATA)
(2) U: 176 x 144(U DATA)
(3) V: 176 x 144(V DATA)

异常显示:
(1) Y: 340 x 288(Y DATA)
(2) U: 12 x 288(Y DATA) + (176 x 144 - 12 x 288)(U DATA)
(3) V: 12 x 288(U DATA) + (176 x 144 - 12 x 288)(V DATA)

根据取数的情况,可知YUV数据发生错位,因此显示异常。

注:YUV播放器的显示原理是把yuv420转成yuv444,最后转成RGB来显示的。

猜你喜欢

转载自blog.csdn.net/allen_sdz/article/details/88344946