H264解码器原理之一

H264解码器原理之一H264的层次结构包括VCL(视频编码层)与NAL(网络提取层),具体的语法结构,在之前的文章已经提到过,这里就不再赘述了。NAL主要是把VCL的内容进行封装,帮助更好的适合复杂的网络环境。在解码端,NAL解码器又复杂拆分,进行图像重构建,如下图所示解码流程图。大致的解码流程为,解码器接收到压缩的码流,经过熵解码,再经过反量化,再反变换,得到残差数据,当解码器获得解码的头信息后构建一个预测块PR…

大家好,又见面了,我是你们的朋友全栈君。

在这里插入图片描述
H264的层次结构包括VCL(视频编码层)与NAL(网络提取层),具体的语法结构,在之前的文章已经提到过,这里就不再赘述了。NAL主要是把VCL的内容进行封装,帮助更好的适合复杂的网络环境。在解码端,NAL解码器又复杂拆分,进行图像重构建,如下图所示解码流程图。大致的解码流程为,解码器接收到压缩的码流,经过熵解码,再经过反量化,再反变换,得到残差数据,当解码器获得解码的头信息后构建一个预测块PRED,预测块与残差叠加求和就可以得到图像数据UF,最后通过各类滤波器,得到重构图像。

解码流程
1.NAL单元与结构

NAL单元是基于包交换技术在网络中传输,符合传输层和存储介质的数据格式,同时具有头信息功能,各类型封装,比如RTSP,RTMP,都是基于NAL单元的基本封装。NAL单元不仅仅可以基于包,还可基于bit流系统的基本格式,两者区别就是bit流都有一个start code,会在头部记录正确,丢失等信息。

如果NAL单元携带一个编码片,有一个SPS或PPS,它的头部包含3个长比特区,类型T,参考ID,隐藏bit位F。在实际的环境中,如果有一个从无线到有线的环境,当NAL单元到达无线环境,有线传输的校验会检测失败,那么中间的路由可以选择从码流去掉这个NALU,也可以传输,有些解码器可以重构,有些只能抛弃。
NALU头结构
2.NAL单元解码流程

NAL单元解码首先提取RBSR,根据NALU不同的类型进行识别,进入不同类型解码过程。详细的解码过程,都是需要根据不同类型的语法结构去解码。
NAL单元解码
一帧图像的详细解码流程,如下图所示,NAL单元解码,再根据NALU的类型进行SLICE解码,再进行BLOCK解码,最终才是预测块叠加,然后去方块滤波处理,重建图像。
一帧图像详细解码流程
2.图像序列号

在解码端,解码完,需要显示,但是解码的图片往往不能立即显示,因为解码顺序与播放顺序是不一样。在H264用什么来标记播放顺序呢?POC,每个帧都分为顶场和底场序列号,详细的信息如下。根据不同类型的帧,进行排序和调整。
在这里插入图片描述
顶场和底场的函数类型。
在这里插入图片描述
POC类型为0,表示基于前一个参考图像计算当前场或帧,大部分参数都是基于此计算。详细如图所示。
在这里插入图片描述
当POC为1表示是基于前一帧的偏移计算顶场或底场数量。详细流程如下。
在这里插入图片描述
当POC为2时,计算流程如下所示,不能用于连续非参考图像序列中。
在这里插入图片描述
3.参考图像标记过程

当完成一帧图像解码后,需要对已解码图像进行详细处理,当nal_ref_idc不等于0,表示要被标记短期参考或长期参考。具体的操作流程如下图所示。如果图像出现不连续,则用公式PrevRefFrameNum不等于(PrevRefFrameNum+1)%MaxFrameNum。
在这里插入图片描述
今天这里讲解的只是解码端的冰山一角,后面还会补充,欢迎关注微信公众号和头条号同步更新。
欢迎关注
欢迎关注

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150230.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Origin简单绘图

    Origin简单绘图一、从cadence导出数据仿真生成波形之之后,鼠标选中波形,右击—>SendTo—>Export,进行csv数据的保存。打开该csv文件,删掉第一行,第一行是是横纵坐标的标识,左侧第一列是横坐标值,右侧列是纵坐标值。二、origin简单绘图双击图标打开origin导入csv数据可选中多个csv文件导入为了让两个csv的数据同时显示,在弹出的对话框进行以下操作(默认第二个csv数据会覆盖第一个csv数据)。设置好之后点击“确定”,两个csv数据均被导入到了o

  • MediaType介绍

    MediaType介绍MediaType媒体类型:决定浏览器将以什么形式、什么编码对资源进行解析Content-Type:也属于MediaType媒体类型,主要用于在请求头中指定资源的MediaType一、MediaType类型类型描述text/htmlHTML格式text/plain纯文本格式text/xmlXML格式image/gifgif图片格式image/jpegjpg图片格式image/pngpng图片格式application/xhtml+xm

  • pycharm与mysql连接错误系统_pycharm怎么使用anaconda环境

    pycharm与mysql连接错误系统_pycharm怎么使用anaconda环境pycharm与数据库MySQL连接

  • 基于Qt的音乐播放器(二)切换歌曲,调节音量,调节语速,暂停

    基于Qt的音乐播放器(二)切换歌曲,调节音量,调节语速,暂停切换歌曲,调节音量,调节语速,暂停先说一下,针对上一次的ui界面,这次做了重新设计,第一张是以前的,第二张是现在的设计,不要喷我按钮的ui,都是临时的,后面会用一种风格整体替换,我还加入了皮肤切换,不过还没有实现功能,这个ui也不是最终设计,后期还是会更新的,争取做到最好,说实话,这个设计真是让人头疼,毕竟是把美工的活抢了,哈哈,然后这个ui的设计,我们先不讲,如果需求高的话,会考虑再写一篇有关ui的,完整项目已上传github,自行下载,其他就没有了,我们赶紧进入今天的正题。

  • DNS域名解析过程_谈谈域名解析DNS的工作原理

    DNS域名解析过程_谈谈域名解析DNS的工作原理一、主机解析域名的顺序1、找缓存2、找本机的hosts文件3、找DNS服务器注意:配置IP和主机名时,要记得修改/etc/hosts文件,因为有些应用程序在主机内的进程之间通信的时候,会本机

  • 微信开放平台授权登录详细流程-第三方登录「建议收藏」

    微信开放平台授权登录详细流程-第三方登录「建议收藏」官方文档介绍的很详细,下面是看到的一篇博客,很有帮助,感谢!原文:https://blog.csdn.net/qq_34190023/article/details/81133619 据微信开放平台“开发资源”中网站应用微信登陆功能开发指南描述:进行授权登陆接入前,需要先注册一个开发者账号,并拥有一个已经审核通过的网站应用,并获取AppID和APPSecret,然后申请微信登陆并通过审核后…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号