cuda 5中 H264 encoder 出来的图像UV分量颠倒了

如果有兴趣可以用自己的视频序列 (YV12格式) 验证一下 CUDA 5 samples 下面的 cudaEncode
就会发现编出来的视频颜色不对,看上去像是 UV 分量颠倒了
(可以参考cudaEncode\data下的plush_480p_60fr.yuv ,感觉色彩很怪异)

楼主您好。

因为不懂此例子,只是简单的看了下代码。
此例子接受一个format的可选参数,不知道楼主您是否设置正确了。

例如指定:-format=YV12
例如指定:-format=IYUV
等等

此部分处理在代码中的pParams->iSurfaceFormat的设置部分。

仅供参考。

感谢您的莅临!
祝您假日愉快!

附上此例子的对此相关的命令行选项处理部分,供您参考:

if (checkCmdLineFlag(argc, (const char **)argv, “format”))
{
char *format = NULL;
getCmdLineArgumentString(argc, (const char **)argv, “format”, &format);

printf("YUV Surface Format: ");

if (!STRCASECMP(format, “UYVY”))
{
pParams->iSurfaceFormat = (int)UYVY;
}
else if (!STRCASECMP(format, “YUY2”))
{
pParams->iSurfaceFormat = (int)YUY2;
}
else if (!STRCASECMP(format, “YV12”))
{
pParams->iSurfaceFormat = (int)YV12;
}
else if (!STRCASECMP(format, “NV12”))
{
pParams->iSurfaceFormat = (int)NV12;
}
else if (!STRCASECMP(format, “IYUV”))
{
pParams->iSurfaceFormat = (int)IYUV;
}

printf(“%s\n”, sSurfaceFormat[pParams->iSurfaceFormat]);
}

谢谢 横扫千军
应该不是参数设置的问题, 通常H264 采用YV12 的视频序列作为编码输入
我用cuda 5 samples 中 cudaEncode 自带的 配置文件 来编我的视频序列,
在playback时就可以发现颜色不对

我只是建议您尝试一下参数。您可以考虑当然也可以不考虑此建议。

希望其他会员/版主能够提供更好的建议。

感谢您的莅临。

绝对是参数设置问题
YV12和IYUV都是4:2:0的planar格式,区别就是UV分量的顺序
YV12是V在前U在后,IYUV是U在前V在后