4-26 x264全局 完整有些东西还没理解

摘要: http://blog.csdn.net/szu030606/article/details/7212315完整版 有些东西还是没有理解判断上一帧重构fdec是否做参考帧,如果是参考帧, 放入reference队列中,然后从unused队列中分配一帧给fdec,如果上一帧不是参考帧(比如b帧), 返回,具体实现函数x264_reference_update()从unused队列中取一帧给fenc,然后将输入的yuv数据复制到fenc的缓冲区中。图像宽度高度不是16的倍数的时候进行扩边。H->frames.i_input记录图像的输入顺序。将fenc指针放入next队列中。(next队列) 阅读全文
posted @ 2012-04-26 13:24 hatreds 阅读(435) 评论(0) 推荐(0)

4-26 pts dts

摘要: http://www.cnblogs.com/qingquan/archive/2011/07/27/2118967.html 阅读全文
posted @ 2012-04-26 13:16 hatreds 阅读(150) 评论(0) 推荐(0)

4-26 大话dct

摘要: http://www.chinavideo.org/viewthread.php?tid=12198&highlight=http://www.cnblogs.com/cplusplus/archive/2012/04/29/2476105.html另外一个比较详细的http://www.cnblogs.com/cplusplus/archive/2012/04/29/2476105.html 阅读全文
posted @ 2012-04-26 11:48 hatreds 阅读(215) 评论(0) 推荐(0)

4-26 根据gop 讲解x264整个过程

摘要: GOP 两个IDR帧之间的距离,x264中和GOP中相关的参数有两个,其一是-keyint,控制的是GOP中最大可能距离,另一个是-min-keyint,控制的是允许最小的GOP距离IDR 和IDR有关的参数除了上面的GOP设定的两个基本参数之外,还有一个scenecut控制了如何自适应的通过判断场景的变化加入IDR帧,用来override之前的判断。具体做法是通过计算本帧和前一帧之间visual difference 在根据scenecut和minkeyint的设定值形成判断,判定此处是否存在scenechange,判断成立的话将本帧判断为IDR帧,反之则有可能为I帧(判断依据的前半成立)或 阅读全文
posted @ 2012-04-26 11:45 hatreds 阅读(2946) 评论(0) 推荐(0)

4-26 pixel赋值问题 mbcmp函数 宏定义

摘要: 知识点1. 宏中的 ## 和 #首先明白宏就是替换 ## 就是连接替换中的参数例子1如果你有几个参数有相关作用,为了区别用param1,param2,param3表示,用这个宏可以只传递1,2,3就可以输出每一个你想要的参数//类似于c++中多态的作用#define TEST1(id) cout<<param##id<<endl;void main(){ int param1 = 1, param2 = 2, param3 = 3; TEST1(1); TEST1(2); TEST1(3);}单个的#就是在参数两侧加上””2.\多行的宏定义3.缺少参数时候可以在宏里面使 阅读全文
posted @ 2012-04-26 11:43 hatreds 阅读(738) 评论(0) 推荐(0)

帧内宏块预测流程 (转载)

摘要: H.264帧内编码的模式选择H.264中4X4亮度预测依据预测方向的不同共有9种预测模式。在亮度4x4帧内预测时,其中DC预测(模式2)、垂直预测(模式0)和水平预测(模式2总是被认为有效的,即使在编码块上面像素或左边像素不可用的情况下(这时候上面像素或左边像素的值就使用128这个值来代替),而其它模式仅当所有需要利用的预测象素点都可用的情况下才可以使用(如果E, F, G,H不可用,可以用D的值来代替)。这儿所说的像素点可用(available)是指此像素所在的子块存在并且与当前编码的子块属于同一个slice。模式选择在H.264帧内编码中,每个宏块亮度信号都要完成9种4x4预测模式和4种1 阅读全文
posted @ 2012-04-16 13:18 hatreds 阅读(1234) 评论(0) 推荐(1)

SAD SATD转过来的

摘要: 源地址 http://blog.csdn.net/wuzhong325/article/details/7449184SAD和SATD的区别与几个名词解释Q:如果不用率失真最优化,为什么选择SATD+delta×r(mv,mode)作为模式选择的依据?为什么运动估计中,整象素搜索用SAD,而亚象素用SATD?为什么帧内模式选择要用SATD?A: SAD即绝对误差和,仅反映残差时域差异,影响PSNR值,不能有效反映码流的大小。SATD即将残差经哈德曼变换的4×4块的预测残差绝对值总和,可以将其看作简单的时频变换,其值在一定程度上可以反映生成码流的大小。因此,不用率失真最优化时 阅读全文
posted @ 2012-04-16 13:15 hatreds 阅读(1960) 评论(0) 推荐(0)

帧内预测1

摘要: 帧内预测static void x264_mb_analyse_intra( x264_t *h, x264_mb_analysis_t *a, int i_satd_inter ){ount++;*/通过一个标志位来决定帧内或帧间const unsigned int flags = h->sh.i_type == SLICE_TYPE_I ? h->param.analyse.intra : h->param.analyse.inter;这里跟我想的很不一样,我分析的是第一个IDR帧,我想这个时候p_dst要么应该是空的要么初值应该和p_src是相同的,但是打印出来并不是这 阅读全文
posted @ 2012-04-13 17:42 hatreds 阅读(852) 评论(1) 推荐(0)

4.1总结

摘要: 帧选择相关内容帧间和帧内编码自动判断准则可以看出帧类型是有编码器自适应判断出来的,通过公式判断帧间的相关性(VAR)VAR值越小相关性越大,看其值和64做比较,当VAR<64的时候才用帧间模式,VAR>64的时候才用帧内模式。有特殊情况,当过去帧方差大(部分像素值变化大的时候),也会导致残差较大时候,可以才用帧间编码处理, 另外一个公示 当VAR>64,但是另外一个参数大于等于VAR的时候也才用帧间编码 详见(毕厚杰4.2.2.2)然后如果才用帧间预测的话,由于使用的最小部分为宏块,所作预测是在宏块基础上做预测。首先根据过去帧和当前帧宏块匹配时候,求出该宏块的运动矢量x和y, 阅读全文
posted @ 2012-04-05 08:40 hatreds 阅读(308) 评论(0) 推荐(0)

3_29

摘要: 1.main中函数对于最开始的这个结构体进行系统内默认的设置 在JM中对于这些信息都是通过config文件进行配置,x264对于很多信息进行删减,然后这很大一部分信息其实都直接写入了这个param,但是param也只限于在这里进行读入argv时候的一些初始化赋值,后面有一个x264_t结构体才是真正可以在Encode过程中全局存在的一个结构体,囊括所有的编码过程中国许的信息x264_param_default(&param);对读入的argv进行分析。然后对剩余的一些信息进行赋值 ,对于部分的一些需要存储信息的位置进行内存分配 ,这里设置level x264好像只可以支持 main l 阅读全文
posted @ 2012-03-29 17:32 hatreds 阅读(236) 评论(0) 推荐(0)