4-28 x264_reference_update

摘要: 1.X264_Reference_update和x264_reference_build_list( h, h->fdec->i_poc );之前printf("[%d][%d][%d][%d]=======",h->i_frame,h->fenc->i_frame,h->fdec->i_frame,h->fenc->i_type );没有b帧的情况下,h->i_frame和h->fenc->i_frame同步,h->fenc->i_frame比h->fdec->i_frame大 阅读全文
posted @ 2012-04-28 10:35 hatreds 阅读(1045) 评论(0) 推荐(0) 编辑

4-27 类型数据

摘要: /* Slice type */#define X264_TYPE_AUTO 0x0000 /* Let x264 choose the right type */#define X264_TYPE_IDR 0x0001#define X264_TYPE_I 0x0002#define X264_TYPE_P 0x0003#define X264_TYPE_BREF 0x0004 /* Non-disposable B-frame */#define X264_TYPE_B 0x0005#define X264_TYPE_KEYFRAME 0x0006 /* IDR or I dependin 阅读全文
posted @ 2012-04-27 17:48 hatreds 阅读(250) 评论(0) 推荐(0) 编辑

4-27 4x4图备忘

摘要: 阅读全文
posted @ 2012-04-27 17:20 hatreds 阅读(152) 评论(0) 推荐(0) 编辑

4-27 mb中一些参数记录备忘

摘要: 和图像本身长宽相关的几个变量1.h->param.i_width 图像本身的宽度 1920h->param.i_height 图像本身的高度 1080h->mb.i_mb_width 宽度中有多少个16x16的宏块 120*16 = 1920h->mb.i_mb_height 高度中有多少个16x16个宏块 68x16 = 1088h->mb.i_mb_count总共多少个宏块 120x68 = 8160最开始slice_write中的一些宏块相关变量h->mb.i_mb_stride = 120 宏块步长,和图像中一行宏块所含的宏块数目是一样的。应该是后来 阅读全文
posted @ 2012-04-27 17:18 hatreds 阅读(427) 评论(0) 推荐(0) 编辑

4-27 自适应量化

摘要: 对于每个宏块计算它的量化系数 就是在量化过程中,首先乘以DCT中那两个矩阵之后,还要乘以一个E,这里就是对于每个宏块自适应的计算出来这个矩阵,不用默认的。没有分析完成 在expandborder中计算了 宏块相关内容void x264_adaptive_quant_frame( x264_t *h, x264_frame_t *frame, float *quant_offsets ){ /* constants chosen to result in approximately the same overall bitrate as without AQ. * FIXME: while th 阅读全文
posted @ 2012-04-27 17:18 hatreds 阅读(1216) 评论(0) 推荐(1) 编辑

4-27 expand_border

摘要: 扩边,对于高和宽不是16倍数要进行填充Frame->i_plane是存储在plane中存了几维的数据,这里是2,对应色亮度和两个色度,0存储亮度,1,和2存储色度void x264_frame_expand_border_mod16( x264_t *h, x264_frame_t *frame ){ for( int i = 0; i < frame->i_plane; i++ ) { int i_width = h->param.i_width; int h_shift = i && CHROMA_H_SHIFT; int v_shift = i & 阅读全文
posted @ 2012-04-27 17:16 hatreds 阅读(223) 评论(0) 推荐(0) 编辑

4-27 参考帧管理

摘要: Ppt中介绍的大体过程建立参考队列list0和list1P slice从list0中取参考帧做预测,b slice 从list1中取参考帧做预测List0中存储的是display顺序在poc顺序在当前帧之前的帧,顺序是从高到低List1中存储的是在当前帧poc之后的真。它的顺序是从低到高。里面有一个函数x264_reference_check_reorder 用来检测是否list0有顺序和标准不符合的帧存在X264_t中一些变量含义Int i_ref[2] 表示参考帧个数 i_ref[0]表示过去的帧 i_ref[1]表示以后的帧h->frames.fref[][] DPB表示的就是li 阅读全文
posted @ 2012-04-27 17:16 hatreds 阅读(837) 评论(0) 推荐(0) 编辑

4-27 参数原来还有很多没有理解 比较详细的解释

摘要: http://blog.yikuyiku.com/?p=2029 阅读全文
posted @ 2012-04-27 13:04 hatreds 阅读(178) 评论(0) 推荐(0) 编辑

4-27 x264_frame_copy_picture

摘要: dst->i_type = src->i_type; dst->i_qpplus1 = src->i_qpplus1; //printf("src->i_pts is [%d]\n",src->i_pts); dst->i_pts = dst->i_reordered_pts = src->i_pts; dst->param = src->param; dst->i_pic_struct = src->i_pic_struct; dst->extra_sei = src->extra_ 阅读全文
posted @ 2012-04-27 12:54 hatreds 阅读(2003) 评论(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-27 12:50 hatreds 阅读(213) 评论(0) 推荐(0) 编辑