自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (2)
  • 收藏
  • 关注

原创 x264参数注解:x264_param_t

<br />typedef struct x264_param_t<br />{<br />    /* CPU 标志位 */<br />    unsigned int cpu;<br />    int         i_threads;       /* 并行编码多帧 */<br />    int         b_deterministic; /*是否允许非确定性时线程优化*/<br />    int         i_sync_lookahead; /* 线程超前缓冲 */<br /> 

2011-02-27 17:32:00 1796

原创 x264_validate_parameters

<br />static int x264_validate_parameters( x264_t *h )<br />{<br />     int max_slices;<br />#ifdef HAVE_MMX MMX是由英特尔开发的一种SIMD多媒体指令集,共有57条指令。它最早集成在英特尔奔腾(Pentium)MMX处理器上,以提高其多媒体数据的处理能力。<br />    if( !(x264_cpu_detect() & X264_CPU_SSE) )x264_cpu_detect返回值是cp

2011-02-27 11:32:00 2291

原创 x264_sps_init

x264_sps_init此函数为序列量化集的初始化。主要对结构体x264_sps_t中参数的初始化。void x264_sps_init( x264_sps_t *sps, int i_id, x264_param_t *param ){    sps->i_id = i_id;首先设置序列参数集的IDb_qpprime_y_zero_transform_bypass判断码率控制方法是否是恒定质量方法并且量化值初始为0.    sps->b_qpprime_y_zero_transform_bypass

2011-02-27 11:07:00 992

原创 x264运动估计

<br />理论知识:<br />两帧之间的物体运动是平移运动,位移量不是很很大,所以会以块作为单位分配运动矢量,在运动估计中采用了大量的参考帧预测来提高精度,当前的待编码块可以在缓存内的所有重建帧中寻找最优的匹配块进行运动补偿,以便很好的去除时间域的冗余度。为每一个块寻求一个运动矢量MV,并进行运动补偿预测编码。在每个分割区域中都有其对应的运动矢量,并对运动矢量以及块的选择方式进行编码和传输。<br />运动估计ME所表达的运动矢量MV,其研究的内容就是如何加速,有效的获得足够精确的mv,并且把前一帧所得

2011-02-26 20:30:00 1764

原创 H.264帧内编码的模式选择

<br />H.264中4X4亮度预测依据预测方向的不同共有9种预测模式。在亮度4x4帧内预测时,其中DC预测(模式2)、垂直预测(模式0)和水平预测(模式2总是被认为有效的,即使在编码块上面像素或左边像素不可用的情况下(这时候上面像素或左边像素的值就使用128这个值来代替),而其它模式仅当所有需要利用的预测象素点都可用的情况下才可以使用(如果E, F, G,H不可用,可以用D的值来代替)。这儿所说的像素点可用(available)是指此像素所在的子块存在并且与当前编码的子块属于同一个slice。<br /

2011-02-23 20:32:00 1329

原创 H.264参考帧管理

<br />引言<br />H.264相对于以前的标准,采用了多参考帧的技术,提高了编码器的性能,但也增加了实现的复杂度,在理解上也加大了难度。下面是我近来参阅一些资料的总结;<br /> <br />frame_num:标志片的解码顺序,当前图像是IDR(立即刷新图像)时,设置为0;相对于前面一个参考帧(解码顺序),增加1;<br />POC:picture order count的缩写,标志片的播放顺序,IDR图像的第一个场的POC为0;POC由片头信息得出,根据pic_order_cnt_type有三

2011-02-23 09:42:00 2408 1

原创 H.264参考帧管理

<br />引言<br />H.264相对于以前的标准,采用了多参考帧的技术,提高了编码器的性能,但也增加了实现的复杂度,在理解上也加大了难度。下面是我近来参阅一些资料的总结;<br /> <br />frame_num:标志片的解码顺序,当前图像是IDR(立即刷新图像)时,设置为0;相对于前面一个参考帧(解码顺序),增加1;<br />POC:picture order count的缩写,标志片的播放顺序,IDR图像的第一个场的POC为0;POC由片头信息得出,根据pic_order_cnt_type有三

2011-02-23 09:41:00 1042

原创 H.264参考帧管理

<br />引言<br />H.264相对于以前的标准,采用了多参考帧的技术,提高了编码器的性能,但也增加了实现的复杂度,在理解上也加大了难度。下面是我近来参阅一些资料的总结;<br /> <br />frame_num:标志片的解码顺序,当前图像是IDR(立即刷新图像)时,设置为0;相对于前面一个参考帧(解码顺序),增加1;<br />POC:picture order count的缩写,标志片的播放顺序,IDR图像的第一个场的POC为0;POC由片头信息得出,根据pic_order_cnt_type有三

2011-02-23 09:39:00 1303

原创 x264 struct学习

<br />其中成员frames是一个指示和控制帧编码过程的结构。其中current是已经准备就绪可以编码的帧,其类型已经确定;next是尚未确定类型的帧;unused用于回收不使用的frame结构体以备今后再次使用。<br />struct x264_t                                  //// <br />{<br />    /* cpu capabilities */<br />    unsigned int   cpu;<br />    /* bitstrea

2011-02-22 16:45:00 1205

原创 分析一段H264视频数据

<br />实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的.<br /> <br />00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01<br /> <br />H264的数据流分为两种,一种是NAL UNIT stream(RTP),一种是bits stream,<br />两者可以互相转换。我们分析的这个是bit

2011-02-22 16:16:00 3296 1

原创 灵活宏块顺序--FMO(flexible Order)

FMO(flexible Macroblock Order)意即灵活宏块顺序,应用在baseline profile和extended profile.<br />FMO是对Slice而言,Slice是一个独立的预测编码单元,假如你愿意,还可以作为一个独立传输单元,<br />一个Slice的宏块不能采用另一个Slice的宏块预测,当一个Slice出现问题,另一个Slice还可以独立解码,<br />这样子就不会导致误差扩散,通常情况下,H264对一个PIC编码,采取从上到下,从左到右的自然宏块光栅扫描顺序

2011-02-22 16:07:00 1606

原创 sequence parameter sets(转)

<br />H.264 中定义的sequence parameter sets中包括了一个图像序列的所有信息.它是H.264的基础之一,是编码前进行初始化的关键的一环,本文通过参考H.264的标准文档,对每个函数进行了一些注释性的说明,还有一些图表性的东西,因为blog上帖不是很方便,请参考文档中相应的部分.<br /> <br />sequence_parameter_set_rbsp_t结构体内成员及用途:<br />1. unsigned profile_idc:<br />它指的是码流对应的prof

2011-02-22 16:03:00 2510

原创 H.264 Questions and answer

Q:关于H264 ASIC设计的难点。A:1)怎样设计一个高效的Memory(SDRAM or DDR)系统是其中最大的挑战。MC最少的单元是4x4,因为在一行中只有4个Pixel,必然会导致memory miss rate的增加,从而降低memory BW的利用率。也许可以利用图像的空间相关性,设计一个类似于CACHE的结构。但CACHE的大小是一个值得探讨的问题。2)怎样用相同的硬件结构来实现帧内预测和帧间预测。3)怎样用一套硬件结构来同时实现mpeg2/4,WMV.因为核心的算法,例如DCT都不一样。

2011-02-22 15:41:00 868

原创 POC,和frame_num的概念(转)

注意,H264码流的输出顺序是编码顺序,所以在编码B帧的时候,由于B是双向预测,需要先编码后面编码帧P/I,这时候先输出I/P,后面才有B帧,我们在解码段拿到相应的I/P帧后,不能马上丢到buffer list里面,还需要等待后面的B帧,解码B帧后再reorder.所以相应产生了两个参数。poc,frame_num,这两个元素在slice级输出 POC,和frame_num的概念:<br /> POC picture order count,是一个顺序计数器,代表显示顺序,假如是场编码,那么分别要对两场都有

2011-02-22 15:30:00 2056

转载 POC的含义

<br />关于参数的注解: <br />  <br />FrameNumOffset: 帧数的偏置.定义为当前帧为IDR时,FNO的值为0;当prevFrameNum > frame_num时,说明了有溢出,故FrameNumOffset = prevFrameNumOffset + MaxFrameNum.当prevFrameNum <=frame_num时FrameNumOffset = prevFrameNumOffset. <br />   <br />POCLsb: POC的低有效位.通过sli

2011-02-22 14:56:00 2749

转载 H.264笔记

<br />H.264笔记之一<br /><br />H.264标准写得比较繁复,所以考虑在浏览完Whitepaper之后就开始研读X264代码。X264代码风格还是比较清晰简洁的。<br />根据对标准得理解,Picture Order Count在Slice解码的一开始就被提及:<br />I0 B1 B2 P3 B4 B5 P6<br />I0 P3 B1 B2 P6 B4 B5<br />于是I0的POC是0,P3的POC是3,B1是1……<br />为了支持H264复杂的帧存机制,X264以专门的

2011-02-22 12:06:00 843

原创 基于内容的自适应变长编码

<br /> <br />基于内容自适应的变长编码方式用于编码zigzag顺序扫描的4x4和2x2残差变换系数块。<br />1、             编码系数个数和零序列(coeff_token):<br />coeff_token = <TotalCoeff, TrailingOnes>;<br />TotalCoeff = 编码非零系数总数;[0 , 16]<br />TrailingOnes = 特殊处理的+/-1个数;[0 , 3]<br />2、           编码每个Traili

2011-02-19 20:41:00 747

原创 CAVLC的过程

<br /> 2推荐Q;CAVLC,Exp-Golomb的区别<br />A:Exp-Golomb的前缀和后缀根据阶数K的不同,可能是对称,后缀比前缀的长度多1等情况。<br />负数的情况下,通过公式(–1)k+1 Ceil( k÷2 ),把解析出来的哥伦布码值还原为原始的语法元素值;正数也有相应的对应方法。<br />CAVLC的前缀和后缀可能对称,也可能不对称,(大多数情况下都是不对称的)而且后缀还可以不存在,后缀的长度也是根据上下文环境来判断的,后缀的取值是根据编码表查询的,<br

2011-02-19 20:28:00 669

原创 CAVLC中的前缀和后缀

<br />看了几天T264代码,总算弄清楚了CAVLC中如何处理前缀和后缀的,记录一下。  <br />H264中的CAVLC在对TrailingOne之后的非零系数编码时,使用了前缀(prefix)和后缀  <br />(suffix)的概念,并且用suffixlength来表示后缀的长度。具体编码过程是这样的:  <br />一,将suffixlength初始化为0(如果超过10个非零系数,而且少于3个  <br />TrailingOnes,suffixlength初始化为1)  <br />二,将

2011-02-19 20:27:00 650

原创 CAVLC之手把手教你编码(转载)

<br />再次声明:文中用的标准是BS的正式标准,如果大家发现序号不对,参考着改过来就是了!<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 />1)   初始值设定:<br />非零

