分析AVS 2.0关键参数和查看解码后错误帧的方法
技术领域
本发明涉及AVS 2.0应用开发技术领域,尤其涉及一种分析AVS2.0关键参数和查看解码后错误帧的方法。
背景技术
第二代信源编码标准(Audio Video coding Standard,AVS),简称AVS,首要应用目标是超高清晰度视频,支持超高分辨率(4K以上)、高动态范围视频的高效压缩。AVS 2.0的压缩效率比上一代标准AVS+和H.264/AVC提高了一倍,超过国际同类型标准HEVC/H.265。AVS2.0还支持:三维视频、多视角和虚拟现实视频的高效编码;立体声、多声道音频的高效有损及无损编码;监控视频的高效编码;面向三网融合的新型媒体服务。
但是目前市面上还没有能分析AVS 2.0关键参数和查看解码后错误帧的装置;所以会给相关开发人员造成非常大的困难,遇到问题码流没有参考工具可以分析其第几帧出错,也没有便捷方法查看其关键参数信息。
因此,研发一种能分析AVS 2.0关键参数和查看解码后错误帧的装置及方法是本领域亟待解决的问题。
发明内容
本发明的目的是克服上述技术问题,提供一种分析AVS 2.0关键参数和查看解码后错误帧的方法
一种分析AVS 2.0关键参数和查看解码后错误帧的方法,包括如下步骤:
读入待解码码流;
解析出所述待解码码流的关键参数;
根据所述关键参数对所述待解码码流进行解码,得到解码帧数据;
存储所述关键参数和所述解码帧数据;
将所述解码帧数据逐帧进行显示,当判断当前帧有显示错误时,导出所述当前帧。
优选地,解析出所述待解码码流的关键参数包括:当判断开始标志码为序列头起始码时,读取第一参数。
具体地,所述第一参数包括:
档案识别号、层级识别号、水平尺寸、高度尺寸、灰度格式、权重中的一种或多种。
优选地,解析出所述待解码码流的关键参数包括:当判断开始标志码为扩展起始码时,读取第二参数。
视频格式识别号、色彩空间、显示水平尺寸、显示高度尺寸、版本中的一种或多种。
优选地,解析出所述待解码码流的关键参数包括:当判断开始标志码为I帧或PB帧起始头信息时,读取第三参数。
具体地,所述第三参数包括:
固定图片量化参数或/和图片量化参数。
优选地,根据所述关键参数对所述待解码码流进行解码,得到解码帧数据包括;
依次计算所述待解码码流中每一帧的宏块数目;
分别解码每一帧的所有宏块;
将解码后的每一帧的宏块拼接成解码帧数据并存储。
优选地,将所述解码帧数据逐帧进行显示包括:
根据所述关键参数计算逐帧显示的每一帧的大小;
根据逐帧显示的每一帧的大小读取所述解码帧数据;
将逐帧显示的每一帧的数据在显示装置上显示出来。
优选地,所述解码帧数据为YUV420格式的数据信息。
本发明的有益效果如下:
1、本发明提供的方法可以直观的查看AVS 2.0的关键参数,方便开发人员快速了解码流的重要信息;
2、本发明提供的方法可以采用单帧播放的方式查看解码后的数据,提高开发人员纠错的效率;
3本发明提供的方法可以根据单帧播放的方式查看是否解码后有马赛克,如果有,可以将此错误帧导出到硬盘上方便开发人员查看错误数据。
附图说明
图1是本发明所揭示的一种分析AVS 2.0关键参数和查看解码后错误帧的方法流程图;及
图2是本发明所揭示的另一种分析AVS 2.0关键参数和查看解码后错误帧的方法流程图;
图3为本发明实施例提供的解析关键参数过程示意图;
图4为本发明实施例提供的单帧播放方法流程图;及
图5为本发明实施例提供的导出错误帧数据的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一
请参阅图1,图1是本发明所揭示的一种分析AVS 2.0关键参数和查看解码后错误帧的方法流程图,包括:
S11、读入待解码码流;
S12、解析出所述待解码码流的关键参数;
S13、根据所述关键参数对所述待解码码流进行解码,得到解码帧数据;
S14、存储所述关键参数和所述解码帧数据;
S15、将所述解码帧数据逐帧进行显示,当判断当前帧有显示错误时,导出所述当前帧。
优选地,解析出所述待解码码流的关键参数包括:当判断开始标志码为序列头起始码时,读取第一参数。
具体地,所述第一参数包括:
档案识别号(Profile ID)、层级识别号(Level ID)、水平尺寸(HorizontalSize)、高度尺寸(Vertical Size)、灰度格式(Chroma Format)、权重(Weight quant)。
优选地,解析出所述待解码码流的关键参数包括:当判断开始标志码为扩展起始码时,读取第二参数。
具体地,所述第二参数包括:
视频格式识别号(Video Format ID)、色彩空间(Color Promaries)、显示水平尺寸(Display Hor Size)、显示高度尺寸(Display Ver Size)、版本(CopyRight)。
优选地,解析出所述待解码码流的关键参数包括:当判断开始标志码为I帧或PB帧起始头信息时,读取第三参数。
具体地,所述第三参数包括:
固定图片量化参数(Fix Picture QP)或/和图片量化参数(Picture QP)。
优选地,根据所述关键参数对所述待解码码流进行解码,得到解码帧数据包括;
依次计算所述待解码码流中每一帧的宏块数目;
分别解码每一帧的所有宏块;
将解码后的每一帧的宏块拼接成解码帧数据并存储。
优选地,将所述解码帧数据逐帧进行显示包括:
根据所述关键参数计算逐帧显示的每一帧的大小;
根据逐帧显示的每一帧的大小读取所述解码帧数据;
将逐帧显示的每一帧的数据在显示装置上显示出来。
具体地,通过显示装置显示每一帧的数据可以直观的查看AVS2.0的关键参数,方便开发人员快速了解码流的重要信息。
优选地,所述解码帧数据为YUV420格式的数据信息。
实施例二
请参阅图2,图2是本发明所揭示的另一种分析AVS 2.0关键参数和查看解码后错误帧的方法流程图,包括:
S21、解析待解码码流的关键参数;
根据AVS 2.0的标准规范解析出AVS 2.0的关键参数,然后将这些关键参数展示在装置上让开发人员可以方便查看。
S22、单帧播放解码帧数据;
根据解析出的关键参数和AVS 2.0的标准规范对待解码码流进行解码,得到YUV420格式的解码帧数据,然后将解码帧数据保存在存储器上;当用户选择单帧播放时,读取存储在存储器上的解码帧数据并将其数据按照码流规定的尺寸分割成单帧数据,最后将分割出来的单帧数据在显示装置上显示以供用户查看。
S23、导出错误帧数据;
在进行单帧播放时,用户发现单帧数据中某一帧有错误(即出现马赛克时),则可以导出错误帧数据。
实施例三
请参阅图3,图3为本发明实施例提供的解析关键参数过程示意图。本实施例在上述实施例的基础上,对本发明的解析待解码码流的关键参数的整个过程进行详细介绍如下:
S311、打开AVS 2.0码流;
S312、跳转到起始标志位;
S313、检查起始标志位;
S3131、如果起始标志位的值为OxB0(即序列头起始码),则根据AVS2.0的规范要求读出第一参数:档案识别号、层级识别号、水平尺寸、高度尺寸、灰度格式和权重;
S3132、如果起始标志位的值为0xB5(即扩展起始码),则根据AVS2.0的规范要求读出第二参数:视频格式识别号、色彩空间、显示水平尺寸、显示高度尺寸和版本;
S3133、如果起始标志位的值为0xB6或者0xB3(即I帧或者PB帧起始头信息),则根据AVS 2.0的规范要求读出第三参数:固定图片量化参数和图片量化参数;
S314、将包括第一参数、第二参数和第三参数的关键参数存储在一个公用的结构体中。
实施例四
请参阅图4,图4为本发明实施例提供的单帧播放方法流程图。本实施例在上述实施例的基础上,对本发明的单帧播放方法的整个过程进行详细介绍如下:
S41、在UI界面上选择播放功能;
S42、创建一个显示表面(Surface);
S43、等待AVS 2.0码流解码结束;
S44、解码AVS 2.0码流;包括:
S4401、打开AVS 2.0码流;
S4402、解析关键参数(header);
S4403、初始化运动矢量(Motion Vector,MV)的范围;
S4404、计算当前帧的长和宽,并计算最大的宏块数量;
S4405、分析片头(Slice Header);
S4406、读取出样本自适应偏移量(Sample Adaptive Offset,SAO)&自适应环路滤波(Adaptive Loop Filter,ALF)的参数;
S4407、解析出当前宏块;
S44081、如果当前宏块是I帧宏块则直接按照帧内解码来处理当前宏块;
S44082、如果当前宏块是PB帧宏块则按照帧间标准解码来处理当前宏块;
S4409、当该帧所有宏块解完时将所有宏块拼接组成一张YUV420格式的图片;
S4410、将该帧解码后的YUV420格式的图片组成一个文件;
重复S4402-S4410步直至所有帧都被解出并组成相对应的文件;
S4411、将文件存储在存储器中;
S45、用户选择播放方式;
S4511、如果用户选择单帧播放,则读取一张YUV420文件;包括:将存储在存储器上的YUV420的文件打开,并根据第S4402步解出的关键参数计算一帧的大小;根据一帧的大小计算文件的偏移量,并读取一帧YUV420的数据;
S4512、在Surface上显示读取的YUV420;
S4513、等待用户命令;包括:点击下一帧的命令,如果用户继续点击则重复第S4511步和第S4512步直至解码后的YUV文件被读取完;
具体地,采用单帧播放的方式查看解码后的数据,可以提高开发人员纠错的效率。
S4521、如果用户选择连续播放,则读取YUV420文件;创建一个线程;每40MS线程重新跑一次;
S4522、在Surface上显示读取的YUV420文件。
实施例五
请参阅图5,图5为本发明实施例提供的导出错误帧数据的方法流程图。本实施例在上述实施例的基础上,对本发明的导出错误数据的方法的整个过程进行详细介绍如下:
S51、在UI界面上选择播放功能;
S52、创建一个Surface;
S53、等待AVS 2.0码流解码结束;
S54、解码AVS 2.0码流,并选择单帧播放还是连续播放:
S5411、如果用户选择单帧播放,则读取一张YUV420文件;
S5412、在Surface上显示读取的YUV420;包括:将读取的YUV420数据在创建的Surface上显示出来;
S5413、用户检查显示的YUV420数据是否有马赛克;
如果有马赛克,则用户可以选择导出命令导出含有马赛克的YUV420数据;
具体地,通过单帧播放的方式查看解码后是否有马赛克,如果有,可以将此错误帧导出到硬盘上方便开发人员查看错误数据。
如果没有有马赛克,则等待用户命令;包括:点击下一帧的命令,如果用户继续点击下一帧则重复第S5411步到第S5413步直至解码后的YUV文件被读取完;
S5421、如果用户选择连续播放,则读取YUV420文件;创建一个线程;每40MS线程重新跑一次;
S5422、在Surface上显示读取的YUV420文件。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。