近期遇到的绝大多数问题都不是问题,最大的问题是自己太坑。
码代码码的挺开心,结果后期简化代码差点把自己硬生生坑死,几乎怀疑自己不适合做这行。
先前做的I420转NV21和NV12,为了试验YUV分量是否真的转换成功了使用了如下的数组:
char exe[] = {10,11,12,13,14,15,16,17, //y
20,21,22,23,24,25,26,27, //y
30,31,32,33,34,35,36,37, //y
40,41,42,43,44,45,46,47, //y
50,51,52,53,54,55,56,57, //u
60,61,62,63,64,65,66,67}; //v
以Y分量的宽width、高height和数组头指针tmp作为已知量(工程中可获取到的)。
初始代码中使用了指针从tmp开始偏移拷贝,优化代码的时候转成了用不同的指针分别指向U、V分量的第一个元素,而后进行偏移拷贝,然后作死地把样例代码中的V指针头偏了一行。。。
样例代码中Y分量height为4,UV分量各占1,的确是偏一行就可以的,但实际情况下一张图片的分量排布并不是UV只间隔一行的,所以要修改。实际上要偏1/4height哈,不然图片输出是有颜色偏差的。
完了上传上去的代码如果我没记错的话貌似NV21和NV12分量排布反掉了。。。我的错。自己传的自己下载还不能评论,时间过了又不能改。但愿不会坑到别人吧。。。
仍需努力啊。