通过yuv数据错位生成伪随机图像的示例如下:
![](https://i-blog.csdnimg.cn/blog_migrate/960d5aec20d7b7d602906ec7a052c843.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3f608913d357c1f61e1668a253199be2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1e1a5470a95b193fce02e4d977010ec5.png)
图中使用的播放器为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来显示的。