2011-02-19 15:24:00 575

原创 H.264整数DCT公式推导和蝶形图分析-多视角视频编码(mvc)研究(转载)

<br />为什么要进行变换<br />空间图像数据通常是很难压缩的:相邻的采样点具有很强的相关性(相互关联的),而且能量一般平均分布在一幅图像中,从而要想丢掉某些数据和降低数据精度而不明显影响图像质量,就要选择合适的变换,方法,使图像易于被压缩。适合压缩的变换方法要有这样几个性质:<br /> <br />1、可以聚集图像的能量(将能量集中到少数有意义的数值上);如下图:<br /><br /> <br />举个例子说明,下图是变换前的数据:<br /><br /> <br />以下是变换后的数据:<br

2011-02-19 11:37:00 1368

原创 H.264中MV预测过程详解

<br />===========第一步:确定相邻块===========<br /><br />      MV 预测以宏块分割(或亚宏块分割,如果宏块存在亚分割)为单位,同一个宏块分割(或亚宏块分割)内所有 4*4 块 MV 预测值相同。以每个宏块分割(或亚宏块分割)的左上角像素 pixel1 和右上角像素 pixel2 为参考点来确定相邻块则:<br />      pixel1 左侧相邻像素所在 4*4 块为当前宏块分割(或亚宏块分割)的相邻块 A<br />      pixel1 上方相邻像素所

