X264-H.264
文章平均质量分 68
markman101
这个作者很懒,什么都没留下…
展开
-
x264_picture_alloc()
<br /> <br />/*x264_picture_alloc() 按照色度空间分配内存,并返回内存的首地址作为指针<br />我们常说得YUV420属于planar格式的YUV,使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。在常见H264测试的YUV序列中,例如CIF图像大小的YUV序列(352*288),在文件开始并没有文件头,直接就是YUV数据,先存第一帧的Y信息,长度为352*288个byte, 然后是第一帧U信息长度是352*288/4个byte, 最后是第一帧的V信息,长度是3转载 2010-12-07 14:29:00 · 3685 阅读 · 2 评论 -
ffmpeg x264 编码时 avcodec_open报错
在翻阅了无数的文章后,发现其原因是在于x264内部的参数检测,归要到底还是由于自己在ffmpeg中设置的参数不正确导致的。以下是x264针对此判断代码如下:相关判断位于encoder/encoder.c 393行:/* Detect default ffmpeg settings and terminate with an error. */ { int score = 0; score转载 2011-11-15 10:46:06 · 4019 阅读 · 0 评论 -
对二维数组进行Zig-Zag扫描(C++)
<br />对二维数组进行Zig-Zag扫描(C++),先自定义了一个类,类中有个函数Run()来实现这个扫描过程,二维数组是动态分配空间以及随机赋值的。<br /> 下图是Zig-Zag扫描方式<br />CZigZag.h:#include<iostream>using namespace std;typedef struct CPoint{ int x; int y;}Point;class ZigZag{private: const int M; //转载 2011-03-08 16:45:00 · 7571 阅读 · 0 评论 -
X264参数配置
<br />ProfileIDC = 66 # Profile IDC (66=baseline, 77=main, 88=extended)<br />LevelIDC = 30 # Level IDC (e.g. 20 = level 2.0)<br /><br />IntraPeriod = 32 # Period of I-Frames (0=only first)<br />IDRIntraEnable原创 2011-03-02 23:04:00 · 1342 阅读 · 0 评论 -
H.264的CAVLC(编码.解码)过程详解
<br />编码过程:<br />假设有一个4*4数据块(变化,量化后就送入熵编码)<br />{<br /> 0 , 3 ,-1 , 0,<br /> 0, -1 , 1,0,<br /> 1 , 0 ,0 , 0,<br /> 0 , 0 ,0 , 0<br />}<br />数据重排列:0,3,0,1,-1,-1,0,1,0……<br /><br />1)初始值设定:<br />非零系数的数目(TotalCoeffs)= 5;<br转载 2011-02-28 11:58:00 · 1493 阅读 · 0 评论 -
调试X264--基础编译部分(转)
<br />新安装了CCS3.3,编译X264源码,不过,一定是我改了什么东西,原先的代码是可以正常编译的,那是另一个朋友帮忙给弄得,还好,当时这个文档用SVN进行过版本管理,于是将原先的版本找出来,SVN用的少,折腾了半天。有两个可选的版本,一个是CCS编译OK,一个是CCS和VC7编译OK,结果只有前一个好用,于是使用前一个版本,写了一个CMD文件,编译OK,准备下板调试,发现文件中的图像数据存储的位置与EVM板上的可用位置不一致,而这个地址后面还要用到,代码很多,需要一个调试环境一点一转载 2011-02-28 11:56:00 · 1535 阅读 · 1 评论 -
h.264 率失真优化
<br />在H.264中 率失真优化有很重要的作用。<br />RDO对应的公式:J(mode)=SSD+λ*R(ref,mode,mv,residual)<br />SSD是指重建块与源图像的差值均方和;λ是拉格朗日乘子;<br />R就是该模式下宏块编码的实际码流,包括对参考帧、模式、运动矢量、残差等的比特率。<br />当然如果是帧内模式,就只有R(mode,residual)。<br />但是因为SSD需要重建图像,必然涉及到变换量化、熵编码、反变换反量化、重建等,计算量是相当转载 2011-01-20 22:59:00 · 2242 阅读 · 0 评论 -
有关码率控制的FAQ
<br />有关码率控制的FAQ<br />--------ByHychong<br />1.码率控制中几个参数含义的理解<br />在 RC 中经常会碰到这几个参数,InitialDelayOffset, Pm_X1,Pm_X2,Pm_rgQp[20],Pm_rgRp[20],<br />UpperBound1, UpperBound2, LowerBound,谁能解释一下他们的含义啊,在程序里多次出现,就是搞不<br />懂他们是用来干什么的,郁闷!<br />你应该先好好学习一转载 2011-01-21 11:25:00 · 4294 阅读 · 0 评论 -
H.264 7个主要模块的分析
<br />一、档次和级别<br />1、基本档次:<br />支持I和P片。I片包括16×16或4×4亮度区域和8×8色度区域的帧内宏块编码,被同一片中的已经编码的样本进行预测。P片包括帧内编码、帧间编码或skipped MBs。<br />在p片中的帧间编码的宏块用先前已经编码的图象预测,其中用到1∕4亮度象素精度的运动矢量进行运动补偿。<br />经过预测,每个宏块的残差数据用基于DCT的4×4整数变换进行变换和量化。量化变换系数被重排序,接着进行熵编码。在基本转载 2011-01-21 11:24:00 · 2388 阅读 · 0 评论 -
MVP---MVD
MVP是根据帧内相领块A,B,C的MV预测得到的,然后把当前点o加上MVP,获得新的匹配点x,在新点x的基础上进行搜索,获得mcost最小的点y,y与x的差为MVD,那么o 与y之间的向量为MV=MVP+MVD(相邻块的运动矢量通常有很高的相关性,因而每个运动矢量可以用其相邻的预先编码的矢量进行预测。一个预测矢量MVp建立于先前运动矢量的计算,并且一般只有MVD(当前运动矢量与MVp的差值)被编码和传输。这种方法建立基于运动预测矢量与运动补偿分割和附近矢量的可用性的相关性上。帧间预测简要说明首先根据转载 2011-01-06 18:33:00 · 1003 阅读 · 0 评论 -
X264 DSP移植
<br />虽然还有一年才毕业但毕业设计我已经作完了,大约用了3个月时间。我是个急性子并且对感兴趣的知识有非常强烈的学习欲,另外总想多写一些其他的知识,像ARM,linux,网络我都很感兴趣。这学期开始选题的时候我鬼使神差的选择了视频编码,题目是基于DM642的H.264视频编码器实现与优化,开题答辩的时候所长说重点应该放在实现和应用上,一般公司优化都是很多人去做的。做着做着我又对网络感兴趣索性就加了网络部分,所以到最后基本上成为网络摄像头的雏形。<br /> 它的基本过程是采转载 2010-12-29 15:57:00 · 2575 阅读 · 1 评论 -
调试X264时 加断点无效的解决方案
<br />工具--》选项--》调试--》常规--》“要求源文件与原始版本完全匹配”<br />把前面的 钩 去掉,断点就有效了。原创 2010-12-30 16:22:00 · 932 阅读 · 2 评论 -
算术编码的原理与分析
<br />前言 人类已进入信息时代,信息时代的重要特征是信息的数字化,人们越来越依靠计算机获取和利用信息,这就需要对信息的表示、存储、传输和处理等关键技术进行研究。我们要把数值、文字、语言、声音、图像、图形、视频和动画等多种媒体转化成计算机所能处理的数字信息,但数字化后的视频和音频等媒体信息的数据量是非常大的。因此,数字化信息的数据量很大,这样大的数据量,无疑给存储器的存储容量、通信干线的信道传输率以及计算机的速度都提出了很高的要求。这个问题是多媒体技术发展中的一个非常棘手的瓶颈问题。要解决这一问题转载 2010-12-22 22:21:00 · 10085 阅读 · 0 评论 -
如何下载台湾的硕博论文--大陆的论文不给力呀
<br />台湾博硕士论文资讯网(可下载全文) <br /><br />网址:https://etds.ncl.edu.tw/theabs/ <br />帐号:theabs <br />密码:theabs <br />一些台湾的学术资源 <br />硕士, 资源, 论文, 学术, 台湾 <br />国立政治大学的博硕士论文馆藏 <br /><br />1、国立政治大学博硕士论文全文影像系统 <br />http://www.lib.nccu.edu.tw/thesis/links.html <br /><b转载 2010-12-22 21:55:00 · 5154 阅读 · 0 评论 -
不要忽略内存的一些细节 读X264代码
<br /> <br /> uint32_t v=0x80808080; uint32_t *p = new uint32_t[4]; memset(p,0,sizeof(p)*4); *p++ = v; *p++ = v; *p++ = v; *p++ = v; <br />1 关于指针指向的内存空间大小的计算<br /> 比如这里 p指针指向的内存大小是 sizeof(p)*4或sizeof(uint32_t *)*4 16<br /> 2 *p++ = v;<br />原创 2010-12-14 17:59:00 · 803 阅读 · 0 评论 -
cli_opt_t
<br /><br />首先解释一下cli_opt_t的这个_t代表结构图可能是type的意思。同时还有很多i_ b_等作为前缀的变量,其中的I_表示int类型的变量 b表示bool类型的。依次类推。<br />正式进入主题。<br />typedef struct{<br /> int b_progress;<br /> int i_seek;<br /> hnd_t hin;<br /> hnd_t hout;<br /> FILE *qpfile;<br />} cli_op转载 2010-12-07 14:48:00 · 1321 阅读 · 0 评论 -
在实时视频应用中为什么不能用B slice 原因
前向参考帧预测当前帧称为前向运动补偿,利用后向参考帧预测当前帧称为后向运动补偿,利用前后向同时预测的就称为双向预测运动补偿。 双向预测在实时通信中是不能应用的,例如会议电视、可视电话等,因为后向预测在当前帧之后进行,会引入编码时延。这个应该是VLC卡的原因吧转载 2011-11-17 10:09:19 · 777 阅读 · 0 评论