解码方法及装置的制作方法

文档序号:7684583阅读:154来源:国知局
专利名称:解码方法及装置的制作方法
技术领域
本发明涉及多媒体技术,尤其涉及一种解码的方法及装置。
技术背景现有技术的解码过程如下解码器接收到码流后,都先将码流存储在一个码流緩存(Buffer)中,在变 长解码(VLD, Variable Length Decoding)时从码流Buffer中读取码流,进行解 析。在解码过程中需要判断码流是否越界,所谓码流越界,就是指向码流的指 针在随着码流解码移动的过程中,指向的位置超过了装载码流的Buffer的边界, 造成的指针地址指向Buffer之外的不确定的地址。这样,读取的数据不是接收到 的码流,而且如果这个不确定的地址是系统不允许访问的地址,而读取了数据, 会导致整个操作系统的错误。尤其是在解析语法元素时,因为需要对解析到的 语法元素进行正确性的判断,首先需要说明的是,语法元素是指在音视频编解 码协议中,协议规定的码流中特定的比特位代表的特定的含义的比特值,解析 语法元素就是将这些特定的比特值提耳又出来,按照编解码协议约定好的意义, 用于后续码流的解析。例如接收到一段以二进制方式传输的码流0000 0000 0000 0000 0000 0001 1011 0110 ......,第四代活动图片专家组(MPEG4, MovingPicture Expert Group)视频编解码协议事先规定,这整个一段码流代表一幅新的 图像开始的标识,这段码流就是代表一个语法元素---幅图像的开始码。如果某个语法元素解析出来出现了协议规定中之外的值,则认为该语法元 素解析错误了。这时候需要判断产生这种错误是因为传输导致的,还是因为码 流Buffe魂界导致的。需要说明的是,在解析视频的过程中,无论乂人网络上实时 接收码流还是从本地的存储设备上读取码流,码流都是连续的,而解码器接收 码流的Buffer是有限的,所以,只能一段一段的接收码流然后解码。而现有解码 的Buffer是软件控制,不是硬件ARM上的Buffer (硬件的具有自动回绕功能)。 软件控制,只能顺序的一直从顶部读耳又码流到底部,所以会出现Buffe濕界。而由于协议中语法元素数量很多,就造成了对码流Buffe魂界的判断更加频繁。而这种频繁的判断,不仅提高了解码器实现的复杂度,而且极大的影响到 解码器的效率。现有的视频解码方法为在解析语法元素过程中,完成对若干个码流的语 法元素解析后,就进行码流Buffer越界的判断,然后冲艮据判断结果,选择继续解 析还是向上层控制上报Buffe魂界,解码器需要获得下一段码流。如果解析的语法元素正确而且码流Buffer没有越界,则继续从码流Buffer中 读取码流,进行下几个语法元素的解析或者如果语法元素解析完成后进4于后续 的解码工作。但是如果解析的语法元素正确,而码流Buffer越界,说明Buffer中 的码流全部解析完成了,所以需要接收网络传输过来的码流,或者继续从本地 存储介质上读取码流,此时解码器不能继续进行语法解析,解码器上净艮上一级 控制需要获得下一段码流,上一级控制再继续给码流Buffer中灌输新的码流。还 有一种情况是,语法元素解析错误,并且码流Buffer没有越界,则通过分析该错 误的语法元素对后续解码的影响程度,如果影响程度不大,则可以继续解析, 如果影响较大,则需要丢弃这一幅图像的码流数据,进行下一幅图^f象的解析。 最后一种情况是,语法元素解析错误,并且码流Buffer越界,这种错误可能是读 取到Buffer之外的数据导致,则不能继续解析,上报上一级控制需要码流,上一 级控制再重新给码流Buffer中灌输码流进行解析。发明人在本发明的创造过程中发现,现有的^L频解码方法存在如下缺点虽然是一次解析多个语法元素后再进行码流越界判断,但是判断次数的减 少并不能有效地解决解析过程中效率问题,因为在多个语法元素的解析语法元 素的过程中,容易造成码流越界,码流的指针很容易指向一个非法地址从而导 致解码器死机。发明内容本发明实施例提供了 一种解码的方法和装置,可简化语法元素解析过程的 判断流程,提高解码的效率。本发明实施例提供了一种解码的方法,包括接收到码流后,将所述码流存储在码流緩存中,所述码流緩存底部预留有 预设的存储空间,以避免对码流进行语法元素解析时码流越界;从所述码流緩存中读取所述码流;对所述码流进行语法元素解析;判断所述码流是否越界,并进行相应处理。本发明实施例还提供了一种解码的装置,包括 码流接收模块,用于接收码流;码流緩存模块,用于将所述码流存储在码流緩存中;所述码流緩存底部预 留有预设的存储空间以避免对码流进行语法元素解析时码流越界;码流读取模块,用于从所述码流緩存中读取码流;语法解析模块,用于对所述码流进行语法元素解析;越界判断模块,所述语法元素解析完成后,判断所述码流是否越界,并进 4亍相应处理。实施本发明实施例,具有如下有益效果本发明实施例提供的解码方法和装置,通过在码流緩存底部预留一段空间, 并在所有码流的语法元素解析完成后才进行码流越界判断,后置了码流越界的 判断流程,简化了语法元素解析过程中的判断流程,提高了解码的效率。