2011-02-18 21:40:00 1456

原创 x264阅读笔记

<br />1. *x264_frame_new( x264_t *h )的理解<br /><br />进行framer_t结构体中数据元素的空间分配<br />首先是frame->buffer,frame->plane, frame->filtered,具体如下:<br /><br /> <br />接下来是frame->buffer_lowres,frame->lowres,frame->lowres_mvs,frame->lowres_mv_costs<br /><br /><br /> <br />

2011-02-17 18:01:00 761

转载 H.264 sequence_parameter_sets成员值含义学习笔记(转载)

<br />SPS: sequence parameter sets<br /><br />01.  Profile_idc<br />它指的是码流对应的profile.<br /> <br />1.1 基线profile(Baseline profile)<br />遵循基线profile的码流应该遵循以下的约束:<br /> <br />a) 只有I和P切片存在<br />b) NAL单元流不应该有范围在2到4的nal_unit_type值,包括2和4.<br />c) 序列参数集(sps)的frame

2011-02-12 11:43:00 894

原创 H.264的句法和语义

<br />H.264 的句法和语义<br /><br /><br />在编码器输出的码流中,数据的基本单位是句法元素,每个句法元素由若干比特组成,它表示某个特定的物理意义,例如:宏块类型、量化参数等。句法表征句法元素的组织结构,语义阐述句法元素的具体含义 。所有的视频编码标准都是通过定义句法和语义来规范编解码器的工作流程。<br />句法元素的分层结构<br />编码器输出的比特码流中,每个比特都隶属某个句法元素,也就是说,码流是由一个个句法元素依次衔接组成的,码流中除了句法元素并不存在专门用于控制或同步

