TI DM368 YUV420之NV12转IYUV小结
来源:互联网 发布:6s数据漫游要不要打开 编辑:程序博客网 时间:2024/05/22 09:16
最近折腾DM368 h264解码,解码出的流直接保存成单帧YUV420文件,然后在windows上查看解码是否成功(受调试条件限制,只能通过这个方式来确认解码效果)。
由于YUV420这个格式之前未实际深入调试过,忽视一些重要的知识点,导致困惑。上图,
上图色彩明显不对,这个截图后效果比原始显示要好,原始显示的图片,还有明显的竖条纹出现,感觉是每隔一列一个竖条纹。
开始思路一直怀疑是h264解码问题,查了两天无果。今早忽然灵感来,想到YUV420存储格式的问题。确认,dm368 解码后是NV12,而我用的工具显示是IYUV的,问题定位到。网上搜不到显示NV12的小工具,自己写个代码把NV12转换成IYUV,再显示,如下:
代码:
int ConvertNV12toIYUV(Uint8* pbuf,Uint32 imgw,Uint32 imgh)
{
Uint8* pPU = NULL;
Uint8* pPV = NULL;
Uint8* pPUV = NULL;
Uint8* pcache = NULL;
Uint32 i;
if (pbuf == NULL)
return -1;
pPUV = pbuf + imgw*imgh;
pcache = (Uint8*)malloc((imgw*imgh)>>1);
if (pcache == NULL)
return -1;
pPU = pcache;
pPV = pcache + ((imgw*imgh)>>2);
for (i=0;i<(imgw*imgh)>>1;i++)
{
if ((i % 2) == 0)
*pPV++ = *(pPUV+i);
else
*pPU++ = *(pPUV+i);
}
memcpy(pPUV,pcache,(imgw*imgh)>>1);
if (pcache)
free(pcache);
return 0;
}
TIPS:
a.时间允许还是做事前补充下相关背景知识。
b.dm365/dm368 YUV420 是XDM_YUV_420SP格式。
c.调试小工具很重要。
- TI DM368 YUV420之NV12转IYUV小结
- NV12转IYUV
- YUV420 NV12 NV21
- YUV420 NV12 NV21
- YUV420 NV12 NV21
- TI DaVinci DM368 running Emdebian
- TI davinci DM368 UBL 编译方法
- TI davinci DM368 u-boot 编译方法
- YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)
- 视频存储格式YUV420 NV12 NV21 i420 YV12
- yv12转nv12,nv12转I420
- yuv420P转NV12代码
- 【转】YV12 and NV12
- nv12转rgb 格式
- Ti的DM368系列芯片的所有PDF资料汇总
- SD card boot and flashing tool for TI davinic DM368
- 利用 uflash 工具制作 TI davinci DM368 SD 启动卡
- SD card boot and flashing tool for TI davinic DM368
- android - 监听APK文件的安装、卸载、重装。
- 让Sql Plus环境变量的设置永久生效
- C++宽字符处理函数 与 普通函数 对照表
- c#使用Windows.Forms里面计时器和System.Timers里面的计时器
- C#(64位系统) 解决"未能加载文件或程序集,或它的某一个依赖项..."
- TI DM368 YUV420之NV12转IYUV小结
- ORACLE 11g 2 研究,redhat5.4
- jquery实现全屏幕遮罩,代码精简,兼容性好
- JSP内置对象
- 主键,外键,AUTO_INCREMENT的设置
- UML类图几种关系的总结
- c++ hash_map 详细介绍
- struts2标签
- 秋雨寄相思