整体的看了一边理解很浅显希望你看完之后能够帮我指.ppt_第1页
整体的看了一边理解很浅显希望你看完之后能够帮我指.ppt_第2页
整体的看了一边理解很浅显希望你看完之后能够帮我指.ppt_第3页
整体的看了一边理解很浅显希望你看完之后能够帮我指.ppt_第4页
整体的看了一边理解很浅显希望你看完之后能够帮我指.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、谢谢你: 我只对编码部分整体的看了一边,理解很浅显,希望你看完之后能够帮我指正一下。 每一个流程前边列出了该流程的出处,我只针对自己认为比较复杂的函数画出了流程图。 问题: 我感觉虽然做的是框架的工作,但是对x264的整体把握的并不好,不知道问题出在哪里? 有什么可以加深理解的办法呢? 我得目标是针对具体的某一块的算法进行优化,我想先要把整个程序的所有细节实现都看的比较明白了 以后在开始进行优化,不知道是否可行。还有你建议从哪里切入开始看细节部分呢?我是不是对标准的理解 还不够深入,在看程序的时候返回去查看标准的时候应该看哪一个文档比较好呢?是H.264_Prepublish_0503.doc

2、么? 谢谢目前就这些问题了,你有时间的话帮我看看 吧,x264_param_default 设置默认参数,读取命令行并分析 Parse,编码Encode,X264.c: main,X264.c:Encode,得到总帧数 p_get_frame_total,初始化编码器 x264_encoder_open,为新图分配空间 x264_picture_alloc,对帧编码 Encode frame,延迟的B帧,更新,清理图片区, 关闭解码器,关闭输入输出文件,设置输出文件参数 p_set_outfile_param,X264:Encode_Frames,不强制任何参数,调用 x264_encoder