2011-02-12 09:43:00 741

原创 X264码率控制流程分析

<br />码率控制的理论知识:<br /><br />码率控制的目的和意义:<br />图像通信中码率控制的目的:通过调节编码参数,控制单位时间内的编码视频流的数据量,以使产生的比特流符合各种应用的需求。视频压缩的效率和视频内容有很大的关系,对于变化多样的画面,视频编码的输出的码流变化较大,在信道环境不好的时候就容易导致解码端显示的质量的不稳定。<br /><br />率失真理论:<br />由于传输带宽和存储空间的限制,视频应用对压缩比有较高的要求。而无损编码较低的压缩比无法满足视频在实际应用中的需求。

2011-02-11 16:15:00 1797

原创 x264优化

x264优化(一)现在VS2008上做一些代码精简性优化。如果代码体积过于庞大的话会出现在DSPload不进去的情况,也会给空间存储分配带来麻烦。1、去掉common.c中的x264_log()和x264_log_default()函数(主要输出信息的分类),改用printf即可。2、对有些fprintf()去掉即可,尤其关于stderr的,有些输出信息还是保留为好,方便观察结果。3、设置set.c中的sps->b_vui = 0;表示vui信息不出现在码流中   sps->b_frame_mbs_only

2011-02-09 19:46:00 4117 2

原创 h.264 profile

Profiles The standard includes the following seven sets of capabilities, which are referred to as profiles, targeting specific classes of applications:Baseline Profile (BP): Primarily for lower-cost applications with limited computing resources, this profi

2011-02-09 08:58:00 2166 1

原创 h.264 baseline and main profile

<br />H.264的编解码框架与以前提出的标准如H.261、H.263及MPEG-1/2/4并无显著变化,也是基于混合编码的方案:以运动矢量代表图象序列各帧的运动内容,使用前面已解码帧对其进行运动估计和补偿或使用帧内预测技术,所得的图象参差值要经过变换、量化、熵编码等部分的处理。所以,新标准的性能提升在于各个部分的技术方案的改进及新算法的应用。     新标准在提高图象传输的容错性方面做了大量工作,重新定义了适于图像的结构划分。在编码时,图象帧各部分被划分到多个slice结构中去,每个slice都可以被

2011-02-09 08:51:00 8256 2

原创 Eclipse+mingw 一些注意事项

<br />1.需要下载Eclipse,mingw <br />            mingw 可以从官方网站找到(我这里偷懒就直接用QT的) <br />            http://sourceforge.net/projects/mingw/<br />            Eclipse,可以在http://www.eclipse.org/下载 <br />            Eclipse需要jdk文件你可以再sun下载到 <br />2.mingw有可能需要配置一些环境变量,最

2011-02-08 09:59:00 973

打开rtsp流的程序openrtsp

通过他可以实现读取rtsp数据,用c写的,可供初学着理解rtsp接受过程

2010-12-27

live555下编译时setlocale出错的解决办法

LIVE555迁移到VS2005时,编译会有时间错误提示: error LNK2019: 无法解析的外部符号 setlocale,该符号在函数 "public: __cdecl Locale: Locale(char const *,int)", 那是因为LIVE的Locale文件跟系统Locale文件冲突. 解决办法是新建立一个类,并使用新的类MyLocale代替旧类. 新类MyLocale代码在附件

2010-12-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除