画面偏暗是以前发现的问题,估计是转换时整数舍入导致,后来加入Y通道+1修正基本解决,UV通道也有此问题,不过影响较小,只有多次反复转换才能察觉.
x264和ffmpeg支持所有偶数宽高,没有mod16的问题.UCI对奇数宽高扩展1像素成偶数宽高再编码,解码时忽略多出来的1像素宽高.
RGB与YUV420的相互转换使用XVID里以下几个函数:
yv12_to_PCbgr_mmx_asm
yv12_to_PCbgra_mmx_asm
bgr_to_yv12_mmx_asm
bgra_to_yv12_mmx_asm
与YUV444的转换使用自己写的程序,公式前面列出过.