整体的看了一边理解很浅显希望你看完之后能够帮我指

上传人:仙*** 文档编号:171783336 上传时间:2022-11-28 格式:PPT 页数:19 大小:102.08KB
返回 下载 相关 举报
整体的看了一边理解很浅显希望你看完之后能够帮我指_第1页
第1页 / 共19页
整体的看了一边理解很浅显希望你看完之后能够帮我指_第2页
第2页 / 共19页
整体的看了一边理解很浅显希望你看完之后能够帮我指_第3页
第3页 / 共19页
点击查看更多>>
资源描述
谢谢你:我只对编码部分整体的看了一边,理解很浅显,希望你看完之后能够帮我指正一下。每一个流程前边列出了该流程的出处,我只针对自己认为比较复杂的函数画出了流程图。问题:我感觉虽然做的是框架的工作,但是对x264的整体把握的并不好,不知道问题出在哪里?有什么可以加深理解的办法呢?我得目标是针对具体的某一块的算法进行优化,我想先要把整个程序的所有细节实现都看的比较明白了 以后在开始进行优化,不知道是否可行。还有你建议从哪里切入开始看细节部分呢?我是不是对标准的理解 还不够深入,在看程序的时候返回去查看标准的时候应该看哪一个文档比较好呢?是H.264_Prepublish_0503.doc么?谢谢目前就这些问题了,你有时间的话帮我看看 吧!x264_param_default设置默认参数读取命令行并分析Parse编码EncodeX264.c:mainX264.c:Encode得到总帧数p_get_frame_total初始化编码器x264_encoder_open为新图分配空间x264_picture_alloc对帧编码对帧编码Encode frame延迟的B帧更新,清理图片区,关闭解码器,关闭输入输出文件设置输出文件参数p_set_outfile_paramX264:Encode_Frames不强制任何参数调用x264_encoder_encode进行编码编码NAL层x264_nal_encodep_write_nalu写入图片结束Encoder.c:x264_encoder_encode将图片copy到一帧中去并且移动到一个缓冲器 选择帧类型移动一些B 帧和一个非B帧到编码队列中去获得要被编码的帧编码Do encode更新编码器状态计算和打印统计值判断是否存放重建的帧设置输出图片属性 Encoder.c:do encode设置帧上下文(初始化帧类型)初始化(参考列表,bit率控制)创建切片头部写入bit流:初始化bit流上下文写入序列参数信号和图片参数信号写入切片数据(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写入cabac编码x264_macroblock _write_cabac设置QP并且避免QP变化太快对分析进行初始化判断切片类型B分析开始进行帧内模式分析比较16*16和4*4子块模式IPP切片分析切片分析B切片分析切片分析从分析中更新宏块宏块分析结束Analysis.c:x264_macroblock_analyseP检查是否为跳过P宏块是否相关处理分析加载花费分析帧间16*16模式是否为16*16子块模式是否分析帧间P模式8*8子块选择最好的帧间模式检测到16*16子块信号并且帧内8*8花费小于16*16运动估计花费P切片分析分析帧间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)否判断是否为跳过B宏块是 x264_macroblock_encode_skip(h)否量化缩放判断宏块类型I 16*16x264_mb_encode_i16x16x264_mb_encode_i4x4Inter MBI 4*4运动补偿x264_mb_mc1616DCT变换分别对每一个44块量化和z扫描以及对每一个88的块进行化简色度编码开始量化放缩判断是否为skip模式,并进行相关处理 x264_mb_encode_8x8计算亮度色度句型,以及非零计数存储cbp:coded_ block_ pattern检查P/B跳过情况,进行相应处理色度编码结束宏块编码结束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中的系数idct.luma16x16_dc重建块(idct,反量化),并将结果存放入h-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 xywh分为D_L0,D_L1,以及B预测三大种种情况进行讨论分别调用:x264_mb_mc_0 xywhx264_mb_mc_1xywhx264_mb_mc_01xywhx264_mb_mc_direct8x8进行处理如果宏块类型为P8*8或者B8*8是否为B跳过或者直接模式是 x264_mb_mc_direct8x8初始化参考列表否,即为其他B模式判断宏块部分宏块部分类新D_16x16D_16x8D_8*16EndMacroblock.c:x264_mb_encode_8x8(编码色度成分编码色度成分)对色度成分进行88子块dct变换对每一个44子块进行处理:存储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_write_cavlc跳出宏块类型判断是否为B_88类型写入宏块类型写入子块类型写入参考帧索引写入残差块,注意对B宏块来说是两个残差分量跳出宏块类型判断是否为B直接类型否是否初始化参考列表写入宏块类型写入参考帧索引写入mvd直接写0是写入编码的块的句型写入残差数据block_ residual_ write_ cavlc结束
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!