图l是本发明实施例提供的解码方法第一实施例的流程示意图; 图2是本发明实施例提供的解码方法第二实施例的流程示意图; 图3是本发明实施例提供的解码装置的组成示意图;图4是本发明实施例提供的如图3所示的解码装置中越界判断模块的组成 示意图。
具体实施方式
本发明实施提供了一种解码的方法及装置,可简化;f见频解码语法元素解析 过程的判断流程,提高了解码的效率。参见图l,为本发明实施例提供的解码方法第一实施例的流程示意图; 本发明实施例以MPEG4解析语法元素过程为例说明本发明实施例提供的 解码的方法,当然,其他的^L频解码协议也可以^使用本发明实施例才是供的解码 方法,因为在视频解码协议中,接收码流、解析语法元素这一级别的才喿作方式是相同的。MPEG4解析语法元素过程中需要同时判断语法信息是否正确以及码流 Buffer是否越界,而本发明实施例提供的视频解码方法,可简化解析过程的判断 流程,提高解码效率,具体的流程如下在步骤100,视频码流解析时,首先设置一个接收码流的緩存(Buffer), 并且在码流Buffer的底部预留一定空间(该空间的长度根据进行语法元素需要消 耗码流的大小而设置),并在所述码流Buffer中填充特定值。需要说明的是,所述特定值可以是全1或者全0,填充特定值主要有两方面 作用其一,相当于对预留的Buffer底部做了一个初始化操作,即便是解码越 界到预留Buffer中,解码器不会读取到意想不到的值而造成解码器意想不到的 动作(解码器有一定的容错,但是,填充特定值相当于对解码器读到的数据做 了一个保险)。其二,填充特定值有利于语法解析时进行错误判断。语法解析的 数值应该是在一定范围内的。所以,如果是预留Buffer中没有设定过的值,这 些值不能保证语法解析能判断出来错误。总之,设定特定值是容错的一种手段。在步骤101,接收到码流后,将所述码流存储在码流Buffer中;在步骤102,从所述码流Buffer中读取码流;在步骤103,判断是否寻找到所述读取到的码流的起始码;如果寻找到与所 述码流相应的起始码,则转入步骤104;否则转入步-银105;需要说明的是,在视频解码协议中, 一般定义起始码为长度为32比特的码 字,其形式在整个比特流中是唯一的。起始码有多种用途,其中之一是用来标 识比特流语法结构的开始。在步骤104,根据所述起始码的不同值,对所述码流进行相应的语法元素解 析,语法元素解析完成后转入步骤106;解码过程中,因为不同级别的语法元素的结构是不同的,所以根据起始码 值的不同,进行不同层次语法元素的解析。例如,起始码值等于一个图像的开 始值,则后续码流解析为图像级别的语法元素解析。在步骤105,记录码流的位置,并返回从码流Buffer中读取码流的步骤;需要说明的是,因为在视频解析的过程中,无论从网络上实时接收码流还 是从本地的存储设备上读取码流,码流都是连续的。而解码器接收码流的Buffer 毕竟有限,所以,上层接收码流时需要记录码流的位置以确定下一次解析从码流的什么地方开始。另外,如果buffer中的码流足够本次解析用,也需要记录 码流位置,将这个位置传给硬件解码加速器,这样硬件解码时才知道AU十么地 方开始读耳又buffer中的码流;在步骤106,判断所述码流是否越界,若是,则转入步骤105,若否则转入 步骤107;需要说明的是,这里说的码流越界就是指语法解析时,码流指针进入 了码流緩存底部预留的存储空间。因为预留空间里面不是真的码流,而是填充 的特定值,因此若解析到了预设的存储空间中填充的特定值,则表示码流越界。在步骤107,记录正常解析完成的状态以及码流位置;如果Buffer中的码流够本次解析使用,那么在步骤107完成后,启动硬件 解码加速器开始解码,并告诉石更件应该/人什么地方读取码流;若Buffer中的码 流不够本次解析使用,在步骤107完成后,则需要返回从码流Buffer中读取码 流进行语法解析的步骤。需要说明的是,在解析语法信息的过程中,只对解析到的语法信息的正确 性进行判断,如杲发现错误,再进行码流是否越界判断;如果没有发现错误, 解析完毕后,再进行码流是否越界的判断。通过后置码流越界的判断流程,避 免了实时判断是否发生码流Buffer越界,提高了解码效率。参见图2,是本发明实施例4是供的解码方法第二实施例的流程示意图;本发 明实施例同样以MPEG4解析语法元素过程为例说明解码的方法。在解码时,首先需要获得码流,码流可以从网上获得,也可以直"t妾从本地 磁盘读取。但是解码器的存储容量有限,不能将所有码流一次读完(或者从网 上实时接收码流时,也不可能一次将所有码流获得)。所以,解码器都需要设置 一个码流Buffer, —段一段的存储码流,流程如下在步骤200,视频码流解析时,首先设置一个接收码流的緩存(Buffer), 并且在码流Buffer的底部预留一定空间(该空间的长度根据进行语法元素需要消 耗码流的大小而设置),并在所述码流Buffer中填充特定值;解码器接收到码流后,将所述码流存储在码流Buffer中;解码开始时,首先 从码流Buffer中读取码流进行解析,先进行码流的语法解析;需要说明的是,语法信息包含着视频解码的最重要的信息,如视频是采用 什么协议的压缩方式,包含怎样的图像等,这段信息出错,会直接导致解码出 来的图像错误。在解析语法时,需要实时判断读取的码流是否会超过Buffer边界,又要实时判断解码出来的语法是否正确,于是本发明实施例通过在码流buffer底 部预留一段空间,设置为特定的值,以此避免出现码流指针访问非法地址,导 致解码系统发生错误的操作。在步骤201,语法解析完后,进行图像像素点的解析,即VLD解析。VLD 解析完后根据解析的图像特性分为帧内解析和帧间解析两条路。帧内宏块解析通过步骤202反扫描,步骤203AC/DC预测,步艰《204反量 化,步骤205反变换,经过步骤206解码后处理(滤波操作)得到重构图像。 所述步骤202到步骤206,都是本技术领域的技术人员熟知的,在此不再赘述。帧间宏块则需要根据以前重构出来的图像经过步骤207运动矢量计算和步 骤208运动补偿计算,再加上解码帧緩存的解析到的预测值得到本图^象的重构 图像,然后进行滤波,得到最终的输出图像。在上述视频解码方法的实施例中,因为事先对码流Buffer的底部预留了 一定 的空间(例如,假设码流Buffer的空间大小为6k字节,则在Buffer的底部预留的 lk字节的空间,那么码流Buffer的存储空间就变为5k字节,可以存放5k字节的码 流),所以,即便是在解析的过程中出现了越界,码流指针也被控制在预留的 空间内访问,也不会出现码流指针访问非法地址,导致解码系统发生错误的操 作。另一方面,在解析过程中,只对语法元素的正确性进行判断,不进4亍码流 Buffer的越界判断,减少了判断的次数,提高了解码效率。参见图3,是本发明实施例提供的解码装置的组成示意图;所述解码装置,包括码流接收模块l,用于接收待解码的码流;码流緩存模块2,用于将所述码流接收模块l接收到的码流存储在码流緩存 中;所述码流緩存底部预留一段空间用于避免对码流进行语法元素解析时码流 越界;具体地,在码流Buffer的底部预留一定空间(该空间的长度根据进行语法 元素需要消耗码流的大小而设置),并在所述码流Buffer中填充特定值,需要说 明的是,所述特定值可以全部是O,或者全部是l,只要该特定值不是在变长解 码中的码字即可。码流读取模块3,用于在变长解码对,从所述码流緩存中读取码流; 可选地,本发明实施例提供的解码装置还包括起始码找寻模块4,用于寻找所述码流的起始码;需要说明的是,在视频解码协议中, 一般定义起始码为长度为32比特的码字,其形式在整个比特流中是唯一的。起始码有多种用途,其中之一是用来标识比特流语法结构的开始。语法解析模块5,用于根据所述起始码找寻模块4寻找的起始码的不同值, 对所述码流进行相应的语法元素解析;需要说明的是,在解码过程中,因为不 同级别的语法元素的结构是不同的,所以根据起始码值的不同,进行不同层次 语法元素的解析。例如,起始码值等于一个图像的开始值,则后续码流解析为 图像级别的语法元素解析。越界判断模块6,所述语法元素解析完成后,执行所述码流是否越界的判斯 流程。具体地,若所述语法解析才莫块5对所述码流进4亍语法解析时,码流指针进 入所述预设存储空间,则所述越界判断模块6判定码流越界;若所述语法解析模 块5对所述码流进行语法解析时,码流指针未进入所述预设存储空间,则所述越 界判断模块6判定码流未越界。参见图4,是如图3所示的解码装置的越界判断模块的组成示意图;所述越界判断模块6包括越界判断单元60,用于判断所述经过语法元素解析后的码流是否越界;码流记录单元61,在所述越界判断单元60判定码流越界时,记录码流的位 置;在所述码流越界判断单元61判定码流未越界时,记录码流正常解析完成状 态以及码流位置。在视频解析的过程中,无论从网络上实时接收码流还是从本 地的存储设备上读取码流,码流都是连续的。而解码装置接收码流的Buffer毕 竟有限,所以,上层接收码流时码流记录单元61需要记录码流的位置以确定下 一次解析从码流的什么地方开始。另外,如果buffer中的码流足够本次解析用, 码流记录单元61也需要记录码流位置,将这个位置传给硬件解码加速器,这样 硬件解码时才知道从什么地方开始读取buffer中的码流。需要说明的是,语法解析模块5在解析语法信息的过程中,只对解析到的语 法信息的正确性进行判断,如果发现错误,越界判断模块6再进行码流是否越界 判断;如果没有发现错误,解析完毕后,越界判断模块6再进行码流是否越界的 判断。这样,就避免了实时判断是否发生码流Buffer越界,提高了解码效率。在本发明实施例中,因为事先对码流Buffer的底部预留了 一定的空间(例如, 假设码流Buffer的空间大小为6k字节,则在Buffer的底部预留的lk字节的空间,那么码流Buffer的存储空间就变为5k字节,可以存放5k字节的码流),所以,即 便是语法解析模块5在解析的过程中出现了码流越界,码流指针也被控制在预留 的空间内访问,也不会出现码流指针访问非法地址,导致解码系统发生错误的 操作》另一方面,在解析过程中,只对语法元素的正确性进行判断,不进行码流 Buffer的越界判断,減少了判断的次数,提高了解码效率。通过以上的实施方式的描迷,本领域的技术人员可以清楚地了解到本发明 可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。 基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以 以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如 ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个 人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某 些部分所述的方法。本发明实施例提供的解码方法和装置,通过在码流緩存底部预留一段空间, 并在所有码流的语法元素解析完成后才进行码流越界判断,后置了码流越界的 判断流程,简化了语法元素解析过程中的判断流程,提高了解码的效率。以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本发明之 权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
权利要求
一种解码方法,其特征在于,包括1.接收到码流后,将所述码流存储在码流缓存中,所述码流缓存底部预留有预设的存储空间以避免对码流进行语法元素解析时码流越界;从所述码流缓存中读取所述码流;对所述码流进行语法元素解析;判断所述码流是否越界,并进行相应处理。
2、 如权利要求l所述的解码方法,其特征在于,判断所述码流是否越界的 步骤包括若对所述码流进行语法解析时,码流指针进入所述预设存储空间,则判定 码流越界;若对所述码流进行语法解析时,码流指针未进入所述预设存储空间, 则判定码流未越界。
3、 如权利要求2所述的解码方法,其特征在于,判断所述码流是否越界后, 进行相应处理的步骤包括若判定所述码流越界,则记录码流的位置;若判定所述码流未越界,则记 录码流正常解析完成状态以及码流位置。
4、 如权利要求2或3所述的解码方法,其特征在于,所述方法还包括 在对码流的语法解析过程中出现了码流越界时,将码流指针控制在所述预留的空间内访问。
5、 如权利要求4所述的解码方法,其特征在于,在所述预设的存储空间中 填充特定值,以初始化所述预设的存储空间。
6、 如权利要求5所述的解码方法,其特征在于,所述解码方法适用于视频 解码。
7、 一种解码装置,其特征在于,包括 码流接收模块,用于接收码流;码流緩存模块,用于将所迷码流存储在码流緩存中;所述码流纟爰存底部预 留有预设的存储空间以避免对码流进行语法元素解析时码流越界;码流读取模块,用于从所述码流緩存中读取码流;语法解析模块,用于对所述码流进行语法元素解析;越界判断模块,所述语法元素解析完成后,判断所述码流是否越界,并进 4亍一目应处理。
8、 如权利要求7所述的解码装置,其特征在于,所述越界判断模块包括 越界判断单元,用于判断所述经过语法元素解析后的码流是否越界;码流记录单元,在所述越界判断单元判定码流越界时,记录^马流的位置; 在所迷码流越界判断单元判定码流未越界时,记录码流正常解析完成状态以及 码流位置。
9、 如权利要求7所述的解码装置,其特征在于,所迷码流緩存才莫块中的码 流緩存底部预设的存储空间中填充有特定值,以初始化所述预设的存々者空间。
10、 如权利要求8或9所述的解码装置,其特征在于,若所述语法解析模块 对所述码流进行语法解析时,码流指针进入所述预设存储空间,则所述越界判 断单元判定码流越界;若所述语法解析模块对所述码流进行语法解析时,码流 指针未进入所述预设存储空间,则所述越界判断单元判定码流未越界。
全文摘要
本发明实施例公开了一种解码方法,包括接收到码流后,将所述码流存储在码流缓存中,所述码流缓存底部预留有预设的存储空间以避免对码流进行语法元素解析时码流越界;从所述码流缓存中读取所述码流;对所述码流进行语法元素解析;判断所述码流是否越界,并进行相应处理。本发明实施例还公开了一种解码装置。采用本发明,简化了语法元素解析过程的判断流程,提高了解码的效率。
文档编号H04N7/26GK101252685SQ20081002642
公开日2008年8月27日 申请日期2008年2月22日 优先权日2008年2月22日
发明者刘宝兰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1