3、_encode 进行编码,编码NAL层 x264_nal_encode p_write_nalu,写入 图片结束,Encoder.c: x264_encoder_encode,将图片copy到一帧 中去并且移动到一个 缓冲器,选择帧类型,移动一些B 帧 和一个非B帧到编 码队列中去,获得要被编码 的帧,编码 Do encode,更新编码器状态,计算和打印 统计值,判断是否存放 重建的帧,设置输出 图片属性,Encoder.c: do encode,设置帧上下文 (初始化帧类型,初始化 (参考列表,bit率控制,创建切片头部,写入bit流:初始化bit流上下文 写入序列参数信号和图片 参数信号写

4、入切片数据 (x264_slice_write)bit流 结束,设置输出,Encoder.c: x264_slice_write,初始化状态参数,NAL单元开始,写切片头部,如果是cabac编码 初始化上下文以及编码器,编码开始,装载缓冲区,分析宏块参数 x264_macroblock_analyse,宏块编码 x264_macroblock_encode,是否为 跳过宏块,是,进行相关处理,否,是否为 cabac编码,是,否,写入cavlc编码 x264_macroblock_write_cavlc,写入结束,保存缓冲区数据,编码结束(cabac或者cavlc,NAL单元编码结束,End,写

5、入cabac编码 x264_macroblock _write_cabac,设置QP 并且避免QP变化太快,对分析进行初始化,判断切片类型,B,分析开始,进行帧内模式分析 比较16*16和4*4 子块模式,I,P,P切片分析,B切片分析,从分析中更新 宏块,宏块分析结束,Analysis.c : x264_macroblock_analyse,P,检查是否为 跳过P宏块,是,否,相关处理,分析加载花费,分析帧间 16*16模式,是否为16*16 子块模式,是,否,分析帧间P模式 8*8子块,选择最好的 帧间模式,检测到16*16子 块信号并且帧内8*8花费 小于16*16运动 估计花费,P切片

6、分析,分析帧间8*8子块,是,否,分析帧间 16*8/8*16子块,进行1/4象素加工,最佳帧内宏块模式 分析,并对色度和亮度 成分分别附值,P切片分析结束,B切片分析,判断是否为 直接模式,是,否,进行相关处理,判断是否为 skip模式,否,是,分析加载花费, 直接模式和 帧间16*16模式,是否收到16*16 子块信号,分析帧内8*8, 8*16,16*8子块,否,加工1/4象素精度,最佳帧内宏块 模式分析,B切片 分析结束,Macroblock.c: x264_macroblock_encode,判断是否为 跳过P宏块,是,x264_macroblock_ encode_pskip( h

7、,否,判断是否为 跳过B宏块,是,x264_macroblock_ encode_skip( h,否,量化缩放,判断宏块类型,I 16*16,x264_mb_encode _i16x16,x264_mb_encode _i4x4,Inter MB,I 4*4,运动补偿x264_mb_mc,1616DCT变换,分别对每一个44块量化和z扫描 以及对每一个88的块进行化简,色度编码开始,量化放缩,判断是否为skip模式, 并进行相关处理,x264_mb_encode_8x8,计算亮度色度句型,以及非零计数,存储cbp: coded_ block_ pattern,检查P/B跳过情况, 进行相应处理

8、,色度编码结束,宏块编码结束,Encoder.c: x264_mb_encode_i16x16,读取 h-mb.pic.p_fenc0中的数据, 对其进行16*16dct变换,系数存放 在一个三维数组(17*4*4)里边, 的dct1中,进入循环16次 对每一个4*4块进行编码,将所有的4*4块的dc系数,按照 一定顺序存放在Dct0 中,量化Z扫描,结果存放于 h-dct.blocki.residual_ac,反量化所有dct1中的系数,i16,是,否,对dct0中的所有dc系数 进行量化和扫描,解雇存放于 h-dct.luma16x16_dc,重建块(idct,反量化),并将结果 存放入h

9、-mb.pic.p_fdec0,宏块编码结束,Encoder.c: x264_mb_encode_i44,对4*4子块dct变换从p_src和p_dst 取出数据变换以后放在dct4*4中,对dct4*4量化,4*4 Z字型全扫描结果存放于 h-dct.blockidx.luma4x4,对dct4*4 中的数据解量化,对dct4*4中的数据进行idct变换, 结果放置于p_dst 中,用于重建,编码结束,commonmacroblock.c:x264_mb_mc,判断宏块类型,为使用列表0预测的 16*16预测模式,分三种情况进行处理 (1616,168,816) x264_mb_mc_0 x

10、ywh,分为D_L0,D_L1,以及B预测 三大种种情况进行讨论分别调用: x264_mb_mc_0 xywh x264_mb_mc_1xywh x264_mb_mc_01xywh x264_mb_mc_direct8x8 进行处理,如果宏块类型为 P8*8或者B8*8,是否为B跳过 或者直接模式,是,x264_mb_mc_direct8x8,初始化参考列表,否,即为其 他B模式,判断宏块部分类新,D_16x16,D_16x8,D_8*16,End,Macroblock.c: x264_mb_encode_8x8(编码色度成分,对色度成分进行 88子块dct变换,对每一个44子块进行处理: 存

11、储dc系数,量化,z扫描,反量化,对每一个子块的dc系数进行单独处理 量化,z扫描,对每一个子块的dc系数进行反变换和反量化 用于重建块,判断如果为B帧间模式并且简化参数足够低则: 该8*8块几乎没有色度数据因此把它置为空, 这样作可以节省bit,对整块进行反dct变换,用于重建,结束,Cavlc.c:x264_macroblock_write_cavlc,判断切片类型I,P,B,写入宏块类型,预测,和运动矢量,是否为I_PCM类型,是,写入哥伦布函数 bs_ write _ue,补齐0,分别写入Y, Cr, Cb值 并且返回,结束,否,是否为I_44类型,是,写入哥伦布函数 bs_ write _ue,为每一个4*4亮度子块进 行预测返回预测模式,写入每一个亮度44 子块的预测模式,写入色度的预测模式,是否为I_1616类型,写入亮度和色度 的预测类型,是,否,是否为P_L0类型,跳出类型判断,跳出类型判断,是,判断宏块部分的类型 (1616,168,816,写入部分类型,针对每种不同类型 写入参考帧号和预测矢量,跳出类型判断,否,是否为P_88类型,是,否,写入子宏块类型,写入4个参考图像索引,写入子宏块的mvd? x264_sub_mb_mv_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论