KR20100046284A - A hardware multi-standard video decoder device - Google Patents
A hardware multi-standard video decoder device Download PDFInfo
- Publication number
- KR20100046284A KR20100046284A KR1020107008555A KR20107008555A KR20100046284A KR 20100046284 A KR20100046284 A KR 20100046284A KR 1020107008555 A KR1020107008555 A KR 1020107008555A KR 20107008555 A KR20107008555 A KR 20107008555A KR 20100046284 A KR20100046284 A KR 20100046284A
- Authority
- KR
- South Korea
- Prior art keywords
- video
- hardware
- engine
- decoding
- video stream
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Description
본 발명은 비디오 디코딩에 관한 것이다. 구체적으로, 본 발명은 하드웨어 다중 표준 비디오 디코더 장치에 관한 것이다.The present invention relates to video decoding. Specifically, the present invention relates to a hardware multiple standard video decoder device.
디지털 비디오 스트림들은 통상적으로 많은 상이한 인코딩 표준 중 하나를 이용하여 인코딩된다. 예를 들어, 디지털 비디오 스트림은 보다 적은 비트를 필요로 하는 데이터 포맷으로의 변환을 위해 압축될 수 있다. 이러한 압축은 손실이 없어서, 디코딩시 원래의 비디오 스트림이 재생될 수 있거나, 손실이 많아서, 원래의 비디오 스트림의 정확한 사본이 재생될 수 없지만, 압축된 데이터의 디코딩은 보다 효율적이다.Digital video streams are typically encoded using one of many different encoding standards. For example, a digital video stream can be compressed for conversion to data formats that require fewer bits. This compression is lossless so that the original video stream can be played back during decoding, or lossy, so that an exact copy of the original video stream cannot be played back, but the decoding of the compressed data is more efficient.
현재 다수의 비디오 인코딩 표준이 존재하며, 새로운 표준들이 종종 출현하고 있다. 현재의 비디오 인코딩 표준들의 예는 JPEG(Joint Photographic Experts Group), MPEG(Moving Picture Experts Group), MPEG-2, MPEG-3, MPEG-4, H.263, H.263+, H.264 및 리얼 비디오 및 윈도우 미디어와 같은 독점 표준들을 포함한다. 디지털 비디오의 이익들을 충분히 실현하기 위하여, 사용자는 모든 일반 인코딩 표준들을 디코딩할 수 있는 디코더들에 대한 액세스를 필요로 한다.There are currently many video encoding standards, and new standards are often emerging. Examples of current video encoding standards are Joint Photographic Experts Group (JPEG), Moving Picture Experts Group (MPEG), MPEG-2, MPEG-3, MPEG-4, H.263, H.263 +, H.264 and Real Proprietary standards such as video and window media. In order to fully realize the benefits of digital video, the user needs access to decoders that can decode all common encoding standards.
비디오 스트리밍의 많은 중요한 이용은 실시간 통신과 관련된다. 예를 들어, 비디오 전화는 대응하는 오디오 신호와 동기화할 수 있도록 하기 위해 실시간 비디오 디코딩을 필요로 한다. 따라서, 사용자들에게 실시간 비디오 디코딩을 제공하여 실시간 통신과 관련된 응용들을 제공하는 것도 바람직하다. 더욱이, 사용자가 다수의 비디오 스트림의 디코딩을 필요로 하는 상황이 발생한다. 예를 들어, 현재 비디오 전화 호 상에 있는 사용자는 그가 대화하고 있는 사람으로부터 첨부 이미지를 수신한다. 이 예에서는, 대화에 필요한 이미지가 디코딩되는 동안, 비디오 전화 스트림의 실시간 디코딩이 유지되어야 한다.Many important uses of video streaming are related to real time communication. For example, video telephony requires real-time video decoding in order to be able to synchronize with the corresponding audio signal. Accordingly, it is also desirable to provide users with real time video decoding to provide applications related to real time communication. Moreover, a situation arises in which a user requires decoding of multiple video streams. For example, a user who is currently on a video phone call receives an attachment image from the person he is talking to. In this example, real time decoding of the video telephony stream must be maintained while the image required for the conversation is decoded.
현재, 비디오 디코딩은 2개의 이용 가능 방법, 즉 단일 표준 하드웨어 비디오 디코더들 및 하나 이상의 비디오 표준에 따라 비디오 스트림을 디코딩할 수 있는 소프트웨어 기반 프로그래머블 코어들 중 하나를 이용하여 수행된다. 단일 표준 하드웨어 비디오 디코더들은 실시간 디코딩 기능을 제공할 수 있다. 그러나, 특정 인코딩 표준을 이용하여 인코딩된 비디오 스트림을 디코딩하기 위하여, 사용자는 그 특정 표준을 위한 하드웨어 비디오 디코더를 구비해야 한다. 널리 이용되는 다수의 비디오 인코딩 표준이 존재하므로, 사용자는 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 디지털 비디오에 액세스하기 위해 많은 상이한 단일 표준 하드웨어 비디오 디코더를 필요로 할 것이며, 이는 사용자에게 상당한 재정 지출을 요구한다. 더욱이, 통상의 컴퓨터 시스템들은 다수의 단일 표준 하드웨어 비디오 디코더를 추가할 수 있는 능력을 갖지 못하여, 사용자가 액세스할 수 있는 비디오 스트림들의 수를 더 제한한다.Currently, video decoding is performed using two available methods: single standard hardware video decoders and software based programmable cores capable of decoding the video stream in accordance with one or more video standards. Single standard hardware video decoders can provide real time decoding functionality. However, in order to decode a video stream encoded using a particular encoding standard, the user must have a hardware video decoder for that particular standard. Since there are a number of widely used video encoding standards, users will need many different single standard hardware video decoders to access digital video encoded using different video encoding standards, which requires significant financial expenditure on the user. do. Moreover, conventional computer systems do not have the ability to add multiple single standard hardware video decoders, further limiting the number of video streams that a user can access.
현재의 소프트웨어 기반 프로그래머블 코어 비디오 디코더들은 하나 이상의 비디오 인코딩 표준을 이용한 디코딩을 제공하는 데 이용될 수 있다. 프로그래머블 코어 비디오 디코더는 디코딩 기능을 가속화하기 위한 하드웨어 가속을 포함할 수 있다. 그러나, 프로그래머블 코어는 모든 디코딩을 수행한다. 프로그래머블 코어 비디오 디코더들은 통상적으로 높은 처리 오버헤드를 갖고, 덜 효율적이고, 단일 표준 하드웨어 비디오 디코더보다 훨씬 많은 전력을 소비한다. 더욱이, 프로그래머블 코어 비디오 디코더들은, 디코딩이 전체 컴퓨터 시스템의 처리 요건에 종속하므로, 실시간 비디오 디코딩을 일관되게 제공할 수 없다.Current software based programmable core video decoders can be used to provide decoding using one or more video encoding standards. The programmable core video decoder may include hardware acceleration to accelerate the decoding function. However, the programmable core does all the decoding. Programmable core video decoders typically have high processing overhead, are less efficient, and consume much more power than a single standard hardware video decoder. Moreover, programmable core video decoders cannot consistently provide real-time video decoding, since decoding depends on the processing requirements of the entire computer system.
따라서, 현재 이용 가능한 디지털 비디오 디코더들은 널리 이용되는 다수의 비디오 인코딩 표준을 위한 실시간 비디오 디코딩을 제공할 수 없다. 또한, 현재 이용 가능한 디지털 비디오 디코더들은 널리 이용되는 다수의 비디오 인코딩 표준을 이용하여 인코딩된 다수의 스트림에 대한 동시 비디오 디코딩을 제공할 수 없다. 더욱이, 현재 이용 가능한 디지털 비디오 디코더들은 적어도 하나의 비디오 스트림이 실시간 디코딩을 필요로 하는 다수의 비디오 스트림을 동시에 디코딩할 수 없다. 따라서, 종래 기술의 한계를 극복하는 새로운 디지털 비디오 디코더가 필요하다. 새로운 디지털 비디오 디코더는 다수의 상이한 비디오 표준을 위한 실시간 비디오 디코딩 기능을 제공해야 한다. 새로운 디지털 비디오 디코더는 또한, 복수의 상이한 비디오 표준을 이용하여 인코딩된 복수의 비디오 스트림에 대한 동시 비디오 디코딩 기능을 제공해야 한다.Thus, currently available digital video decoders cannot provide real-time video decoding for many widely used video encoding standards. In addition, currently available digital video decoders cannot provide simultaneous video decoding for multiple streams encoded using multiple video encoding standards that are widely used. Moreover, currently available digital video decoders cannot simultaneously decode multiple video streams in which at least one video stream requires real time decoding. Therefore, there is a need for a new digital video decoder that overcomes the limitations of the prior art. New digital video decoders must provide real-time video decoding for many different video standards. The new digital video decoder must also provide simultaneous video decoding functionality for a plurality of video streams encoded using a plurality of different video standards.
본 발명의 실시예들은 복수의 상이한 비디오 인코딩 표준을 위한 비디오 디코딩 기능을 제공하기 위한 하드웨어 다중 표준 비디오 디코더 장치를 제공한다. 본 발명의 실시예들은 복수의 비디오 인코딩 표준의 각각을 위한 실시간 디코딩을 제공할 수 있다.Embodiments of the present invention provide a hardware multi-standard video decoder device for providing video decoding functionality for a plurality of different video encoding standards. Embodiments of the present invention may provide real time decoding for each of a plurality of video encoding standards.
일 실시예에서, 본 발명은 하드웨어 다중 표준 비디오 디코더 장치를 제공한다. 하드웨어 다중 표준 비디오 디코더 장치의 커맨드 파서가 비디오 스트림에 액세스하고 비디오 스트림을 인코딩하는 데 이용된 비디오 인코딩 표준을 식별하도록 동작할 수 있다. 하드웨어 다중 표준 비디오 디코더 장치는 또한 비디오 스트림의 디코딩과 연관된 동작들을 수행하기 위한 복수의 하드웨어 디코딩 블록을 포함하며, 복수의 하드웨어 디코딩 블록의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하기 위한 것이다. 일 실시예에서, 하드웨어 다중 표준 비디오 디코더 장치는 인쇄 회로 기판에 결합된 집적 회로 내에 구현되며, 인쇄 회로 기판은 인쇄 회로 기판을 컴퓨터 시스템에 착탈 가능하게 결합하기 위한 접속기에 결합된다.In one embodiment, the present invention provides a hardware multiple standard video decoder device. The command parser of the hardware multi-standard video decoder device may be operable to access the video stream and identify the video encoding standard used to encode the video stream. The hardware multi-standard video decoder apparatus also includes a plurality of hardware decoding blocks for performing operations associated with decoding of the video stream, wherein different subsets of the plurality of hardware decoding blocks receive video streams encoded using different video encoding standards. For decoding. In one embodiment, a hardware multi-standard video decoder device is implemented in an integrated circuit coupled to a printed circuit board, the printed circuit board coupled to a connector for detachably coupling the printed circuit board to a computer system.
일 실시예에서, 커맨드 파서는 비디오 스트림을 인코딩하는 데 사용된 제1의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 복수의 하드웨어 디코딩 블록의 제1 서브세트를 활성화하도록 동작할 수 있으며, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다. 일 실시예에서, 커맨드 파서는 비디오 스트림의 인코딩에 사용된 제2의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 복수의 하드웨어 디코딩 블록의 제2 서브세트를 활성화하도록 동작할 수 있으며, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다.In one embodiment, the command parser may be operable to activate a first subset of the plurality of hardware decoding blocks used to decode the first identified video encoding standard used to encode the video stream, and thus the video. Hardware decoding blocks not associated with decoding of the stream are not activated. In one embodiment, the command parser may be operable to activate a second subset of the plurality of hardware decoding blocks used to decode the second identified video encoding standard used to encode the video stream, and thus the video stream. The hardware decoding block that is not associated with the decoding of is not activated.
일 실시예에서, 복수의 하드웨어 디코딩 블록은 다중 스테이지 매크로블록 레벨 파이프라인 내에 구현된다. 일 실시예에서, 커맨드 파서는 비디오 스트림의 어떠한 데이터도 다중 스테이지 매크로블록 레벨 파이프라인의 하나의 스테이지에서 수신되지 않는 경우에 이 스테이지 내의 하드웨어 디코딩 블록들을 비활성화하도록 동작할 수 있다. 일 실시예에서, 하드웨어 다중 표준 비디오 디코더 장치는 비디오 스트림을 완전히 디코딩한 후에 메모리 유닛에 액세스한다.In one embodiment, the plurality of hardware decoding blocks is implemented in a multi-stage macroblock level pipeline. In one embodiment, the command parser may be operable to deactivate hardware decoding blocks within this stage if no data in the video stream is received at one stage of the multi-stage macroblock level pipeline. In one embodiment, the hardware multi-standard video decoder device accesses the memory unit after fully decoding the video stream.
일 실시예에서, 하드웨어 다중 표준 비디오 디코더 장치는 디코딩된 비디오 스트림에 대한 후처리 동작을 수행하기 위한 하드웨어 후처리 블록을 더 포함한다. 일 실시예에서, 커맨드 파서는 커맨드 파서에서 수신된 비디오 스트림이 디코딩된 비디오 스트림인 경우에 복수의 하드웨어 디코딩 블록을 비활성화하도록 동작하여, 하드웨어 후처리 블록이 디코딩된 비디오 스트림에 대해 후처리 동작을 수행하게 할 수 있다. 일 실시예에서, 하드웨어 후처리 블록은 필터를 포함한다.In one embodiment, the hardware multi-standard video decoder device further comprises a hardware post processing block for performing a post processing operation on the decoded video stream. In one embodiment, the command parser operates to deactivate a plurality of hardware decoding blocks when the video stream received at the command parser is a decoded video stream, such that the hardware post processing block performs a post processing operation on the decoded video stream. It can be done. In one embodiment, the hardware post processing block includes a filter.
다른 실시예에서, 본 발명은 비디오 스트림을 디코딩하기 위한 방법을 제공하는데, 이 방법은 하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현된다. 비디오 스트림이 액세스된다. 비디오 스트림을 인코딩하는 데 사용된 비디오 표준이 식별된다. 비디오 스트림을 디코딩하는 데 사용된 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트가 결정되며, 복수의 하드웨어 디코딩 블록의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하도록 동작할 수 있다. 비디오 스트림은 하드웨어 디코딩 블록들의 서브세트를 이용하여 디코딩된다.In another embodiment, the present invention provides a method for decoding a video stream, which method is implemented using a hardware multiple standard video decoder device. The video stream is accessed. The video standard used to encode the video stream is identified. A subset of the hardware decoding blocks of the plurality of hardware decoding blocks of the hardware multi-standard video decoder device used to decode the video stream is determined, and different subsets of the plurality of hardware decoding blocks are encoded using different video encoding standards. Operate to decode the video streams. The video stream is decoded using a subset of hardware decoding blocks.
일 실시예에서, 복수의 레지스터는 메모리 표면 포인터 레지스터 및 프레임 레벨 파라미터 레지스터를 포함한다. 일 실시예에서, 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치는 적어도 하나의 디코딩된 비디오 스트림 상에 후처리 동작을 수행하기 위한 하드웨어 후처리 블록을 더 포함한다.In one embodiment, the plurality of registers comprises a memory surface pointer register and a frame level parameter register. In one embodiment, the hardware multi-stream multi-standard video decoder device further comprises a hardware post-processing block for performing a post processing operation on at least one decoded video stream.
일 실시예에서, 복수의 비디오 스트림은 적어도 하나의 디지털 정지 이미지 스트림 및 디지털 영화 스트림을 포함한다. 본 실시예에서, 복수의 비디오 스트림의 부분들은 디지털 정지 이미지 스트림 및 디지털 영화 스트림의 매크로블록들이다. 다른 실시예에서, 복수의 비디오 스트림은 복수의 디지털 영화 스트림을 포함한다. 본 실시예에서, 복수의 비디오 스트림의 부분들은 복수의 디지털 영화 스트림의 매크로블록들이다.In one embodiment, the plurality of video streams comprises at least one digital still image stream and a digital movie stream. In this embodiment, the portions of the plurality of video streams are macroblocks of the digital still image stream and the digital movie stream. In another embodiment, the plurality of video streams comprises a plurality of digital movie streams. In this embodiment, the portions of the plurality of video streams are macroblocks of the plurality of digital movie streams.
다른 실시예에서, 본 발명은 복수의 비디오 스트림을 디코딩하기 위한 방법을 제공하는데, 이 방법은 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 이용하여 구현된다. 복수의 비디오 스트림이 액세스된다. 비디오 스트림들을 인코딩하는 데 사용된 비디오 표준들이 식별된다. 비디오 스트림들을 디코딩하는 데 사용된 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트들이 결정되며, 복수의 하드웨어 디코딩 블록의 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하도록 동작할 수 있다. 복수의 비디오 스트림은 하드웨어 디코딩 블록들의 서브세트를 이용하여 디코딩된다. 일 실시예에서, 하드웨어 디코딩 블록들의 복수의 서브세트는 활성화되며, 따라서 복수의 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다.In another embodiment, the present invention provides a method for decoding a plurality of video streams, which method is implemented using a hardware multi-stream multi-standard video decoder device. Multiple video streams are accessed. Video standards used to encode video streams are identified. Subsets of the hardware decoding blocks of the plurality of hardware decoding blocks of the hardware multi-stream multi-standard video decoder device used to decode the video streams are determined, and the subsets of the plurality of hardware decoding blocks are encoded using different video encoding standards. To decode the video streams. The plurality of video streams are decoded using a subset of hardware decoding blocks. In one embodiment, the plurality of subsets of hardware decoding blocks is activated, so that hardware decoding blocks not associated with decoding of the plurality of video streams are not activated.
대체로, 본 발명은 하드웨어 다중 표준 비디오 디코더 장치를 개시한다. 커맨드 파서가 비디오 스트림에 액세스하여 비디오 스트림을 인코딩하는 데 사용되는 비디오 인코딩 표준을 식별한다. 복수의 하드웨어 디코딩 블록이 비디오 스트림의 디코딩과 연관된 동작들을 수행하며, 복수의 하드웨어 디코딩 블록의 상이한 서브세트들이 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩한다.In general, the present invention discloses a hardware multiple standard video decoder device. The command parser identifies the video encoding standard used to access the video stream and encode the video stream. A plurality of hardware decoding blocks performs operations associated with decoding of a video stream, and different subsets of the plurality of hardware decoding blocks decode video streams encoded using different video encoding standards.
복수의 비디오 인코딩 표준의 각각을 위한 실시간 디코딩을 제공할 수 있다.Real time decoding may be provided for each of a plurality of video encoding standards.
본 발명은 동일 참조 번호가 동일한 요소를 나타내는 첨부 도면들에서 제한적이 아니라 예시적으로 도시된다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템의 기본 컴포넌트들의 개략도이다.
도 2a는 본 발명의 일 실시예에 따라 인쇄 회로 기판 상에 구현된 예시적인 하드웨어 비디오 디코더 카드의 도면이다.
도 2b는 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치를 포함하는 예시적인 아키텍처의 도면이다.
도 3은 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치의 내부 컴포넌트들을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 예시적인 하드웨어 다중 표준 비디오 디코더 장치의 내부 컴포넌트들을 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현되는 비디오 스트림 디코딩 방법의 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치의 내부 컴포넌트들을 나타내는 도면이다.
도 7a 및 7b는 본 발명의 일 실시예에 따른 다수의 비디오 스트림의 예시적인 인터리빙된 부분들을 나타내는 도면들이다.
도 8은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 이용하여 구현되는, 다수의 비디오 스트림을 디코딩하기 위한 방법의 흐름도이다.
도 9는 본 발명의 일 실시예에 따른, 비디오 스트림의 무질서(out-of-order) 매크로블록들을 처리하기 위한 방법의 흐름도이다.
도 10a 및 10b는 본 발명의 일 실시예에 따른 프레임들의 매크로블록들의 예시적인 회전의 도면들이다.
도 11은 본 발명의 일 실시예에 따른 프레임의 매크로블록들을 회전시키기 위한 방법의 흐름도이다.The invention is shown by way of example and not by way of limitation in the figures of the accompanying drawings in which like reference numerals indicate like elements.
1 is a schematic diagram of basic components of a computer system according to an embodiment of the present invention.
2A is a diagram of an exemplary hardware video decoder card implemented on a printed circuit board in accordance with one embodiment of the present invention.
2B is a diagram of an exemplary architecture that includes a hardware multi-standard video decoder device in accordance with an embodiment of the present invention.
3 is a block diagram illustrating internal components of a hardware multi-standard video decoder device according to an embodiment of the present invention.
4 is a block diagram illustrating internal components of an exemplary hardware multi-standard video decoder device according to an embodiment of the present invention.
5 is a flowchart of a video stream decoding method implemented using a hardware multi-standard video decoder device according to an embodiment of the present invention.
6 is a diagram illustrating internal components of a hardware multi-stream multi-standard video decoder device according to an embodiment of the present invention.
7A and 7B are diagrams illustrating exemplary interleaved portions of multiple video streams in accordance with an embodiment of the present invention.
8 is a flowchart of a method for decoding a plurality of video streams, implemented using a hardware multi-stream multi-standard video decoder device, in accordance with an embodiment of the present invention.
9 is a flowchart of a method for processing out-of-order macroblocks of a video stream, in accordance with an embodiment of the present invention.
10A and 10B are diagrams of exemplary rotation of macroblocks of frames in accordance with an embodiment of the present invention.
11 is a flowchart of a method for rotating macroblocks of a frame according to an embodiment of the present invention.
이제, 첨부된 도면들에 예들이 도시된 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명은 바람직한 실시예들과 관련하여 설명되지만, 이들은 본 발명을 이들 실시예로 한정하는 것을 의도하지 않는다는 것을 이해할 것이다. 이와 달리, 본 발명은 첨부된 청구범위에 의해 정의되는 바와 같은 발명의 사상 및 범위 내에 포함될 수 있는 대안들, 변형들 및 균등물들을 커버하는 것을 의도한다. 또한, 아래의 본 발명의 실시예들의 상세한 설명에서, 다수의 특정 상세는 본 발명의 충분한 이해를 제공하기 위해 설명된다. 그러나, 본 발명은 이러한 특정 상세들 없이도 실시될 수 있음을 이 분야의 전문가는 인식할 것이다. 다른 예에서, 공지된 방법들, 프로시저들, 컴포넌트들 및 회로들은 본 발명의 실시예들의 양태들을 필요 없이 모호하게 하지 않도록 상세히 설명되지 않는다.
DESCRIPTION OF THE PREFERRED EMBODIMENTS Now, preferred embodiments of the present invention, examples of which are illustrated in the accompanying drawings, will be described in detail. While the invention has been described in connection with the preferred embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents that may be included within the spirit and scope of the invention as defined by the appended claims. In addition, in the following detailed description of embodiments of the invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, those skilled in the art will recognize that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of embodiments of the present invention.
기호 및 명명법Symbols and Nomenclature
이어지는 상세한 설명의 소정 부분들은 프로시저, 단계, 논리 블록, 처리, 및 컴퓨터 메모리 내의 데이터 비트들 상의 동작들의 다른 심벌 표현과 관련하여 제공된다. 이러한 설명 및 표현들은 데이터 처리 분야의 전문가들이 그 분야의 다른 전문가들에게 그들의 연구 내용을 전달하기 위해 사용하는 수단이다. 프로시저, 컴퓨터 실행 단계, 논리 블록, 프로세스 등은 여기서 그리고 일반적으로 원하는 결과를 유도하는 단계들 또는 명령들의 일관된 시퀀스인 것으로 간주된다. 단계들은 물리량들의 물리적 조작을 필요로 하는 것들이다. 일반적으로, 꼭 필요한 것은 아니지만, 이러한 양들은 컴퓨터 시스템에서 저장, 전송, 조합, 비교 및 조작될 수 있는 전기 또는 자기 신호들의 형태를 갖는다. 때때로, 일반적인 이용의 이유로, 이러한 신호들을 비트, 값, 요소, 심벌, 문자, 용어, 숫자 등으로 지칭하는 것이 편리한 것으로 입증되었다.Certain portions of the detailed description that follows are provided in connection with procedures, steps, logical blocks, processing, and other symbolic representations of operations on data bits in computer memory. These descriptions and representations are the means used by those in the data processing arts to convey their work to others in the field. Procedures, computer execution steps, logic blocks, processes, and the like are considered here and generally to be a consistent sequence of steps or instructions that lead to a desired result. The steps are those requiring physical manipulation of physical quantities. Generally, but not necessarily, these quantities take the form of electrical or magnetic signals that can be stored, transmitted, combined, compared, and manipulated in a computer system. Sometimes, for general use reasons, it has proven convenient to refer to these signals as bits, values, elements, symbols, letters, terms, numbers, and the like.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리량들과 연관되어야 하며, 단지 이러한 양들에 적용되는 편리한 라벨들이라는 점을 기억해야 한다. 아래의 설명으로부터 명백하듯이, 특별히 달리 언급되지 않는 한, 본 발명 전반에서 "식별" 또는 "액세스" 또는 "수행" 또는 "디코딩" 또는 "활성화" 또는 "비활성화" 또는 "결정" 또는 "처리" 또는 "수신" 또는 "버퍼링" 또는 "배열" 또는 "전송" 또는 "파싱" 또는 "인터리빙" 또는 "회전" 또는 "재배치" 또는 "저장" 등과 같은 용어들을 이용한 설명들은 하드웨어 다중 표준 비디오 디코더 장치(예를 들어, 도 3의 하드웨어 다중 표준 비디오 디코더 장치(150)), 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치(예를 들어, 도 6의 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치(600)), 마이크로코드 엔진(예를 들어, 도 2b의 마이크로코드 엔진(260)), 회전 엔진(예를 들어, 도 4의 회전 엔진(450)), 또는 컴퓨터 시스템의 레지스터들 및 메모리들 내에 물리(전자) 양들로서 표현된 데이터를 조작하여, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 저장, 전송 또는 표시 장치들 내에 물리량들로 유사하게 표현되는 다른 데이터로 변환하는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 지칭한다는 것을 이해한다.
However, it should be remembered that both these and similar terms should be associated with appropriate physical quantities and are merely convenient labels applied to these quantities. As will be apparent from the description below, unless otherwise stated, "identification" or "access" or "perform" or "decoding" or "activation" or "deactivation" or "determination" or "processing" throughout this invention. Or descriptions using terms such as "receive" or "buffering" or "array" or "transmit" or "parsing" or "interleaving" or "rotate" or "relocate" or "save" or the like. For example, the hardware multi-standard
컴퓨터 시스템 플랫폼Computer system platform
도 1은 본 발명의 실시예들이 실시될 수 있는 예시적인 컴퓨터 시스템을 나타낸다. 일반적으로, 컴퓨터 시스템(100)은 정보를 통신하기 위한 버스(110), 버스(110)에 결합되어 정보 및 명령들을 처리하기 위한 프로세서(101), 버스(110)에 결합되어 프로세서(101)에 대한 정보 및 명령들을 저장하기 위한, 랜덤 액세스 메모리(RAM)로도 지칭되는 휘발성 메모리(102), 및 버스(110)에 결합되어 프로세스(101)에 대한 정적 정보 및 명령들을 저장하기 위한, 여기서 판독 전용 메모리(ROM)로도 지칭되는 비휘발성 메모리(103)를 포함한다.1 illustrates an exemplary computer system in which embodiments of the present invention may be practiced. In general,
일 실시예에서, 컴퓨터 시스템(100)은 버스(110)에 결합되어 정보 및 명령들을 저장하기 위한 자기 또는 광 디스크 및 디스크 드라이브와 같은 광학 데이터 저장 장치(104)를 옵션으로 포함한다. 일 실시예에서, 컴퓨터 시스템(100)은 버스(110)에 결합되어 컴퓨터 사용자에게 정보를 표시하기 위한 표시 장치(105)와 같은 사용자 출력 장치, 버스(110)에 결합되어 정보 및 커맨드 선택들을 프로세서(101)에 통신하기 위한 영숫자 및 기능 키들을 포함하는 영숫자 입력 장치(106)와 같은 사용자 입력 장치, 및/또는 버스(110)에 결합되어 사용자 입력 정보 및 커맨드 선택들을 프로세서(101)에 통신하기 위한 커서 제어 장치(107)와 같은 사용자 입력 장치를 옵션으로 포함한다. 또한, 옵션인 입출력(I/O) 장치(108)가 예를 들어 네트워크 상에 컴퓨터 시스템(100)을 결합하는 데 사용된다.In one embodiment,
일 실시예에서, 컴퓨터 시스템(100)은 또한, 다수의 비디오 인코딩 표준 중 하나를 이용하여 인코딩된 비디오 스트림을 디코딩하기 위한, 여기서 디코더 장치(150)로도 지칭되는 하드웨어 다중 표준 비디오 디코더 장치(150)를 포함한다. 디코더 장치(150)는 다수의 비디오 인코딩 표준에 의해 요구되는 디코딩 동작들을 수행하기 위한 복수의 하드웨어 디코딩 블록을 포함한다. 디코더 장치(150)는 디지털 정지 이미지들 및 디지털 영화들을 포함하는 비디오 인코딩 표준들의 임의 조합에 따라 비디오를 디코딩하도록 구성될 수 있다는 것을 이해해야 한다. 예를 들어, 디코더 장치(150)는 JPEG, MPEG-4, H.263, H.263+, H.264, 및 윈도우 미디어(WMV9/VC-1) 포맷들 중 임의 포맷을 이용하여 인코딩된 비디오를 디코딩하도록 구성될 수 있다.In one embodiment,
디코더 장치(150)는 개별 컴포넌트, 접속기(예를 들어, AGP 슬롯, PCI-Express 슬롯 등)를 통해 컴퓨터 시스템(100)에 결합되도록 설계된 개별 그래픽 카드, 개별 집적 회로 다이(예를 들어, 마더 보드 상에 직접 실장됨)로서, 또는 컴퓨터 시스템 칩셋 컴포넌트의 집적 회로 다이 내에 포함된 통합 디코더 장치로서 구현될 수 있다는 것을 이해해야 한다. 또한, 디코더 장치(150)의 데이터 저장을 위해 로컬 그래픽 메모리가 포함될 수 있다.
도 2a는 본 발명의 일 실시예에 따라 인쇄 회로 기판 상에 구현된 예시적인 하드웨어 비디오 디코더 카드(200)의 도면을 나타낸다. 하드웨어 비디오 디코더 카드(200)는 인쇄 회로 기판(PCB; 210), 집적 회로(IC) 칩(220), 데이터 라인(225) 및 접속기(230)를 포함한다. IC 칩(220)은 하드웨어 다중 표준 비디오 디코더 장치(150)를 포함한다. 접속기(230)는 컴퓨터 시스템의 접속기(예를 들어, AGP 슬롯, PCI-Express 슬롯 등)를 통해 컴퓨터 시스템(예를 들어, 도 1의 컴퓨터 시스템(100))에 결합하도록 구성된다. 데이터 라인(225)은 컴퓨터 시스템과 IC 칩(220) 간에 데이터(예를 들어, 비트 스트림)를 통신하기 위한 것이다.2A shows a diagram of an exemplary hardware
도 2b는 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치(150)를 포함하는 예시적인 아키텍처(250)의 도면을 나타낸다. 아키텍처(250)는 마이크로코드 엔진(260), 하드웨어 다중 표준 비디오 디코더 장치(150) 및 메모리(270)를 포함한다. 일 실시예에서, 마이크로코드 엔진(260)은 하드웨어 다중 표준 비디오 디코더 장치(150)의 동작을 제어한다. 마이크로코드 엔진(260)은 기계 명령과 하드웨어 장치 디코더(150) 사이의 번역 계층으로 동작하는, 하드웨어 다중 표준 비디오 디코더 장치(150)가 수행하여야 하는 동작들을 포함한다. 일 실시예에서, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 마이크로코드 엔진(260)에서 행해진다. 메모리(270)는 디코더 장치(150)에 의해 수신된 비디오 스트림들에 대해 디코딩 및 후처리 동작들을 수행하는 데 사용된다. 동작 메모리(270)의 일 실시예가 도 3의 메모리(330)에서 설명된다.2B shows a diagram of an
도 2b를 참조하면, 일 실시예에서, 본 발명은 마이크로코드 엔진(260)에서 매크로블록들을 재배열하는 것을 제공한다. 후술하는 바와 같이, 디코더 장치(150)는 루프내 디블록킹(예를 들어, 루프내 디블록킹 필터(440)에서) 및 루프외 디블록킹 및/또는 디링잉(예를 들어, 루프외 필터(442)에서)과 같은 상이한 후처리 동작들을 지원한다. 다양한 실시예에서, 루프내 디블록킹은 매크로블록들이 래스터 스캔 순서로 루프내 디블록킹 필터에서 수신되는 것을 요구한다. 그러나, H.264와 같은 소정의 비디오 표준들은 비 래스터 스캔 순서로의 매크로블록들의 송수신을 지원한다. 따라서, 본 발명은 비 래스터 스캔 순서로의 매크로블록들의 송수신을 지원하는 비디오 표준들을 위한 루프내 디블록킹을 지원하기 위하여 래스터 스캔 순서로 매크로블록들을 재배열하는 것을 제공한다.2B, in one embodiment, the present invention provides for rearranging macroblocks in microcode engine 260. As described below,
일 실시예에서, 마이크로코드 엔진(260)에서 전처리 동작들이 수행된다. 일 실시예에서, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 마이크로코드 엔진(260)에서 수행된다. 마이크로코드 엔진(260)은 매크로블록들을 하드웨어 디코더 장치(150)로 전송하기 전에 이들을 배열하도록 구성된다. 마이크로코드 엔진(260)은 압축 데이터의 일 프레임을 버퍼링한다. 일 실시예에서, 마이크로코드 엔진(260)은 실행 길이 인코딩된 압축 데이터의 일 프레임을 버퍼링한다. 일 실시예에서, 마이크로코드 엔진(260)은 착신 비트 스트림을 파싱한 후, VLD를 수행한다. 마이크로코드 엔진(260)이 무질서 매크로블록들을 검출하는 경우, 데이터를 버퍼링하고, 모든 매크로블록이 수신되기를 기다린다. 이어서, 마이크로코드 엔진(260)은 매크로블록들을 래스터 스캔 순서로 배열하여, 이들을 하드웨어 디코더 장치(150)로 전송한다.In one embodiment, preprocessing operations are performed in microcode engine 260. In one embodiment, bit stream parsing and variable length decoding (VLD) are performed in the microcode engine 260. The microcode engine 260 is configured to arrange the macroblocks before sending them to the
매크로블록들이 여전히 압축 데이터로 있는 동안 매크로블록들을 버퍼링함으로써, 마이크로코드 엔진(260)은 디코딩된 비디오 데이터보다 훨씬 적은 실행 길이 인코딩된 압축 데이터의 최대 일 프레임만 버퍼링하면 된다. 또한, 압축 매크로블록들의 버퍼링은 또한 전력을 절약한다. 무선을 통해 수신된 비디오 스트림들은 또한 많은 에러가 발생한다. 마이크로코드 엔진(260)에 대한 비트 스트림 파싱의 파티셔닝은 또한 에러 복구를 향상시키는 이점을 갖는다.
By buffering macroblocks while the macroblocks are still compressed data, the microcode engine 260 only needs to buffer a maximum of one frame of run length encoded compressed data much less than the decoded video data. In addition, buffering compressed macroblocks also saves power. Video streams received over the air also generate many errors. Partitioning of bit stream parsing to microcode engine 260 also has the advantage of improving error recovery.
하드웨어 다중 표준 비디오 디코더 장치 구조Hardware Multi-Standard Video Decoder Device Architecture
도 3은 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치(150)의 내부 컴포넌트들을 나타내는 도면을 도시한다. 도 3에 도시된 바와 같이, 디코더 장치(150)는 커맨드 파서(305), 복수의 하드웨어 디코딩 블록(310 내지 318), 하드웨어 후처리 블록(320) 및 메모리(330)를 포함한다. 디코더 장치(150)는 다수의 비디오 인코딩 표준을 디코딩할 수 있다.3 illustrates internal components of a hardware multi-standard
커맨드 파서(305)는 비디오 스트림(302)(예를 들어, 비트 스트림)에 액세스하기 위한 것이다. 비디오 스트림(302)은 다수의 비디오 인코딩 표준 중 하나에 따라 인코딩된 압축 비디오 스트림이다. 비디오 스트림(302)은 디지털 정지 이미지 데이터(예를 들어, JPEG 인코딩됨) 또는 디지털 영화 데이터(예를 들어, MPEG-4)를 포함할 수 있다는 것을 이해해야 한다. 일 실시예에서, 비디오 스트림(302)은 마이크로코드 엔진(예를 들어, 도 2b의 마이크로코드 엔진(260))으로부터 수신된다. 커맨드 파서(305)는 비디오 스트림(302)을 인코딩하는 데 사용된 비디오 인코딩 표준을 식별한다. 일 실시예에서, 커맨드 파서(305)가 비디오 스트림(302)에 액세스하기 전에, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 수행된다. 비트 스트림 파싱 및 VLD는 호스트 CPU(예를 들어, 도 1의 프로세서(101)) 또는 마이크로코드 엔진(예를 들어, 도 2b의 마이크로코드 엔진(260))에 의해 수행될 수 있다. 커맨드 파서(305)는 또한 클럭 사이클들을 제어함으로써 디코더 장치(150)를 통한 데이터의 이동을 제어한다.The
복수의 하드웨어 디코딩 블록(310 내지 318)은 상기 비디오 스트림의 디코딩과 연관된 동작들을 수행하기 위한 것이다. 하드웨어 디코딩 블록들(310 내지 318)은 비디오 디코더(150) 내에서 구현되는 비디오 표준들에 따라 비디오 스트림들을 디코딩하는 데 필요한 상이한 디코딩 기능들을 나타낸다는 것을 이해해야 한다. MPEG-4와 같은 비디오 인코딩 표준들은 비디오 스트림을 디코딩하기 위해 특정 동작들이 수행될 것을 요구하며, 따라서 모든 MPEG-4 디코더는 MPEG-4 비디오 스트림들을 디코딩할 수 있게 된다. 다양한 표준에 따라 디코딩을 수행하는 데 필요한 동작들은 이 분야의 전문가에게 공지되어 있다는 것을 이해해야 한다.A plurality of hardware decoding blocks 310-318 are for performing operations associated with decoding of the video stream. It should be understood that the hardware decoding blocks 310-318 represent different decoding functions required to decode video streams in accordance with video standards implemented within the
일 실시예에서, 디코더 장치(150)의 하드웨어 디코딩 블록들은 매크로블록 레벨로(예를 들어, 8x8 픽셀 매크로블록) 동작들을 수행하도록 구성된다. 그러나, 디코더 장치(150)는 프레임 레벨과 같은 다른 차원의 레벨들로 동작들을 수행하는 하드웨어 디코딩 블록들을 포함할 수 있다는 것을 이해해야 한다.In one embodiment, the hardware decoding blocks of
하드웨어 디코딩 블록들(310-318)의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하기 위한 것이다. 예를 들어, 제1 예시적인 비디오 표준은 비디오 스트림의 디코딩시 하드웨어 디코딩 블록들(312, 316)의 사용을 요구한다. 제2 예시적인 비디오 표준은 비디오 스트림의 디코딩시 하드웨어 디코딩 블록들(310, 312, 314, 318)의 사용을 요구한다. 따라서, 본 발명의 다양한 실시예에서, 비디오 스트림을 디코딩하는 데 필요한 하드웨어 디코딩 블록들만이 식별된 비디오 표준을 이용하여 인코딩된 비디오 스트림의 디코딩시에 사용된다.Different subsets of the hardware decoding blocks 310-318 are for decoding video streams encoded using different video encoding standards. For example, the first exemplary video standard requires the use of hardware decoding blocks 312 and 316 in decoding the video stream. The second exemplary video standard requires the use of hardware decoding blocks 310, 312, 314, 318 in decoding a video stream. Thus, in various embodiments of the present invention, only the hardware decoding blocks needed to decode the video stream are used in decoding the video stream encoded using the identified video standard.
일 실시예에서, 커맨드 파서(305)는 수신된 비디오 스트림의 디코딩에 필요한 하드웨어 디코딩 블록들만을 활성화하도록 동작할 수 있으며, 따라서 상기 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다. 예를 들어, 제1의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 하드웨어 디코딩 블록들의 제1 서브세트(예를 들어, 하드웨어 디코딩 블록들 312, 316)가 활성화되며, 따라서 비디오 스트림의 디코딩에 관련되지 않은 하드웨어 디코딩 블록들(예를 들어, 하드웨어 디코딩 블록들 310, 314, 318)은 활성화되지 않는다. 다른 예에서, 제2의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 하드웨어 디코딩 블록들의 제2 서브세트(예를 들어, 하드웨어 디코딩 블록들 310, 312, 314, 318)가 활성화되고, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록(예를 들어, 하드웨어 디코딩 블록 316)은 활성화되지 않는다. 일 실시예에서, 커맨드 파서(305)는 활성화된 유일한 디코더 장치(150)의 컴포넌트이다. 하드웨어 디코딩 블록들은 식별된 비디오 표준 및 데이터 흐름에 따라 필요에 따라 활성화된다.In one embodiment, the
일 실시예에서, 디코더 장치(150)의 하드웨어 디코딩 블록들은 다중 스테이지 매크로블록 레벨 파이프라인 내에 구현된다. 도 3에 도시된 바와 같이, 디코더 장치(150)는 하드웨어 디코딩 블록들(310, 312)을 포함하는 파이프라인 스테이지 1, 및 하드웨어 디코딩 블록들(314, 316, 318)을 포함하는 파이프라인 스테이지 2를 포함하는 3 스테이지 매크로블록 레벨 파이프라인으로 구현된다. 일 실시예에서, 커맨드 파서(305)는 비디오 스트림(302)의 매크로블록을 파이프라인 스테이지 1의 하드웨어 디코딩 블록들로 지향시킨다. 일 실시예에서, 둘 이상의 매크로블록이 파이프라인 스테이지 1에 위치할 수 있는 반면, 파이프라인 스테이지 2 및 3은 하나의 매크로블록만이 위치하는 것으로 제한된다. 일 실시예에서, 하드웨어 디코딩 블록들(312, 316, 318)은 잔여 데이터 경로 내에 있고, 하드웨어 디코딩 블록들(310, 314)은 예측 데이터 경로 내에 있다. 일 실시예에서, 잔여 데이터 경로는 에러 또는 차분 데이터를 처리하며, 예측 경로는 이전 프레임 또는 매크로블록과 연관된 데이터에 액세스한다.In one embodiment, the hardware decoding blocks of
일 실시예에서, 커맨드 파서(305)는 상기 비디오 스트림의 어떠한 데이터도 다중 스테이지 매크로블록 레벨 파이프라인의 일 스테이지에서 수신되지 않는 경우에 상기 스테이지 내의 하드웨어 디코딩 블록들을 비활성화하도록 동작할 수 있다. 예를 들어, 비디오 스트림(302)의 디코딩시, 비디오 스트림(302)의 최종 데이터가 파이프라인 스테이지 1을 떠나고, 파이프라인 스테이지 1에 어떠한 데이터도 수신되지 않을 때, 파이프라인 스테이지 1의 모든 하드웨어 디코딩 블록은 비활성화된다. 따라서, 비디오 스트림(302)과 연관된 비디오 표준을 위해 하드웨어 디코딩 블록들이 필요한 경우에도 파이프라인 스테이지의 모든 하드웨어 디코딩 블록을 비활성화함으로써 추가적인 전력 절감이 달성된다.In one embodiment, the
일 실시예에서, 비디오 스트림(302)은 완전히 디코딩될 때까지 메모리(330)로 들어가거나 그 밖으로 나오지 않는다. 메모리(330)는 외부 메모리 유닛(예를 들어, 도 1의 휘발성 메모리(102) 또는 비휘발성 메모리(103)) 또는 디코더 장치(150)의 내장 메모리 유닛일 수 있다. 비디오 스트림(302)을 완전히 디코딩한 후까지 메모리(330)에 액세스하지 않음으로써, 디코더 장치(150)는 더 적은 전력을 사용한다.In one embodiment,
일 실시예에서, 디코더 장치(150)는 디코딩된 비디오 스트림에 대해 후처리 동작을 수행하기 위한 하드웨어 후처리 블록(320)을 더 포함한다. 일 실시예에서, 하드웨어 후처리 블록(320)은 디블록킹 필터를 포함한다. 디블록킹 필터는 루프내 디블록킹 필터 또는 루프외 디블록킹 및/또는 디링잉 필터일 수 있다는 것을 이해해야 한다. 루프내 디블록킹 필터는 메모리(330)에 액세스하기 전에 디블록킹 동작들을 수행한다. 루프외 디블록킹 및 디링잉 필터는 메모리(330)로부터 액세스된 데이터에 대해 디블록킹 및 디링잉 동작을 수행한다. 그러나, 하드웨어 후처리 블록(320)은 임의 타입의 후처리 동작을 수행할 수 있다는 것을 이해해야 한다. 더욱이, 다수의 후처리 동작을 수행하기 위한 임의 수의 하드웨어 후처리 블록들(320)이 존재할 수 있다.In one embodiment, the
일 실시예에서, 커맨드 파서(305)는 비디오 스트림(302)이 디코딩된 비디오 스트림인 경우에 모든 하드웨어 디코딩 블록을 비활성화하도록 동작할 수 있으며, 따라서 하드웨어 후처리 블록(320)은 디코딩된 비디오 스트림에 대해 후처리 동작을 수행할 수 있게 된다. 즉, 디코더 장치(150)는 하드웨어 후처리 장치로서만 사용될 수도 있다. 디코딩된 비디오 스트림이 디코더 장치(150)에서 수신되는 경우, 모든 하드웨어 디코딩 블록이 비활성화되고, 디코딩된 비디오 스트림에 대한 후처리 동작이 수행된다.In one embodiment, the
도 4는 본 발명의 일 실시예에 따른, 디코더 장치(400)로도 지칭되는 예시적인 하드웨어 다중 표준 비디오 디코더 장치(400)의 내부 컴포넌트들을 나타내는 블록도이다. 디코더 장치(400)는 JPEG, MPEG-4, H.263, H.263+, H.264 또는 WMC9/V3-1 디코더들 중 어느 하나로서 동작하도록 구성된다. 따라서, 디코더 장치(400)는 JPEG, MPEG-4, H.263, H.263+, H.264 또는 WMC9/V3-1 표준들 중 어느 하나를 이용하여 인코딩된 비디오 스트림들을 디코딩하는 데 필요한 모든 디코딩 동작을 수행하기 위한 하드웨어 디코딩 블록들을 포함한다. 그러나, 본 발명은 다른 비디오 표준들의 지원에 유연하며, 본 발명은 도 4에 기술된 실시예로 한정되는 것을 의도하지 않는다는 것을 이해해야 한다.4 is a block diagram illustrating internal components of an exemplary hardware multi-standard
도 4에 도시된 바와 같이, 디코더 장치(400)는 커맨드 파서(402), 복수의 하드웨어 디코딩 블록, 복수의 하드웨어 후처리 블록, 및 메모리(460)를 포함한다. 커맨드 파서(402)는 비디오 스트림(401)(예를 들어, 비트 스트림)에 액세스하기 위한 것이다. 비디오 스트림(401)은 디지털 정지 이미지 데이터(예를 들어, JPEG 인코딩됨) 또는 디지털 영화 데이터(예를 들어, MPEG-4)를 포함할 수 있다는 것을 이해해야 한다. 일 실시예에서, 비디오 스트림(401)은 마이크로코드 엔진(예를 들어, 도 2b의 마이크로코드 엔진(260))으로부터 수신된다. 비디오 스트림(401)은 다수의 비디오 인코딩 표준 중 하나에 따라 인코딩된 압축 비디오 스트림이다. 커맨드 파서(402)는 비디오 스트립(401)을 인코딩하는 데 사용된 비디오 인코딩 표준을 식별한다. 일 실시예에서, 커맨드 파서(402)가 비디오 스트림(401)에 액세스하기 전에, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 수행된다. 비트 스트림 파싱 및 VLD는 호스트 CPU(예를 들어, 도 1의 프로세서(101)) 또는 마이크로코드 엔진에 의해 수행될 수 있다. 비디오 스트림(401)이 디코더 장치(400)가 디코딩하도록 구성되는 것들과 다른 비디오 표준을 이용하여 인코딩된 경우, 어떠한 디코딩 동작도 수행되지 않는다는 것을 이해해야 한다. 일 실시예에서, 커맨드 파서(402)는 지원되지 않는 표준을 이용하여 인코딩된 비디오 스트림에 대해 디코딩이 수행될 수 없음을 지시하는 지시를 컴퓨터 시스템에 전송한다.As shown in FIG. 4, the
비디오 스트림(401)을 인코딩하는 데 사용된 비디오 표준의 식별시, 커맨드 파서(402)는 비디오 스트림(401)의 매크로블록들을 식별된 비디오 표준에 적합한 하드웨어 디코딩 블록들로 지향시킨다. 일 실시예에서, 커맨드 파서는 식별된 비디오 표준에 적합한 하드웨어 디코딩 블록들을 활성화하며, 따라서 식별된 비디오 표준에 대해 필요하지 않은 하드웨어 디코딩 블록들은 비활성화된다. 커맨드 파서(402)는 또한 클럭 사이클들을 제어함으로써 디코더 장치(400)를 통한 데이터의 이동을 제어한다. 일 실시예에서, 커맨드 파서(402)는 활성화된 유일한 디코더 장치(400)의 컴포넌트이다. 하드웨어 디코딩 블록들은 식별된 비디오 표준 및 데이터 흐름에 따라 필요에 따라 활성화된다.In identifying the video standard used to encode the
디코더 장치(400)의 하드웨어 디코딩 블록들은 인트라 예측 모드 엔진(404), 모션 벡터(MV) 예측 엔진(406), 계수(예를 들어, 실행 길이(RD) 또는 역양자화) 엔진(408), AC/DC(예를 들어, AC/DC 예측 또는 역양자화) 예측 엔진(410), 인트라 예측 엔진(414), 회전 엔진(415), 모션 보상 엔진(416), 4x4 역변환 엔진(418), 8x8 역 이산 코사인 변환(IDCT) 엔진(420), IDCT 포맷 변환기 엔진(422), 인트라 예측 버퍼(432), 예측 샘플(434) 및 잔여 블록(436)을 포함한다. 디코더 장치(400)는 멀티플렉서(405, 409, 417, 419, 439) 및 가산기(435)를 더 포함한다. 디코더 장치(400)는 또한 하드웨어 후처리 블록들, 즉 루프내 디블록킹 필터(440), 루프외 필터(442) 및 회전 엔진(450)을 옵션으로 포함한다.The hardware decoding blocks of the
디코더 장치(400)는 잔여 경로 및 예측 경로를 가진 3 스테이지 매크로블록 레벨 파이프라인 내에 구현된다. 일 실시예에서, 둘 이상의 매크로블록이 파이프라인 스테이지 1에 위치할 수 있는 반면, 파이프라인 스테이지 2 및 3은 하나의 매크로블록만이 위치하는 것으로 제한된다. 잔여 경로는 계수 엔진(408), AC/DC 예측 엔진(410), 4x4 역변환 엔진(418), 8x8 IDCT 엔진(420), IDCT 포맷 변환기 엔진(422) 및 잔여 블록(436)을 포함한다. 예측 경로는 인트라 예측 모드 엔진(404), MV 예측 엔진(406), 인트라 예측 엔진(414), 회전 엔진(415), 모션 보상 엔진(416), 인트라 예측 버퍼(432) 및 예측 샘플(434)을 포함한다.
전술한 바와 같이, 디코더 장치(400)는 JPEG, MPEG-4, H.263, H.263+, H.264 또는 WMC9/V3-1 표준들 중 어느 하나에 따라 비디오 스트림들을 디코딩하도록 동작할 수 있다. 설명된 하드웨어 디코딩 블록들은 지원되는 표준들에 따라 요구되는 모든 디코딩 동작을 수행한다. 하드웨어 디코딩 블록들의 특정 동작들은 표준들 각각에 기술되므로 이 분야의 전문가에게 공지되고 이해된다. 따라서, 하드웨어 디코딩 블록들의 특정 동작들은 여기에 상세히 설명되지 않는다.As mentioned above, the
일 실시예에서, MV 파라미터들 및 인트라 예측 파라미터들은 각각 예측 경로에서 MV 예측 엔진(406) 및 인트라 예측 모드 엔진(404)으로 전달된다. 이들 엔진은 프로그래밍된 비디오 표준에 기초하여 실제 모션 벡터들 또는 인트라 예측 모드를 계산하여 이들을 각각 모션 보상 엔진(416) 또는 인트라 예측 엔진(414)으로 전달한다. 모션 보상 엔진(416) 또는 인트라 예측 엔진(414)은 예측 데이터를 계산한다. 일 실시예에서, 모션 보상 엔진(416)은 회전 엔진(415)을 포함한다. 회전 엔진(415)은 참조 프레임을 착신 비디오 프레임과 정렬하도록 회전시키기 위한 것이다. 회전 엔진(415)은 모션 보상 엔진이 비디오 스트림의 인코딩에 사용될 때마다 활성화된다. 한편, 에러 데이터는 계수 엔진(408), AC/DC 예측 엔진(410), 4x4 역변환 엔진(418), 8x8 IDCT 엔진(420) 및 IDCT 포맷 변환기 엔진(422)의 필요한 서브세트에서 처리된다.In one embodiment, MV parameters and intra prediction parameters are passed to MV prediction engine 406 and intra
복구된 에러 데이터는 예측 데이터에 추가된 후, 파이프라인 스테이지 3으로 전달된다. 결과 데이터는 필요한 경우에 더 처리되고, 메모리(460)에 기입되어 표시된다. 루프내 디블록킹 필터는 H264 및 WMV9/VC-1 모드들에서 사용된다. WMV9/VC-1 모드에서, 루프내 디블록킹 필터(440)는 오버랩 평활화 필터를 구현하는 데 사용된다. 루프외 필터(442)는 디코딩된 이미지의 품질을 향상시키기 위해 임의의 비디오 스트림 상에서 사용될 수 있다. 일 실시예에서, 루프외 필터(442)는 디코더 장치(400)의 나머지와 동시에 실행된다. 루프외 필터(442)는 프레임이 메모리(460) 내로 디코딩된 후에 트리거되어야 한다. 디코딩된 이미지는 또한 회전 엔진(450)에서 파이프라인 스테이지 3 내의 메모리(460)에 기입되기 전에 회전될 수 있다.
The recovered error data is added to the prediction data and then passed to pipeline stage 3. The resulting data is further processed as needed and written to and displayed in memory 460. In-loop deblocking filter is used in H264 and WMV9 / VC-1 modes. In WMV9 / VC-1 mode, in-
지원되는 비디오 표준들에 대한 하드웨어 다중 표준 비디오 디코더 장치의 예시적인 동작Exemplary Operation of a Hardware Multi-Standard Video Decoder Device for Supported Video Standards
아래의 실시예들은 지원되는 비디오 표준들 각각에 대한 디코더 장치(400)의 동작을 설명한다.The following embodiments describe the operation of the
JPEG: JPEG 디코딩은 예측 경로의 하드웨어 디코딩 블록들을 필요로 하지 않는데, 이는 JPEG 비디오 스트림들이 디지털 정지 이미지를 재생하기 위한 것이기 때문이다. 따라서, 인트라 예측 모드 엔진(404), MV 예측 엔진(406), 인트라 예측 엔진(414), 회전 엔진(415), 모션 보상 엔진(416), 인트라 예측 버퍼(432) 및 예측 샘플(434)은 JPEG 디코딩에 대해 모두 비활성화된다. 또한, JPEG 디코딩은 4x4 역변환 엔진(418)을 필요로 하지 않으며, 따라서 이는 비활성화된다. 커맨드 파서(402)는 계수 엔진(408), AC/DC 예측 엔진(410), 8x8 IDCT 엔진(420), 십진화 IDCT 엔진(438), IDCT 포맷 변환기 엔진(422) 및 잔여 블록(436)을 활성화한다. 커맨드 파서(402)는 JPEG 인코딩된 비디오 스트림을 디코딩하기 위한 활성 하드웨어 디코딩 블록들을 통해 비디오 스트림(401)으로부터의 데이터를 라우팅한다. 하드웨어 디코딩 블록들에 의해 수행되는 동작들 및 동작들의 시퀀스는 JPEG 표준에 의해 요구된다는 것을 이해해야 한다. JPEG : JPEG decoding does not require hardware decoding blocks of the prediction path because JPEG video streams are for playing digital still images. Thus, intra
JPEG 디코딩은 8x8 IDCT 엔진(420) 및 십진화 IDCT 엔진(438)의 사용만을 필요로 한다. 일 실시예에서, 커맨드 파서(402)는 8x8 IDCT 엔진(420) 및 십진화 IDCT 엔진(438) 중 어느 것이 비디오 스트림에 대해 활성화되는지를 식별하도록 동작할 수 있다. 8x8 IDCT 엔진(420)은 비디오 스트림을 완전히 디코딩하도록 활성화되는 반면, 십진화 IDCT 엔진(438)은 비디오 스트림이 십진화를 지시하는 경우에 활성화된다. IDCT 포맷 변환기 엔진(422)은 포맷 변환을 수행할 수 있다. 예를 들어, IDCT 포맷 변환기 엔진(422)은 YUV 4:4:4, YUV 4:2:2, YUV 4:2:2R 및 YUV 4:2:0 포맷들 중 임의의 포맷들 간의 포맷 변환을 수행할 수 있다. 다른 포맷 변환도 수행될 수 있으며, IDCT 포맷 변환기 엔진(422)은 리스트된 포맷들로 한정되지 않는다는 것을 이해해야 한다.JPEG decoding requires only the use of an
디코딩된 JPEG 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 JPEG 비디오 스트림은 메모리(330)에 저장된다. 다른 실시예에서, 디코딩된 JPEG 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대해 후처리 동작들이 수행된다.The decoded JPEG video stream is in pipeline stage 2. In one embodiment, the decoded JPEG video stream is stored in memory 330. In another embodiment, post processing operations are performed on the decoded JPEG video streams prior to storing them in the memory 330.
MPEG -4/H.263: MPEG-4 및 H.263 디코딩은 디코더 장치(400)의 목적을 위해 서로 매우 유사하다. 구체적으로, MPEG-4 표준은 MPEG-4 디코더들이 H.263 인코딩된 비디오 스트림들을 디코딩할 수 있을 것을 요구한다. MPEG-4 및 H.263 디코딩은 인트라 예측 모드 엔진(404), 인트라 예측 엔진(414), IDCT 포맷 변환기 엔진(422), 및 4x4 역변환 엔진(418)을 필요로 하지 않으며, 이들은 비활성화된다. 또한, 루프내 디블록킹 필터(440) 또한 후처리 동작들을 위해 비활성화된다. 따라서, 커맨드 파서는 MV 예측 엔진(406), 계수 엔진(408), AC/DC 예측 엔진(410), 회전 엔진(415), 모션 보상 엔진(416), 8x8 IDCT 엔진(420), 인트라 예측 버퍼(432), 예측 샘플(434) 및 잔여 블록(436)을 활성화시킨다. 커맨드 파서(402)는 MPEG-4 또는 H.263 인코딩된 비디오 스트림을 디코딩하기 위한 활성 하드웨어 디코딩 블록들을 통해 비디오 스트림(401)으로부터의 데이터를 라우팅한다. 하드웨어 디코딩 블록들에 의해 수행되는 동작들 및 동작들의 시퀀스는 MPEG-4 및 H.263 표준들에 의해 요구된다는 것을 이해해야 한다. MPEG- 4 / H.263 : MPEG-4 and H.263 decoding are very similar to each other for the purpose of the
커맨드 파서(402)는 적절한 잔여 경로 또는 예측 경로 하드웨어 디코딩 블록들로 매크로블록들을 지향시킬 수 있다. 일 실시예에서, 예측 프레임들(P 프레임들)이 파이프라인 스테이지 1 내의 MV 예측 엔진(406)에서 처리되는 것과 동시에, 인트라 프레임들(I 프레임들)이 잔여 경로의 계수 엔진(408) 및 AC/DC 예측 엔진(410)에서 처리될 수 있다. I 프레임들 및 P 프레임들은 파이프라인 스테이지 2에서 동기화된다. 커맨드 파서(402)는 또한 8x8 IDCT 엔진(420)의 적절한 하드웨어 디코딩 블록들을 활성화할 수 있다.Command parser 402 may direct macroblocks to appropriate residual path or prediction path hardware decoding blocks. In one embodiment, while the prediction frames (P frames) are processed in the MV prediction engine 406 in pipeline stage 1, the intra frames (I frames) are added to the
디코딩된 MPEG-4/H.263 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 MPEG-4/H.263 비디오 스트림은 메모리(330)에 저장된다. 다른 실시예에서, 디코딩된 MPEG-4/H.263 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대한 후처리 동작들이 수행된다. 다른 실시예에서, 후처리 동작들은 루프외 필터(442)에서 인코딩된 MPEG-4/H.263 비디오 스트림에 대해 수행된다. 일 실시예에서, 루프외 필터(442)는 디블록킹 필터이다. 다른 실시예에서, 루프외 필터(442)는 디링잉 필터이다. 다른 실시예에서, 루프외 필터(442)는 디블록킹 필터 및 디링잉 필터 양자이다. 루프외 필터(442)는 임의의 디블록킹 및/또는 디링잉 필터로서 구현될 수 있다는 것을 이해해야 한다.The decoded MPEG-4 / H.263 video stream is in pipeline stage 2. In one embodiment, the decoded MPEG-4 / H.263 video stream is stored in memory 330. In another embodiment, post-processing operations are performed on the decoded MPEG-4 / H.263 video streams prior to storing them in the memory 330. In another embodiment, post processing operations are performed on the MPEG-4 / H.263 video stream encoded in the out-of-
H.263+: H.263+ 디코딩은 전술한 바와 같은 MPEG-4/H.263 디코딩과 유사하다. H.263+는 디코딩 동작의 일부를 VLD 내로 시프팅하는데, 이는 커맨드 파서(402)가 비디오 스트림(401)에 액세스하기 전에 수행된다. 인트라 예측 모드 엔진(404), 인트라 예측 엔진(414), 4x4 역변환 엔진(418) 및 루프외 엔진(442)을 필요로 하지 않고, 따라서 비활성화하는 것에 더하여, 커맨드 파서(402)는 또한 계수 엔진(408) 및 AC/DC 예측 엔진(410)을 비활성화한다. 다른 점에서, H.263+ 디코딩은 전술한 바와 같은 MPEG-4/H.263 디코딩과 유사하다. 하드웨어 디코딩 블록들에 의해 수행되는 동작들 및 동작들의 시퀀스는 H.263+ 표준에 의해 요구된다는 것을 이해해야 한다. H.263 + : H.263 + decoding is similar to MPEG-4 / H.263 decoding as described above. H.263 + shifts some of the decoding operation into the VLD, which is performed before the command parser 402 accesses the
H.264: H.264 디코딩은 AC/DC 예측 엔진(410), 8x8 IDCT 엔진(420) 및 IDCT 포맷 변환기 엔진(422)을 필요로 하지 않으며, 이들은 비활성화된다. 따라서, 커맨드 파서(402)는 인트라 예측 모드 엔진(404), MV 예측 엔진(406), 계수 엔진(408), 인트라 예측 엔진(414), 회전 엔진(415), 모션 보상 엔진(416), 4x4 역변환 엔진(418), 인트라 예측 버퍼(432), 예측 샘플(434) 및 잔여 블록(436)을 활성화한다. 인트라 예측 버퍼(432)는 이전 매크로블록으로부터 픽셀들의 최상부 행을 저장할 수 있으며, 따라서 인트라 예측 엔진(414)은 매크로블록들의 다음 행을 처리할 때 이전 "레벨링" 픽셀들에 액세스할 수 있다. 커맨드 파서(402)는 H.264 인코딩된 비디오 스트림을 디코딩하기 위한 활성 하드웨어 디코딩 블록들을 통해 비디오 스트림(401)으로부터의 데이터를 라우팅한다. 하드웨어 디코딩 블록들에 의해 수행되는 동작들 및 동작들의 시퀀스는 H.264 표준에 의해 요구된다는 것을 이해해야 한다. H.264 : H.264 decoding does not require AC /
커맨드 파서(402)는 적절한 잔여 경로 또는 예측 경로 하드웨어 디코딩 블록들로 매크로블록들을 지향시킬 수 있다. 일 실시예에서, 프레임들은 파이프라인 스테이지 1 내의 잔여 경로 및 예측 경로에서 동시에 처리될 수 있다. 프레임들은 파이프라인 스테이지 2에서 동기화된다.Command parser 402 may direct macroblocks to appropriate residual path or prediction path hardware decoding blocks. In one embodiment, the frames may be processed simultaneously in the residual path and the prediction path in pipeline stage 1. The frames are synchronized in pipeline stage 2.
디코딩된 H.264 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 H.264 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대해 루프내 후처리 동작들이 수행된다. 다른 실시예에서, 루프외 후처리 동작들이 루프외 필터(442)에서 디코딩된 H.264 비디오 스트림에 대해 수행된다. 루프외 필터(442)는 임의의 디블록킹 필터 및/또는 디링잉 필터로서 구현될 수 있다는 것을 이해해야 한다.The decoded H.264 video stream is in pipeline stage 2. In one embodiment, in-loop post-processing operations are performed on them before storing the decoded H.264 video stream in memory 330. In another embodiment, out-of-loop post-processing operations are performed on the H.264 video stream decoded in out-of-
WMV9 / VC -1: WMV9/VC-1 디코딩은 인트라 예측 모드 엔진(404) 및 인트라 예측 엔진(414)을 필요로 하지 않으며, 이들은 비활성화된다. 따라서, 커맨드 파서(402)는 MV 예측 엔진(406), 계수 엔진(408), AC/DC 예측 엔진(410), 회전 엔진(415), 모션 보상 엔진(416), 4x4 역변환 엔진(418), 8x8 IDCT 엔진(420), 인트라 예측 버퍼(432), 예측 샘플(434) 및 잔여 블록(438)을 활성화시킨다. 커맨드 파서(402)는 WMV9/VC-1 인코딩된 비디오 스트림을 디코딩하기 위한 활성 하드웨어 디코딩 블록들을 통해 비디오 스트림(401)으로부터의 데이터를 라우팅한다. 하드웨어 디코딩 블록들에 의해 수행되는 동작들 및 동작들의 시퀀스는 WMV9/VC-1 표준에 의해 요구된다는 것을 이해해야 한다. WMV9 / VC- 1 : WMV9 / VC-1 decoding does not require intra
커맨드 파서(402)는 적절한 잔여 경로 또는 예측 경로 하드웨어 디코딩 블록들에 매크로블록들을 지향시킬 수 있다. 일 실시예에서, 프레임들은 파이프라인 스테이지 1 내의 잔여 경로 및 예측 경로에서 동시에 처리될 수 있다. 프레임들은 파이프라인 스테이지 2에서 동기화된다.The command parser 402 can direct the macroblocks to the appropriate residual path or prediction path hardware decoding blocks. In one embodiment, the frames may be processed simultaneously in the residual path and the prediction path in pipeline stage 1. The frames are synchronized in pipeline stage 2.
디코딩된 WMV9/VC-1 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 WMV9/VC-1 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대해 루프내 후처리 동작들이 수행된다. 일 실시예에서, 루프내 디블록킹 필터(440)가 오버랩 평활화 필터를 구현하는 데 사용된다. 다른 실시예에서, 후처리 동작들이 루프외 필터(442)에서 디코딩된 WMV9/VC-1 비디오 스트림에 대해 수행된다. 루프외 필터(442)는 임의의 디블록킹 필터 및/또는 디링잉 필터로서 구현될 수 있다는 것을 이해해야 한다.
The decoded WMV9 / VC-1 video stream is in pipeline stage 2. In one embodiment, in-loop post-processing operations are performed on them before storing the decoded WMV9 / VC-1 video stream in memory 330. In one embodiment, in-
후처리 동작들Post Processing Actions
디코더 장치(400)의 파이프라인 스테이지 3은 3개의 하드웨어 후처리 블록, 즉 루프내 디블록킹 필터(440), 루프외 필터(442) 및 회전 엔진(450)을 포함한다. 루프내 디블록킹 필터(440)는 H.264 및 WMV9/VC-1 모드들에서 사용된다. 일 실시예에서, WMV9/VC-1 모드에서, 루프내 디블록킹 필터(440)는 오버랩 평활화 필터를 구현하는 데 사용된다.Pipeline stage 3 of
루프외 필터(442)는 디코딩된 이미지의 품질을 향상시키기 위해 임의의 비디오 스트림에 대해 사용될 수 있다. 일 실시예에서, 루프외 필터(442)는 디코더 장치(400)의 나머지와 동시에 실행된다. 루프외 필터(442)는 프레임이 메모리(460) 내로 디코딩된 후에 트리거되어야 한다.Out-of-
임의의 디블록킹 및/또는 디링잉 필터가 루프외 필터(442)로 사용될 수 있다는 것을 이해해야 한다. 예를 들어, 장치(150)에서 구현될 수 있는 많은 비디오 표준을 감독하기 위한 기구인 국제 표준화 기구(ISO)는 종종 표준화 공보에서 제안되는 디블록킹 필터들을 포함한다. 예를 들어, 루프외 필터(442)는 ISO 공보의 ISO/IEC 14496-2:2001, 섹션 F.3.1에 기술된 디블록킹 필터를 포함할 수 있다.It should be understood that any deblocking and / or deringing filter may be used as the out-of-
디코딩된 이미지는 또한, 회전 엔진(450)에서 파이프라인 스테이지 3 내의 메모리(460)에 기입되기 전에 회전될 수 있다. 회전 엔진(450)은 개별 매크로블록들이 지시된 회전도에 기초하여 회전되어 프레임의 새로운 위치에 배치되는 온-더-플라이(on-the-fly) 매크로블록 회전을 제공하도록 구성된다. 회전 엔진(450)의 동작의 상세한 설명에 대해서는 아래의 도 10a, 10b 및 11을 참조한다.
The decoded image may also be rotated before it is written to the memory 460 in pipeline stage 3 in the rotation engine 450. The rotation engine 450 is configured to provide on-the-fly macroblock rotation in which individual macroblocks are rotated based on the indicated degree of rotation and placed in a new position of the frame. See FIGS. 10A, 10B and 11 below for a detailed description of the operation of the rotary engine 450.
하드웨어 다중 표준 비디오 디코더 장치를 이용하여 비디오 Video using hardware multi-standard video decoder device 스트림을Stream 디코딩하는 방법 How to decode
도 5는 본 발명의 일 실시예에 따라 하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현되는 비디오 스트림 디코딩 방법(500)의 흐름도를 나타낸다. 방법(500)에서 특정 단계들이 개시되지만, 이러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계들 또는 도 5에 기재된 단계들의 변형을 수행하는 데 적합하다. 일 실시예에서, 방법(500)은 도 3의 디코더 장치(150)에 의해 수행된다.5 shows a flowchart of a video
프로세스(500)의 단계 510에서, 비디오 스트림이 액세스된다. 단계 520에서, 비디오 스트림을 인코딩하는 데 사용된 비디오 표준이 식별된다. 하드웨어 다중 표준 비디오 디코더 장치는 복수의 비디오 표준에 따라 비디오 스트림을 디코딩하도록 구성된다.In step 510 of
단계 530에서, 비디오 스트림을 디코딩하는 데 사용되는 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트가 결정된다. 복수의 하드웨어 디코딩 블록의 상이한 서브세트들이 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩할 수 있다. 일 실시예에서, 단계 540에서 도시된 바와 같이, 하드웨어 디코딩 블록들의 서브세트가 활성화되고, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 비활성화된다.In step 530, a subset of the hardware decoding blocks of the plurality of hardware decoding blocks of the hardware multi-standard video decoder device used to decode the video stream is determined. Different subsets of the plurality of hardware decoding blocks can decode video streams encoded using different video encoding standards. In one embodiment, as shown in
단계 550에서, 비디오 스트림은 하드웨어 디코딩 블록들의 서브세트를 이용하여 디코딩된다. 일 실시예에서, 단계 560에 도시된 바와 같이, 다중 스테이지 매크로블록 레벨 파이프라인의 일 스테이지 내의 하드웨어 디코딩 블록들은 비디오 스트림의 어떠한 데이터도 그 스테이지에서 수신되지 않는 경우에 비활성화된다. 단계 540 및 560은 추가적인 전력 절약을 제공하며 옵션이라는 것을 이해해야 한다.At
단계 570에서, 비디오 스트림의 디코딩에 이어서, 메모리 유닛이 액세스된다. 일 실시예에서, 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다. 일 실시예에서, 단계 580에 도시된 바와 같이, 디코딩된 비디오 스트림 상에 후처리 동작이 수행된다. 후처리 동작은 단계 570이 수행되기 전 또는 후에 수행될 수 있다는 것을 이해해야 한다. 일 실시예에서, 디코딩된 비디오 스트림은 회전된다. 다른 실시예에서, 루프내 디블록킹 필터가 디코딩된 비디오 스트림에 적용된다. 회전 및 루프내 디블록킹은 메모리 유닛이 액세스되기 전에 수행된다. 일 실시예에서, 루프외 디블록킹 및 디링잉 필터들은 메모리 유닛이 액세스된 후에 디코딩된 비디오 스트림에 적용된다.
In
상이한 비디오 표준들을 이용하여 인코딩된 다수의 Multiple encoded using different video standards 스트림의Of stream 하드웨어 다중 표준 비디오 디코더 장치를 이용한 디코딩 Decoding Using Hardware Multi-Standard Video Decoder Devices
본 발명의 하드웨어 다중 표준 비디오 디코더 장치의 실시예들은 또한 다수의 비디오 스트림을 동시에 디코딩할 수 있다. 매크로블록들 또는 프레임들과 같은 비디오 스트림들의 부분들은 인터리빙된다. 디코더 장치는 인터리빙된 부분들에 순차적으로 액세스한다. 따라서, 디코더 장치는 인터리빙된 부분들에 대한 디코딩 동작들을 수행한다. 예를 들어, 2개의 비디오 스트림의 매크로블록들에 대해 디코딩 동작이 수행될 수 있다. 비디오 스트림들은 비디오 스트림들의 매크로블록들이 교대하도록 인터리빙된다. 클럭 사이클마다, 교대하는 비디오 스트림에 대해 디코딩 동작이 수행될 수 있다.Embodiments of the hardware multi-standard video decoder device of the present invention can also decode multiple video streams simultaneously. Portions of video streams such as macroblocks or frames are interleaved. The decoder device sequentially accesses the interleaved portions. Thus, the decoder device performs decoding operations on the interleaved portions. For example, a decoding operation may be performed on macroblocks of two video streams. The video streams are interleaved so that macroblocks of the video streams alternate. Every clock cycle, a decoding operation may be performed on alternate video streams.
도 6은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치(600)의 내부 컴포넌트들을 나타내는 도면이다. 도 6에 도시된 바와 같이, 디코더 장치(600)는 비디오 스트림 인터리버(605), 커맨드 파서(305), 복수의 하드웨어 디코딩 블록(310-318), 하드웨어 후처리 블록(320), 메모리(330), 레지스터 세트(610) 및 레지스터 세트(620)를 포함한다. 디코더 장치(600)는 다수의 비디오 인코딩 표준을 디코딩할 수 있으며, 도 3의 디코더 장치(150)와 매우 유사하게 동작한다. 디코더 장치(600)는 레지스터 세트들(610, 620)이 디코더 장치(600)가 다수의 비디오 스트림을 동시에 디코딩하는 것을 허가한다는 점에서 디코더 장치(150)와 다르다.6 is a diagram illustrating internal components of a hardware multi-stream multi-standard
비디오 스트림 인터리버(605)는 다수의 비디오 스트림에 액세스하여, 비디오 스트림들의 부분들을 인터리빙할 수 있다. 도시된 바와 같이, 비디오 스트림 인터리버(605)는 비디오 스트림들(601, 602)에 액세스한다. 그러나, 비디오 스트림 인터리버(605)는 임의 수의 비디오 스트림을 수신할 수 있으며, 도 6에 도시된 실시예로 한정되는 것이 아니라는 것을 이해해야 한다. 일 실시예에서, 비디오 스트림들(601, 602)은 마이크로코드 엔진(예를 들어, 도 2b의 마이크로코드 엔진(260))으로부터 수신된다.Video stream interleaver 605 may access multiple video streams to interleave portions of the video streams. As shown, video stream interleaver 605 accesses video streams 601, 602. However, it should be understood that the video stream interleaver 605 may receive any number of video streams and is not limited to the embodiment shown in FIG. 6. In one embodiment, video streams 601, 602 are received from a microcode engine (eg, microcode engine 260 of FIG. 2B).
도 7a 및 7b는 본 발명의 실시예들에 따른 다수의 비디오 스트림의 예시적인 인터리빙된 부분들을 나타내는 도면들이다. 도 7a를 참조하면, 2개의 인터리빙된 비디오 스트림이 도시되어 있으며, 하나의 스트림은 정지 이미지 비디오 스트림(예를 들어, JPEG)이고, 다른 하나의 스트림은 디지털 영화 스트림(예를 들어, MPEG-4)이다. 도시된 바와 같이, 비디오 스트림들이 하나의 디지털 영화 스트림만을 포함하는 경우, 비디오 스트림들은 매크로블록 레벨로 인터리빙될 수 있다. 구체적으로, 정지 이미지 매크로블록들(704, 708)은 디지털 영화 매크로블록들(702, 706)과 인터리빙되며, 따라서 각각의 비디오 스트림으로부터의 매크로블록들은 인터리빙된 스트림(700) 내에서 교대한다. 비디오 스트림들이 매크로블록 레벨로 인터리빙되는 경우, 디코더 장치(600)의 소프트웨어 드라이버는 시스템 메모리 내에 매크로블록 데이터를 버퍼링하여, 인터리빙된 비디오 스트림들의 디코딩을 관리한다.7A and 7B are diagrams illustrating exemplary interleaved portions of multiple video streams in accordance with embodiments of the present invention. Referring to FIG. 7A, two interleaved video streams are shown, one stream being a still image video stream (eg, JPEG), and the other stream being a digital movie stream (eg, MPEG-4). )to be. As shown, if the video streams contain only one digital movie stream, the video streams may be interleaved at the macroblock level. Specifically, still image macroblocks 704 and 708 are interleaved with
도 7b를 참조하면, 2개의 인터리빙된 비디오 스트림이 도시되어 있으며, 양 스트림들은 디지털 영화 스트림들이다. 도시된 바와 같이, 비디오 스트림들이 다수의 디지털 영화 스트림을 포함하는 경우, 비디오 스트림들은 프레임 레벨로 인터리빙된다. 구체적으로, 제1 디지털 영화 프레임들(752, 756)은 제2 디지털 영화 프레임들(754, 758)과 인터리빙되며, 따라서 각각의 비디오 스트림으로부터의 프레임들은 인터리빙된 스트림(750) 내에서 교대한다. 비디오 스트림들이 프레임 레벨로 인터리빙되는 경우, 디코더 장치(600)의 소프트웨어 드라이버는 시스템 메모리에 프레임 데이터를 버퍼링하여, 인터리빙된 비디오 스트림들의 디코딩을 관리한다.Referring to FIG. 7B, two interleaved video streams are shown, both streams being digital movie streams. As shown, when the video streams include multiple digital movie streams, the video streams are interleaved at the frame level. Specifically, the first digital movie frames 752 and 756 are interleaved with the second digital movie frames 754 and 758, so that frames from each video stream alternate in the interleaved
도 6을 참조하면, 커맨드 파서(305), 하드웨어 디코딩 블록들(310-318), 하드웨어 후처리 블록(320) 및 메모리(330)는 도 3에 도시된 바와 같이 동작한다. 결과 데이터 및 다른 디코더 파라미터들은 커맨드 파서(305)를 통해 디코더 장치로 전달된다. 커맨드 파서(305)로부터의 데이터는 잔여 경로(하드웨어 디코딩 블록들 312, 316, 318) 또는 예측 경로(하드웨어 디코딩 블록들 310, 314)로 라우팅될 것이다. 잔여 경로는 에러 또는 차분 데이터를 처리하는 반면, 예측 경로는 이전 프레임 또는 이전 매크로블록의 데이터를 준비/페치할 것이다.Referring to FIG. 6, the
인터리빙된 비디오 스트림들의 디코딩을 관리하기 위하여, 파이프라인 스테이지 1 내에 2개의 레지스터 세트(610, 620)가 유지된다. 일 실시예에서, 레지스터 세트들(610, 620)은 각각 메모리 표면 포인터들(612, 622) 및 각각 프레임 레벨 파라미터들(614, 624)을 저장한다. 레지스터 세트들 각각은 비디오 스트림들 중 하나와 연관된 파라미터들을 저장하는 데 사용된다. 예를 들어, 레지스터 세트(610)는 비디오 스트림(601)과 연관된 파라미터들을 저장하는 데 사용되고, 레지스터 세트(620)는 비디오 스트림(602)과 연관된 파라미터들을 저장하는 데 사용된다. 하나의 비디오 스트림의 일부가 파이프라인 스테이지 1에서 처리되면, 적절한 파라미터들이 잔여 또는 예측 데이터와 함께 패킷의 형태로 다운스트림 파이프라인 스테이지 2 및 3으로 전달된다. 디코딩된 데이터는 매크로블록이 정지 이미지인지 디지털 영화 타입인지에 기초하여 메모리 내의 적절한 영역으로 라우팅될 것이다. 디코더 장치(600)는 디코딩될 각각의 스트림이 관련 레지스터 세트를 갖도록 적절한 수의 레지스터 세트를 추가함으로써 임의 수의 비디오 스트림을 디코딩하도록 구성될 수 있다는 것을 이해해야 한다.In order to manage the decoding of interleaved video streams, two register sets 610 and 620 are maintained in pipeline stage 1. In one embodiment, register sets 610 and 620 store
도 8은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 이용하여 구현되는, 다수의 비디오 스트림을 디코딩하기 위한 방법(800)의 흐름도를 나타낸다. 특정 단계들이 방법(800)에서 개시되지만, 이러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계 또는 도 8에 기재된 단계들의 변형들을 수행하는 데 적합하다. 일 실시예에서, 방법(800)은 도 6의 디코더 장치(600)에 의해 수행된다.8 shows a flowchart of a
프로세스(800)의 단계 810에서, 복수의 비디오 스트림이 액세스된다. 단계 820에서, 비디오 스트림들을 인코딩하는 데 사용된 비디오 표준들이 식별된다. 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치는 복수의 비디오 표준에 따라 비디오 스트림들을 디코딩하도록 구성된다. 단계 830에서, 비디오 스트림들의 부분들이 인터리빙된다. 일 실시예에서, 비디오 스트림들이 하나의 디지털 영화 스트림만을 포함하는 경우, 비디오 스트림들의 매크로블록들이 인터리빙된다. 다른 실시예에서, 비디오 스트림들이 다수의 디지털 영화 스트림을 포함하는 경우, 비디오 스트림들의 프레임들이 인터리빙된다. 단계들 820 및 830은 임의 순서로 수행될 수 있다는 것을 이해해야 한다.In step 810 of
단계 840에서, 복수의 비디오 스트림을 디코딩하는 데 사용되는 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트들이 결정된다. 복수의 하드웨어 디코딩 블록의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하도록 동작할 수 있다. 일 실시예에서, 단계 850에 도시된 바와 같이, 하드웨어 디코딩 블록들의 서브세트들은 활성화되고, 따라서 비디오 스트림들의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다.In
단계 860에서, 비디오 스트림들은 하드웨어 디코딩 블록들의 서브세트들을 이용하여 디코딩된다. 단계 870에서, 비디오 스트림들의 디코딩에 이어서, 메모리 유닛이 액세스된다. 일 실시예에서, 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다. 일 실시예에서, 단계 880에서 도시된 바와 같이, 적어도 하나의 디코딩된 비디오 스트림에 대해 후처리 동작이 수행된다. 후처리 동작은 단계 870이 수행되기 전 또는 후에 수행될 수 있다는 것을 이해해야 한다. 일 실시예에서, 디코딩된 비디오 스트림은 회전된다. 다른 실시예에서, 루프내 디블록킹 필터가 디코딩된 비디오 스트림에 적용된다. 회전 및 루프내 디블록킹은 메모리 유닛이 액세스되기 전에 수행된다. 일 실시예에서, 루프외 디블록킹 및 디링잉 필터들이 메모리 유닛이 액세스된 후에 디코딩된 비디오 스트림에 적용된다.
In step 860, the video streams are decoded using subsets of hardware decoding blocks. In
비디오 video 스트림의Of stream 무질서 매크로블록들의 처리 Processing disordered macroblocks
도 2b를 참조하면, 일 실시예에서, 본 발명은 마이크로코드 엔진(260)에서 매크로블록들을 버퍼링하고 재배열하는 것을 제공한다. 본 발명은 비 래스터 스캔 순서로 매크로블록들을 송수신하는 것을 지원하는 비디오 표준들에 대한 루프내 디블록킹을 지원하기 위하여 래스터 스캔 순서로 매크로블록들을 배열하는 것을 제공한다. 마이크로코드 엔진(260)은 비디오 스트림의 프레임의 매크로블록들을 나타내는 압축 데이터를 수신하도록 구성된다. 일 실시예에서, 적어도 하나의 매크로블록이 무질서하게 수신된다. 마이크로코드 엔진(260)은 압축 데이터를 버퍼링하도록 구성되고, 프레임의 매크로블록들을 래스터 스캔 순서로 배열하도록 구성된다.2B, in one embodiment, the present invention provides for buffering and rearranging macroblocks in microcode engine 260. The present invention provides for arranging macroblocks in raster scan order to support in-loop deblocking for video standards that support sending and receiving macroblocks in non-raster scan order. Microcode engine 260 is configured to receive compressed data representing macroblocks of a frame of the video stream. In one embodiment, at least one macroblock is received disorderly. The microcode engine 260 is configured to buffer the compressed data and to arrange the macroblocks of the frame in raster scan order.
도 9는 본 발명의 일 실시예에 따라 비디오 스트림의 무질서 매크로블록들을 처리하기 위한 방법(900)의 흐름도를 나타낸다. 특정 단계들이 방법(900)에 개시되지만, 이러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계들 또는 도 9에 기재된 단계들의 변형들을 수행하는 데 적합하다. 일 실시예에서, 방법(900)은 도 2b의 마이크로코드 엔진(260)에 의해 수행된다.9 shows a flowchart of a
프로세스(900)의 단계 910에서, 비디오 스트림의 프레임의 매크로블록들을 나타내는 압축 데이터가 수신되는데, 적어도 하나의 매크로블록은 무질서하게 수신된다. 단계 920에서, 압축 데이터가 버퍼링된다. 일 실시예에서, 압축 데이터는 마이크로코드 엔진(260)의 버퍼에 버퍼링된다. 단계 930에서, 비디오 스트림이 파싱되고, VLD가 비디오 스트림 상에 수행된다. 단계 930은 옵션이고, 비디오 스트림 파싱 및 VLD는 하드웨어 디코더 장치에 의해 수행될 수 있다는 것을 이해해야 한다. 또한, 다른 또는 추가적인 전처리 동작들이 단계 930에서 비디오 스트림에 대해 수행될 수 있다는 것을 이해해야 한다.In
단계 935에서, 비디오 스트림이 루프내 디블록킹을 필요로 하는지를 판정한다. 일 실시예에서, 압축 데이터는 루프내 블록킹이 비디오 스트림 상에 수행되어야 하는지의 여부에 대한 지시를 포함한다. 루프내 디블록킹이 필요한 경우, 프레임의 매크로블록들은 단계 940에 도시된 바와 같이 래스터 스캔 순서로 배열된다. 일 실시예에서, 프레임의 모든 매크로블록은 매크로블록들이 래스터 스캔 순서로 배열되기 전에 버퍼링된다. 이어서, 방법(900)은 단계 950으로 진행한다. 대안으로, 루프내 디블록킹이 필요하지 않은 경우, 방법(900)은 단계 950으로 직접 진행한다.In step 935, it is determined whether the video stream requires in-loop deblocking. In one embodiment, the compressed data includes an indication as to whether intra-loop blocking should be performed on the video stream. If in-loop deblocking is needed, the macroblocks of the frame are arranged in raster scan order as shown in
단계 950에서, 비디오 스트림이 디코딩된다. 일 실시예에서, 매크로블록들은 래스터 스캔 순서로 디코딩된다. 일 실시예에서, 비디오 스트림은 하드웨어 다중 표준 비디오 디코더 장치(예를 들어, 도 3의 디코더 장치(150) 또는 도 4의 디코더 장치(400))에 의해 디코딩된다. 일 실시예에서, 비디오 스트림은 도 5의 방법(500)에 따라 디코딩된다.In
단계 960에서, 디코딩된 매크로블록 상에 매크로블록 레벨 루프내 디블록킹이 수행된다. 단계 970에서, 메모리 유닛이 액세스된다. 일 실시예에서, 디블록킹 및 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다.In
단계 980에서, 디코딩된 프레임 상에 프레임 레벨 루프외 후처리가 수행된다. 일 실시예에서, 루프외 후처리는 디블록킹 및 디링잉 동작들을 포함한다. 단계 980은 옵션이라는 것을 이해해야 한다. 이어서, 방법(900)은 단계 970으로 복귀하며, 여기서 메모리 유닛이 액세스된다. 일 실시예에서, 디블록킹, 디링잉 및 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다.In
매크로블록들이 여전히 압축 데이터로 있는 동안 매크로블록들을 버퍼링함으로써, 마이크로코드 엔진(260)은 디코딩된 비디오 데이터보다 훨씬 적은 실행 길이 인코딩된 압축 데이터의 최대 일 프레임만을 버퍼링하면 된다. 또한, 압축된 매크로블록들의 버퍼링은 전력을 절약한다. 무선으로 수신된 비디오 스트림들은 또한 많은 에러가 발생한다. 마이크로코드 엔진(260)에 대한 비트 스트림 파싱의 파티셔닝은 또한 에러 복구를 향상시키는 이점을 갖는다.
By buffering macroblocks while the macroblocks are still compressed data, the microcode engine 260 only needs to buffer a maximum of one frame of run length encoded compressed data much less than the decoded video data. In addition, buffering the compressed macroblocks saves power. Video streams received wirelessly also generate many errors. Partitioning of bit stream parsing to microcode engine 260 also has the advantage of improving error recovery.
비디오 video 스트림의Of stream 매크로블록들의 온 더 플라이 회전 On-the-Fly Rotation of Macroblocks
본 발명의 실시예들은 비디오 스트림이 메모리에 기입되기 전에 비트 스트림을 "온 더 플라이" 방식으로 회전시키기 위한 회전 엔진을 제공한다. 본 발명의 실시예들은 비디오 스트림의 매크로블록들이 수신될 때 이들을 회전시킴으로써 비디오 스트림을 회전시키고, 회전에 기초하여 프레임 내에 매크로블록들을 재배치할 수 있다. 본 발명의 실시예들은 디코딩된 매크로블록들을 메모리에 기입하기 전에 매크로블록들 상에 작용함으로써 디코딩된 프레임들을 2차 전달할 필요 없이 비디오 스트림들을 회전시킬 수 있다.Embodiments of the present invention provide a rotation engine for rotating a bit stream in an "on the fly" manner before the video stream is written to memory. Embodiments of the present invention may rotate a video stream by rotating them when macroblocks of the video stream are received, and rearrange macroblocks within a frame based on the rotation. Embodiments of the present invention can rotate video streams without having to deliver decoded frames secondary by operating on the macroblocks before writing the decoded macroblocks to memory.
일 실시예에서, 본 발명은 회전도에 따라 비디오 스트림의 프레임의 매크로블록을 회전시키고 매크로블록을 회전도에 기초하는, 프레임 내의 새로운 위치에 재배치하도록 구성된 회전 엔진을 제공한다. 일 실시예에서, 비디오 디코더 장치는 표시를 위해 매크로브록을 저장하기 위한 메모리를 더 포함한다. 일 실시예에서, 회전 엔진은 매크로블록을 회전시키고, 메모리에 액세스하기 전에 프레임 내에 매크로블록을 재배치하도록 구성된다.In one embodiment, the present invention provides a rotation engine configured to rotate a macroblock of a frame of a video stream according to the degree of rotation and to relocate the macroblock to a new location within the frame based on the degree of rotation. In one embodiment, the video decoder device further includes a memory for storing the macroblock for display. In one embodiment, the rotation engine is configured to rotate the macroblock and rearrange the macroblock within the frame before accessing the memory.
도 10a 및 10b는 본 발명의 일 실시예에 따른 프레임들의 매크로블록들의 예시적인 회전의 도면을 나타낸다. 도 10a 및 10b는 도 4의 회전 엔진(450)의 동작을 기술하지만, 설명되는 실시예들은 임의 타입의 비디오 디코더 장치에서 구현될 수 있으며, 도 4의 하드웨어 다중 표준 비디오 디코더 장치(400)의 사용으로 제한되지 않음을 이해해야 한다. 예를 들어, 회전 엔진은 단일 표준 하드웨어 디코더 또는 소프트웨어 디코더 내에 포함될 수 있다.10A and 10B show diagrams of exemplary rotation of macroblocks of frames in accordance with one embodiment of the present invention. Although FIGS. 10A and 10B describe the operation of the rotation engine 450 of FIG. 4, the embodiments described may be implemented in any type of video decoder device, using the hardware multi-standard
도 10a를 참조하면, 다이어그램 1000은 도 4의 회전 엔진(450)을 이용한 프레임(1010)의 회전을 나타낸다. 프레임(1010)은 다수의 매크로블록을 포함한다. 매크로블록(1012)은 회전 엔진(450)에서 수신되는 제1 매크로블록으로 도시되어 있다. 일 실시예에서, 매크로블록들은 래스터 스캔 순서로 수신되는데, 여기서 매크로블록(1012)은 좌상 매크로블록이므로 최초로 수신되는 매크로블록이다.Referring to FIG. 10A, diagram 1000 illustrates the rotation of
회전 엔진(450)은 매크로블록(1012)을 회전시키고, 프레임(1010) 내의 새로운 위치에 매크로블록(1012)을 재배치하도록 구성된다. 회전 및 재배치는 비디오 스트림과 연관된 회전도에 기초한다. 회전도는 비디오 스트림이 얼마나 회전되어야 하는지를 나타낸다. 예를 들어, 회전도는 시계 방향으로 90도, 반시계 방향으로 90도, 180도, 또는 임의의 다른 회전도일 수 있다.The rotation engine 450 is configured to rotate the
다이어그램(diagram) 1000은 시계 방향으로 90도의 회전도를 이용하는 회전 엔진(450)의 동작을 나타낸다. 매크로블록(1012)은 시계 방향으로 90도 회전된다. 회전 엔진(450)은 또한 매크로블록(1012)을 재배치하여, 회전된 프레임(1020) 내의 매크로블록(1022)으로 도시된 회전된 매크로블록(1012)이 프레임(1020)의 모든 다른 매크로블록에 대해 동일한 위치에 있게 한다.Diagram 1000 illustrates the operation of rotary engine 450 using 90 degrees of rotation in a clockwise direction. The
본 발명의 실시예들은 또한 매크로블록들이 무질서하게 수신되는 프레임들을 매크로블록 레벨로 회전시키는 것을 제공한다. 도 10b를 참조하면, 다이어그램 1050은 도 4의 회전 엔진(450)을 이용한 프레임(1060)의 회전을 나타낸다. 매크로블록(1062)은 회전 엔진(450)에서 수신된 제1 매크로블록으로서 도시된다. 본 실시예에서는, 매크로블록(1062)이 수신되는 제1 매크로블록이지만, 좌상 매크로블록이 아니므로, 매크로블록들은 래스터 스캔 순서로 수신되지 않는다.Embodiments of the present invention also provide for rotating frames at macroblock level where macroblocks are received randomly. Referring to FIG. 10B, diagram 1050 illustrates the rotation of
회전 엔진(450)은 매크로블록(1062)을 회전시키고, 매크로블록(1062)을 프레임(1060) 내의 새로운 위치에 재배치하도록 구성된다. 다이어그램 1050은 시계 방향으로 90의 회전도를 이용하는 회전 엔진(450)의 동작을 나타낸다. 매크로블록(1062)은 시계 방향으로 90도 회전된다. 회전 엔진(450)은 또한 매크로블록(1062)을 재배치하여, 회전된 프레임(1070) 내에 매크로블록(1072)로서 도시된 회전된 매크로블록(1062)이 프레임(1070)의 모든 다른 매크로블록에 대해 동일한 위치에 있게 한다.The rotation engine 450 is configured to rotate the
도 11은 본 발명의 일 실시예에 따라 프레임의 매크로블록들을 회전시키기 위한 방법(1100)의 흐름도를 나타낸다. 특정 단계들이 방법(1100)에서 개시되지만, 이 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계 또는 도 11에 기재된 단계들의 변형들을 수행하는 데 적합하다. 일 실시예에서, 방법(1100)은 도 4의 회전 엔진(450)에 의해 수행된다.11 shows a flowchart of a
단계 1110에서, 비디오 스트림이 디코딩된다. 일 실시예에서, 비디오 스트림은 하드웨어 다중 표준 비디오 디코더 장치(예를 들어, 도 3의 디코더 장치(150) 또는 도 4의 디코더 장치(400))에 의해 디코딩된다. 일 실시예에서, 비디오 스트림은 도 5의 방법(500)에 따라 디코딩된다. 단계 1110은 옵션이고, 비디오 스트림은 처리 전에 이미 디코딩될 수 있다는 것을 이해해야 한다.In step 1110, the video stream is decoded. In one embodiment, the video stream is decoded by a hardware multiple standard video decoder device (eg,
단계 1120에서, 비디오 스트림에 대한 회전도가 액세스된다. 일 실시예에서, 회전도는 시계 방향으로 90도, 반시계 방향으로 90도, 및 180도 중 하나이다. 그러나, 임의의 회전도가 사용될 수 있음을 이해해야 한다. 단계 1130에서, 비디오 스트림의 매크로블록이 액세스된다.In
단계 1140에서, 매크로블록은 회전도에 따라 회전된다. 단계 1150에서, 매크로블록은 프레임 내의 새로운 위치에 재배치되는데, 이 새로운 위치는 회전도에 기초한다. 매크로블록은 한 번 회전된 프레임의 모든 다른 매크로블록에 대해 동일 위치에 있도록 재배치된다는 것을 이해해야 한다. 일 실시예에서, 매크로블록의 회전 및 매크로블록의 재배치는 메모리에 액세스하기 전에 수행된다.In
단계 1160에서, 매크로블록은 표시를 위해 메모리에 저장된다. 일 실시예에서 단계 1170에 도시된 바와 같이, 디코딩된 매크로블록에 대해 디블록킹 동작이 수행된다. 단계 1170은 옵션이라는 것을 이해해야 한다. 더욱이, 단계 1170은 루프내 디블록킹 또는 루프외 비블록킹 및 디링잉(deringing)을 수행하는 단계를 포함할 수 있다는 것을 이해해야 한다.In
이와 같이, 본 발명의 실시예들은 다수의 비디오 표준에 따른 비디오 스트림들의 하드웨어 기반 디코딩을 지원하는 새로운 하드웨어 다중 표준 비디오 디코더 장치 아키텍처를 제공한다. 본 발명의 실시예들은 복수의 비디오 인코딩 표준 각각에 대한 실시간 디코딩을 제공할 수 있다. 본 발명의 실시예들은 디코딩된 비디오 스트림들에 대한 후처리 동작들을 제공한다. 본 발명의 일 실시예는 JPEG, MPEG-4, H.263, H.263+, H.264, 및 WMV9/VC-1 비디오 표준들 중 임의 표준을 이용하는 비디오 스트림들에 대한 비디오 디코딩을 제공하는 하드웨어 디코더 장치를 제공한다.As such, embodiments of the present invention provide a new hardware multi-standard video decoder device architecture that supports hardware-based decoding of video streams in accordance with multiple video standards. Embodiments of the present invention may provide real time decoding for each of a plurality of video encoding standards. Embodiments of the present invention provide post processing operations on decoded video streams. One embodiment of the present invention provides video decoding for video streams using any of the JPEG, MPEG-4, H.263, H.263 +, H.264, and WMV9 / VC-1 video standards. Provided is a hardware decoder device.
본 발명의 실시예들은 복수의 상이한 비디오 인코딩 표준에 대한 동시 비디오 디코딩 기능을 제공하기 위한 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 제공한다. 본 발명의 실시예들은 다수의 인터리빙된 비디오 스트림들을 동시에 디코딩할 수 있다.Embodiments of the present invention provide a hardware multi-stream multi-standard video decoder device for providing simultaneous video decoding functionality for a plurality of different video encoding standards. Embodiments of the present invention can decode multiple interleaved video streams simultaneously.
본 발명의 실시예들은 래스터 스캔 순서로 매크로블록들을 배열하기 위한 추가 메모리의 필요 없이 비디오 스트림의 루프내 디블록킹을 제공하기 위한 비디오 디코더 아키텍처를 제공한다. 본 발명의 실시예들은 마이크로코드 엔진에서 비디오 스트림의 매크로블록들을 배열할 수 있다. 본 발명의 실시예들은 복수의 지원되는 비디오 표준 중 하나를 이용하여 인코딩된 비디오 스트림에 대한 디코딩 및 루프외 디블록킹 및/또는 디링잉을 제공할 수 있다.Embodiments of the present invention provide a video decoder architecture for providing in-loop deblocking of a video stream without the need for additional memory to arrange macroblocks in raster scan order. Embodiments of the present invention may arrange macroblocks of a video stream in a microcode engine. Embodiments of the present invention may provide decoding and out-of-loop deblocking and / or deringing for a video stream encoded using one of a plurality of supported video standards.
본 발명의 실시예들은 비디오 스트림이 메모리에 기입되기 전에 비디오 스트림을 "온 더 플라이" 방식으로 회전시키기 위한 회전 엔진을 제공한다. 본 발명의 실시예들은 비디오 스트림의 매크로블록들이 수신될 때 이들을 회전시킴으로써 비디오 스트림을 회전시키고, 회전에 기초하여 매크로블록들을 프레임 내에 재배치할 수 있다. 본 발명의 실시예들은 디코딩된 매크로블록들을 메모리에 기입하기 전에 매크로블록들 상에 작용함으로써 디코딩된 프레임들의 2차 전달의 필요 없이 비디오 스트림들을 회전시킬 수 있다.Embodiments of the present invention provide a rotation engine for rotating a video stream in an "on the fly" manner before the video stream is written to memory. Embodiments of the present invention may rotate a video stream by rotating them when macroblocks of the video stream are received, and relocate the macroblocks within a frame based on the rotation. Embodiments of the present invention can rotate video streams without the need for secondary delivery of decoded frames by operating on macroblocks before writing the decoded macroblocks to memory.
본 발명의 특정 실시예들의 위의 설명들은 예시 및 설명의 목적으로 제공되었다. 이들은 포괄적이거나, 본 발명을 개시된 바로 그 형태로 제한하는 것을 의도하지 않으며, 위의 가르침에 비추어 많은 수정 및 변형이 가능하다. 실시예들은 본 발명의 원리들 및 그의 실제 응용을 최상으로 설명하여 이 분야의 전문가들이 본 발명 및 다양한 실시예를 고려되는 특정 이용에 적합한 바의 다양한 수정과 함께 최상으로 이용할 수 있도록 하기 위해 선택되고 설명되었다. 본 발명의 범위는 이에 첨부된 청구범위 및 그 균등물에 의해 정의되는 것을 의도한다.The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and many modifications and variations are possible in light of the above teaching. The embodiments are chosen to best illustrate the principles of the present invention and their practical applications and to enable those skilled in the art to best utilize it with various modifications as are suited to the particular use contemplated by the present invention and various embodiments. Was explained. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.
Claims (1)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/299,057 | 2005-12-09 | ||
US11/299,057 US9204158B2 (en) | 2005-12-09 | 2005-12-09 | Hardware multi-standard video decoder device |
US11/299,055 US9210437B2 (en) | 2005-12-09 | 2005-12-09 | Hardware multi-stream multi-standard video decoder device |
US11/299,055 | 2005-12-09 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087016391A Division KR101065546B1 (en) | 2005-12-09 | 2006-12-06 | A hardware multi-standard video decoder device |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20100046284A true KR20100046284A (en) | 2010-05-06 |
Family
ID=38163412
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107008555A KR20100046284A (en) | 2005-12-09 | 2006-12-06 | A hardware multi-standard video decoder device |
KR1020087016391A KR101065546B1 (en) | 2005-12-09 | 2006-12-06 | A hardware multi-standard video decoder device |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087016391A KR101065546B1 (en) | 2005-12-09 | 2006-12-06 | A hardware multi-standard video decoder device |
Country Status (6)
Country | Link |
---|---|
JP (1) | JP4891335B2 (en) |
KR (2) | KR20100046284A (en) |
CN (1) | CN101322321A (en) |
DE (1) | DE112006003307T8 (en) |
TW (1) | TW200735667A (en) |
WO (1) | WO2007070343A2 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8705630B2 (en) * | 2006-02-10 | 2014-04-22 | Nvidia Corporation | Adapting one type of encoder to another type of encoder |
PL3573337T3 (en) * | 2011-04-22 | 2022-09-26 | Dolby International Ab | Method and device for lossy compress-encoding image data |
CN109600619A (en) * | 2018-12-11 | 2019-04-09 | 晶晨半导体(上海)股份有限公司 | A kind of time-sharing multiplexing method of decoding hardware |
CN112672166B (en) * | 2020-12-24 | 2023-05-05 | 北京睿芯高通量科技有限公司 | Multi-code stream decoding acceleration system and method for video decoder |
CN114339257B (en) * | 2022-01-26 | 2023-11-28 | 稿定(厦门)科技有限公司 | Method and apparatus for decoding video file |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5576765A (en) * | 1994-03-17 | 1996-11-19 | International Business Machines, Corporation | Video decoder |
US5598222A (en) | 1995-04-18 | 1997-01-28 | Hatachi American, Ltd. | Method and apparatus for decoding multiple video bitstreams using a common memory |
US6366326B1 (en) * | 1996-08-01 | 2002-04-02 | Thomson Consumer Electronics Inc. | System for acquiring, processing, and storing video data and program guides transmitted in different coding formats |
JP3607798B2 (en) * | 1997-09-30 | 2005-01-05 | 松下電器産業株式会社 | Television receiver and video signal processing apparatus |
JP3492567B2 (en) * | 1999-09-24 | 2004-02-03 | シャープ株式会社 | Digital AV system capable of mutual data transmission and reception |
US20030079035A1 (en) * | 2001-10-18 | 2003-04-24 | Yazaki North America, Inc. | Multi-format media decoder and method of using same as an interface with a digital network |
JP2003152546A (en) * | 2001-11-15 | 2003-05-23 | Matsushita Electric Ind Co Ltd | Multi-format stream decoder and multi-format stream sender |
US8284844B2 (en) * | 2002-04-01 | 2012-10-09 | Broadcom Corporation | Video decoding system supporting multiple standards |
WO2003085494A2 (en) * | 2002-04-01 | 2003-10-16 | Broadcom Corporation | Video decoding system |
KR20050085273A (en) * | 2002-12-04 | 2005-08-29 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | Method and apparatus for selecting particular decoder based on bitstream format detection |
JP2005267172A (en) * | 2004-03-18 | 2005-09-29 | Sony Corp | Content reception system, device and method, recording medium, and program |
US7590059B2 (en) * | 2004-05-21 | 2009-09-15 | Broadcom Corp. | Multistandard video decoder |
US8705632B2 (en) * | 2005-03-30 | 2014-04-22 | Intel Corporation | Decoder architecture systems, apparatus and methods |
KR100668346B1 (en) * | 2005-10-04 | 2007-01-12 | 삼성전자주식회사 | Filtering apparatus and method for a multi-codec |
-
2006
- 2006-12-06 WO PCT/US2006/046741 patent/WO2007070343A2/en active Application Filing
- 2006-12-06 KR KR1020107008555A patent/KR20100046284A/en not_active Application Discontinuation
- 2006-12-06 KR KR1020087016391A patent/KR101065546B1/en active IP Right Grant
- 2006-12-06 CN CNA2006800455918A patent/CN101322321A/en active Pending
- 2006-12-06 DE DE200611003307 patent/DE112006003307T8/en not_active Expired - Fee Related
- 2006-12-06 JP JP2008544512A patent/JP4891335B2/en active Active
- 2006-12-07 TW TW095145665A patent/TW200735667A/en unknown
Also Published As
Publication number | Publication date |
---|---|
DE112006003307T8 (en) | 2009-01-29 |
JP4891335B2 (en) | 2012-03-07 |
KR101065546B1 (en) | 2011-09-19 |
CN101322321A (en) | 2008-12-10 |
TW200735667A (en) | 2007-09-16 |
DE112006003307T5 (en) | 2008-10-23 |
WO2007070343A2 (en) | 2007-06-21 |
JP2009518960A (en) | 2009-05-07 |
WO2007070343A3 (en) | 2008-01-17 |
KR20080082676A (en) | 2008-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9210437B2 (en) | Hardware multi-stream multi-standard video decoder device | |
US10397592B2 (en) | Method and apparatus for multi-threaded video decoding | |
US20090129478A1 (en) | Deblocking filter | |
US9161056B2 (en) | Method for low memory footprint compressed video decoding | |
JP2005510981A (en) | Multi-channel video transcoding system and method | |
US20080170611A1 (en) | Configurable functional multi-processing architecture for video processing | |
CN110121065B (en) | Multi-directional image processing in spatially ordered video coding applications | |
US9204158B2 (en) | Hardware multi-standard video decoder device | |
CN102761739B (en) | For dynamically adjusting the apparatus and method of video coding complexity | |
KR101065546B1 (en) | A hardware multi-standard video decoder device | |
US20060152394A1 (en) | Decoding device with multi-buffers and decoding method thereof | |
US7953161B2 (en) | System and method for overlap transforming and deblocking | |
US8443413B2 (en) | Low-latency multichannel video port aggregator | |
US9843811B2 (en) | Method for rotating macro-blocks of a frame of a video stream | |
US6928115B2 (en) | Compression-encoded data decoding apparatus cross-reference to related applications | |
JP2012505607A (en) | Method and apparatus for reducing bus traffic of a texture decoding module in a video decoder | |
US6829303B1 (en) | Methods and apparatus for decoding images using dedicated hardware circuitry and a programmable processor | |
CN115866297A (en) | Video processing method, device, equipment and storage medium | |
US7675972B1 (en) | System and method for multiple channel video transcoding | |
US20020114396A1 (en) | Image signal decoding apparatus | |
US20090150469A1 (en) | Unified inverse discrete cosine transform (idct) microcode processor engine | |
US9794593B1 (en) | Video decoder architecture for processing out-of-order macro-blocks of a video stream | |
KR100556341B1 (en) | Vedeo decoder system having reduced memory bandwidth | |
US20080056377A1 (en) | Neighboring Context Management | |
US20060267996A1 (en) | Apparatus and method for digital video decoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |