首页 > 其他分享 >H264码流分析

H264码流分析

时间:2024-01-20 16:33:36浏览次数:29  
标签:码流 分析 参考 H264 frame PrevRefFrameNum num 解码 图片

1. frame_num的检测

frame_num被用作图片的标识符,应由比特流中的 log2_max_frame_num_minus4 + 4 位表示。frame_num的约束如下:

变量 PrevRefFrameNum 的导出方式如下:

  • 如果当前图片是IDR图片,PrevRefFrameNum 被设为0。
  • 否则(当前图片不是IDR图片),PrevRefFrameNum 被设为:
    • 如果在8.2.5.2条款规定的frame_num间隙的解码过程是由包含在解码顺序中跟随前一个包含有参考图片的访问单元的非参考图片的解码过程调用的,PrevRefFrameNum 被设为由8.2.5.2条款规定的frame_num间隙的解码过程推断的“不存在的”参考帧的frame_num的值中的最后一个。
    • 否则,PrevRefFrameNum 被设为前一个解码顺序中包含有参考图片的访问单元的frame_num的值。

frame_num的值受以下约束:

  • 如果当前图片是IDR图片,frame_num必须等于0。
  • 否则(当前图片不是IDR图片),以前一个解码顺序中包含有参考图片的访问单元中的主编码图片作为前一个参考图片,当前图片的frame_num的值不得等于PrevRefFrameNum,除非以下三个条件全部为真:
  • a) 当前图片和前一个参考图片属于解码顺序中的连续访问单元。
  • b) 当前图片和前一个参考图片是具有相反奇偶校验的参考场。
  • c) 以下条件之一或多个为真:
    • 前一个参考图片是IDR图片,
    • 前一个参考图片包含一个memory_management_control_operation语法元素等于5, 注意3 – 当前一个参考图片包含一个memory_management_control_operation语法元素等于5时,PrevRefFrameNum等于0。
    • 在前一个参考图片之前存在一个主编码图片,且该主编码图片的frame_num不等于PrevRefFrameNum,
    • 在前一个参考图片之前存在一个主编码图片,且该主编码图片不是参考图片。

当frame_num的值不等于PrevRefFrameNum时,比特流符合性要求将遵守以下约束:

a) 在解码顺序中,当前被标记为“用于短期参考”的任何先前场或帧,其frame_num的值不能等于以下变量取得的任何值:

   UnusedShortTermFrameNum = (PrevRefFrameNum + 1) % MaxFrameNum while (UnusedShortTermFrameNum != frame_num) UnusedShortTermFrameNum = (UnusedShortTermFrameNum + 1) % MaxFrameNum

b) frame_num的值受以下约束:

  • 如果gaps_in_frame_num_value_allowed_flag等于0,则当前图片的frame_num值必须等于(PrevRefFrameNum + 1) % MaxFrameNum。
  • 否则(gaps_in_frame_num_value_allowed_flag等于1),适用以下规定:
    • 如果frame_num大于PrevRefFrameNum,则在比特流中不得有在解码顺序中跟随前一个参考图片且在当前图片之前的非参考图片,其中以下条件之一为真:
      • 非参考图片的frame_num值小于PrevRefFrameNum,
      • 非参考图片的frame_num值大于当前图片的frame_num值。
    • 否则(frame_num小于PrevRefFrameNum),在比特流中不得有在解码顺序中跟随前一个参考图片且在当前图片之前的非参考图片,其中以下两个条件都为真:
      • 非参考图片的frame_num值小于PrevRefFrameNum,
      • 非参考图片的frame_num值大于当前图片的frame_num值。

包括memory_management_control_operation等于5的图片应满足上述frame_num的约束,并且在当前图片的解码和内存管理控制操作的处理之后,该图片应被推断为在解码过程中所有后续使用的frame_num等于0,除非在7.4.1.2.4条款中另有规定。

注意4 – 当主编码图片不是IDR图片且不包含memory_management_control_operation语法元素等于5时,相应的冗余编码图片的frame_num值与主编码图片中的frame_num值相同。

或者,冗余编码图片包括一个memory_management_control_operation语法元素等于5,并且相应的主编码图片是IDR图片。

标签:码流,分析,参考,H264,frame,PrevRefFrameNum,num,解码,图片
From: https://www.cnblogs.com/awiki/p/17976694

