5_9 ___2 mc函数

摘要: 同样追本朔源上面那个load里面有一个mc的拷贝函数这里进行分析x264_mc_init(h->param.cpu,&h->mc);//函数声明以及要找的函数mc_copy_w16是以宏定义方式来声明的voidx264_mc_init(intcpu,x264_mc_functions_t*pf)pf->copy[PIXEL_16x16]=mc_copy_w16;宏定义#defineMC_COPY(W)\staticvoidmc_copy_w##W(pixel*dst,intptr_ti_dst,pixel*src,intptr_ti_src,inti_height)\ 阅读全文
posted @ 2012-05-09 13:12 hatreds 阅读(209) 评论(0) 推荐(0) 编辑

5_9 代码分析 load_pic_pointers

摘要: #defineMB_INTERLACED0#defineCHROMA_V_SHIFT0staticvoidload_pic_pointers(intmb_x,intmb_y,intb_mbaff,intb_chroma){//就是对于场或者帧的一个设置标识符intmb_interlaced=b_mbaff&&MB_INTERLACED;//height=16宏块是亮度还是色度的 亮度就是16intheight=b_chroma?16>>CHROMA_V_SHIFT:16;//inti_stride=h->fdec->i_stride[i];经过boder 阅读全文
posted @ 2012-05-09 12:48 hatreds 阅读(318) 评论(0) 推荐(0) 编辑

5_8 ffmpeg参数

摘要: http://hi.baidu.com/hanyan_007/blog/item/5433b10f1160f5fa36d122d3.html1.Formatsshowavaliableformats可以使用的格式并且表明了多路复用一些问题2.Codecsshowavaiablecodecs可以使用的编解码器,对一些格式可能有的可以编码有的可以解码,这个参数就是介绍每种格式可以使用的编解码器。D只支持解码E只支持编码V可支持视频编解码A可支持音频编解码S字幕编解码SDT不明白Dsupportsdirectrenderingmethod1Tsupportsweirdframetruncation3 阅读全文
posted @ 2012-05-08 15:30 hatreds 阅读(402) 评论(0) 推荐(0) 编辑

5_4 calvc

摘要: Cavlc需要内容coeff_token编码非零系数的个数(totalcoeff)和trailingones(没个宏块一个)Trailing_ones_sign_flagtrailingone值得符号Level_prefix非零系数码字的第一部分(每个系数一个,除了trailingones)Level_suffix非零系数码字的第二部分(不总是存在)Total_zeros编码第一个非零系数后面发生的零的总数(按zigzag顺序)(每个块一个)Run_before编码每个非零系数前的零的个数,按照反zigzag顺序函数中对应代码最开始调用计算非零个数函数在x264_quant_init中初始化调 阅读全文
posted @ 2012-05-04 17:23 hatreds 阅读(226) 评论(0) 推荐(0) 编辑

5_4 编码重新总结

摘要: 1.dct变换对象是MxN的图像块或残差块,其处理单位为块。简单说,两边同时乘以一个A然后将原本时域信号投射到频域信号(个人理解就是颜色变换的频率),频域信号中相关性比较小。这个过程完事之后就将原来的每个信号点变成了一系列的系数矩阵。在解码端如果直到A转置的话,将解码得到的系数矩阵重新乘以这个转置A就得到了原来的信号值(残差块或者图像块)。这样变换完系数矩阵后,主要的信息其实集中在DC系数,也就是最左上角那个,其他的信息由于相关性很强并不是很重要,所以可以某种程度上,丢弃一部分。下一步的量化就是讲系数矩阵中一部分值丢弃掉,通过一定的准则。下一步的量化就是讲系数矩阵一部分某种程度上的一种丢弃。这 阅读全文
posted @ 2012-05-04 17:22 hatreds 阅读(301) 评论(0) 推荐(0) 编辑

5_3 calvc

摘要: http://blog.csdn.net/sunshine1314/article/details/1685948前缀和后缀http://bbs.chinavideo.org/viewthread.php?tid=1057过程详解 还有拖尾http://www.chinavideo.org/viewthread.php?tid=1033bs编码过程http://hi.baidu.com/denglinglong/blog/item/5a4c7ea96cab3ef81e17a2f9.html代码http://www.chinavideo.org/viewthread.php?tid=14185& 阅读全文
posted @ 2012-05-03 17:34 hatreds 阅读(166) 评论(0) 推荐(0) 编辑

5_3 x264_slice_write 博客地址

摘要: 两个局部变量i_mb_x,i_mb_y,全局的控制一个slice中的每个宏块的位置没有帧场自适应,所以初始化两个都为0在一个大的循环中While(1){/********************对于当前宏块编码完成*******************///对于两个变量进行更新然后进行写一个宏块的编码if(SLICE_MBAFF){i_mb_x+=i_mb_y&1;i_mb_y^=i_mb_x<h->mb.i_mb_width;}elsei_mb_x++;if(i_mb_x==h->mb.i_mb_width){i_mb_y++;i_mb_x=0;}}在while(1 阅读全文
posted @ 2012-05-03 17:30 hatreds 阅读(509) 评论(0) 推荐(0) 编辑

5_3 zig

摘要: 最初调用位置h->zigzagf.scan_4x4(h->dct.luma4x4[p*16+idx],dct4x4);第一个参数就是个空的一维数组,第二个是4x4的宏块,经过dct和量化后的。目的就是为了将第二个数组中的内容线性的放入第一个数组Encoder_open中初始化通过参数分了帧和场主要先看帧progressivevoidx264_zigzag_init(intcpu,x264_zigzag_function_t*pf_progressive,x264_zigzag_function_t*pf_interlaced)pf_interlaced->scan_8x8=z 阅读全文
posted @ 2012-05-03 17:28 hatreds 阅读(483) 评论(0) 推荐(0) 编辑

5_2 实现过程中

摘要: 1.别人的mbcmp函数讲解http://wangluohongren.wangluoliuxing.com/hongren-708672ad01010p4n.htm2.hardamard变换http://zh.wikipedia.org/wiki/%E9%98%BF%E8%BE%BE%E9%A9%AC%E5%8F%98%E6%8D%A2文档http://bbs.chinavideo.org/viewthread.php?tid=10602一个老版本注释4.scan8 ffmpeg 代码http://bbs.chinavideo.org/viewthread.php?tid=2310x264_ 阅读全文
posted @ 2012-05-02 17:39 hatreds 阅读(433) 评论(0) 推荐(0) 编辑

4-28 对于 mb_cmp_init函数中一些宏定义的展开 x264_encoder_open中

摘要: h->pixf.intra_mbcmp_x3_16x16(p_src,p_dst,a->i_satd_i16x16_dir);//inmbcmp_init(x264_t*h)h->pixf.intra_mbcmp_x3_16x16=satd?h->pixf.intra_satd_x3_16x16:h->pixf.intra_sad_x3_16x16;pixf->intra_sad_x3_16x16=x264_intra_sad_x3_16x16;pixf->intra_satd_x3_16x16=x264_intra_satd_x3_16x16;到这里 阅读全文
posted @ 2012-04-28 16:10 hatreds 阅读(816) 评论(0) 推荐(0) 编辑