zoukankan      html  css  js  c++  java
  • ffmpeg错误隐藏框架分析

                本文主要是分析ffmpeg的错误隐藏框架,故解码流程此处不会特地进行讨论,网上其他地方其实也有不少介绍相关流程的了,但发现基本没有介绍错误隐藏流程的,故本文希望能填补这个空白。

                 我们直接从decode_frame开始跟踪(相信从这个地方开始不会有人有啥疑问吧,怎么跟踪到这里的已经有很多资料介绍的了),decode_frame ---> decode_nal_units --->  decode_slice_header ---> ff_h264_frame_start ---> ff_er_frame_start,ff_er_frame_start中对error_status_table,error_count进行了初始化。

                 接着从decode_nal_units继续,decode_nal_units会调用execute_decode_slices进行解码,该函数包含了单线程和多线程两种情况,不妨仅考虑单线程情况,则该函数调用decode_slice进行实际的解码,在decode_slice中,解码完成后,会调用ff_er_add_slice根据解码情况对error_status_table进行相应设置,作为以后错误隐藏的依据。

                  最后,退回到decode_frame中来,在前面调用decode_nal_units完成解码后,会调用field_end,而field_end则会调用ff_er_frame_end,该函数就是真正进行错误隐藏的地方。ff_er_frame_end中有两个最重要的函数guess_dc和guess_mv,简单地讲,前者用于intra宏块(实际上还不止这种宏块),后者用于P slice的非intra宏块(B slice的隐藏方法更为简单,不会调用guess_mv)。

  • 相关阅读:
    C++ Primer中的一个sort算法源码
    字符串反转操作,网易的一道面试题
    字符编码之UCS2与Utf8
    我的Vim配置
    使用PreviousPage来获取前一页页面的元素
    ToString()用法大全
    MSSQL怎样使自动增加的id列数据归零
    确定要离开当前页面吗
    js 获取url参数
    C#判断程序是否以管理员身份运行,否则以管理员身份重新打开 转载
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3225927.html
Copyright © 2011-2022 走看看