格式转换至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 黑客帝国特效
格式转换至yuv422转 yuv420的更多相关文章
- 【总结】关于YUV-RGB格式转换的一些个人理解
这段时间一直在研究YUV的格式问题例如YUV422.YUV420,在网上搜索了很多这方面的资料,发现很多资料讲的东西是重复的,没有比较深入的讲解,所以看了之后印象不是很深,过了一段时间之后又对它们有了 ...
- 几种常见的YUV格式--yuv422:yuv420【转】
转自:http://blog.csdn.net/u012288815/article/details/51799477 关于yuv 格式 YUV 格式通常有两大类:打包(packed)格式和平面(pl ...
- FFmpeg学习4:音频格式转换
前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式 ...
- 【视频处理】YUV与RGB格式转换
YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式. 因此当要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式. RGB与YUV的变换公式如下: YUV(25 ...
- 日期格式转换 java 2016-09-03T00:00:00.000+08:00
/** * 日期格式转换yyyy-MM-dd'T'HH:mm:ss.SSSXXX (yyyy-MM-dd'T'HH:mm:ss.SSSZ) TO yyyy-MM-dd HH:mm:ss * @ ...
- RSA密钥之C#格式与Java格式转换
前言 最近由于项目需求,服务端由c#编写,客户端由java编写.通信数据使用RSA非对称加密.但是java和c#生成的密钥格式是不一样的,所以需要转换格式才可以正常使用.网上搜到使用java进行格式转 ...
- 【VC++技术杂谈007】使用GDI+进行图片格式转换
本文主要介绍如何使用GDI+对图片进行格式转换,可以转换的图片格式为bmp.jpg.png. 1.加载GDI+库 GDI+是GDI图形库的一个增强版本,提供了一系列Visual C++ API.为了使 ...
- Oracle日期格式转换,tochar(),todate()
Oracle日期格式转换 本文主要介绍Oracle中的日期转换. 1. 日期转化为字符串 (以2016年10月20日为例) select to_char(sysdate,'yyyy-mm-dd hh2 ...
- C#返回时间格式转换成 js 字符串
在.net 中,调用 post 或者 get和后台通信时,如果有时间返回信息,后台返回的时间信息一般是这样格式:Thu Jul 9 23:14:53 UTC+0800 2015,那么要在前台显示就会有 ...
随机推荐
- Centos7 安装python3详细教程,解决升级后不兼容问题
一.确认当前python版本 [root@centos Python-3.6.1]# python Python 2.7.5 (default, Nov 6 2016, 00:28:07) [GCC ...
- WordPress实现前台登录功能
一.添加登录表单 1.首先在当前主题的目录下新建一个php文件,命名为page-login.php,然后将page.php中的所有代码复制到page-login.php中: 2.删除page-logi ...
- JSON.parse与eval区别
两种方式都可以解析json字符串,不过有时候JSON.parse解析会失败,失败原因有多种,下面会指出一种. JSON.parse()解析json格式的数据,会对要解析的字符串进行格式检查,如果格式不 ...
- hdu 2100
#include<stdio.h> #include<string.h> char a[300],b[300]; int a1[300],b1[300]; int main() ...
- 小Z的袜子(bzoj 2038)
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...
- DP的序--Codeforces956E. Wardrobe
$n \leq 10000$个盒子,有高度,高度总和$\leq 10000$,盒子有重要的和不重要的,问最多有多少重要盒子的底端在区间$[L,R]$. 这是个入门级的DP,但需要一点胆量MD这题能放D ...
- Bayan 2015 Contest Warm Up D. CGCDSSQ (math,pair,map,暴力)
哎,只能转题解了,,, 8165031 2014-10-10 15:53:42 njczy2010 D - CGCDSSQ GN ...
- Security arrangements for extended USB protocol stack of a USB host system
Security arrangements for a universal serial bus (USB) protocol stack of a USB host system are provi ...
- jquery知识汇总
jQuery 选择器 选择器 实例 选取 * $ ...
- js-判断当前页面是否在微信浏览器中打开
方案一:推荐 var ua = navigator.userAgent.toLowerCase(); var isWinxin = ua.indexOf('micromessenger') != -1 ...