相关文章

  • MetaGPT day02: MetaGPT Role源码分析
    MetaGPT源码分析思维导图MetaGPT版本为v0.4.0,如下是frommetagpt.rolesimportRole,Role类执行Role.run时的思维导图:概述其中最重要的部分是_react,里面包含了一个循环,在循环中交替执行_think和_act,也就是让llm先思考再行动。_think中决定了llm下一个执行的动作是什么,这个动作......
  • TCP三次握手源码分析(服务端接收ACK&TCP连接建立完成)
    内核版本:Linux3.10内核源码地址:https://elixir.bootlin.com/linux/v3.10/source(包含各个版本内核源码,且网页可全局搜索函数)《TCP三次握手源码分析(客户端发送SYN)》《TCP三次握手源码分析(服务端接收SYN以及发送SYN+ACK)》《TCP三次握手源码分析(客户端接收SYN+ACK以及发送ACK......
  • 【学习笔记】主成分分析
    现在有\(m\)个\(n\)维的数据,想把它们降到\(k\)维,得到一个\(m\timesk\)的矩阵,但是不能损失数据之间的关联性和差异性。那么不难发现这肯定是让矩阵右乘一个大小为\(n\timesk\)的矩阵,进行一个线性空间的映射。做法是构造一个\(n\)维数据的协方差矩阵(矩阵的行列表示......
  • 图片与Base64编码相互转换、优势分析和技术实现
    在Web开发中,图片与Base64编码的相互转换是一个非常实用的技能。图片Base64编码是将图片文件转换为字符串格式,以便于在网络上传输和存储。本文将详细介绍图片与Base64编码的转换方法,以及图片Base64编码的优势。图片Base64相互转换|一个覆盖广泛主题工具的高效在线平台(amd......
  • 【零基础数模系列】模糊分析法、层次分析法和方差分析法
    前言作为数模小白,看了很多讲解新概念新模型的文章,这些文章往往要么讲的很浅不讲原理只讲应用,让人知其然不知其所以然。要么讲的很深小白看不懂,同时总是忽略关键部分,经常性引入陌生概念让初学者疑惑,因此有了本文,任何能熟练掌握线性代数知识且逻辑思维能力尚可的人都可以理解,而无需......
  • 【零基础数模系列】主成分分析
    前言作为数模小白,看了很多讲解新概念新模型的文章,这些文章往往要么讲的很浅不讲原理只讲应用,让人知其然不知其所以然。要么讲的很深小白看不懂,同时总是忽略关键部分,经常性引入陌生概念让初学者疑惑,因此有了本文,任何能熟练掌握线性代数知识且逻辑思维能力尚可的人都可以理解,而无需......
  • Jax框架:通过显存分析判断操作是否进行jit编译
    相关:https://jax.readthedocs.io/en/latest/device_memory_profiling.html代码:importjaximportjax.numpyasjnpimportjax.profilerdeffunc1(x):returnjnp.tile(x,10)*0.5deffunc2(x):y=func1(x)returny,jnp.tile(x,10)+1x=jax.random.......
  • 若依框架入门一源码分析一登录验证码
    若依框架入门一源码分析一关于登录页面的验证码问题前端页面的验证码开关设置的是true,但是打开画面验证码没有被显示,原因是后端代码判断了redis中是否有值,有则覆盖前端<el-form-itemprop="code"v-if="captchaEnabled"><el-inputv-model="loginForm......
  • 【计算机算法设计与分析】罗密欧与朱丽叶的迷宫问题(C++_回溯法)
    文章目录题目描述测试样例算法原理算法实现参考资料题目描述罗密欧与朱丽叶的迷宫。罗密欧与朱丽叶身处一个mxn的迷宫中,如图所示。每一个方恪表示迷宫中的一个房间。这mxn个房间中有一些房间是封闭的。不允任何人进入。在迷宫中任何位置均可沿8个方向进入未封闭的房间。罗密......
  • 使用valgrind分析Linux程序内存泄漏
     1      安装...12      参数说明...13      使用问题...2 1        安装直接使用命令行安装sudoapt-getinstallvalgrind源代码下载安装下载最新版本:http://valgrind.org/downloads/current.html#current安装命令:tar-jxvfvalg......