格式转换至yuv422转 yuv420
int YUV422To420(unsigned char *pYUV, unsigned char*yuv, int lWidth, int lHeight)
大意了,每四行计算时,牵引错误,试试下面的代码吧,不过这种代码很有优化的余地
书籍可以参考“视频技术手册”,上面有YUV422到YUV420采样转换的讲解
int YUV422To420(unsigned char *pYUV, unsigned int *yuv, int lWidth, int lHeight)
{ //sp
int i,j;
unsigned int *pY = yuv;
unsigned int *pU = yuv + lWidth*lHeight;
unsigned int *pV = pU + (lWidth*lHeight)/4;
unsigned char *pYUVTemp = pYUV;
unsigned char *pYUVTempNext = pYUV+lWidth*2;
unsigned char *pYUV2 = pYUVTempNext + lWidth*2;
unsigned char *pYUV3 = pYUVTempNext + lWidth*4;
for(i=0; i<lHeight; i+=4)
{
for(j=0; j<lWidth; j+=4)
{
// Y0
pY[j] = pYUVTemp[j];
pY[j+lWidth] = pYUVTempNext[j];
pY[j+lWidth*2] = pYUV2[j];
pY[j+lWidth*3] = pYUV3[j];
// U
pU[j/2] = (3*pYUVTemp[j+1] + pYUV2[j+1])/4;
pU[j/2+lWidth/2] = (pYUVTempNext[j+1] + 3*pYUV3[j+1])/4;
// Y1
pY[j+1] = pYUVTemp[j+2];
pY[j+lWidth+1] = pYUVTempNext[j+2];
pY[j+lWidth*2+1] = pYUV2[j+2];
pY[j+lWidth*3+1] = pYUV3[j+2];
// V
pV[j/2] = (3*pYUVTemp[j+3] + pYUV2[j+3])/4;
pV[j/2+lWidth/2] = (pYUVTempNext[j+3] + 3*pYUV3[j+3])/4;
}
// 分别加四行
pYUVTemp+=lWidth*2*4;
pYUVTempNext+=lWidth*2*4;
pYUV2+=lWidth*2*4;
pYUV3+=lWidth*2*4;
// Y加上四行
pY+=lWidth*4;
// UV加两行
pU+=lWidth;
pV+=lWidth;
}
return 1;
}
http://bbs.csdn.net/topics/370045077
http://blog.csdn.net/searchsun/article/details/2443867 yuv pannle packet
http://blog.chinaunix.net/uid-29181887-id-3992543.html
http://www.videolan.org/developers/x264.html x264编码器
http://www.cnblogs.com/zhengbin/p/5023640.html js 黑客帝国特效
最新文章
- Caffe 源碼閱讀(二) SyncedMemory.hpp
- 深入理解 CSS 的 :before 和 :after 选择器(制作select下拉列表美化插件)
- android 入门 004 (同一个方法,点击实现不同的效果)
- java的主函数中各个词的作用
- 简单学C——第五天
- MapReduce入门
- oracle sql语句中使用if逻辑
- Android至ViewPager添加切换动画——使用属性动画
- Linux关机命令详解
- 实现quartz定时器及quartz定时器原理介绍(转)
- Visual Studio插件Resharper 2016.1 及以上版本激活方法【亲测有效】
- 【liferay】2、可配置portlet
- 如何用RSS订阅?
- 免费开源的diff软件“meld”-替代beyond compare的神器
- 【转载】docker 应用之动态扩展容器空间大小
- POJ 1459 - Power Network 【Ek-最大流】
- 求最短路的三种方法:dijkstra,spfa,floyd
- Unity官方实例教程 Roll-a-Ball
- 进程间共享数据Manager
- 如何从CentOS官网下载我们想要的版本
热门文章
- Leetcode 397.整数替换
- 【JavaScript 5—基础知识点】:正则表达式(笔记)
- hdu 1536 sg (dfs实现)
- 03-offsetParent属性
- Codeforces Round #361 (Div. 2)——B. Mike and Shortcuts(BFS+小坑)
- VS链接错误: LNIK1123
- properties类的基本使用方法
- Mysql 实现篮球比赛赛程中两支队伍的查询
- python虚拟环境使用
- cannot find package ";golang.org/x/crypto/pbkdf2"; in any of: