CN101960853A - 视频解码器错误处置 - Google Patents

视频解码器错误处置 Download PDF

Info

Publication number
CN101960853A
CN101960853A CN2009801064671A CN200980106467A CN101960853A CN 101960853 A CN101960853 A CN 101960853A CN 2009801064671 A CN2009801064671 A CN 2009801064671A CN 200980106467 A CN200980106467 A CN 200980106467A CN 101960853 A CN101960853 A CN 101960853A
Authority
CN
China
Prior art keywords
frame
starting point
error
decoding
numbering
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2009801064671A
Other languages
English (en)
Other versions
CN101960853B (zh
Inventor
李彦辑
戴闵
滕佳缘
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101960853A publication Critical patent/CN101960853A/zh
Application granted granted Critical
Publication of CN101960853B publication Critical patent/CN101960853B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • H04N19/68Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience involving the insertion of resynchronisation markers into the bitstream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • H04N19/895Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder in combination with error concealment

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种视频解码器执行循序错误处置过程来检测并隐藏视频数据单元的被破坏数据段内的错误。所述解码器循序地解码当前数据单元。在检测到错误后,所述解码器即刻设置错误旗标,并使下一单元的起点处的解码重新同步。如果设置了所述错误旗标,那么所述视频解码器基于后一单元的起点来识别所述被破坏数据段的终点。所述解码器隐藏所述当前单元的起点与所述被破坏数据段的所述终点之间的数据。如果未设置所述错误旗标,那么所述解码器可解码所述当前单元的剩余部分,且着于解码下一可用单元,而不对所述当前单元执行错误处置和隐藏。所述解码器还可解决因丢失的视频数据单元而导致的参考单元失配。

Description

视频解码器错误处置
本申请案主张2008年2月26日申请的第61/031,438号美国临时申请案的权益,所述临时申请案的全文内容以引用的方式并入本文中。
技术领域
本发明涉及数字视频解码,且更明确地说,涉及用于处置视频解码错误的技术。
背景技术
已开发了许多视频编码和解码技术用于编码和解码数字视频数据。举例来说,运动图片专家组(MPEG)已开发了包括MPEG-1、MPEG-2和MPEG-4在内的若干技术。其它实例包括国际电信联盟(ITU)-T H.263标准,以及ITU-T H.264标准及其对应标准,ISO/IEC MPEG-4,第10部分,即高级视频译码(AVC)。这些视频标准通过以压缩方式编码数据来减小数据量而支持视频数据的高效发射和存储。
源装置可使用上述视频编码技术中的一者来编码数字视频数据。所述源装置存档所述经编码的视频数据且/或经由发射信道将所述经编码的视频数据发射到目的装置。所述目的装置接收所述经编码视频数据,且解码所接收到的视频数据以恢复原始数字视频数据以供重放。视频数据在经由易于出错的信道进行发射期间可能丢失或被破坏,从而导致解码错误。抗错性对于例如视频广播和视频电话等各种应用来说是重要的。
视频解码器应检测所接收位流中的错误以支持稳定的视频解码。另外,视频解码器还应执行错误处置以减小错误对质量的影响。当检测到解码错误时,视频解码器可隐藏被破坏的数据,直到可重新建立解码同步为止。在没有适当的错误处置的情况下,解码器可能会丢掉正确数据或显示不可靠的重构数据,上述情况中的每一者均可使视觉质量降级。然而,错误处置可能是计算上密集的且消耗过多功率,特别是在实施于硬件中时。
发明内容
本发明涉及用于有效地处置在数字地解码经编码视频数据时发生的解码错误的技术。所述视频数据可被组织为例如帧或片(slice)等视频数据单元。视频数据单元可具有可变大小,且可包括例如宏块或较小块等视频块。视频解码器可执行循序错误处置过程以检测且隐藏一个或一个以上视频数据单元的被破坏数据段内的错误。
解码器从例如帧或片等当前视频数据单元的起点循序地解码所述视频数据单元。在当前视频数据单元中检测到错误后,解码器可设置错误旗标,且使位流中的下一可用视频数据单元的起点处的解码重新同步。所述错误旗标指示当前数据单元中的经解码数据的至少一些数据产生了解码错误且被破坏。如果设置了错误旗标,那么视频解码器基于之后的视频数据单元的起点而识别被破坏数据段的终点。
解码器隐藏当前视频数据单元的起点与被破坏数据段的终点之间的数据。以此方式,解码器可避免丢失正确数据和显示错误数据。如果未设置错误旗标,从而指示没有错误,那么解码器可解码当前视频数据单元的剩余部分,且继续解码下一可用视频数据单元,而不执行错误处置和对当前视频数据单元的隐藏。解码器还可解决由例如丢失的视频帧等丢失的视频数据单元导致的参考单元失配。
在一个方而中,本发明提供一种视频解码方法,其包含:确定经编码视频数据的当前单元的起点;解码所述当前单元的至少一部分;在所述当前单元中检测解码错误;确定所述经编码视频数据的下一可用单元的起点;如果检测到解码错误,那么基于所述下一可用单元的所述起点确定被破坏数据段的终点;以及基于当前单元的起点和被破坏数据段的终点而隐藏被破坏数据段。
在另一方面中,本发明提供一种视频解码装置,其包含:解码引擎,其解码经编码视频数据的当前单元的至少一部分;错误检测模块,其在当前单元中检测解码错误;错误映射模块,其确定当前单元的起点,确定所述经编码视频数据的下一可用单元的起点,且在检测到解码错误的情况下,基于所述下一可用单元的起点确定被破坏数据段的终点的;以及错误隐藏模块,其基于当前单元的起点和被破坏数据段的终点而隐藏所述被破坏数据段。
在一额外方面中,本发明提供一种计算机可读媒体,其包含致使中个或一个以上处理器执行以下操作的指令:确定经编码视频数据的当前单元的起点;解码所述当前单元的至少一部分;在所述当前单元中检测解码错误;确定所述经编码视频数据的下一可用单元的起点;如果检测到解码错误,那么基于所述下一可用单元的起点确定被破坏数据段的终点;以及基于当前单元的起点和被破坏数据段的终点而隐藏所述被破坏数据段。
附图和以下描述中陈述本发明的一个或一个以上方面的细节。从所述描述和图式且从权利要求书将明白本发明的其它特征、目标和优点。
附图说明
图1是说明执行如本发明中所描述的错误处置和隐藏技术的视频编码和解码系统的框图。
图2是说明执行如本发明中所描述的错误处置和隐藏技术的视频解码器的实例的框图。
图3是说明实例错误处置和隐藏模块的框图。
图4是说明视频解码器在执行循序错误处置和隐藏技术时的实例操作的流程图。
图5是说明视频解码器在对帧内的解码错误执行错误处置和隐藏时的实例操作的流程图。
图6是说明对帧内包含解码错误的实例位流应用错误处置和隐藏技术的图解。
图7是说明视频解码器在对跨越两个或两个以上帧的解码错误执行错误处置和隐藏时的实例操作的流程图。
图8是说明对含有跨越两个或两个以上帧的错误的实例位流应用错误处置和隐藏技术的图解。
图9A、图9B和图9C是说明对准许多个参考帧的位流应用错误处置和隐藏技术的图解。
图10是说明视频解码器在对准许多个参考帧的位流中的丢失帧执行错误处置和隐藏时的实例操作的流程图。
图11A和图11B是说明对准许多个参考帧的实例位流应用错误处置和隐藏技术的图解。
具体实施方式
本发明是针对用于高效地处置在解码视频数据时发生的解码错误的循序错误处置技术。所述循序错误处置技术支持错误隐藏,但不要求先行操作以识别待隐藏的数据。在本发明的一些方而中,循序错误处置技术可降低实施复杂性,降低解码器中的缓冲器大小要求,且促成高效的功率消耗,尤其是在实施于例如移动装置等嵌入式系统中时。另外,在一些方面中,循序错误处置技术可高效地维持或增强视频的视觉质量。
错误处置可涉及在检测到视频解码错误时识别待隐藏的视频数据,以便抑制解码错误的影响。举例来说,视频解码器可隐藏一个或一个以上视频数据单元(例如一个或一个以上帧或片)内的视频数据(例如宏块(MB))。出于说明目的,本发明将通常涉及呈视频片形式的视频单元和呈MB形式的块。然而,本发明可易于适用于其它类型的视频数据单元和块。视频序列包括多个视频帧。每一帧可包括多个视频片。每一视频片可包括具有准许使解码过程重新同步的重新同步码字的片标头。
错误隐藏可涉及用其它数据来替代视频片内的块。可使用多种隐藏技术中的任一种。通常,视频解码器可通过将被破坏数据替换为来自另视频数据单元的类似数据来隐藏所述被破坏数据。举例来说,视频解码器可通过将一片中的MB替换为来自不同帧中的片的其它MB来隐藏所述MB。明确地说,一个片中的MB可由来自视频序列中时间上邻近的帧中的对应片的空间上位于同一地点的MB替换。
本发明大体上描述可为简单且功率高效,同时提供可接受的视觉质量的循序错误处置技术。在错误隐藏通常需要知道待隐藏的MB的编号,而错误处置提供此信息的意义上,错误处置不同于错误隐藏。此信息可被称为错误范围。可改变结合所揭示的错误处置技术而使用的特定错误隐藏技术。然而,将结合由循序错误处置技术产生的错误范围来描述错误隐藏。
在操作中,视频解码器可能并不知道解码错误的确切位置,且可能不会立即检测到所述解码错误。因此,驻留在两个片标头之间的MB可能经受不可靠解码。为避免存在可能在视觉上造成混乱的经错误解码的MB,视频解码器可被设计为在检测到解码错误时隐藏两个片标头之间的所有MB。以此方式,视频解码器可隐藏所有可能已被破坏的MB。如果错误位于一个片内,那么片标头可为连续的,或者在错误跨越多个片的情形下,片标头是不连续的。
为确定将隐藏哪些MB和多少MB,解码器的错误处置操作可确定在检测到解码错误的当前片的起点与帧的后一片或者终点(在位流中紧接其后的那一者)的下一重新同步码字之间延伸的所有MB。换句话说,错误处置操作可识别当前片中的第一MB与紧接于视频帧的下一片或者终点之前的最末MB。接着可将此信息传递给错误隐藏操作。
对帧中的MB进行编号。最末MB紧接于下一片的第一MB之前出现。因为例如片等视频单元的大小是可变的,所以后一片中第一MB的编号并不容易知道。用于识别后一片中的第一MB的一种方法是在完成当前片的解码之前,在位流中先行且搜索与下一个片标头相关联的重新同步码字。通过预解码下一个片标头且识别重新同步码字,先行操作可确定下一片的第一MB,且因此可确定前一片的最末MB。以此方式,在检测到错误的情形下,第一MB和最末MB是可用的。第一MB和最末MB界定供隐藏的数据段。所述数据段可含有一个片或多个片。
当帧被分为若干个片时,解码器通常一次解码一个片,而不是一次解码一个帧。理想的是,解码器可应用先行操作以寻找下一个片标头,从而确定所述解码器需要为当前片解码的MB的编号。所述解码器需要知道被破坏数据段的第一MB和最末MB,使得在解码期间找到错误时,错误处置器可提供这些编号以用于错误隐藏。以此方式,解码器仅隐藏被破坏数据段内的MB,且从下一个片标头重新开始解码。在片结构的协助下,解码器可重构更多MB,而不会丢失一完整帧。
先行方法在一些基于软件的解码器实施方案中可能是高效的,但对于嵌入式硬件解码器架构来说,先行方法可能是高度不合意的。在许多情况下,先行操作可显著增加硬件复杂性,且需要处理器之间的更多计算和中断,从而使功率效率降级。另外,先行操作可能需要过多缓冲,使得解码过程可在先行到下一片之后回复到当前片。先行操作在解码当前片之前发生,且因此,不管是否检测到解码错误,都执行先行操作。因此,每一片必须经缓冲且接着经解码。此先行操作应用于位流中的所有片,即使位流不含有错误也是如此,从而需要为大多数片浪费的复杂计算。
通过如本发明中所描述的循序错误处置过程,视频解码器不需要先行以识别后一片的起点。代替的是,在进行到后一片之前,视频解码器循序地解码当前片,直到检测到错误为止。并不是在解码之前在位流中先行,而是在未检测到错误的情况下,视频解码器可解码整个当前片,而不首先识别后一片的起点。
以此方式,视频解码器可延迟错误隐藏操作,直到获得正被解码的下一片的片标头为止。在解码当前片之前,解码器不需要知道被破坏数据的最末MB编号,但维持指示所述片中是否发生解码错误的错误旗标。因此,实际上,解码器最初可假定当前片不含有错误。如果当前片确实具有错误,那么与解码器相关联的错误处置器可在解码下一个片标头之后的后一时间处理所述错误。此概念与将假定每片均可能具有错误的典型先行方法相反。
在根据本发明的循序错误处置过程中,在解码当前片期间检测到错误后,视频解码器设置错误旗标,且(例如)通过在后一视频片的起点处寻找且识别重新同步码字而在所述后一视频片的起点处重新建立解码同步。所述后一片可为紧随当前片之后的下一片。或者,如果所述解码错误导致多个视频片或多个片的部分的丢失或破坏,那么所述后一片可能不是紧随当前片的下一片。在一些情况下,由于当前片正被解码,所以下一可用片可能甚至不驻留在同一帧中。
在解码当前视频单元或检测到解码错误后,视频解码器进行到下一可用(即,后一)片。如果设置了错误旗标,从而指示检测到错误,那么解码器基于后一片的起点而确定被破坏数据段的终点。如果仅一个片被破坏,那么被破坏数据段的终点可对应于当前片的终点。或者,如果一个以上视频片被破坏,那么被破坏数据段的终点可对应于后一视频片的终点。
在执行错误处置以识别当前视频片的起点和被破坏数据段的终点后,视频解码器可执行错误隐藏。举例来说,视频解码器可隐藏在当前片的起点与被破坏数据段的终点之间的数据。所述被破坏数据段紧接于下一个可用片标头之前结束。通过隐藏被破坏数据,视频解码器可避免丢失正确数据和/或显示错误数据。如果未设置错误旗标,从而指示当前片中未检测到错误,那么视频解码器可简单地继续解码下一可用视频片,而不对当前片执行错误隐藏。
根据本发明的各种方面的循序错误处置技术可支持解码和错误处置,而无需先行操作。先行操作的消除实现了循序错误处置,其可需要较少的缓冲空间、计算和功率资源。举例来说,可循序地解码位流,而不是缓冲位流以支持用于先行的第一遍,接着是用于后续解码的第二遍。
通常,不管视频序列中是否实际存在解码错误,作为错误处置操作的一部分,先行操作均尝试识别潜在解码错误的程度。循序错误处置技术循序地解码视频数据单元,且在检测到解码错误的情况下调用错误处置。如果未检测到错误,那么视频解码可继续,而不进行错误处置和错误隐藏,且因此可支持更加高效的解码过程。
图1是说明执行如本发明中所描述的错误处置和隐藏技术的视频编码和解码系统的框图。如图1中所展示,系统10包括源装置12,所述源装置12经由通信信道16将经编码视频数据发射到目的装置14。通信信道16可包含任何无线或有线通信媒体,例如射频(RF)频谱或者一个或一个以上物理发射线,或无线与有线媒体的任一组合。通信信道16可形成基于包的网络(例如,局域网、广域网或例如因特网等全球网络)的一部分。通信信道16通常表示任何合适的通信媒体,或不同通信媒体的集合,用于将经编码视频数据从源装置12发射到目的装置14。
源装置12产生经编码视频数据以供发射到目的装置14。源装置12可包括视频源18、视频编码器20和发射器22。源装置12的视频源18可包括例如视频相机等视频捕捉装置、含有先前捕捉到的视频的视频存档或从视频内容提供者馈入的视频。作为另一替代方案,视频源18可产生基于计算机图形的数据作为源视频,或直播或存档的视频与计算机产生的视频的组合。在一些情况下,如果视频源18是视频相机,那么源装置12可形成所谓的相机电话或视频电话,或任何其它类型的装备有相机的计算或通信装置,包括移动电话或其它装置。在其它方面中,视频源18可耦合到源装置12或与源装置12集成。在每一情况下,所捕捉、预先捕捉和/或计算机产生的视频可由视频编码器20编码,以供经由发射器22和通信信道16从源装置12发射到目的装置14。
视频编码器20从视频源18接收视频数据。从视频源18接收到的视频数据可排列成包含一系列例如视频帧等视频数据单元的视频序列。可将所述帧中的一些或全部分为例如视频片等较小的视频数据单元。视频编码器20可对个别视频帧或片内的像素块(本文中称作视频块)进行操作,以便对视频数据进行编码。一帧或片可含有多个视频块。所述视频块可具有固定的或不同的大小,且可根据指定译码标准而在大小上有所不同。通常称为宏块(MB)的16×16像素视频块可排列为若干个子块。
举例来说,国际电信联盟标准化部门(ITU-T)H.264/MPEG-4,第10部分,高级视频译码(AVC)(下文中“H.264/MPEG-4AVC”标准)支持针对亮度分量的例如16×16、8×8或4×4以及针对色度分量的8×8的各种块大小的帧内预测,以及针对亮度分量的例如16×16、16×8、8×16、8×8、8×4、4×8和4×4以及针对色度分量的对应可缩放大小的各种块大小的帧间预测。通常,MB和各种子块可被视为视频块。因此,MB可被视作视频块,且如果经分割或子分割,那么可认为MB本身界定若干组视频块。在一些方面中,错误处置技术可基于片或帧内的MB编号而指导错误隐藏。然而,在其它方面中,错误处置技术可处理更大或更小的视频块大小。
虽然本发明中关于例如视频帧或视频片等多种视频数据单元而描述了所述技术,但所述技术可同等地应用于视频数据的任何编码和解码。此外,本发明中相对于根据H.264/MPEG-4AVC标准进行编码和解码的视频数据来描述所述技术。然而,出于说明目的而参考此标准来描述所述技术。此些技术可易于应用于多种其它视频译码标准中的任一者,例如由移动图片专家组(MPEG)在MPEG-1、MPEG-2和MPEG-4中界定的那些标准、ITU-TH.263标准、电影与电视工程师学会(SMPTE)421M视频CODEC标准(通常称为“VC-1”)、由中国音频视频译码标准工作组(通常称为“AVC”)界定的标准,以及由标准机构界定或由组织开发作为专属标准的任何其它视频译码标准。
出于说明目的,且不加以限制,将参考H.264/MPEG-4AVC译码来描述循序错误处置的应用。视频编码器20可根据(例如)如H.264/MPEG-4AVC标准中所陈述的帧内编码和帧间编码预测方案来编码每一块(例如,宏块(MB))。在视频块的基于帧内或帧间的预测之后,视频编码器20可根据以上H.264/MPEG-4AVC标准对视频块执行许多其它操作。这些额外操作可包括用以产生变换系数的变换操作(例如H.264/AVC中所使用的4×4或8×8整数变换,或离散余弦变换DCT)、量化操作和熵译码操作。经编码的数据可形成经编码的视频数据位流的一一部分。经编码的帧可含有一个或一个以上片。每一片可由例如网络抽象层(NAL)单元标头等标头指定,其可包括一个或一个以上用于同步和/或重新同步解码过程的码字。每一片可包括一个或一个以上块,例如MB和较小块。
片可包括根据各种各样的模式而选择的块。举例来说,所述片可包括循序地排列于帧的给定数目的行中的块。所述片可替代地包括循序地排列于一行中的许多块,其中片可通过界定循序行序块的某一行程长度而适合于视频数据。作为另一实例,所述片可包括排列于帧的给定数目的列中的块或一行程长度的循序排列的列序块。因此,一片可包括例如固定或静态数目等任何数目的块,但可包括比一随后或先前片更多或更少的块,以适合于容纳不同视频数据。
在编码所述片之后,视频编码器20可将帧的每一片指定为一单元,例如由H.264/MPEG-4AVC标准界定的网络抽象层(NAL)单元,且用对应片或例如由H.264/MPEG-4AVC界定的NAL单元标头等重新同步标头来编码每一片,以如上文所提到标记每一单元的开始。以此方式编码视频数据提供了频繁重新同步的机会,这可在发射期间显著降低视频数据丢失或被破坏的影响,且通过减少因丢失视频数据而导致的错误的传播来改进解码。
举例来说,通过使帧分裂为片,其一片或一部分可在单个包内进行编码,以供经由信道16进行发射。如果所述片在经由信道16发射期间丢失或被破坏,那么所述片可被重构或替换,而不必像在包中编码完整帧时可能是必要的那样替换、重构或以其它方式隐藏完整帧。此外,由于每一重新同步标头均可用以使解码过程重新开始,使得解码不再依靠过去的可能被破坏的数据,因此所述片或重新同步标头可消除错误的传播。因此,源装置12可将经编码的视频数据作为多个包经由发射器22发射到目的装置14,其中每一包可编码一单独的片,以支持对解码错误的高效处置。
接收器24经由信道16从源装置12接收经编码的视频数据。目的装置14可包括接收器24、视频解码器26以及显示装置28。视频解码器26可解码经编码视频数据,以获得原始视频数据以供在显示装置28上重放。显示装置28可包含例如阴极射线管(CRT)、液晶显示器(LCD)、等离子体显示器、发光二极管(LED)显示器、有机LED显示器或另一类型的显示单元等多种显示装置中的任一者。
如上文所描述,在经由信道16发射经编码的视频数据期间,经编码视频数据的各种片或MB可能因(例如)影响信号沿信道16的传播的干扰、拥塞或其它异常而丢失或被破坏。对于无线应用来说,可能因经由易于出错的网络进行无线发射而出现丢失或被破坏的视频数据。解码错误可不利地影响例如视频广播或视频电话等多种应用。接收器24接收可能包括丢失或被破坏视频数据的经编码视频数据。视频解码器26可能尝试解码可跨越一帧或片的一部分或多个帧或片的这些丢失或被破坏数据。这些丢失或被破坏数据可产生可导致丢失正确数据和/或呈现错误数据的解码错误。
视频解码器26可经配置以执行循序错误处置操作和错误隐藏操作。在错误处置操作中,视频解码器26检测解码错误,且确定错误所破坏的数据的大概程度,其可被称为被破坏数据段。被破坏数据段可通常指代所接收位流中相对于原始经编码位流中的数据来说丢失、被破坏或以其它方式在某一重要方面有错误的数据段。如果在片中检测到错误,那么优选隐藏所述片中的所有MB。然而,有必要确定受解码错误影响的第一和最术MB。可在开始解码所述片时轻易地确定当前片的第一MB。然而,由于所述片的可变大小,所述片的最末MB并不容易知道。此外,如果解码错误跨越多个片,那么待隐藏的被破坏数据段中的最末MB可能驻留在后一片内。换句话说,被破坏数据段可能包括一个片或多个片。
在任一情况下,可通过(例如)基于检测到在与经适当接收的下一可用片相关联的标头中相关联的下一重新同步标记而检测所述下一可用片的第一MB,来识别待隐藏的最末MB。接着,可将可能被破坏的数据的最末MB识别为紧接于下一可用片的第一MB之前的MB。如本发明中所描述的循序错误处置技术可准许在无需先行操作的情况下识别待隐藏的MB。以此方式,循序错误处置技术可增强由视频解码器26执行的错误处置和隐藏操作的效率。
一般来说,视频解码器26可首先确定经编码视频数据的当前片的起点且开始解码当前片,而不是缓冲且先行到下一片。在检测到解码错误时,视频解码器26可继续通过确定所接收视频数据的下一可用片的起点来使解码重新同步。举例来说,响应于解码错误,视频解码器26可停止解码当前片,且继续解码可通过解析位流而识别的下一可用片。下一可用片是位流中的后一片。基于后一片的起点,视频解码器26可确定被破坏数据段的终点,其可为当前片的终点或驻留在当前片与下一可用片之间的另一片的终点。考虑到视频解码器26已识别了包括所检测错误的片,视频解码器26可基于当前片的起点和下一可用片的起点而隐藏被破坏数据段中的错误。
作为说明,视频解码器26可接收帧,且确定所述帧的第一片的起点。第一片的起点可包括第一片的MB编号,例如在所述片为帧中的第一片的情况下,MB编号为零。与先行方法相反,视频解码器26接下来可在不确定所述第一片的最末MB且甚至不存取第二片或片标头的情况下解码第一片。以此方式,视频解码器26可消除原本将需要以先行到下一片且接着回复到当前片而进行解码的额外缓冲。
在所述第一片中检测到错误后,视频解码器26可设置错误旗标来指示发生解码错误。所述错误旗标可采用以下多种形式中的任一者:例如,经设置和复位以分别指示错误或无错误的单独位,或其它类型的错误指示符、消息、命令、位模式、码字等等,其可存储在与解码器相关联的存储器或寄存器中。在检测到错误后,视频解码器26可通过(例如)参考可在位流中找到的下一片标头确定下一可用片的起点而进行使解码过程重新同步。再次,此下一可用片可能并不是经编码位流中的真正下片,而是所接收位流中的下一片。因此,所述下一可用片可因多个片丢失而为所述位流中的第三、第四或第五(或更后)的片。此外,如下文进一步描述,所述下一可用片可能甚至不与所述第一片包括在相同的帧内。然而,可将循序错误处置技术应用于这些情况中的每一者,以高效地处置跨越单个片、多个片或甚至多个帧的解码错误。
不管解码错误跨越多少个片或帧,视频解码器26均基于下一可用片的起点确定包括所述解码错误的被破坏数据段的终点。作为说明,在解码第一片后,视频解码器26可将第一片的起点确定为MB编号零(0),检测解码错误,且接着在MB编号N处寻找下一可用片的起点。此举假定被破坏数据段跨越一个或一个以上片,但驻留在单个帧内。基于MB编号N,视频解码器26可确定包括解码错误的被破坏数据段的终点为MB编号N-1。举例来说,如果第二片中的第一MB编号为55,那么被破坏数据段中的最末MB的MB编号将为54。通过此确定,视频解码器26的错误处置操作可指示应隐藏从MB 0延伸到MB 54的被破坏数据段。
视频解码器26可根据任何数目的隐藏技术而隐藏错误。举例来说,视频解码器26可通过将MB编号0到54替换为来自例如先前经解码帧的邻近帧的MB编号0到54来隐藏错误。或者,视频解码器26可使用例如内插、外插或运动补偿内插等更加复杂的技术来替换可能受解码错误影响的MB。如果有必要,在对片进行解码且执行错误隐藏后,视频解码器26可将经解码视频数据转发到显示装置28以供呈现给用户。
由于避免了先行操作,视频解码器26可继续循序地解码位流,而无需为频繁的先行操作而缓冲位流的若干部分。此外,视频解码器26可在需要错误处置操作时调用错误处置操作来支持实际错误的隐藏,而不是无论错误是否存在均连续地执行先行操作。在许多应用中,可能仅较小百分比的视频片发生了错误。通过按需地而不是连续地应用错误处置,且藉此避免连续的先行缓冲,视频解码器26可消耗较少的计算和功率资源,且为实施呈现降低的计算复杂性。当视频解码器26形成例如移动无线通信装置等具有有限功率资源的嵌入式系统的一部分时,功率保存可能尤其重要。
现在将描述系统10的可能实施方案的更多细节。在些情况下,源装置12与目的装置14可以实质上对称的方式进行操作。举例来说,源装置12和目的装置14可各自包括视频编码和解码组件。因此,系统10可支持装置12、14之间的(例如)用于视频流式传输、视频广播或视频电话的单向或双向视频发射。本文中描述的循序错误处置技术可应用于包括编码和解码组件两者(例如,在组合式CODEC中)的装置。另外,在一些方面中,可将错误处置技术应用于驻留在对待解码数据进行了编码的编码器所驻留的同一装置中解码器内。举例来说,在此情况下,经编码数据可本地存档,且接着经解码以供本地重放,而不是发射到例如目的装置14等另一装置。在此实例中,可将错误处置技术应用于在相对于数据存储媒体的视频数据写入和读取操作中被破坏或因其它因素被破坏的经编码视频数据。
如先前所描述,视频编码器20和视频解码器26可根据例如移动图片专家组(MPEG)-2、MPEG-4、ITU-T H.263或H.264/MPEG-4AVC等视频压缩标准进行操作。尽管图1中未展示,但在一些方面中,视频编码器20和视频解码器26可各自分别与音频编码器和解码器集成,且可包括适当的MUX-DEMUX单元或其它硬件和软件,以处置对共用数据流或单独数据流中的音频和视频两者的编码。以此方式,源装置12和目的装置14可对包括音频和视频数据在内的多媒体数据进行操作。如果适用,那么MUX-DEMUX单元可遵循ITU H.223多路复用器协议,或例如用户数据报协议(UDP)等其它协议。
H.264/MPEG-4AVC标准连同ISO/IEC MPEG一起由ITU-T视频译码专家组(VCEG)制定作为被称为联合视频小组(JVT)的集体合作的产物。在一些方面中,本发明中所描述的技术可应用于大体上遵循H.264标准的装置。H.264标准被描述于由ITU-T研究组提出的口期为2005年3月的“ITU-T建议H.264-用于一般性视听服务的高级视频译码”(ITU-T Recommendation H.264--Advanced video coding fo rgeneric audiovisual services)中,所述标准在本文中可被称为H.264标准或H.264规范,或H.264/AVC标准或规范。
在一些情况下,视频编码器20和视频解码器26可经配置以支持可缩放视频译码(SVC)以用于空间、时间和/或信噪比(SNR)可缩放性。在一些方面中,视频编码器20和视频解码器26可经配置以支持精细粒度SNR可缩放性(FGS)译码以用于SVC。通过支持基础层和一个或一个以上可缩放增强层的编码、发射和解码,视频编码器20和视频解码器26可支持各种程度的可缩放性。对于可缩放视频译码来说,基础层携载具有基线质量等级的视频数据。一个或一个以上增强层携载额外数据以支持较高的空间、时间和/或SNR等级。
基础层可以比增强层的发射更可靠的方式发射。举例来说,经调制信号的最可靠部分可用以发射基础层,而经调制信号的次可靠部分可用以发射增强层。通过在物理层上使用分级调制来编码基础层和增强层,使得基础层和增强层可在同一载波或副载波上但以不同发射特性进行发射,从而导致不同的包错误率(PER)。
在一些方面中,为了进行视频广播,还可将本发明中所描述的技术应用于增强型H.264视频译码,以用于使用2007年7月出版为技术标准TIA-1099(“FLO规范”)的“用于陆地移动多媒体多播的仅前向链路(FLO)空中接口规范(Forward Link Only AirInterface Specification for Terrestrial Mobile Multimedia Multicast)”而在陆地移动多媒体多播(TM3)系统中传递实时视频服务。举例来说,信道16可包含用以根据FLO规范或类似规范来广播无线视频信息的无线信息信道。FLO规范包括界定位流语法和语义以及适合FLO空中接口的解码过程的实例。
或者,可根据例如DVB-H(数字视频广播-手持式)、ISDB-T(整合服务数字广播-地面)或DMB(数字媒体广播)等其它标准来广播视频。因此,在各种方面中,源装置12可为移动无线终端、视频流式传输服务器或视频广播服务器。然而,本发明中所描述的技术并不限于任何特定类型的广播、多播或点对点系统。在视频广播的情况下,源装置12可将若干信道的视频数据广播到多个目的装置,所述多个目的装置中的每一者可类似于图1的目的装置14。因此,尽管图1中展示单个目的装置14,但对于视频广播来说,源装置12可能更通常同时将视频内容广播到许多目的装置。
发射器22、通信信道16和接收器24可经配置以用于根据任何有线或无线通信系统进行通信,所述系统包括以下各项中的一者或一者以上:以太网、电话(例如,POTS)、电缆、电力线和光纤系统,和/或包含以下各项中的一者或一者以上的无线系统:码分多址(CDMA或CDMA2000)通信系统、频分多址(FDMA)系统、正交频分多(OFDM)址系统、时分多址(TDMA)系统(例如,GSM(全球移动通信系统)、GPRS(通用包无线电服务)或EDGE(增强型数据GSM环境)、TETRA(陆地集群无线电)移动电话系统)、宽带码分多址(WCDMA)系统、高数据速率1xEV-DO(第一代仅演进数据)或1xEV-DO黄金多播系统、IEEE 802.18系统、MediaFLOTM系统、DMB系统、DVB-H系统,或用于在两个或两个以上装置之间进行数据通信的另一方案。
视频编码器20与视频解码器26各自可用一个或一个以上微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任一组合来实施。视频编码器20与视频解码器26中的每一者可包括在一个或一个以上编码器或解码器中,其任一者可在相应移动装置、订户装置、广播装置、服务器等中集成为组合式编码器/解码器(CODEC)的一部分。另外,源装置12与目的装置14可各自酌情包括适当的调制、解调、频率转换、滤波和放大器组件,以用于发射和接收经编码视频,包括足以支持无线通信(如果可用的话)的射频(RF)无线组件和天线。然而,为便于说明,此些组件在图1中被概述为源装置12的发射器22和目的装置14的接收器24。
图2是说明执行如本发明中所描述的错误处置和隐藏技术的视频解码器26的实例的框图。视频解码器26可对应于图1的目的装置14的视频解码器。如图2的实例中所示,视频解码器26包括接收缓冲器30、解码引擎32、错误处置模块34、错误隐藏模块36和重构(RECON)缓冲器38。通常,接收缓冲器30接收并存储例如由视频编码器20编码的数据等经编码视频数据。重构缓冲器38存储已由解码引擎32解码并重构的经解码视频数据。重构缓冲器38中的经解码视频数据可用以提供参考帧,所述参考帧由解码引擎32用于解码从接收缓冲器30获得的经预测性地译码的视频数据。另外,从重构缓冲器38获得的经解码视频数据可由错误隐藏模块36使用以隐藏经解码视频位流中的错误。重构缓冲器38中的经重构数据可被提供作为用于多种后处理操作中的任一者的经解码视频数据。可将经受任何可应用后处理的由视频解码器26产生的经解码视频数据提供给输出缓冲器以供经由显示装置呈现给用户。解码引擎32、错误处置模块34和错误隐藏模块36协作以产生经解码视频数据。解码引擎32、错误处置模块34和错误隐藏模块36经配置以应用如本发明中所描述的循序错误处置过程。
展示于图1和图2中的所包括的各种组件、单元或模块以及贯穿本发明而描述的其它组件可由硬件和/或软件的任一合适组合来实现。在图1和图2以及图3中,将各种组件描绘为单独的组件、单元或模块。然而,参看图1到图3而描述的各种组件中的所有或若干组件可集成为共用硬件和/或软件内的组合式单元或模块。因此,为便于说明,如组件、单元或模块等特征的表示意在强调特定功能特征,且不一定要求此些特征由单独的硬件或软件组件实现。
在一些情况下,可将各种单元实施为由一个或一个以上处理器执行的可编程进程。举例来说,尽管将本发明中的各种特征描述为离散模块、单元、引擎或组件,但所述特征可一起实施于集成逻辑装置中或单独地实施为离散但可共同操作的逻辑装置。在一些情况下,可将各种特征实施为集成电路装置,例如集成电路芯片或芯片集。如果以软件来实施,那么可至少部分地通过计算机可读存储媒体来实现所述技术,所述计算机可读存储媒体包含在执行时致使一个或一个以上处理器执行本发明中所描述的方法中的一者或一者以上的指令。
进一步参看图2,接收缓冲器30可由用于存储经编码视频数据的例如动态随机存取存储器等存储器模块来实现。如所描述,经编码视频数据可包含例如一个或一个以上帧或片等视频数据单元。帧或片可包括块,例如MB和较小块。出于说明目的,假定经编码视频数据包含多个帧,每一帧包含一个或一个以上片,且每一片包含多个MB。
解码引擎32解析从接收缓冲器30获得的经编码视频数据位流,且解码经编码视频数据。解码引擎32可实施如由本发明中所描述的视频译码标准中的一者或者另一视频编码标准界定的解码技术。然而,出于说明目的,可假定解码引擎32根据H.264/MPEG-4AVC标准来执行解码技术。解码引擎32可执行位解析以解析传入位流,以识别待解码的经编码信息的帧、片、块和其它单元。另外,解码引擎32可执行重构以解码并重构经编码信息的单元中的视频数据。
错误处置模块34经配置以根据如本发明中所描述的循序错误处置技术来处置解码错误。在图2的实例中,错误处置模块34可执行错误检测和错误处置两者。然而,在一些实施方案中,可提供单独的错误检测和错误处置模块。在操作中,错误处置模块34可在由解码引擎32产生的经解码视频数据中检测解码错误,且识别应隐藏的例如MB等某一范围的数据,以便避免丢失正确数据或显示或错误数据。
错误隐藏模块36从错误处置模块34接收解码错误范围(ERROR RANGE)。所述解码错误范围可指定错误隐藏模块36应隐藏哪些MB。举例来说,错误处置模块34可依照错误范围指定从第一片的第一MB 0延伸到位流中的下一可用片的起始MB N之前的最末MB N-1的所有MB。错误隐藏模块36可根据多种隐藏技术中的任一者来隐藏错误,以将所识别的由解码引擎32产生的MB替换为不同MB。举例来说,错误隐藏模块36可向解码引擎32提供经隐藏的视频数据。错误隐藏模块36可包括提供给重构缓冲器的经解码视频数据中的经隐藏视频数据。作为说明,如果错误处置模块34指定MB 0到MB 54为错误范围,那么错误隐藏模块36将隐藏MB 0到MB 54,且将向解码引擎32提供所隐藏的MB[0,54]。
类似于接收缓冲器30的重构缓冲器38表示存储由解码引擎32产生的经解码视频数据的存储器模块,例如动态随机存取存储器。另外,解码引擎32可从重构缓冲器检索经解码视频数据,以用于解码从接收缓冲器26获得的经编码视频数据。明确地说,解码引擎32可将来自重构缓冲器38的经解码视频数据用作用于解码其它帧的参考帧。在一些实施方案中,错误隐藏模块36可在检测到错误时盖写重构缓冲器38内的指定MB,以隐藏经解码的MB。或者,如在图2的实例中,错误隐藏模块36可在解码引擎32将经解码的MB传送到重构缓冲器38之前,配合解码引擎32来隐藏指定MB。举例来说,错误隐藏模块36可将例如经隐藏MB等经隐藏视频数据提供给解码引擎32。解码引擎32接着可将被破坏数据替换为来自错误隐藏模块36的经隐藏视频数据,且将所得数据作为经解码视频数据写入到重构缓冲器38。
当检测到错误时,解码引擎32可继续解码MB直到下一个可用片标头的点,或停止解码MB且寻找位流中的下一个可用片标头。在检测到错误时退出对当前片的解码且移到待解码的下一片以支持错误隐藏可能较高效。接着,在隐藏被破坏数据后,解码引擎32可将下一片作为当前片重新开始解码。因此,错误隐藏模块36可经配置以写入或盖写MB,以隐藏被破坏数据段。在任一情况下,存储在重构缓冲器38中的经解码视频数据可包括基于由解码引擎32产生的经解码MB和已由错误隐藏模块36产生或选择以隐藏解码错误的MB的经解码视频数据。
在操作中,视频解码器26的接收缓冲器30最初可从接收器(例如图1的接收器24)接收经编码视频数据,且存储所述经编码视频数据。解码引擎32可存取接收缓冲器30以检索存储在接收缓冲器30中的经编码视频数据的单元(例如帧的片)。在检索一片之后,但在解码所述片之前,解码引擎32可通过发射(例如)与待解码的当前片的第一MB相关联的MB编号而首先告知错误处置模块34所述片的起点。可将此第一MB称作片起点MB。错误处置模块34可存储所述片的所述起点处的第一MB的编号。
解码引擎32着手解码所述片中的MB,且将经解码的片数据存储在重构缓冲器38中。在解码所述片的同时,除了将经解码片存储在重构缓冲器38中之外,解码引擎32还可将所述经解码视频数据输出到错误处置模块34。在各种实施方案中,错误处置模块34可分析存储在重构缓冲器38中的经解码视频数据、直接从解码引擎提供的经解码视频数据,或存储在不同缓冲器中的经解码视频数据。在每一情况下,错误处置模块34可分析或以其它方式检查所述经解码视频数据,以确定所述经解码视频数据中是否存在解码错误。因此,可在错误处置模块34内提供错误检测能力。或者,在各种实施方案中,视频解码器26内的解码引擎32或另一组件可包括解码错误检测能力。
错误处置模块34可以任何数目的方式来分析经解码视频数据,以检测多种解码错误。举例来说,错误处置模块34可在由接收缓冲器30接收且由解码引擎32解码的经编码片中检测语法错误、语义错误和/或其它译码错误。通常,解码引擎32使用由例如H.264/MPEG-4AVC等可应用译码技术指定的语法来解码位流。如果位流背离由可应用语法指定的预期位模式,那么可检测到语法错误。当解码在视频解码器26中产生例如越界数据、无效信息或不可应用的命令等不正确的值或操作时,可检测到语义错误。如果经熵译码的值与例如上下文自适应可变长度译码(CAVLC)表等可应用译码表中的值或模式不匹配,那么可检测到译码错误。可使用例如上下文自适应二进制算术译码(CABAC)等其它类型的熵译码。
因此,为执行语法错误校验,错误处置模块34可将经解码位流的位模式与可应用的语法所指定的预期位模式进行比较。如果所述位模式与所述预期位模式不一致,那么错误处置模块34可指示已检测到解码错误。类似地,为执行语义错误检查,错误处置模块34可分析一个或一个以上语法元素的值以确保这些值是有效的。举例来说,错误处置模块34可确定所述值是否与其它值一致,是否与当前被解码的片一致,和/或是否与先前被解码的帧、片或块一致。如果语法元素值不在准许或预期的值范围内,那么错误处置模块34可指示检测到解码错误。为检测译码错误,错误处置模块34可将经解码的码字与例如CAVLC或CABAC表等可应用熵译码表中的码字列表进行比较。如果不存在匹配,那么错误处置模块34可指示检测到解码错误。
在检测到解码错误后,错误处置模块34可在与视频解码器26相关联的存储器中设置错误旗标,且告知解码引擎32所述解码错误。响应于被告知所检测到的解码错误,解码引擎32可使对存储在接收缓冲器30中的经编码视频数据的解码重新同步。明确地说,解码引擎32可停止解码当前片,且进行从位流检索(例如)如由下一可识别片或NAL单元标头所识别的下一可用片。下一片在其为可由解码引擎32通过解析位流来辨别的下一片的意义上可被称为下一“可用”片。所述解码错误可能已越过NAL标头和/或帧标头而传播,从而使片且甚至帧的区分变得困难(如果不是不可能的话)。换句话说,解码错误可能导致单个片中MB的丢失或破坏,在此情况下,下一重新同步点可与所接收位流中的真正下一片相关联;或导致多个片中MB的丢失或破坏,在此情况下,下一重新同步点可与位流中的后一片相关联。因此,下一可用片可指代位流中可(例如)根据可识别NAL单元标头而可轻易辨别的下片。所述NAL标头在其未被破坏且可轻易辨别的意义上可被称为“可识别的”。
当检测到解码错误时,解码引擎32可如上文所描述进行到位流中的下一可用重新同步点,而不解码当前片的剩余部分。或者,即使已设置错误旗标,解码引擎32也可继续解码位流。当获得下一可用片时,解码引擎32可接着执行错误处置和错误隐藏。尽管解码引擎32可经配置以在设置错误旗标之后继续解码位流,但停止解码当前片且改为进行到下一片以支持检测到错误的先前片的错误处置和错误隐藏通常将较为高效。即使被破坏数据段被解码,其也仍将被错误隐藏模块36隐藏。然而,在检测到错误时停止解码操作且进行到下一可用片可能较高效。在未检测到解码错误时,解码引擎32继续解码当前片的剩余部分。在任一情况下,当解码引擎32到达下一重新同步点(指示下一可用片的起点)时,所述解码引擎32确定所述片的第一MB。另外,解码引擎32可确定错误处置模块34是否已设置错误旗标来指示在先前视频片中检测到解码错误。
如果未设置错误旗标,那么解码引擎32存储片的第一MB,且继续解码所述片。在此点处,通过循序错误处置方法,先前片已经被解码,而不是如先行方法的情况下那样被缓冲以供在第二遍进行解码。然而,如果设置了错误旗标,那么解码引擎32调用错误处置和错误隐藏。值得注意的是,当到达下一可用片时,解码引擎32不可区分是在检测到译码错误之后,还是在不存在译码错误的情况下完成先前片的解码后进行到所述片。相反,在到达下一可用片后,解码引擎32和错误处置模块34可检查所述错误旗标,以确定是以普通过程简单地继续循序解码,还是应用错误处置和错误隐藏。换句话说,错误处置模块34可能不知道其是由于普通的无错解码还是由于检测到错误(在此情况下需要错误处置)而已到达下一可用片。
再次,当检测到错误时,解码引擎32可停止解码当前片,且检索下一可用片。解码引擎32接着可(例如)通过转发对应于所述片的第一MB的MB编号而告知错误处置模块34所述(下一可用)片的起点。在接收到此MB编号后,错误处置模块34可通过校验错误旗标是否被设置而确定先前是否已发生解码错误。如上文所描述,如果未设置旗标,那么错误处置模块34可存储此第一MB编号,(例如)供以后在新检索到的下一可用片中检测到解码错误的情况下使用。
然而,如果设置了错误旗标,那么错误处置模块34可确定发生错误的当前片的终点(例如,最末MB)。举例来说,错误处置模块34可从对应于下一可用片的第一MB的MB编号减去一。由于解码错误可能跨越多个片且甚至多个帧,因此被破坏数据段同样可能跨越一个或一个以上片和/或一个或一个以上帧。如下文更详细地描述,循序错误处置技术可处置跨越一个或一个以上片或一个或一个以上帧的孵码错误。
在确定发生错误的被破坏数据段的起点和终点之后,错误处置模块34可将可被称为解码错误范围(ERROR RANGE)的此信息转发到错误隐藏模块36。基于此解码错误范围,错误隐藏模块36可通过将存储在重构缓冲器38中的经解码视频数据替换为可存储在重构缓冲器38中的先前经解码视频数据来隐藏由所述解码错误范围指示的解码错误。或者,错误隐藏模块36可将经隐藏视频数据提供给解码引擎32,所述解码引擎32接着可处置经解码数据和经隐藏数据向重构缓冲器38的传送。在一些情况下,错误隐藏模块36可高速缓存或本地存储例如先前经解码MB、片或帧等先前经解码视频数据,以用于隐藏所述解码错误。作为替代方案,为隐藏被破坏数据,错误隐藏模块36可从(例如)如图2的实例中所示的重构缓冲器38获得先前经解码的视频数据。
无论错误隐藏模块36存取先前经解码视频数据的方式如何,错误隐藏模块36均可根据上文所列出的隐藏技术中的一者将对应于解码错误范围的经解码视频数据替换为先前经解码视频数据。举例来说,如果错误处置模块34所识别的解码错误范围从MB 0延伸到MB 54,那么错误隐藏模块36隐藏从MB 0到MB 54的所有MB。以此方式,多达一完整片被隐藏以确保所有可能的被破坏MB被隐藏。
错误隐藏模块36可将经隐藏视频数据直接写入到重构缓冲器38。或者,如图2中所示,错误隐藏模块36可将经隐藏视频数据提供给解码引擎32。解码引擎32接着可将经适当解码的MB和由来自错误隐藏模块36的经隐藏视频数据所表示的经隐藏MB写入到重构缓冲器38。错误隐藏模块36可如本发明中概括描述的那样在像素域中应用错误隐藏。在一些实施方案中,错误隐藏模块36可为了错误隐藏而应用压缩域处理。举例来说,错误隐藏模块36可经配置以指定用以隐藏被破坏MB的编码模式(例如,SKIP模式)。因此,可结合包括像素域隐藏处理或压缩域隐藏处理等多种不同错误隐藏处理而使用本发明中所描述的技术。
一旦隐藏了被破坏MB,视频解码器26就可经由重构缓冲器38将经解码视频数据转发到显示装置28以供显示或重放,如上文所描述,经受可应用于经解码视频数据的任何后处理操作,例如锐化、按比例缩放等等。解码引擎32接着可着手解码下一可用片,同时应用与上文所描述的错误处置操作相同的错误处置操作。因此,由于解码引擎32遍历位流中随后的片和帧,所以可在连续基础上应用此错误处置过程。值得注意的是,在各种方面中,错误处置过程可准许在无需任何先行操作的情况下的循序解码。以此方式,视频解码器26可促成目的装置14内的计算效率和功率保存。
图3是更详细地说明图2的实例错误处置模块34和错误隐藏模块36的框图。出于说明目的而提供图3的实例,以强调错误处置模块34和错误隐藏模块36的各种操作性方面,且所述实例不应被视作限制本发明中广泛描述的循序错误处置技术。在图3的实例中,错误处置模块34可包括错误检测模块40和错误映射模块42。错误检测模块40可根据例如语法规则44A、语义规则44B和熵规则44C等适用规则而执行上文所描述错误校验,例如语法、语义错误校验和译码(例如,CAVLC或CABAC)错误校验。错误检测模块40进一步包括且维持表示错误状态指示符的一个实例的错误旗标46。错误映射模块42维持映射48以界定被破坏数据段。错误隐藏模块42可包括:隐藏引擎50,其执行上文所描述的隐藏技术中的一者或一者以上;以及视频缓冲器51,其接收视频数据,供隐藏引擎50用于隐藏被破坏数据。
举例来说,在解码存储在接收缓冲器30中的经编码视频数据之前,解码引擎32可针对待解码的当前片将片起点指示(“片起点”)发射到错误处置模块34。错误检测模块40和错误处置模块42可使用所述片起点来处置在解码操作期间检测到的错误。如图3中所示,由于片的起点可为包括一个或一个以上片或局部片的被破坏数据的较大区段的起点,所以片起点更通常可被称为“区段起点”。
再次,图3和其它图中说明模块和单元以强调错误处置模块34的各种功能方面。因此,错误检测模块40、错误映射模块42或其它模块之间的精确结构和功能关系和互动可经受变化。错误映射模块42可存储如上文所描述的可包含待解码的当前片的第一MB的区段起点。可根据经解码位流中的语法元素来确定MB编号。举例来说,错误映射模块42可将第一MB存储为起点MB 48A。如果当前片是帧中的第一片,那么第一MB可为MB 0。如果当前片是帧中的后一片,那么第一MB可具有较高编号。
在接收到区段起点后,错误检测模块40可分析由解码引擎32产生的可包含具有语法元素的经解码MB的经解码视频数据。错误检测模块40可对经解码语法元素执行语法错误、语义错误和熵译码错误校验。明确地说,错误检测模块40可应用语法规则44A、语义规则44B和熵规则44C来确定经解码视频数据中是否存在解码错误。基于这些错误校验的结果,错误检测模块40控制错误旗标46或能够存储错误状态的任一其它指示符的值。出于说明目的而假定错误检测模块40检测到解码错误,错误检测模块40设置错误旗标46,且将对错误的指示(图3中的“解码错误(DECODING ERROR”)转发给视频解码器26的解码引擎32。
响应于错误指示,解码引擎32可通过(例如)停止解码当前片且寻找位流中的下一可用片而停止解码且使解码重新同步。换句话说,如果检测到解码错误,那么解码引擎32可停止解码当前片,且着手解码下一可用片。再次,可通过下一片的NAL单元标头中的重新同步码字来识别下一可用片。或者,如果不存在错误指示,那么解码引擎32可继续解码当前片,直到其到达所述片的终点且遇到下一可用片为止。在任一情况下,在到达下一可用片后,解码引擎32可将另一起点区段起点指示转发给错误检测模块40。错误检测模块40接收例如分片起点等新区段起点,且基于错误旗标46的状态确定先前经解码片中是否存在解码错误。
基于错误旗标46的状态,错误检测模块40可继续分析经解码视频或调用错误映射模块42。举例来说,如果未设置错误旗标46,从而指示未检测到错误,那么错误检测模块40可继续对新接收到的片执行错误检测。然而,如果设置错误旗标46,从而指示检测到错误,那么错误映射模块42可被错误检测模块40调用以确定错误范围,即,必须隐藏的被破坏数据段的程度。在此情况下,错误映射模块42确定新接收到的片中的第一MB的编号。另外,错误映射模块42基于新接收到的片中的第一MB编号来确定检测到解码错误的被破坏数据段中的最末或终点MB。
举例来说,为确定终点MB编号,错误映射模块42可从新接收到的片的第一MB编号减去一,以获得紧接于新片起点之前的最末MB的编号。如图3的实例中所展示,可将终点MB存储为终点MB 48B。举例来说,如果新接收到的片中的第一MB为55,那么被破坏数据中的最末MB为55-1=54。因此,错误映射模块42将错误范围界定为在起点MB 48A与终点MB 48B之间延伸且包括起点MB 48A和终点MB 48B,例如,在上述实例中为MB 0到MB 54。错误范围指示应隐藏以消除或减少错误对经解码视频数据的不利影响的MB。
如下文所描述,在一些方面中,错误检测模块40还可根据与对应于起点MB编号48A和终点MB编号48B的MB相关联的语法元素的值来确定起点和终点帧编号。即,错误检测模块40可检查如对应于起点MB编号48A的所接收经解码视频数据中所表示的MB,且确定所述MB与之相关联的起点帧编号。错误检测模块40可将所述起点帧编号转发到错误映射模块42,错误映射模块42可将起点帧编号存储为起点帧48C。错误检测模块40还可检查如对应于终点MB编号48B的所接收经解码视频数据中所表示的MB,且确定所述MB与之相关联的终点帧编号。错误检测模块40可将所述终点帧编号转发到错误映射模块42,错误映射模块42可将终点帧编号存储为终点帧48D。
如上文所描述,错误映射模块42可根据映射48产生错误范围或其它错误描述,且将所述错误范围传给错误隐藏模块36。在一些实施方案中,错误范围不仅可包括被破坏数据段的起点MB 48A和终点MB 48B,而且可包括起点帧48C和终点帧48D。举例来说,错误映射模块42可通过比较起点帧48C与终点帧48D来确定解码错误(以及由此引起的被破坏数据段)是否位于单个帧内,或所述解码错误是否跨越两个或两个以上帧。MB编号通常在每一帧的起点处复位为零。因此,当解码错误影响多于单个帧时,提供仅呈现MB编号的错误范围可能是不够的。举例来说,如果起点MB是第一帧中的MB74,那么终点MB可为第二帧中的MB 56。因此,可能有必要跟踪帧编号以及MB编号,以便准确地解析错误范围以实现隐藏目的。
通常,如果起点帧48C和终点帧48D表示的两个帧编号相等,那么错误映射模块42可确定解码错误位于对应于由起点帧48C和终点帧48D两者识别的帧编号的单个帧内。然而,如果起点帧编号48C和终点帧编号48D不相等,那么错误映射模块42可确定错误范围,使得所述解码错误跨越一个以上帧。因此,错误映射模块42可经配置以识别应使用起点MB编号48A和终点MB编号48B以及起点帧编号48C和终点帧编号48D来隐藏的MB的范围。
错误隐藏模块36接收所述错误范围,且使用隐藏引擎50来隐藏由错误范围识别的MB。错误隐藏引擎50可检索先前经解码帧(图3中的“经缓冲视频数据”)的先前经解码MB,开将其存储在视频缓冲器51中,以用于隐藏由错误范围识别的那些MB。如上文所描述,在一些方面中,先前经解码的MB可从一个或一个以上邻近帧获得,且可与待隐藏的MB在空间上位于同一地点。先前经解码的MB可替换错误范围中的潜在被破坏MB且藉此隐藏所述被破坏MB,以形成替换帧数据。在一些实施方案中,错误隐藏模块36可从重构缓冲器38获得作为经解码视频数据的先前经解码MB。
隐藏引擎50可实施多种其它隐藏技术中的任一者来隐藏由错误范围识别的解码错误。错误隐藏引擎50可将经隐藏视频数据作为替换数据提供给视频解码引擎32。视频解码引擎32可将经适当解码的视频数据和经隐藏视频数据提供给重构缓冲器38。或者,可使用经隐藏帧数据来写入或盖写由解码引擎32产生且存储在重构缓冲器38中的经解码视频数据的若干部分。在任一情况下,重构缓冲器38可提供经解码视频数据用于驱动显示装置。
图4是说明例如视频解码器26等视频解码器在执行循序错误处置和隐藏技术时的实例操作的流程图。如上文所描述,视频解码器26从接收器(例如图1的接收器24)接收经编码视频数据(52)。视频解码器26可在接收缓冲器30中缓冲经编码视频数据。解码引擎32可确定经编码视频数据的当前片的起点(54),且解码所述片(56)。如将进行描述,在检测到错误的情况下,当前片的起点可由错误处置模块34用以识别被破坏数据段的错误范围。如果错误处置模块34未检测到解码错误(58),且解码尚未到达当前片的终点(59),那么解码引擎32可继续解码所述片(56)。
如果到达所述片的终点(59)而未检测到解码错误,那么解码引擎32可继续接收额外经编码数据的下一可用片(52),且对所述片重复操作(54)、(56)和(58)。当未检测到解码错误时(58),视频解码器26继续解码位流中的连续片。然而,当检测到解码错误时(58),错误处置模块34可确定下一可用片经编码视频数据的起点(60),且基于下一可用片的起点确定被破坏数据段(其包括当前片)的终点(62)。
再次,下一可用片是可在位流中识别的下一可用区段。因此,在所述被破坏数据影响仅单个片的情况下,下一可用片可为在其中检测到解码错误的片之后的真正下一片。另一方面,如果错误导致数据的两个或两个以上片的丢失或破坏,那么下一可用片可为并非在原始经编码位流中紧随当前片之后的后一片。
如上文所描述,基于所述下一可用片的起点(60),错误处置模块34确定可通过从下一可用片中的第一MB编号减去一而获得的与被破坏数据段相关联的被破坏数据段的终点。错误处置模块34将所述被破坏数据段的起点和终点提供给错误隐藏模块36,以界定进行隐藏的错误范围。视数据丢失的程度而定,错误范围可能涵盖原始位流的单个片或多个片。
根据错误范围,错误隐藏模块34隐藏从被破坏数据段的起点延伸到被破坏数据段的终点的视频数据(64)。在隐藏所述被破坏数据段后,视频解码器26可着手接收与下一可用片相关联的经编码视频数据(52),使得下一可用片可被解码,即作为新的当前片。在此情况下,随着视频解码器26沿视频位流进行,出于图4中所展示的过程的目的,下一可用片现在成为当前片,且图4中概述的各种操作被重复以支持循序解码、错误处置和隐藏。
如上文所描述,错误处置模块34可基于语法、语义或熵译码错误校验来确定是否已发生了解码错误(58)。如果错误处置模块34检测到错误,那么错误处置模块34可告知解码引擎32所述错误。响应于错误指示,视频解码器32可通过解析位流以确定存储在接收缓冲器30中的经编码视频数据的下一可用片的起点来使对经编码视频数据的解码重新同步(60)。值得注意的是,解码引擎32通过在发生解码错误时解析位流以进行重新同步,或在未检测到错误时在解码当前片的普通过程中而到达下一可用片。如果检测到错误,那么错误处置模块34确定错误范围(例如,第一区段的起点与终点),并将所述错误范围提供给错误隐藏模块36。
图5是说明例如视频解码器26等视频解码器在对帧内的解码错误执行错误处置和隐藏时的实例操作的流程图。下文相对于根据H.264/MPEG-4AVC标准定制的位流来描述上述技术,其中经编码视频数据包含多个帧,每一帧包含多个片,且每一片包含多个经编码MB。所述片可由NAL单元标头识别。尽管相对于H.264标准进行了描述,但再次,所述技术不应严格限于此示范性方面,而是可广泛地应用于用于编码视频数据的其它技术。
图5大体遵照图4,但展示某些额外细节。在图5的实例中,视频解码器26可经由接收缓冲器30接收经编码视频帧数据(66)。在最初存取第一帧的第一片后,视频解码器26的解码引擎32可确定与第一片相关联的起始MB编号(68)。第一片可替代地被称为正由解码引擎32解码的当前片。在当前片由解码引擎32解码(70)的同时,错误处置模块34可检测例如语法、语义或熵译码错误等解码错误(72)。如果检测到解码错误(72),那么错误处置模块34设置错误旗标(74)。
如果未检测到解码错误(72),且解码引擎32尚未到达当前片的终点(76),那么解码引擎32继续解码当前片(70)。如果检测到解码错误(72),或如果已到达当前片的终点(76),那么错误处置模块34将确定下一可用片的起点MB编号(78)。当检测到错误时,解码引擎32可继续解码或停止解码当前片,并解析位流以定位下一可用片。当未检测到错误时(72),在完成解码当前片之后,解码引擎32到达下一可用片,在所述情况下,到达片的终点(76)。因此,在成功解码先前片后,或者作为在先前片中检测到解码错误之后的重新同步的一部分,解码引擎32可到达下一可用片。
如果未设置错误旗标(80),那么解码引擎32着手将下一可用片作为当前片来解码(70)。因此,下一可用片可出于图5中概述的操作的目的而成为当前片,且重复解码过程。然而,如果设置了错误旗标(80),那么错误处置模块34基于下一可用片的起点MB编号来确定包括当前片的被破坏数据段的终点MB编号(82)。举例来说,错误处置模块34可从下一可用片的起点MB编号减去一,以确定包括第一片的区段的终点MB编号(82)。
如果一个片被破坏,那么终点MB编号可为当前片的终点MB编号。然而,如果一个以上的片被破坏,那么终点MB编号可为后一片的终点MB编号。在任何情况下,使用当前片的起点MB编号和所述终点MB编号,错误处置模块34界定一错误范围供错误隐藏模块36使用。错误隐藏模块36着手通过隐藏从当前片的起点MB编号到被破坏数据段的终点MB编号的所有MB而隐藏解码错误(84)。在完成错误隐藏(84)后,视频解码器26可为待解码的下一片而使错误旗标复位,即清除可能与待解码的下一片不相关的任何残留的存储状态。另外,视频解码器26着手将下一可用片作为当前片来解码(70),且重复图5中概述的各种错误处置操作。
图6是说明对在帧内包含解码错误的实例位流86应用错误处置和隐藏技术的图解。位流86可通常根据H.264/MPEG-4AVC标准而格式化。在图6的实例中,解码错误发生于位流的中间,且含有一个NAL单元标头。可将循序错误处置技术应用于图6的情境,以识别MB 0-54以进行错误隐藏。图6说明两个帧88A、88B(“帧88”),其中帧88A包含多个NAL标头90A到90D,且帧88B包含多个NAL标头90E到90H。NAL标头90A和90E各自以阴影形式展示,以表示这些NAL标头标记相应帧88的起点。NAL标头90A到90H(“NAL标头90”)中的每一者标记含有一片的NAL单元的起点。每一帧88可包括一个或一个以上片,且更可能包括多个片。每一NAL单元在NAL标头90中的随后一者的起点处结束。
举例来说,第一片可包含NAL标头90A和随后的对应于MB编号0到20的多个MB,其中MB编号20是随后NAL标头90B之前的最末MB。下一片以NAL单元标头90B和MB编号21开始。实例MB编号展示于帧88中的每一者的顶部。此些编号的间距不一定反映实际位流的标度或比例,而是出于说明目的提供的。如在上文被描述为含有一“片”的NAL单元可独立解码。换句话说,可在无来自其它NAL单元的信息的情况下对片进行解码。以此方式,由于每一NAL单元是可解码MB的自含序列,因此NAL单元的丢失不一定妨碍给定帧的先前或随后NAL单元的解码。
如先前所描述,一些视频解码器,尤其是实施为软件模块的视频解码器,可通过执行先行错误处置技术来处置解码错误。为解码当前片,先行技术通常要求视频解码器解码例如NAL标头等下一可用片标头,以便确定第一片的最末块或MB。即,视频解码器可先行到下一片标头,且确定当前正被解码的片的范围。视频解码器可在解码当前片之前进一步识别当前片的最末MB,以便在正解码当前片时检测到解码错误的情况下识别将隐藏的经编码视频数据的一部分。视频解码器可能对经编码视频数据的每一片执行此先行操作,这可导致低效率、计算复杂性和过多功率消耗。
使用先行错误处置技术的视频解码器的特征可为执行非循序解码。举例来说,常规视频解码器可首先确定当前片的起始MB,且接着在位流中先行以检测下一重新同步码字,且藉此确定当前片中的最末MB。明确地说,使用重新同步码字来识别下一适当接收的片。在先行之后,解码器接着返回以解码当前片的缓冲版本。通过确定下一片的第一MB编号N,视频解码器可确定先前片中的最末MB编号,即,MB N-1。在识别最末MB编号后,视频解码器将返回到当前视频片的起始MB,且开始解码所述片。
因此,先行错误处置技术的实施可能需要两个不同解码缓冲器来缓冲当前片和下一片。视频解码器可在每一缓冲器之间来回切换,以便适当地重构原始视频数据。由于可能需要视频解码器来存储一个片的所有当前状态信息,移到下一片,且接着回复到第一片,所以此技术的非循序性质可导致更加麻烦或复杂的实施。此操作对于嵌入式系统来说可能是不合意的,尤其是在总体解码任务被分于两个或两个以上处理器之间时。
参看图6的实例,将首先描述基于先行操作的错误处置过程。在此实例中,帧88A包括:从MB 0延伸到MB 20的第一片;从MB 21延伸到MB 54的第二片;从MB 55延伸到MB 71的第三片;以及从MB 72延伸到MB 98的第四片。为解码当前片,视频解码器首先先行以找出第一可用重新同步点。如果假定MB 15到MB 45丢失或以其它方式被破坏,那么视频解码器在NAL标头90C处找到下一重新同步点。与此同时,视频解码器并不实际知道解码错误,而是需要经由先行操作获得下一重新同步点,使得在存在解码错误的情况下可获得在重新同步点之前的最末MB。
因此,在依靠先行操作的错误处置过程中,视频解码器得到待解码的当前片的第一MB编号,先行以解码下一片标头以得到所述片标头之前的最末MB编号,返回待解码的当前片的起点,重新开始解码并检测错误,将第一MB和最末MB传给错误隐藏操作,且针对待解码的下一片重新建立解码同步和错误隐藏。值得注意的是,在视频解码器执行先行操作的同时,视频解码器需要缓冲片1和2(MB 0到MB 54),且接着返回到片1以开始解码操作。通常,不管是否存在实际解码错误,视频解码器均对位流中所有待解码片执行这些先行和缓冲操作。片的实际解码甚至不发生,直到先行操作之后。
经编码视频数据经由信道16的发射可常常在没有可觉察的经编码视频数据的丢失或破坏的情况下发生。举例来说,出于说明目的假定经编码视频数据作为多个包在信道16上发射,典型无线信道16的丢包率常常小于5%。出于说明目的假定每一包对应于一个片,由于在有效经编码视频数据的解码期间将不发生解码错误,所以先行错误处置技术的95%的计算将是不需要的。因此,先行错误处置技术可导致许多多余的操作。
虽然当错误处置实施于软件中时,这些多余操作和上文描述的其它问题后果较少,但嵌入式系统可能受这些问题影响很大,尤其是在总体解码任务被分于两个或两个以上处理器中时。明确地说,在嵌入式实施中,或者更通常地,在先行技术的硬件实施方案中,多余操作可不必要地消耗可用于更有价值的操作的功率。此外,由于功率消耗耗尽了在类似于目的装置14的移动目的装置中常见的电池,因此浪费的功率消耗可能导致电池需要再充电之前的操作时间较短。另外,两个处理器可加重这些功率问题。此外,用以缓冲下一片的额外缓冲器可耗尽功率,且进一步增加常规视频解码器的成本和大小。
例如图2的视频解码器26等视频解码器可根据本发明中所描述的技术来接收帧88,且执行循序(即,非先行)错误处置过程。通过循序错误处置过程,可顺次维持每一片的解码次序。不需要预先缓冲一个片,且接着执行先行操作来存取下一片的NAL标头。解码引擎32可存取帧88A的第一NAL单元或片,例如,NAL标头90A和MB 0到20,且通过确定例如MB 0等第一MB编号来确定当前片的起点。解码引擎32可将此MB编号0转发给错误处置模块34的错误检测模块(例如图3的错误检测模块40)。如上文所描述,在先前复位错误旗标46后,错误检测模块40将MB编号0转发给错误映射模块42,错误映射模块42将MB编号0存储到映射48的起点MB 48A。
同时,解码引擎32解码经编码MB 0到20,从而将此经解码视频数据或经解码MB存储在重构缓冲器38中。解码引擎32还将经解码MB 0到20转发给错误检测模块40,错误检测模块40可经由应用错误校验来确定是否发生了解码错误。举例来说,错误检测模块40可分别根据语法规则44A和语义规则44B来执行语法和语义错误校验,且根据熵规则44C来执行熵译码校验。
在图6的实例中,MB 0到20中的至少一些、NAL标头90B和MB 21到54中的一些已丢失或被破坏。错误检测模块40可检测此解码错误,并设置错误旗标46来指示所述错误。通过设置旗标46,错误检测模块40可使错误隐藏延迟,直到例如NAL标头90C等下一可识别片标头正被解码为止。因此,视频解码器26不需要先行以确定解码当前片之前的最末MB编号,而是维持旗标46以指示所述先前片有错误。以此方式,视频解码器26可在假定数据不含有错误的情况下解码经编码视频数据的当前片或区段。然而,在确定出错误后,设置错误旗标46以使得错误处置模块34可在稍后处置错误,例如,在下一片标头被解码之后处置错误。
出于说明目的假定错误检测模块40检测到上文所描述的解码错误与设置错误旗标46,错误检测模块40可告知解码引擎32所述解码错误。因此,解码引擎32可停止解码,且通过寻找下一可识别NAL标头(即,图6中展示的实例中的NAL标头90C)来重新建立解码同步或以其它方式使对帧88A的解码重新同步。在重新建立解码同步之后,解码引擎32可存取经编码视频数据的下一可用片,例如由NAL标头90C和MB编号55到72识别的NAL单元或片。如上文所描述,解码引擎32可通过存取对应于所述区段的起点的MB编号(例如,MB编号55)来确定经编码视频数据的此下一可用片的起点。解码引擎32可将此MB编号转发给错误检测模块40。
响应于接收到第二区段的起点,例如MB编号55,错误检测模块40确定错误旗标46的状态。如果未设置错误旗标46,那么错误检测模块40将所述MB编号传给错误映射模块42,错误映射模块42将MB编号55存储到映射48的起点MB 48A,以支持将下一可用片作为当前片来解码。或者,如果设置了错误旗标46,那么错误检测模块40将MB编号55减一传给错误映射模块42,从而指令错误映射模块42将MB编号54存储为映射48的终点MB 48B。错误映射模块42接着将映射48转发给错误隐藏模块36以识别解码错误的范围。错误范围界定含有与片标头90A、90B相关联的片的被破坏数据段的程度。在图6的实例中,错误映射模块42转发起点MB 48A和终点MB 48B,且隐藏引擎50隐藏由重构缓冲器38中的起点MB 48A和终点MB 48B(MB 0到MB 54)识别的MB,如上文所描述。
解码引擎32可通过存取由NAL标头90D识别的下一可用片或NAL单元而继续解码帧88A。一旦帧88A已被解码,解码引擎32就可进一步解码帧88B。由于在图6的实例中,帧88B中不存在解码错误,因此错误处置模块34不能检测到错误,且错误隐藏模块36不能隐藏任何其它错误。以此方式,视频解码器26可顺次解码每一片,且因此,由于不必缓冲当前片以支持先行操作,因此视频解码器26可包括较小缓冲器32。另外,由于除了正常解码之外涉及极少的额外计算,因此视频解码器26可能不消耗那么多的功率。换句话说,在检测到解码错误时(而不是持续地)调用错误处置模块34,从而节省计算且减少功率消耗。
在各种方面中,循序错误处置技术可维持上文所描述的解码效率,并且简化视频解码器26的架构,尤其是在由两个或两个以上处理器实施时。即,举例来说,一个处理器可实施解码引擎32,且另一处理器可实施错误处置模块34。两个处理器之间的通信可使所述架构变得复杂。通过限制这些通信,所述技术可降低实施复杂性。由于通信只能在发生错误时出现,所述技术可限制处理器之间的通信的数目,从而降低错误处置架构的复杂性。在架构方面,因为以循序次序对每一片执行解码,所以不需要软件或硬件来维持双缓冲器用于当前片和下一可用片,并在此些缓冲器之间来回切换。另外,在需要错误隐藏的情况下,不需要存储先前片的解码状态信息。
图7是说明例如视频解码器26等视频解码器在对跨越两个或两个以上帧的解码错误执行错误处置和隐藏时的实例操作的流程图。如上文所描述,视频解码器26可接收可包含多个经编码视频帧的经编码视频帧数据(92)。在最初存取一帧的当前片后,视频解码器26的解码引擎32可致使错误处置模块34确定当前片的起点MB编号和起点帧编号(94)。片的起点MB编号表示可能在其中检测到解码错误的区段的起点。起点帧编号指示当前片所驻留的帧的编号。可根据与当前片相关联的NAL标头中可能含有的一个或一个以上语法元素来确定起点MB编号和起点帧编号。
在确定起点MB编号和起点帧编号后,解码引擎32解码当前片(96),且将来自当前片的经解码MB输出到错误处置模块34以用于错误检测。错误处置模块34的错误检测模块40通过(例如)根据语法规则44A、语义规则44B或熵规则44C执行语法、语义和/或熵译码错误校验而确定是否发生了解码错误(98)。如果未检测到解码错误(98),且尚未到达片的终点(100),那么解码引擎32继续解码当前片(96)。如果末检测到解码错误(98),但已到达当前片的终点(100),那么已成功解码当前片。在此情况下,解码引擎32着手将下一可用片作为当前片来解码。如果当前片是视频序列中的第一片,那么所述下一片是第二片。或者,如果当前片不是第一片,那么所述下一片是视频序列中的后一片。所述后一、下一可用片可与当前片驻留在相同的帧中或驻留在不同的帧中。在任何情况下,当解码引擎32进行到下一可用片时,解码引擎32可确定所述下一可用片的起点MB编号和起点帧编号(103)。
如果检测到解码错误(98),那么错误检测引擎40可告知解码引擎32所述解码错误并设置错误旗标46(102)。响应于被告知所述错误,解码引擎34可如上文所描述通过进行到下一可用或可识别片来使解码重新同步。在此情况下,解码引擎32可确定下一可用片的起点MB编号和起点帧编号(103)。如将进行阐释,解码引擎96可着手将下一可用片作为当前片来解码(96)。在成功解码先前片后,或者作为在先前片中检测到解码错误之后的重新同步的一部分,解码引擎32可到达下一可用片(103)。在每种情况下,错误处置模块34可确定是否设置了错误旗标(104)。如果设置了错误旗标(104),那么由于检测到解码错误而存取下一可用片(98)。如果未设置错误旗标,那么由于成功解码先前片且检测到先前片的终点而存取下一可用片(100)。
如果未设置错误旗标(104),那么解码引擎32可着手将下一可用片作为当前片来解码(96)。换句话说,解码引擎32所获得的下一可用片成为当前片,且所述过程重复。然而,如果设置了错误旗标(104),那么错误处置模块34确定需要进行隐藏的被破坏数据段的程度。举例来说,错误检测模块40可基于下一可用片的起点MB编号来确定终点MB编号(106),且基于下一可用片的起点帧编号来确定终点帧编号(108)。如果解码错误仅涉及单个片,那么终点MB编号和终点帧编号可为当前片的终点MB编号和终点帧编号。然而,如果解码错误影响多个片,那么终点MB编号和终点帧编号可能对应于驻留在当前片与下一可用片之间且形成多片、被破坏数据段的一部分的另一、后一片。在任一情况下,错误映射模块42可分别基于下一可用片的起点MB编号和起点帧编号来确定终点MB编号和终点帧编号。再次,终点MB编号可为下一片的起点MB编号减一。错误隐藏模块36接着可通过隐藏从当前片的起点MB到被破坏数据段的终点MB的MB来隐藏错误(110)。在隐藏之后,解码引擎32可着手将用以产生终点MB和终点帧的下一可用片作为新的当前片来解码(96)。
错误映射模块42可将终点MB和终点帧编号作为终点MB 48B和终点帧48D存储到映射48。错误映射模块48可接着基于起点MB 48A、终点MB 48B、起点帧48C和终点帧48D来确定错误范围,并将此范围转发给错误隐藏模块36的隐藏引擎50。如上文所描述,隐藏引擎40根据多种隐藏技术中的任一者,基于错误范围(例如,起点MB 48A和终点MB 48B以及起点帧48C和终点帧48D)而隐藏所检测到的解码错误(110)。在操作中,错误映射模块48可通过不仅考虑起点和终点MB编号而且考虑帧编号来确定错误范围。如果解码错误越过帧边界,那么终点MB编号可实际上小于待隐藏区段的起点MB编号。跟踪帧编号可准许在此类型的情况下适当地解决错误范围。
图8是说明向含有跨越两个或两个以上帧的错误的实例位流应用错误处置和隐藏技术的图解。图8类似于图6,但描绘解码错误跨越两个连续帧以使得用于在检测到错误之后重新同步的下一可用片与当前片驻留在不同的帧中的情境。如图8中所示,可通过跟踪帧编号来将循序错误处置技术应用于越过两个帧的数据被丢失的情况。在常规系统中,当错误跨越两个帧时,可完全丢弃第二帧。然而,通过循序错误处置技术,解码器可校验片标头的帧编号,以确定新帧是否已在结束当前帧之前开始。如果是,那么解码器可隐藏当前帧的剩余MB并处理新帧。可隐藏第二帧的前几个MB直到下一片标头。然而,可保留第二帧中的剩余MB。
可将循序错误处置技术应用于图8的情境,以识别第一帧的MB 73到98和第二帧的MB 0到76以用于错误隐藏。图8说明包括两个帧116A、116B(“帧116”)的位流114,其中帧116A包含指定相应片的多个NAL标头118A到118D,且帧116B包含指定相应片的多个NAL标头118E到118H。NAL标头118A和118E各自以阴影形式展示,以表示这些NAL标头标记相应帧116的起点。NAL标头118A到118H(“NAL标头118”)中的每一者标记可含有片的NAL单元的起点。
每一NAL单元结束于NAL标头118的随后一个标头的起点处。举例来说,第一NAL单元可包含NAL标头118A和含有对应于MB编号0到20的MB的片,其中MB编号20是随后NAL标头118B之前的最未MB。MB编号展示于帧116中的每一者的顶部。可含有片的NAL单元可独立地解码,即,在无来自其它NAL单元的信息的情况下进行解码。以此方式,由于每一NAL单元为可解码MB的自含序列,因此丢失一NAL单元并不妨碍解码先前或随后的NAL单元。
例如图2的视频解码器26等视频解码器可根据本发明中所描述的技术接收这些帧116,且执行非先行、循序错误处置操作。解码引擎32可存取帧116A的第一NAL单元或片,即NAL标头118A和MB 0到20,且通过确定例如MB 0等第一MB编号以及帧编号来确定第一区段的起点。解码引擎32可将此MB编号0转发给错误处置模块34(例如图3的错误处置模块40)的错误检测模块。错误检测模块40将MB编号0和帧编号转发给错误映射模块42,错误映射模块42将MB编号0和帧编号作为起点MB编号48A和起点帧编号48C存储到映射48。在此实例中,起点MB编号可为MB 0,且起点帧编号可为帧0。
解码引擎32解码经编码MB 0到20,从而将此经解码视频数据(例如,经解码MB)存储在重构缓冲器38中。解码引擎32还可将经解码MB 0到20提供给错误检测模块40,错误检测模块40可经由应用错误校验来确定是否发生了解码错误。如果未检测到错误,那么视频解码器32存取例如由NAL标头118B和MB编号21到55指示的下一片,将MB起点编号和帧编号传给错误检测模块40,并解码此片。错误检测模块40根据错误旗标46来确定状态。在此实例中,因为未在先前片(MB 0到20)中检测到解码错误,所以尚未设置错误旗标46。错误映射模块42接收此第二片(MB 21到54)的起点MB编号和帧编号,并将起点MB和起点帧编号作为起点MB 48A和起点帧48C存储在映射48中。解码引擎32、错误检测模块40和错误映射模块42可继续以此方式对随后的片进行操作,直到检测到错误为止。
在图8的实例中,第一帧116A的最末片(MB 73到98)中的某一部分、帧116B的NAL标头118E,第二帧116B的第一片(MB 0到45)的全部、帧116B的NAL标头118F以及帧116B的第二片(MB 45到77)中的某一部分已丢失或被破坏(“LOST”)。在此错误之前,错误检测模块42可接收对应于第一帧116A的起点MB编号73和帧编号。错误映射模块42可如上文所描述将此MB编号73和帧编号作为起点MB 48A和起点帧48C存储到映射48。在解码引擎32解码的过程中,错误检测模块40可检测此解码错误并设置错误旗标46。错误检测模块40还可告知解码引擎32所述错误,因此解码引擎32以上文所描述的方式重新建立解码同步。明确地说,解码引擎32可通过寻找下一NAL单元标头来存取下一可用片。
在图8的实例中,解码引擎32识别具有NAL标头118G和MB编号77到88的下一可用NAL单元。NAL标头118G指示在包含MB 77到88的NAL单元是NAL标头可通过解析位流而轻易辨别的下一NAL单元的意义上的下一可用NAL单元。如上文所描述,解码引擎32可确定下一可用片的起点MB编号(例如,由NAL标头118G指示的片的MB编号77),以及此区段相对于其它经编码视频数据(例如,帧编号(1))的位置。解码引擎32可将对应于帧116B的起点MB编号77和帧编号(1)提供给错误检测模块40。
在接收到对应于帧116B的MB编号77和帧编号1后,错误检测模块40确定错误旗标46的状态。出于说明目的假定错误检测模块40先前检测到错误且设置了错误旗标46,错误检测模块40基于包含MB 77到88的片的起点MB编号77来确定先前区段的终点。在此实例中,错误检测模块40通过从MB编号77减去一以获得MB编号76来计算被破坏数据段的终点。错误检测模块40将终点MB编号76和帧编号1转发给错误映射模块42,错误映射模块42分别将这些编号作为终点MB 48B和终点帧48D存储到映射48。一旦被存储,错误映射模块42就将可被称为“错误范围”的映射48转发给错误隐藏模块36。
隐藏引擎50可基于起点MB 48A和终点MB 48B而从起点帧48C和终点帧48D确定解码错误跨越两个帧且MB从帧116A的终点和帧116B的开头丢失。隐藏引擎50还可从解码引擎32、错误检测模块40或错误映射模块42接收最大帧长度,其在此情况下在图8中展示为98个MB。即,可将最大帧长度界定为帧116中的一者的最末MB编号。98个MB的最大帧长度对应于四分之一通用中间格式(QCIF)帧中的MB的编号。隐藏引擎50可从存储为起点帧48C的起点帧编号减去存储为终点帧48D的终点帧编号以计算帧编号的差。
如果所计算的帧编号差为零,即,起点与终点在同一帧编号内,那么隐藏引擎50可替换或以其它方式隐藏从起点MB编号(例如,MB编号73)直到紧接于下一可用片的起点MB编号之前的终点MB编号的MB。再次,隐藏引擎50可直接将所述MB隐藏于重构缓冲器38中,或将所隐藏的MB提供给解码引擎32以用于隐藏提供给重构缓冲器的经解码视频MB。参看图8,如果所计算的帧编号差小于或等于一,即,解码错误跨越帧0(116A)和帧1(116B)的若干部分,那么隐藏引擎50可替换或以其它方式隐藏对应于存储为起点MB 48A(例如,MB编号73)的起点MB编号直到对应于最大帧长度的MB(例如,MB编号98)的MB。以此方式,当错误跨越两个帧时,隐藏第一帧的从包括错误的第一片的起点到帧的终点的剩余部分。
如下文所描述,如果帧差大于一,那么隐藏引擎50可插入额外帧,并隐藏在发生错误的第一帧与发生相同错误的最末帧之间的中间帧中的每一者的对应于MB编号0到98的MB。在此情况下,在起点帧编号与终点帧编号之间的为二或大于二的帧差指示至少已云失一个完整帧。帧差三将指示已丢失两个完整帧,帧差四将指示已云失三个完整帧,依此类推。在最末帧处,隐藏引擎50可隐藏对应于MB编号0直到存储为终点MB48B的MB编号(例如,76)的MB。
在图8中说明的情况下,由于解码错误跨越连续的帧116A和116B,因此隐藏引擎50确定等于一的差,并隐藏对应于存储为起点MB 48A的MB编号(例如,73)直到最大帧长度(MB编号98)的MB。因为所述差不是二或二以上,所以隐藏引擎50到达解码错误所跨越的最末帧,并隐藏对应于MB编号0直到存储到终点MB 48A的MB编号(例如,76)的MB。总之,隐藏帧1的MB 73到98以及MB 0到76。如果帧差大于或等于二,那么不是简单地丢弃丢失的参考帧,而是隐藏引擎50可插入等于已丢失的帧数目的数目的帧,从而避免参考帧失配。通过不是如在常规视频解码器中常见的那样丢弃缺失帧,所述技术可改进解码性能,如下文相对于图9A、9B和9C所描述。
图9A、图9B和图9C是说明对准许多个参考帧的位流应用错误处置和隐藏技术的图解。图9A描绘包括标记为“I”、“P0”、“P1”、“P2”、“P3”和“P4”的多个帧的位流120。I帧指代被称为H.264/MPEG 4AVC帧内帧的帧,且P帧指代H.264/MPEG 4AVC帧间预测帧。通常,因为P帧可经译码以使得每一P帧参考I帧中存在的至少一些视频数据,所以I帧可形成一个或一个以上P帧的参考。因此,因为I帧不依赖于任何先前或随后帧,所以I帧并不依靠帧间预测且可用以使解码重新同步。因此,尽管图9中未展示,但I帧可紧跟NAL标头之后,使得视频解码器26可检索由NAL标头识别的下一可用片,并解码I帧而不转带因先前丢失或被破坏的MB而导致的任何错误。另外,P帧可参考其它P帧。
在H.264过程中,使用多个参考帧是用以改进译码效率的共同特征。H.264过程不限制仅将先前帧用作参考帧,而且还允许运动补偿预测基于远达十六个过去帧的参考帧。此特征不仅可改进译码效率,而且其还可有助于减轻错误传播,且通常被称为编码器处的错误弹性工具。
当帧被完全丢失时,解码器可继续解码下一帧,而无需知道存在丢失帧。因为除非使用复杂的错误隐藏方法来估计完整丢失帧,否则解码器通常不能提供任何较佳结果,所以此方法在仅将先前帧用作参考帧时可能是高效的。然而,当使用多个参考帧时(如在H.264中),更可能帧丢失可导致经正确接收的帧参考错误帧来进行预测。由一个或一个以上丢失帧导致的此不正确参考在本发明中可被称为参考帧失配。
每一帧顶部的箭头表示例如P0、P1、P2、P3和P4等多个P帧与I帧之间的参考帧依赖性。位流中的语法元素可包括(例如)基于帧编号或帧编号偏移值而识别每一所接收P帧的参考帧的参考帧索引信息。如图8B中所示,帧P0和P1依赖于I帧作为参考帧以用于帧间预测,帧P2和P4依赖于帧P1,且帧P3依赖于帧P2。视频编码器(例如图1的视频编码器20)可以由上文所列出的依赖性描绘的方式来编码位流120,以压缩位流且改进发射效率,如上文所述。
也如上文所述,位流120可在经由发射信道16向接收器24发射期间经受丢失或破坏,从而导致视频解码器26接收到其中一个或一个以上帧丢失或被破坏的位流122。如图9A中所示,位流122仅包括I帧以及帧P0、P1和P4。在此实例中,帧P2和P3在发射中丢失或以其它方式被破坏。因此,连续接收到的帧P1与P4之间的帧编号差为三(4减1),从而指示丢失两个完整帧。如果连续接收到的帧之间的帧编号差为二,那么将指示丢失一个完整帧。
在发射期间可能丢失单个帧。或者,可能丢失多个帧。在每一情况下,参考帧失配可使视觉质量降级且准许错误的传播。在例如广播等应用中可能发生多个帧的丢失,其中多个帧被置于同一包内。因此,当所述包丢失时,可能丢失多个帧。位流124B的帧的顶部的箭头说明在未执行错误隐藏的情况下可导致的可能的依赖性。明确地说,所述箭头展示改变的依赖性,其中帧P4现在不正常地依赖于I帧而不是帧P1
在图9A的实例中,假定如可应用的参考帧索引信息所指示,帧P4既定依赖于第三先前帧。然而,在丢失帧的情况下,帧P4不依赖于帧P1,而是依赖于不将两个丢失帧计算在内的第三先前帧,即I帧。换句话说,P4仍指回三个帧,但在最初既定参考帧P2和P3从位流丢失时指向I帧。此参考帧失配主要归因于所述丢失的帧。因为解码过程仅基于位流中实际接收到的帧数据产生视频帧,所以解码器可能并未意识到丢失了帧P2和P3
在解码帧P1之后,解码器可接受帧P4作为序列中的下一帧,且根据位流中的参考帧索引(先前三个帧)来识别其参考帧为I帧,而不是P1帧。因此,帧P2和P3的丢失产生帧P4的参考帧失配。此参考帧失配可使在视频重放期间帧P4的视觉质量降级,且可能将由此引起的错误传播到后续视频帧。
根据本发明中所描述的技术,视频解码器26可经配置以如上文所描述识别解码错误,且替换丢失的帧以产生位流124。以此方式,视频解码器26可在一个或一个以上介入帧已在发射期间丢失或以其它方式被破坏时识别并补偿两个帧之间的间隙,从而校正参考帧失配。在操作中,图2的解码引擎32可接收位流122,确定I帧的每一区段的起点,且解码那些区段,从而将经解码的视频数据输出到错误处置模块32。如图3中所描绘的错误处置模块32的错误检测模块40着手确定是否发生任何解码错误。以此方式,解码引擎32和错误处置模块34继续解码帧P0和P1,直到错误检测模块40检测到丢失的帧P2和P3为止。
如上文所描述,在检测这些错误之前,错误检测模块40可接收区段的起点,例如,MB编号0(由于错误在帧P2的起点处发生),以及识别所述区段在经编码视频数据中的相对位置的帧编号。举例来说,可通过存取片标头中的帧编号语法元素而以H.264或类似实施方案来获得帧编号。连续帧编号的比较可揭露介入帧是否已丢失。如果使用帧编号,那么视频解码器可简单地跟踪连续的帧编号且确定帧参考差。如果帧编号差大于一,那么至少一完整帧缺失。缺失帧的数目通常应跟踪所述帧编号差。
在一些情况(其中帧编号被破坏)下,错误检测模块40可通过向例如起点帧48C或终点帧48D等先前所存储的起点帧编号或终点帧编号加一来确定起点帧编号。错误映射模块42可将起点MB编号和起点帧编号作为起点MB 48A和起点帧48C存储到映射48。错误检测模块40可告知解码引擎32所述错误并设置错误旗标46。
错误检测模块40可或者或另外使用例如实时协议(RTP)定时信息等外部机制来检测错误。对于RTP定时信息来说,错误检测模块40可通过校验连续接收到的帧之间的时间差并使所述时间差除以假定为恒定的帧间隔,来直接确定丢失了多少帧。恒定帧间隔可见于例如广播应用等某些应用中。然而,对于帧间隔通常不为恒定的例如视频电话等应用来说,可使用确定错误的帧编号方法。
解码引擎32可响应于错误而通过存取下一可用NAL标头来使解码重新同步。在此情况下,解码引擎32可存取帧P4的第一NAL标头,从而将帧P4的此区段的起点(例如,起点MB编号)和对应于帧P4的帧编号传给错误检测模块40。错误检测模块40确定错误旗标46的状态,且从而发现所述错误旗标46被设置;基于所接收到的对应于帧P4的MB编号和帧编号来确定先前区段的终点。
举例来说,假定解码引擎32在解码帧P4时确定起点MB编号为0且起点帧编号为5,那么错误检测模块40可计算先前帧的终点MB编号为98(假定错误检测模块40被告知98个MB的最大帧长度)且终点帧编号为4。错误映射模块42可将这些终点MB编号和终点帧编号作为终点MB 48B和终点帧48D存储到映射48。因此,由于错误检测模块40不可检测解码错误的终点,且错误映射模块42在映射48被完全指定之前不可将映射48转发给隐藏引擎50,因此在帧P4的第一片标头被解码之前,错误隐藏模块36不可隐藏错误。
错误映射模块42可接着将映射48转发给错误隐藏模块36。错误隐藏模块36可评估映射48,且基于从起点帧编号(例如2)减去终点帧编号4来确定丢失2个帧。通过进一步考虑起点MB编号为0且终点MB编号为98,错误隐藏模块36可进一步确定两个完整帧丢失或被破坏。参看图9B,除在两个丢失帧外部的片中执行MB隐藏之外,隐藏引擎50还可因此(例如)直接地或结合解码引擎32而将两个完整帧插入到位流122中,以在重构缓冲器38中产生位流124B。
如图9B 中所示,位流124B包括代替先前丢失的帧的两个额外帧。在帧P4的视频数据已被接收并解码之前,不执行此帧插入技术。这些额外帧在图9B的位流124B中均指示为“P1”,以表示隐藏引擎50通过重复帧P1两次来隐藏两个丢失帧,并将这两个重复帧插入到重构缓冲器38中帧P4之前。通过代替丢失帧P2和P3的重复P1帧的存在,帧P4仍参考位流中在其之后三个帧的帧,但在此情况下,所述帧更适合为重复帧P1而不是I帧。
作为替代,隐藏引擎50可不替换帧,而是改为可修改在所述帧中的一者(例如帧P4)的NAL标头内译码的参考帧依赖性。举例来说,隐藏引擎50可接收映射48,并加上一个终点帧编号48D以存取重构缓冲器38中的帧P4。在此基础上,隐藏引擎50可修改位流的参考索引,使得帧P4参考正确的帧。举例来说,隐藏引擎50可接着存取帧P4的NAL标头,且修改依赖性语法元素,使得帧P4如位流122中所示依赖于帧P1且不依赖于I帧。简单地将新帧插入参考帧缓冲器中可能较容易的。在任一情况下,现在可使用帧P1作为帧P4进行预测性译码的参考来解码并重构帧P4,从而防止解码错误传播到帧P4和其它随后帧,且执行帧P4的准确重构。
尽管位流124B将重复的帧表示为方便的隐藏机制,但隐藏引擎50可执行其它隐藏技术来隐藏或以其它方式替换丢失的帧。本发明中描述的高效错误处置技术因此不应严格地限于此方面。举例来说,可实施错误处置技术,使得隐藏引擎50应用更复杂的运动补偿帧内插方案来在检视帧P1到P4时创建更平滑的运动。因此,可通过简单地重复帧P1两次来再现两个丢失帧P2和P3,或者可使用内插或其它更加复杂的技术来再现丢失帧P2和P3的近似帧。
举例来说,隐藏引擎50可插入两个帧,从而校正依赖性,使得帧P4正确地依赖帧P1,且解码帧P4。在一些方面中,隐藏引擎50可存取重构缓冲器38中的帧P1和P4,且基于使用如上文提到的帧内插方案确定的帧P1与P4之间的运动来估计重复的帧P1。通过以此方式估计重复的帧P1,隐藏引擎50可产生在重放期间进行检视时使运动平滑的近似帧P2和P3。在任何情况下,通过校正参考帧失配,此隐藏技术可准许帧P4在不显著修改解码过程的情况下将帧P1用作其预测参考帧,从而允许准确地重构帧P4
图9C大体上对应于图9A和图9B中概述的情境,但说明丢失单个帧P2,而不是两个连续的帧P2和P3。在此情况下,尽管帧失配仅为一个,但帧P3和P4仍将参考错误的帧。图9C展示原始经编码位流120和其中丢失完整帧P2的所接收位流123。在此情况下,如图9C的位流125所示,隐藏引擎50可重复帧P1代替帧P2以消除参考帧失配。因此,帧P4可参考正确的帧。再次,可通过使用RTP信息比较帧编号或通过其它技术来检测参考帧失配。另外,通过简单地重复例如帧P1等帧,或内插一帧以替换帧P2来完成替换帧P2
图10是说明视频解码器在对准许多个参考帧的位流中的丢失帧执行错误处置和隐藏时的实例操作的流程图。图10的流程图实质上对应于图7的流程图。举例来说,图10说明视频解码器26接收经编码视频帧数据(92)和确定正被解码的当前片的起点MB编号和起点帧编号(94)的过程。在解码当前片(96)的过程中,如果检测到解码错误(98),那么错误检测模块40可设置错误旗标(102)。如果不存在解码错误(98),且尚未到达所述片的终点(100),那么视频解码器26继续解码当前片。如果已到达所述片的终点(100),或检测到错误(98)且已设置错误旗标(102),那么视频解码器26进行到下一可用片并确定其起点MB编号和起点帧编号(103)。
如果设置了错误旗标(104),那么错误映射模块42可基于下一可用片的起点MB编号来确定丢失或被破坏数据段的终点MB编号(106),且基于下一可用片的起点帧编号来确定终点帧编号(108)。另外,为准许在丢失一个或一个以上帧时插入重复的帧,错误映射模块42可经配置以确定起点帧编号与终点帧编号之间的差是否大于一(126)。如果是,那么至少一个帧从位流缺失。从位流缺失的帧的数目通常将等于帧编号差减一。因此,如果帧编号差为三,那么通常将有两个帧从位流缺失。
在确定帧编号差,即,起点帧编号与终点帧编号之间的差大于一后,错误映射模块42可指导错误隐藏模块36重复先前帧,并将其插入以代替缺失的帧(128)。如上文所描述,代替于重复先前帧,隐藏模块36可经配置以通过例如运动补偿内插等其它技术来产生替换帧。作为一替代,代替于替换帧,隐藏模块36可经配置以(例如)通过使丢失帧的数目(即,帧编号差减一)与参考索引相加以使得后面的帧使用适当的参考帧,来调整一个或一个以上后面的帧的参考帧索引信息。
由重复或内插的帧替换的丢失帧的数目可基于帧差(128)。举例来说,如果帧编号差为三,那么先前帧可重复一次,即,针对接下来的两个帧。如果帧编号差为二,那么先前帧可重复一次,即,针对下一帧。因此,所替换的帧的数目可等于帧编号差减一。如果帧编号差不大于一(126),或已替换了足够数目的丢失帧(128),那么错误隐藏模块36可(例如)如参看图7所描述,基于起点和终点MB编号以及起点和终点帧编号来隐藏错误(110),并在将下一可用片作为当前片进行解码(96)之前使错误旗标复位(110)。
与重复先前帧,或应用替代的隐藏机制一起,错误隐藏模块36可着手应用用于隐藏未经替换的MB的技术(110),且接着可着手将下一可用片作为当前片进行解码(96)。举例来说,用作当前片的下一可用片是(例如)针对其获得起点MB和起点帧编号的片(103)。除重复丢失帧之外,错误隐藏模块36还可隐藏当前片和帧中的任何MB。
在从起点和终点帧编号知道错误跨越一个以上帧的情况下,错误隐藏模块36可隐藏当前帧的从起点MB到MB 98(假定98个MB是可应用的最大数目)的MB。另外,错误隐藏模块36可隐藏最末替换帧之后直到下一可用片(即,直到终点MB编号)的点的MB。因此,隐藏可包括以下步骤的组合:隐藏第一帧中的MB,针对一个或个以上丢失帧重复第一帧,以及隐藏紧跟丢失帧之后的帧中的MB。
图11A和图11B是说明向准许多个参考帧的实例位流应用错误处置和隐藏技术的图解。在图11A的实例中,位流包括第一I帧和四个连续的P帧(P0、P1、P2、P3)。解码错误导致丢失在帧P0的MB 88(其为解码错误开始的片的起点)处开始且延伸经过帧P1且直到帧P2的MB 57的MB。在此情况下,起点MB和起点帧编号分别为MB 88和帧P0。如果帧P2中的下一可用片在MB 75处开始,那么终点MB和终点帧编号分别为MB 74和3(针对帧P2)。
在图11A的实例中,帧P2与P0之间的帧编号差为3-1=2,从而指示丢失一个完整帧(帧P1)。错误隐藏模块36隐藏帧P0的MB 88到98,通过重复帧P0而隐藏帧P1,且隐藏帧P2的MB 0到74。举例来说,错误映射模块34可指示解码错误跨越帧P0和P1,从而指示P0应从起点MB 88直到MB 98处帧的终点而被隐藏。在图10的操作110中,错误映射模块42可映射两个错误范围,一个错误范围针对经替换帧P1(通过重复帧P0而替换)之前的P0中丢失的MB,且另一个错误范围针对经替换帧P1之后的帧P2中丢失的MB。第一错误范围可将起点MB指定为帧P0的MB 88,并将终点MB指定为帧P0的MB 98。错误隐藏模块36可接着隐藏此第一错误范围中的MB。
第二错误范围可将起点MB指定为经替换帧P1之后的下一MB(即帧P2中的MB 0),并保持现有终点MB(即帧P2中的MB 74)。错误隐藏模块36接着可隐藏此第二错误范围中的MB。因此,通过重复所得帧P0以隐藏帧P1,错误映射模块34可计算新的起点MB和起点帧编号分别为MB 0和帧P2,且使用先前所计算的终点MB和终点帧编号。使用这些编号,错误隐藏模块36可隐藏帧P2中在起点MB 0处开始且延伸到已被计算为下一可用片的起点MB减一的终点MB 74的MB。
可使用用于在重复帧时处置MB的隐藏的其它技术。错误处置模块34可以多种方式来处置帧P1中丢失的MB的隐藏。因此,出于说明目的来提供参看图11A而描述的过程。
在图11B的实例中,解码错误跨越帧P0的一部分、帧P1和P2的全部以及帧P3的一部分。在此情况下,起点MB为MB 88且起点帧为帧P0。终点MB为MB 52,从而假定下一可用片在帧P3的MB 53处开始。终点帧为帧P3。在此情况下,终点帧P3与起点帧P0的帧编号差为3-0=3。因此,位流中存在两个丢失帧(P1和P2)。
错误映射模块42可映射帧P0中从在其中检测到错误的片的起点MB 88开始的第一错误范围,以及从帧P3的起点延伸到终点MB 52(下一可用片的起点MB减一)的第二错误范围。然而,不需要先行操作。代替的是,当视频解码器26到达帧P3以触发错误隐藏时,视频解码器26可驻留在错误旗标的状态。错误隐藏模块36隐藏帧P0中的MB[88,98](例如,直接地、经由解码引擎32或以其它方式),针对丢失帧P1和P2重复帧P0,且隐藏帧P3中的MB[0,52]。视频解码器26接着可着手解码帧P3中的剩余片。
如上文所描述,由于错误处置在检测到实际错误之后发生,因此所述技术可提供较低的计算负担。因此,所述技术可因可避免不必要的计算而提供较低的功率消耗,且减少涉及两个或两个以上处理器的技术的实施(例如当数字信号处理器(DSP)实施解析器时,且专用集成电路(ASIC)实施像素重构时)中的通信和中断。所述技术还可提供与先行解码技术相比更加有效的硬件架构和实施方案,因为本发明中所描述的技术以循序方式而不是非循序方式进行操作。所述技术可通过经由准确识别需要隐藏的区段来减小解码错误的影响而进一步改进视频质量。
本文中所描述的技术可以硬件、软件、固件或其任一组合来实施。描述为模块、单元或组件的任何特征可一起实施于集成逻辑装置中或单独实施为离散但可共同操作的逻辑装置。在一些情况下,各种特征可实施为集成电路装置,例如集成电路芯片或芯片集。如果在软件中实施,那么可至少部分地通过包含指令的计算机可读媒体来实现所述技术,所述指令在执行时致使处理器执行上文所描述的方法中的一者或一者以上。
计算机可读媒体可形成可包括封装材料的计算机程序产品的一部分。计算机可读媒体可包含计算机数据存储媒体,例如随机存取存储器(RAM)、同步动态随机存取存储器(SDRAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器、磁性或光学数据存储媒体等。另外或替代地,可至少部分地通过计算机可读通信媒体来实现所述技术,所述计算机可读通信媒体以指令或数据结构的形式来携载或传达代码,且可由计算机来存取、读取和/或执行。
所述代码或指令可由例如一个或一个以上DSP、通用微处理器、ASIC、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一个或一个以上处理器来执行。因此,本文中所使用的术语“处理器”可指代上述结构或适合实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,可将本文中所描述的功能性提供于专用软件模块或硬件模块内。本发明还预期包括用以实施本发明中所描述的技术中的一者或一者以上的电路的多种集成电路装置中的任一者。此种电路可提供于单个集成电路芯片中或所谓的芯片集中的多个、可共同操作的集成电路芯片中。此些集成电路装置可用于多种应用中,其中的一些应用可包括使用于例如移动电话手持机等无线通信装置中。
已描述了所揭示技术的各种方面。这些和其它方面均在所附权利要求书的范畴内。

Claims (54)

1.一种视频解码方法,其包含:
确定经编码视频数据的当前单元的起点;
解码所述当前单元的至少一部分;
在所述当前单元中检测解码错误;
确定所述经编码视频数据的下一可用单元的起点;
如果检测到所述解码错误,那么基于所述下一可用单元的所述起点来确定被破坏数据段的终点;以及
基于所述当前单元的所述起点和所述被破坏数据段的所述终点来隐藏所述被破坏数据段。
2.根据权利要求1所述的方法,其中所述当前单元和所述下一可用单元中的每一者包括一视频数据片。
3.根据权利要求1所述的方法,其中所述被破坏数据段包括经编码视频数据的所述当前单元和至少一个额外单元。
4.根据权利要求1所述的方法,其中所述当前单元是第一帧的当前片,且所述被破坏数据段包括所述当前片和来自第二帧的经编码视频数据的至少一个额外片。
5.根据权利要求1所述的方法,其进一步包含:
如果检测到所述解码错误,那么设置错误旗标以指示所述检测到所述解码错误;以及
当所述错误旗标被设置时,基于所述下一可用单元的所述起点来确定所述被破坏数据段的所述终点。
6.根据权利要求5所述的方法,其中所述下一可用单元包含至少一个片,所述方法进一步包含在检测到所述解码错误时寻找与所述片相关联的片标头。
7.根据权利要求5所述的方法,其进一步包含,如果检测到所述解码错误,那么停止解码所述当前单元,且着手解码所述下一可用单元。
8.根据权利要求1所述的方法,其进一步包含,如果未检测到所述解码错误,那么解码整个第一单元。
9.根据权利要求1所述的方法,其中所述解码错误包含语法错误、语义错误或熵译码错误中的至少一者。
10.根据权利要求1所述的方法,其中确定所述当前单元的起点包含确定与所述当前单元的所述起点相关联的第一宏块(MB)编号,确定所述被破坏数据段的终点包含确定在第二单元的起点之前的第二MB编号,且隐藏包含隐藏从所述第一MB编号到所述第二MB编号的所述被破坏数据段。
11.根据权利要求10所述的方法,其中确定所述第二单元的起点包含确定与所述第二单元的所述起点相关联的第三MB编号,且其中确定所述第二MB编号包含从所述第三MB编号减去一以产生所述第二MB编号。
12.根据权利要求10所述的方法,其中确定所述第一单元的起点包含确定与所述第一单元的所述起点相关联的第一宏块(MB)编号和第一帧编号,确定所述被破坏数据段的终点包含确定与所述被破坏数据段的所述终点相关联的第二MB编号和第二帧编号,且隐藏包含基于所述第一和第二MB编号以及所述第一和第二帧编号来隐藏所述被破坏数据段的至少一部分,其中所述第一和第二帧编号可相同或不同。
13.根据权利要求1所述的方法,其进一步包含:
检测一个或一个以上帧的丢失;以及
替换所述一个或一个以上丢失帧以隐藏另一帧的参考帧失配。
14.一种视频解码装置,其包含:
用于确定经编码视频数据的当前单元的起点的装置;
用于解码所述当前单元的至少一部分的装置;
用于在所述当前单元中检测解码错误的装置;
用于确定所述经编码视频数据的下一可用单元的起点的装置;
用于在检测到所述解码错误的情况下基于所述下一可用单元的所述起点来确定被破坏数据段的终点的装置;以及
用于基于所述当前单元的所述起点和所述被破坏数据段的所述终点来隐藏所述被破坏数据段的装置。
15.根据权利要求14所述的装置,其中所述当前单元和所述下一可用单元中的每一者包括一视频数据片。
16.根据权利要求14所述的装置,其中所述被破坏数据段包括经编码视频数据的所述当前单元和至少一个额外单元。
17.根据权利要求14所述的装置,其中所述当前单元是第一帧的当前片,且所述被破坏数据段包括所述当前片和来自第二帧的经编码视频数据的至少一个额外片。
18.根据权利要求14所述的装置,其进一步包含:
用于在检测到所述解码错误的情况下设置错误旗标以指示所述检测到所述解码错误的装置;以及
用于在所述错误旗标被设置时基于所述下一可用单元的所述起点来确定所述被破坏数据段的所述终点的装置。
19.根据权利要求18所述的装置,其中所述下一可用单元包含至少一个片,所述装置进一步包含用于在检测到所述解码错误时寻找与所述片相关联的片标头的装置。
20.根据权利要求18所述的装置,其进一步包含用于在检测到所述解码错误的情况下停止解码所述当前单元且着手解码所述下一可用单元的装置。
21.根据权利要求14所述的装置,其进一步包含用于在未检测到所述解码错误的情况下解码整个第一单元的装置。
22.根据权利要求14所述的装置,其中所述解码错误包含语法错误、语义错误或熵译码错误中的至少一者。
23.根据权利要求14所述的装置,其中所述用于确定所述当前单元的起点的装置包含用于确定与所述当前单元的所述起点相关联的第一宏块(MB)编号的装置,所述用于确定所述被破坏数据段的终点的装置包含用于确定在第二单元的起点之前的第二MB编号的装置,且所述用于隐藏的装置包含用于隐藏从所述第一MB编号到所述第二MB编号的所述被破坏数据段的装置。
24.根据权利要求23所述的装置,其中所述用于确定所述第二单元的起点的装置包含用于确定与所述第二单元的所述起点相关联的第三MB编号的装置,且其中所述用于确定所述第二MB编号的装置包含用于从所述第三MB编号减去一以产生所述第二MB编号的装置。
25.根据权利要求23所述的装置,其中所述用于确定所述第一单元的起点的装置包含用于确定与所述第一单元的所述起点相关联的第一宏块(MB)编号和第一帧编号的装置,所述用于确定所述被破坏数据段的终点的装置包含用于确定与所述被破坏数据段的所述终点相关联的第二MB编号和第二帧编号的装置,且所述用于隐藏的装置包含用于基于所述第一和第二MB编号以及所述第一和第二帧编号来隐藏所述被破坏数据段的至少一部分的装置,其中所述第一和第二帧编号可相同或不同。
26.根据权利要求14所述的装置,其进一步包含:
用于检测一个或一个以上帧的丢失的装置;以及
用于替换所述一个或一个以上丢失帧以隐藏另一帧的参考帧失配的装置。
27.一种视频解码装置,其包含:
解码引擎,其解码经编码视频数据的当前单元的至少一部分;
错误检测模块,其在所述当前单元中检测解码错误;
错误映射模块,其确定所述当前单元的起点,确定所述经编码视频数据的下一可用单元的起点,且在检测到所述解码错误的情况下,基于所述下一可用单元的所述起点来确定被破坏数据段的终点;以及
错误隐藏模块,其基于所述当前单元的所述起点和所述被破坏数据段的所述终点来隐藏所述被破坏数据段。
28.根据权利要求27所述的装置,其中所述当前单元和所述下一可用单元中的每一者包括一视频数据片。
29.根据权利要求27所述的装置,其中所述被破坏数据段包括经编码视频数据的所述当前单元和至少一个额外单元。
30.根据权利要求27所述的装置,其中所述当前单元是第一帧的当前片,且所述被破坏数据段包括所述当前片和来自第二帧的经编码视频数据的至少一个额外片。
31.根据权利要求27所述的装置,其中所述错误检测模块设置错误旗标以指示所述检测到所述解码错误,且所述错误映射模块在所述错误旗标被设置时基于所述下一可用单元的所述起点来确定所述被破坏数据段的所述终点。
32.根据权利要求31所述的装置,其中所述下一可用单元包含至少一个片,且当检测到所述解码错误时,所述解码引擎寻找与所述片相关联的片标头。
33.根据权利要求31所述的装置,其中,如果检测到所述解码错误,那么所述解码引擎停止解码所述当前单元,且着手解码所述下一可用单元。
34.根据权利要求27所述的装置,其中在未检测到所述解码错误的情况下,所述解码引擎解码整个第一单元。
35.根据权利要求27所述的装置,其中所述解码错误包含语法错误、语义错误或熵译码错误中的至少一者。
36.根据权利要求27所述的装置,其中所述错误映射模块确定与所述当前单元的所述起点相关联的第一宏块(MB)编号,且确定在第二单元的起点之前的第二MB编号,且所述错误隐藏模块隐藏从所述第一MB编号到所述第二MB编号的所述被破坏数据段。
37.根据权利要求36所述的装置,其中所述错误映射模块确定与所述第二单元的所述起点相关联的第三MB编号,且通过从所述第三MB编号减去一以产生所述第二MB编号来确定所述第二MB编号。
38.根据权利要求36所述的装置,其中所述错误映射模块确定与所述第一单元的所述起点相关联的第一宏块(MB)编号和第一帧编号,且确定与所述被破坏数据段的所述终点相关联的第二MB编号和第二帧编号,且所述错误隐藏模块基于所述第一和第二MB编号以及所述第一和第二帧编号来隐藏所述被破坏数据段的至少一部分,其中所述第一帧编号与所述第二帧编号可相同或不同。
39.根据权利要求27所述的装置,其中所述错误隐藏模块检测一个或一个以上帧的丢失,且替换所述一个或一个以上丢失帧以隐藏另一帧的参考帧失配。
40.根据权利要求27所述的装置,其中所述装置包含无线通信装置手持机。
41.根据权利要求27所述的装置,其中所述装置包含集成电路装置。
42.一种计算机可读媒体,其包含致使一个或一个以上处理器执行以下操作的指令:
确定经编码视频数据的当前单元的起点;
解码所述当前单元的至少一部分;
在所述当前单元中检测解码错误;
确定所述经编码视频数据的下一可用单元的起点;
如果检测到所述解码错误,那么基于所述下一可用单元的所述起点来确定被破坏数据段的终点;以及
基于所述当前单元的所述起点和所述被破坏数据段的所述终点来隐藏所述被破坏数据段。
43.根据权利要求42所述的计算机可读媒体,其中所述当前单元和所述下一可用单元中的每一者包括一视频数据片。
44.根据权利要求42所述的计算机可读媒体,其中所述被破坏数据段包括经编码视频数据的所述当前单元和至少一个额外单元。
45.根据权利要求42所述的计算机可读媒体,其中所述当前单元是第一帧的当前片,且所述被破坏数据段包括所述当前片和来自第二帧的经编码视频数据的至少一个额外片。
46.根据权利要求42所述的计算机可读媒体,其进一步包含致使所述一个或一个以上处理器执行以下操作的指令:
在检测到所述解码错误的情况下设置错误旗标以指示所述检测到所述解码错误;以及
在所述错误旗标被设置时基于所述下一可用单元的所述起点来确定所述被破坏数据段的所述终点。
47.根据权利要求46所述的计算机可读媒体,其中所述下一可用单元包含至少一个片,且所述指令致使所述一个或一个以上处理器在检测到所述解码错误时寻找与所述片相关联的片标头。
48.根据权利要求46所述的计算机可读媒体,其进一步包含致使所述一个或一个以上处理器在检测到所述解码错误的情况下停止解码所述当前单元并着手解码所述下一可用单元的指令。
49.根据权利要求42所述的计算机可读媒体,其中所述指令致使所述一个或一个以上处理器在未检测到所述解码错误的情况下解码整个第一单元。
50.根据权利要求42所述的计算机可读媒体,其中所述解码错误包含语法错误、语义错误或熵译码错误中的至少一者。
51.根据权利要求42所述的计算机可读媒体,其中所述指令致使所述一个或一个以上处理器确定与所述当前单元的所述起点相关联的第一宏块(MB)编号,确定在第二单元的起点之前的第二MB编号,且隐藏从所述第一MB编号到所述第二MB编号的所述被破坏数据段。
52.根据权利要求51所述的计算机可读媒体,其中所述指令致使所述一个或一个以上处理器确定与所述第二单元的所述起点相关联的第三MB编号,且从所述第三MB编号减去一以产生所述第二MB编号。
53.根据权利要求51所述的计算机可读媒体,其中所述指令致使所述一个或一个以上处理器确定与所述第一单元的所述起点相关联的第一宏块(MB)编号和第一帧编号,确定与所述被破坏数据段的所述终点相关联的第二MB编号和第二帧编号,且基于所述第一和第二MB编号以及所述第一和第二帧编号来隐藏所述被破坏数据段的至少一部分,其中所述第一帧编号与所述第二帧编号可相同或不同。
54.根据权利要求42所述的计算机可读媒体,其中所述指令致使所述一个或一个以上处理器:
检测一个或一个以上帧的丢失;且
替换所述一个或一个以上丢失帧以隐藏另一帧的参考帧失配。
CN200980106467.1A 2008-02-26 2009-02-24 视频解码器错误处置 Active CN101960853B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US3143808P 2008-02-26 2008-02-26
US61/031,438 2008-02-26
US12/170,991 US9357233B2 (en) 2008-02-26 2008-07-10 Video decoder error handling
US12/170,991 2008-07-10
PCT/US2009/034948 WO2009108614A1 (en) 2008-02-26 2009-02-24 Video decoder error handling

Publications (2)

Publication Number Publication Date
CN101960853A true CN101960853A (zh) 2011-01-26
CN101960853B CN101960853B (zh) 2016-03-30

Family

ID=40998278

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980106467.1A Active CN101960853B (zh) 2008-02-26 2009-02-24 视频解码器错误处置

Country Status (7)

Country Link
US (1) US9357233B2 (zh)
EP (1) EP2255536A1 (zh)
JP (4) JP2011514076A (zh)
KR (2) KR101443952B1 (zh)
CN (1) CN101960853B (zh)
TW (1) TW200943977A (zh)
WO (1) WO2009108614A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103327312A (zh) * 2012-03-20 2013-09-25 腾讯科技(深圳)有限公司 视频帧的解码处理方法和装置
CN103813177A (zh) * 2012-11-07 2014-05-21 辉达公司 一种视频解码系统和方法
CN104509064A (zh) * 2012-07-29 2015-04-08 高通股份有限公司 替换丢失的媒体数据以进行网络流式传输
CN105513619A (zh) * 2014-09-26 2016-04-20 惠州市德赛西威汽车电子股份有限公司 一种车载娱乐系统中错误曲目的处理方法
CN106464913A (zh) * 2014-05-12 2017-02-22 美国莱迪思半导体公司 视频信道中的错误检测和抑制
CN108337526A (zh) * 2012-04-13 2018-07-27 Ge视频压缩有限责任公司 低延迟图像写码
US10743030B2 (en) 2012-06-29 2020-08-11 Ge Video Compression, Llc Video data stream concept

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060062312A1 (en) * 2004-09-22 2006-03-23 Yen-Chi Lee Video demultiplexer and decoder with efficient data recovery
US8379733B2 (en) * 2006-09-26 2013-02-19 Qualcomm Incorporated Efficient video packetization methods for packet-switched video telephony applications
BRPI0821678A2 (pt) * 2008-01-31 2015-06-16 Thomson Licensing Método e sistema para definição e transmissão de dados de exame.
US20100158130A1 (en) * 2008-12-22 2010-06-24 Mediatek Inc. Video decoding method
US20100195742A1 (en) * 2009-02-02 2010-08-05 Mediatek Inc. Error concealment method and apparatus
CN104270636B (zh) * 2009-05-29 2018-11-09 三菱电机株式会社 图像编码装置以及图像编码方法
KR20110072115A (ko) * 2009-12-22 2011-06-29 삼성전자주식회사 구동 회로 및 이를 갖는 표시 장치
US9185335B2 (en) * 2009-12-28 2015-11-10 Thomson Licensing Method and device for reception of video contents and services broadcast with prior transmission of data
EP2391042B1 (en) * 2010-05-27 2015-07-29 Telefonaktiebolaget L M Ericsson (publ) Efficient error handling on a link using ARQ and multiple NACKs associated with multiple error thresholds
CN102572415B (zh) * 2010-12-17 2013-12-04 清华大学 在可重构处理器上映射和实现的运动补偿算法的方法
US9819968B2 (en) * 2011-01-12 2017-11-14 Texas Instruments Incorporated Method and apparatus for error detection in CABAC
US9681141B2 (en) * 2011-02-08 2017-06-13 Texas Instruments Incorporated Error detection on variable length code decoder
MX2013013874A (es) * 2011-06-03 2014-01-23 Echostar Technologies Llc Sistema y metodos para probar hardware de video al evaluar tramas de video de salida que contienen caracteristicas de referencia integradas.
WO2013020709A1 (en) * 2011-08-10 2013-02-14 Telefonaktiebolaget L M Ericsson (Publ) Media stream handling
US9094684B2 (en) 2011-12-19 2015-07-28 Google Technology Holdings LLC Method for dual pass rate control video encoding
US20130188709A1 (en) * 2012-01-25 2013-07-25 Sachin G. Deshpande Video decoder for tiles with absolute signaling
US20130223524A1 (en) * 2012-02-29 2013-08-29 Microsoft Corporation Dynamic insertion of synchronization predicted video frames
US20130254611A1 (en) * 2012-03-23 2013-09-26 Qualcomm Incorporated Recovering data in multimedia file segments
PL2874149T3 (pl) 2012-06-08 2024-01-29 Samsung Electronics Co., Ltd. Sposób i urządzenie do ukrywania błędu ramki oraz sposób i urządzenie do dekodowania audio
US9332309B2 (en) 2012-06-08 2016-05-03 Apple Inc. Sync frame recovery in real time video transmission system
US9769501B2 (en) * 2012-07-17 2017-09-19 Thomson Licensing Video quality assessment at a bitstream level
CN107481725B (zh) 2012-09-24 2020-11-06 三星电子株式会社 时域帧错误隐藏设备和时域帧错误隐藏方法
US9491487B2 (en) 2012-09-25 2016-11-08 Apple Inc. Error resilient management of picture order count in predictive coding systems
US9264737B2 (en) 2012-10-01 2016-02-16 Apple Inc. Error resilient transmission of random access frames and global coding parameters
US9386326B2 (en) * 2012-10-05 2016-07-05 Nvidia Corporation Video decoding error concealment techniques
US20140119445A1 (en) * 2012-10-26 2014-05-01 Lsi Corporation Method of concealing picture header errors in digital video decoding
TWI492049B (zh) * 2013-02-06 2015-07-11 Ibm 記憶體模組狀態指示方法及裝置
US9681155B2 (en) * 2013-03-15 2017-06-13 Sony Interactive Entertainment America Llc Recovery from packet loss during transmission of compressed video streams
US9667959B2 (en) 2013-03-29 2017-05-30 Qualcomm Incorporated RTP payload format designs
CN104202611A (zh) * 2014-09-01 2014-12-10 赛特斯信息科技股份有限公司 基于视频解码器实现视频文件中花屏缺陷检测的方法
US9800898B2 (en) * 2014-10-06 2017-10-24 Microsoft Technology Licensing, Llc Syntax structures indicating completion of coded regions
US20180054633A1 (en) * 2015-03-27 2018-02-22 Panasonic Intellectual Property Management Co., Ltd. Video decoding device
JP5940231B1 (ja) * 2016-01-15 2016-06-29 株式会社 ディー・エヌ・エー 情報処理システム、情報処理プログラム及び情報処理方法
JP6672934B2 (ja) 2016-03-24 2020-03-25 ティアック株式会社 オーディオ信号処理装置及びプログラム
JP6617632B2 (ja) 2016-03-24 2019-12-11 ティアック株式会社 オーディオ・ビデオ信号処理装置及びプログラム
JP6658181B2 (ja) * 2016-03-24 2020-03-04 ティアック株式会社 オーディオ装置及びオーディオシステム
US10182248B2 (en) * 2016-11-21 2019-01-15 Cisco Technology, Inc. Keyframe mitigation for video streams with multiple receivers
US10614747B2 (en) * 2017-01-31 2020-04-07 Synaptics Incorporated Device and method for driving display panel in response to image data
US10841621B2 (en) * 2017-03-01 2020-11-17 Wyse Technology L.L.C. Fault recovery of video bitstream in remote sessions
CN108737832A (zh) * 2018-05-28 2018-11-02 安徽维德工业自动化有限公司 一种基于视频解码器的视频缺陷检测系统及其方法
US11039149B2 (en) * 2019-08-01 2021-06-15 Qualcomm Incorporated Dynamic video insertion based on feedback information
US11418813B2 (en) * 2019-09-20 2022-08-16 Tencent America LLC Signaling of inter layer prediction in video bitstream
US10931976B1 (en) * 2019-10-14 2021-02-23 Microsoft Technology Licensing, Llc Face-speech bridging by cycle video/audio reconstruction
US20230403415A1 (en) * 2022-06-13 2023-12-14 Advanced Micro Devices, Inc Adaptive Decoder-Driven Encoder Reconfiguration

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04743A (ja) 1990-04-17 1992-01-06 Mitsubishi Electric Corp 半導体装置
US5247363A (en) 1992-03-02 1993-09-21 Rca Thomson Licensing Corporation Error concealment apparatus for hdtv receivers
JP3203172B2 (ja) * 1994-11-29 2001-08-27 三洋電機株式会社 Mpegビデオデコーダ
KR100396971B1 (ko) * 1994-11-29 2003-11-03 산요덴키가부시키가이샤 인코드된비디오데이터의에러검출및처리기능을구비한비디오디코더
US6304607B1 (en) 1997-03-18 2001-10-16 Texas Instruments Incorporated Error resilient video coding using reversible variable length codes (RVLCS)
US6529528B1 (en) 1997-06-27 2003-03-04 Samsung Electronics Co., Ltd. Multimedia multiplexing method
US6768775B1 (en) 1997-12-01 2004-07-27 Samsung Electronics Co., Ltd. Video CODEC method in error resilient mode and apparatus therefor
JP2000078197A (ja) 1998-09-03 2000-03-14 Toshiba Corp 通信ノード及びパケット転送方法
US6590882B1 (en) 1998-09-15 2003-07-08 Nortel Networks Limited Multiplexing/demultiplexing schemes between wireless physical layer and link layer
US6754277B1 (en) 1998-10-06 2004-06-22 Texas Instruments Incorporated Error protection for compressed video
EP1005233A1 (en) 1998-10-12 2000-05-31 STMicroelectronics S.r.l. Constant bit-rate coding control in a video coder by way of pre-analysis of the slices of the pictures
JP2000175189A (ja) 1998-12-07 2000-06-23 Univ Tokyo 動画符号化方法およびそれに用いる動画符号化装置
US7124429B2 (en) 1999-03-05 2006-10-17 Kabushiki Kaisha Toshiba Video coding apparatus and video decoding apparatus
BR0009262A (pt) 1999-03-05 2002-02-05 Toshiba Kk Toshiba Corp Aparelho de codificação de vìdeo e aparelho de decodificação de vìdeo
JP3411234B2 (ja) 1999-04-26 2003-05-26 沖電気工業株式会社 符号化情報受信復号装置
US6999673B1 (en) 1999-09-30 2006-02-14 Matsushita Electric Industrial Co., Ltd. Moving picture decoding method, moving picture decoding apparatus and program recording medium
US6490320B1 (en) 2000-02-02 2002-12-03 Mitsubishi Electric Research Laboratories Inc. Adaptable bitstream video delivery system
US6928057B2 (en) 2000-02-08 2005-08-09 Agere Systems Inc. Translation system and related method for use with a communication device
JP2002016442A (ja) 2000-06-30 2002-01-18 Toshiba Corp Fm信号発振回路及び変調レベル補正方法
US6970506B2 (en) 2001-03-05 2005-11-29 Intervideo, Inc. Systems and methods for reducing frame rates in a video data stream
JP3931595B2 (ja) 2001-07-10 2007-06-20 株式会社日立製作所 データ修正装置及びデータ修正方法
JP2003078565A (ja) 2001-08-30 2003-03-14 Matsushita Electric Ind Co Ltd 無線通信装置
CN1511420A (zh) 2001-11-09 2004-07-07 松下电器产业株式会社 运动图像编码方法和装置
KR100765123B1 (ko) 2002-02-16 2007-10-11 엘지전자 주식회사 Srns 재할당 방법
US7428684B2 (en) * 2002-04-29 2008-09-23 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Device and method for concealing an error
EP1509918A1 (en) 2002-05-17 2005-03-02 Koninklijke Philips Electronics N.V. Device and method for recording information with characteristic point information control
US7194000B2 (en) 2002-06-21 2007-03-20 Telefonaktiebolaget L.M. Ericsson Methods and systems for provision of streaming data services in an internet protocol network
MXPA05000559A (es) * 2002-07-15 2005-04-19 Nokia Corp Metodo para ocultamiento de errores en secuencias de video.
JP2004056169A (ja) 2002-07-16 2004-02-19 Matsushita Electric Ind Co Ltd 画像データ受信装置、画像データ送信装置
US7027515B2 (en) 2002-10-15 2006-04-11 Red Rock Semiconductor Ltd. Sum-of-absolute-difference checking of macroblock borders for error detection in a corrupted MPEG-4 bitstream
KR100498347B1 (ko) 2003-04-01 2005-07-01 엘지전자 주식회사 Amr 코덱을 지원하기 위한 데이터 처리방법
US8311127B2 (en) 2004-03-04 2012-11-13 Nvidia Corporation Method and apparatus to check for wrongly decoded macroblocks in streaming multimedia applications
JP4432582B2 (ja) 2004-03-31 2010-03-17 三菱電機株式会社 動画像情報復元装置、動画像情報復元方法、動画像情報復元プログラム
US7340667B2 (en) 2004-05-10 2008-03-04 Via Telecom Co., Ltd. Method and/or apparatus implemented in hardware to discard bad logical transmission units (LTUs)
EP1751956B1 (en) 2004-05-13 2011-05-04 Qualcomm, Incorporated Delivery of information over a communication channel
JP2006060813A (ja) * 2004-08-20 2006-03-02 Polycom Inc ビデオデコーダにおける誤り隠蔽
US7885337B2 (en) 2004-08-23 2011-02-08 Qualcomm Incorporated Efficient video slicing
US20060062312A1 (en) * 2004-09-22 2006-03-23 Yen-Chi Lee Video demultiplexer and decoder with efficient data recovery
JP4578326B2 (ja) 2005-05-31 2010-11-10 京セラ株式会社 地上波デジタル放送受信機
JP4523886B2 (ja) 2005-07-08 2010-08-11 富士通株式会社 動画像復号装置、動画像復号方法および動画像復号プログラム
US8358704B2 (en) 2006-04-04 2013-01-22 Qualcomm Incorporated Frame level multimedia decoding with frame information table
US8379733B2 (en) 2006-09-26 2013-02-19 Qualcomm Incorporated Efficient video packetization methods for packet-switched video telephony applications
US8379734B2 (en) * 2007-03-23 2013-02-19 Qualcomm Incorporated Methods of performing error concealment for digital video

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JVT: "《JOINT VIDEO TEAM(JVT) OF ISO/IEC MPEG & ITU-T VCEG (ISO/IEC JTC1/SC29/WG11 AND ITU-T SG16 Q6)》", 11 April 1997 *
XIAOWEI DING ET AL: "《A novel bitstream level joint channel error concealment scheme for realtime video over wireless networks》", 《INFOCOM 2004.TWENTY-THIRD ANNUALJOINT CONFERENCE OF THE IEEE COMPUTER AND COMMUNICATIONS SOCIETIES,IEEE》 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103327312B (zh) * 2012-03-20 2016-04-20 腾讯科技(深圳)有限公司 视频帧的解码处理方法和装置
CN103327312A (zh) * 2012-03-20 2013-09-25 腾讯科技(深圳)有限公司 视频帧的解码处理方法和装置
US10674164B2 (en) 2012-04-13 2020-06-02 Ge Video Compression, Llc Low delay picture coding
US11343517B2 (en) 2012-04-13 2022-05-24 Ge Video Compression, Llc Low delay picture coding
US11876985B2 (en) 2012-04-13 2024-01-16 Ge Video Compression, Llc Scalable data stream and network entity
US11259034B2 (en) 2012-04-13 2022-02-22 Ge Video Compression, Llc Scalable data stream and network entity
CN108337526A (zh) * 2012-04-13 2018-07-27 Ge视频压缩有限责任公司 低延迟图像写码
US11122278B2 (en) 2012-04-13 2021-09-14 Ge Video Compression, Llc Low delay picture coding
CN108337526B (zh) * 2012-04-13 2020-10-30 Ge视频压缩有限责任公司 一种低延迟图像编码解码方法、设备及计算机可读介质
US10694198B2 (en) 2012-04-13 2020-06-23 Ge Video Compression, Llc Scalable data stream and network entity
US10743030B2 (en) 2012-06-29 2020-08-11 Ge Video Compression, Llc Video data stream concept
US11025958B2 (en) 2012-06-29 2021-06-01 Ge Video Compression, Llc Video data stream concept
US11856229B2 (en) 2012-06-29 2023-12-26 Ge Video Compression, Llc Video data stream concept
US11956472B2 (en) 2012-06-29 2024-04-09 Ge Video Compression, Llc Video data stream concept
CN104509064A (zh) * 2012-07-29 2015-04-08 高通股份有限公司 替换丢失的媒体数据以进行网络流式传输
CN103813177A (zh) * 2012-11-07 2014-05-21 辉达公司 一种视频解码系统和方法
CN106464913A (zh) * 2014-05-12 2017-02-22 美国莱迪思半导体公司 视频信道中的错误检测和抑制
CN105513619B (zh) * 2014-09-26 2019-02-01 惠州市德赛西威汽车电子股份有限公司 一种车载娱乐系统中错误曲目的处理方法
CN105513619A (zh) * 2014-09-26 2016-04-20 惠州市德赛西威汽车电子股份有限公司 一种车载娱乐系统中错误曲目的处理方法

Also Published As

Publication number Publication date
WO2009108614A8 (en) 2010-10-14
TW200943977A (en) 2009-10-16
EP2255536A1 (en) 2010-12-01
JP2018085758A (ja) 2018-05-31
KR20100126410A (ko) 2010-12-01
JP2011514076A (ja) 2011-04-28
WO2009108614A1 (en) 2009-09-03
KR101540506B1 (ko) 2015-07-30
CN101960853B (zh) 2016-03-30
KR20130006524A (ko) 2013-01-16
JP2016106476A (ja) 2016-06-16
JP2014090477A (ja) 2014-05-15
US9357233B2 (en) 2016-05-31
KR101443952B1 (ko) 2014-09-24
US20090213938A1 (en) 2009-08-27

Similar Documents

Publication Publication Date Title
CN101960853A (zh) 视频解码器错误处置
TWI569633B (zh) 補充增強資訊訊息寫碼
KR102058759B1 (ko) 디코딩된 픽쳐 버퍼 및 참조 픽쳐 목록들에 관한 상태 정보의 시그널링 기법
JP6234997B2 (ja) ビデオシーケンスにおけるランダムアクセスポイントピクチャのための復号ピクチャバッファ処理
TWI538485B (zh) 在視訊寫碼中具有時間可擴縮性支援之逐漸解碼更新
TWI753214B (zh) 允許平行處理之編碼器、解碼器、傳送解多工器、系統、儲存媒體、方法及電腦程式
CN101622879B (zh) 以rtp净荷格式传输sei消息
CN103430542B (zh) 用于随机存取后译码依附图片的视频译码技术
ES2605392T3 (es) Refinamiento progresivo con soporte de ajustabilidad temporal a escala en la codificación de vídeo
CN1253014C (zh) 图像编码方法及设备和图像解码方法及设备
CN101213841A (zh) 可缩放视频编码中的编码依赖指示
CN104025596A (zh) 对识别长期参考图片的图片次序计数值的最低有效位进行译码
TW200904194A (en) Feedback based scalable video coding
JP2015513290A (ja) 映像コーディングにおける基準インデックスコーディングのためのバイパスビン
JP2015517278A5 (zh)
CN103460698A (zh) 组合参考图片列表建构和映射
CN101238736A (zh) 在avs-m视频比特流中的随机访问
KR20050074812A (ko) 전송 에러가 발생한 지점을 탐지하여 바르게 디코딩된데이터를 복원하는 디코딩 방법 및 그 디코딩 장치
FI115946B (fi) Menetelmä virheiden havaitsemiseksi videoinformaatiosta
KR20010108077A (ko) 매크로블럭 기반으로 압축된 비디오 데이터의 헤더 정보를로버스트 디코딩하기 위한 방법 및 장치
US20050020201A1 (en) System and method for indexing and tracking multimedia streams for wireless multimedia transmission
CN100534200C (zh) 视频解码器的错误检测装置及方法
KR20060067208A (ko) 비디오 디코더의 에러 검출 장치 및 방법
CN103416074A (zh) 视频编解码器中的缓冲器管理

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant