KR101376008B1 - 캐시 히트들을 향상시키기 위한 디코더에서의 시간 및 공간 비디오 블록 재정렬 - Google Patents

캐시 히트들을 향상시키기 위한 디코더에서의 시간 및 공간 비디오 블록 재정렬 Download PDF

Info

Publication number
KR101376008B1
KR101376008B1 KR1020127019359A KR20127019359A KR101376008B1 KR 101376008 B1 KR101376008 B1 KR 101376008B1 KR 1020127019359 A KR1020127019359 A KR 1020127019359A KR 20127019359 A KR20127019359 A KR 20127019359A KR 101376008 B1 KR101376008 B1 KR 101376008B1
Authority
KR
South Korea
Prior art keywords
video
frame
unit
units
blocks
Prior art date
Application number
KR1020127019359A
Other languages
English (en)
Other versions
KR20120096592A (ko
Inventor
블라단 안드리야닉
세라그 가델랍
Original Assignee
퀄컴 인코포레이티드
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 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20120096592A publication Critical patent/KR20120096592A/ko
Application granted granted Critical
Publication of KR101376008B1 publication Critical patent/KR101376008B1/ko

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/42Methods 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/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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
    • 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
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/176Methods 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 block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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

Landscapes

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

Abstract

본 개시물은 비디오 블록들의 디코딩 순서가 비디오 블록들의 디스플레이 순서와 관련하여 변경되는 기법들을 기술한다. 디코딩 순서는 상이한 비디오 프레임들 (또는 상이한 코딩된 유닛들) 의 비디오 블록들이 교번하는 방식으로 디코딩되도록 시간적으로 변경될 수도 있다. 이 경우, 비디오 블록들의 디코딩 순서는 2개 이상의 상이한 프레임들의 비디오 블록들 사이에서 교번할 수도 있다. 더욱이, 디코딩 순서는 또한 비디오 블록들이 비디오 블록들의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되도록, 소정 비디오 블록 내에서 공간적으로 변경될 수도 있다. 본 기법들은 캐시 히트들의 우도를 향상시켜 메모리의 사용을 향상시킴으로써, 외부 메모리로부터 디코더와 연관된 내부 캐시로의 메모리 로드들의 횟수를 감소시킬 수도 있다.

Description

캐시 히트들을 향상시키기 위한 디코더에서의 시간 및 공간 비디오 블록 재정렬 {TEMPORAL AND SPATIAL VIDEO BLOCK REORDERING IN A DECODER TO IMPROVE CACHE HITS}
본 개시물은 비디오 데이터를 압축하고 압축 해제하는데 사용되는 블록 기반의 디지털 비디오 코딩에 관한 것으로, 보다 자세하게는, 캐시 히트들을 실질적으로 최대화하고 캐시로의 메모리 로드들을 감소시키기 위해 비디오 블록들을 효율적으로 프로세싱하는 기법들에 관한 것이다.
디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 통신 디바이스들, 예컨대 무선 전화기 핸드셋들, 무선 브로드캐스트 시스템들, 개인 정보 단말기들 (PDAs), 랩탑 또는 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 리코딩 디바이스들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 및 기타 등등을 포함한 매우 광범위한 디바이스들에, 디지털 비디오 능력들이 통합되고 있다. 디지털 비디오 디바이스들은 디지털 비디오를 더 효율적으로 송수신하기 위해 MPEG-2, MPEG-4, 또는 ITU-T H.264/MPEG-4, Part 10, 고급 비디오 부호화 (Advanced Video Coding: AVC) 과 같은 비디오 압축 기법들을 구현한다. 비디오 압축 기법들은 비디오 시퀀스들에 고유한 리던던시를 저감하거나 제거하기 위해 공간 예측 및 시간 예측을 수행한다.
블록 기반의 비디오 압축 기법들은 공간 예측 및/또는 시간 예측을 수행할 수도 있다. 인트라-코딩 (Intra-coding) 은 비디오 프레임, 비디오 프레임의 슬라이스, 또는 기타 등등을 포함할 수도 있는 소정 코딩된 유닛 내 비디오 블록들 사이의 공간 리던던시를 저감하거나 또는 제거하기 위해 공간 예측에 의존한다. 이에 반해서, 인터-코딩 (inter coding) 은 비디오 시퀀스의 연속하는 코딩된 유닛들의 비디오 블록들 사이의 시간 리던던시를 저감하거나 또는 제거하기 위해 시간 예측에 의존한다. 인트라-코딩의 경우, 비디오 인코더는 동일 코딩된 유닛 내의 상이한 데이터에 기초하여 데이터를 압축하기 위해 공간 예측을 수행한다. 인터-코딩의 경우, 비디오 인코더는 본질적으로 2개 이상의 시간적으로 인접 코딩된 유닛들의 대응하는 비디오 블록들의 움직임을 추적하기 위해 모션 추정 및 모션 보상을 수행한다.
코딩된 비디오 블록은 예측 블록, 및 코딩되는 블록과 예측 블록 사이의 차이들을 나타내는 데이터의 잔여 블록 (residual block) 을 생성하거나 또는 식별하는데 사용될 수 있는 예측 정보로 표현될 수도 있다. 인터-코딩의 경우, 이전 또는 후속 코딩된 유닛으로부터의 데이터의 예측 블록을 식별하는데 하나 이상의 모션 벡터들이 이용되지만, 인트라-코딩의 경우, 그 코딩되는 비디오 블록과 연관된 코딩된 유닛 내의 데이터에 기초하여 예측 블록을 생성하는데 예측 모드가 이용될 수 있다. 인트라-코딩 및 인터-코딩 양자는 수개의 상이한 예측 모드들을 정의할 수도 있으며, 그 모드들 각각은 코딩에 이용되는 상이한 블록 사이즈들 및/또는 예측 기법들을 정의할 수도 있다. 또한, 코딩 프로세스에 이용되는 코딩 기법들 또는 파라미터들을 제어하거나 또는 정의하기 위해, 추가적인 유형의 구문 엘리먼트들이 인코딩된 비디오 데이터의 일부로서 포함될 수도 있다.
블록 기반의 예측 코딩 이후, 비디오 인코더는 잔여 블록의 통신과 연관된 비트 레이트를 추가로 저감하기 위해, 변환, 양자화 및 엔트로피 코딩 프로세스들을 적용할 수도 있다. 변환 기법들은 이산 코사인 변환들 (DCTs) 또는 개념적으로 유사한 프로세스들, 예컨대 웨이블릿 변환들, 정수 변환들, 또는 상이한 유형들의 변환들의 사용을 포함할 수도 있다. 일 예로서, DCT 프로세스에서, 변환 프로세스는 잔여 픽셀 값들의 세트를 주파수 영역에서 그 잔여 픽셀 값들의 에너지를 나타낼 수도 있는 변환 계수들로 변환한다. 양자화가 그 변환 계수들에 적용되며, 일반적으로 임의의 소정 변환 계수와 연관된 비트들의 수를 제한하는 프로세스를 수반한다. 엔트로피 코딩은 양자화된 변환 계수들의 시퀀스를 집합적으로 압축하는 하나 이상의 프로세스들을 포함한다.
본 개시물은 비디오 블록들의 디코딩 순서가 비디오 블록들의 디스플레이 순서와 관련하여 변경되는 기법들을 개시한다. 디코딩 순서는 상이한 비디오 프레임들 (또는 상이한 코딩된 유닛들) 의 비디오 블록들이 병렬로 디코딩되는 동시에, 상이한 프레임들의 비디오 블록들의 디코딩 순서가 교번하거나 또는 인터리브되도록, 시간적으로 (temporally) 변경될 수도 있다. 특히, 비디오 블록들의 디코딩 순서는 2개 이상의 상이한 프레임들의 비디오 블록들 사이에서 교번할 수도 있다. 더욱이, 디코딩 순서는 또한 비디오 블록들이 비디오 블록들의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되도록, 소정 비디오 블록 내에서 공간적으로 변경될 수도 있다. 본 기법들은 디코더에서 캐시 히트들의 우도를 향상시켜 메모리의 사용을 향상시킴으로써, 외부 메모리로부터 디코더와 연관된 내부 캐시로의 메모리 로드들의 횟수를 저감시킬 수도 있다. 디코딩 순서는 캐시에 이미 저장된 예측 데이터가 디코딩에 필요로 하고 이용될 우도를 촉진시키는 방법으로 명확하게 정의될 수도 있으며, 디코딩 프로세스 동안 외부 메모리로부터 내부 캐시에의 메모리 로드들을 감소시킬 수도 있다.
일 예에서, 본 개시물은 비디오 데이터를 디코딩하는 방법을 설명한다. 본 방법은 디코더에서 비디오 유닛들의 시퀀스를 수신하는 단계로서, 상기 시퀀스가 비디오 유닛들의 디스플레이 순서를 정의하는, 상기 수신하는 단계, 및 디코더를 통해, 상호 의존할 수 없는 비디오 유닛들의 서브세트를 식별하는 단계를 포함한다. 또한, 본 방법은 메모리로부터 캐시로 예측 데이터를 로드하는 단계로서, 상기 캐시가 디코더와 연관되는, 상기 예측 데이터를 로드하는 단계, 및 캐시 내의 예측 데이터에 적어도 부분적으로 기초하여 인코딩된 비디오 유닛들의 서브세트의 비디오 블록들을 디코딩하는 단계를 포함할 수 있으며, 상기 비디오 블록들을 디코딩하는 단계는 제 2 비디오 유닛의 적어도 일부 비디오 블록들이 제 1 비디오 유닛의 적어도 일부 비디오 블록들 이전에 디코딩되는 디코딩 순서를 정의하는 단계를 포함할 수 있으며, 제 2 비디오 유닛은 디스플레이 순서에서 제 1 비디오 유닛 이후에 발생할 수 있다.
또다른 예에서, 본 개시물은 비디오 디코더 및 연관된 캐시를 포함하고 비디오 데이터를 디코딩하는 장치를 설명한다. 비디오 디코더는 비디오 유닛들의 시퀀스를 수신하도록 구성되며, 그 시퀀스는 비디오 유닛들의 디스플레이 순서를 정의한다. 또한, 비디오 디코더는 상호 의존할 수 없는 비디오 유닛들의 서브세트를 식별하고, 메모리로부터 캐시로 예측 데이터를 로드하고, 그리고 캐시 내의 예측 데이터에 적어도 부분적으로 기초하여 인코딩된 비디오 유닛들의 서브세트의 비디오 블록들을 디코딩하도록 구성된다. 더욱이, 비디오 블록들을 디코딩할 때에, 디코더는 제 2 비디오 유닛의 적어도 일부 비디오 블록들이 제 1 비디오 유닛의 적어도 일부 비디오 블록들 이전에 디코딩되는 디코딩 순서를 정의하며, 제 2 비디오 유닛은 디스플레이 순서에서 제 1 비디오 유닛 이후에 발생한다.
또다른 예에서, 본 개시물은 비디오 데이터를 디코딩하는 디바이스를 기술하며, 상기 디바이스는 비디오 유닛들의 시퀀스를 수신하는 수단으로서, 상기 시퀀스가 비디오 유닛들의 디스플레이 순서를 정의하는, 상기 수신하는 수단, 상호 의존할 수 없는 비디오 유닛들의 서브세트를 식별하는 수단, 메모리로부터 캐시로 예측 데이터를 로드하는 수단, 및 캐시 내의 예측 데이터에 적어도 부분적으로 기초하여 인코딩된 비디오 유닛들의 서브세트의 비디오 블록들을 디코딩하는 수단을 포함하며, 상기 비디오 블록들을 디코딩하는 수단은 제 2 비디오 유닛의 적어도 일부 비디오 블록들이 제 1 비디오 유닛의 적어도 일부 비디오 블록들 이전에 디코딩되는 디코딩 순서를 정의하는 수단을 포함하고, 제 2 비디오 유닛은 디스플레이 순서에서 제 1 비디오 유닛 이후에 발생한다.
본 개시물에서 설명한 기법들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 하드웨어로 구현되는 경우, 장치는 집적회로, 프로세서, 이산 로직, 또는 이들의 임의의 조합으로 실현될 수도 있다. 소프트웨어로 구현되는 경우, 그 소프트웨어는 마이크로프로세서, 주문형 집적회로 (ASIC), 필드 프로그래밍가능한 게이트 어레이 (FPGA), 또는 디지털 신호 프로세서 (DSP) 와 같은, 하나 이상의 프로세서들로 실행될 수도 있다. 본 기법들을 실행하는 소프트웨어는 컴퓨터-판독가능 매체에 먼저 저장된 후, 프로세서에 로드되어 실행될 수도 있다.
따라서, 본 개시물은 또한 프로세서에서 실행시, 프로세서로 하여금, 비디오 유닛들의 디스플레이 순서를 정의하는 비디오 유닛들의 시퀀스를 수신하자 마자, 상호 의존할 수 없는 비디오 유닛들의 서브세트를 식별하는 명령, 메모리로부터 캐시로 예측 데이터를 로드하는 명령, 및 캐시 내의 예측 데이터에 적어도 부분적으로 기초하여 인코딩된 비디오 유닛들의 서브세트의 비디오 블록들을 디코딩하는 명령을 포함하는 컴퓨터 판독가능 매체를 고려한다. 비디오 블록들을 디코딩할 때, 상기 명령들은 프로세서로 하여금, 제 2 비디오 유닛의 적어도 일부 비디오 블록들이 제 1 비디오 유닛의 적어도 일부 비디오 블록들 이전에 디코딩되는 디코딩 순서를 정의하도록 하며, 제 2 비디오 유닛은 디스플레이 순서에서 제 1 비디오 유닛 이후에 발생한다.
본 개시물의 하나 이상의 양태들의 세부 사항들이 첨부도면들 및 하기 설명에 개시된다. 본 개시물에서 설명한 기법들의 다른 특징들, 목적들 및 이점들은 설명 및 도면들로부터, 그리고 청구범위로 부터 명백히 알 수 있을 것이다.
도 1 은 예시적인 비디오 인코딩 및 디코딩 시스템을 도시하는 예시적인 블록도이다.
도 2 는 예시적인 비디오 인코더를 도시하는 블록도이다.
도 3 은 본 개시물과 부합하는 디코딩 기법들을 수행할 수도 있는 예시적인 비디오 디코더를 도시하는 블록도이다.
도 4 는 비디오 디코더의 예측 유닛 및 메모리를 더 자세히 도시하는 블록도이다.
도 5 는 비디오 블록들의 래스터 스캐닝 순서와는 상이한 디코딩 순서로 디코딩될 수도 있는, 비디오 프레임과 같은, 비디오 블록들의 유닛을 도시하는 개념도이다.
도 6 은 프레임 내의 매크로블록들의 공간 재정렬을 도시하는 개념도이다.
도 7 은 병렬로 디코딩될 수도 있는, 비디오 프레임들과 같은, 비디오 블록들의 2개의 상이한 유닛들을 도시하는 개념도이다.
도 8a 는 비디오 유닛들의 IBPBP 패턴을 도시하는 개념도이다.
도 8b 는 비디오 유닛들의 IBBPBBP 패턴을 도시하는 개념도이다.
도 9 는 병렬로 디코딩될 수도 있는 비디오 블록들을 갖는 프레임들을 도시하는 개념도이다.
도 10a 는 비디오 유닛들을 입력 스트림에서 정의되는 디스플레이 순서로 도시하는 개념도이다.
도 10b 는 디스플레이 순서와는 상이한 디코딩 순서에 따른 비디오 유닛들의 디코딩을 도시하는 개념도이다.
도 11 는 본 개시물에 따른 디코딩 기법을 도시하는 흐름도이다.
본 개시물은 비디오 블록들의 디코딩 순서가 비디오 블록들의 디스플레이 순서와 관련하여 변경되는 기법들을 설명한다. 디코딩 순서는 상이한 비디오 프레임들 (또는 상이한 코딩된 유닛들) 의 비디오 블록들이 병렬로 디코딩되는 동시에, 상이한 프레임들의 비디오 블록들의 디코딩 순서가 교번되거나 또는 인터리브되도록, 시간적으로 변경될 수도 있다. 특히, 비디오 블록들의 디코딩 순서는 2개 이상의 상이한 프레임들의 비디오 블록들 사이에서 교번할 수도 있다. 더욱이, 디코딩 순서가 또한 비디오 블록들이 비디오 블록들의 래스터 스캐닝 순서에 대응하지 않는 디코딩 순서로 디코딩되도록, 소정 비디오 블록 내에서 공간적으로 변경될 수도 있다.
본 기법들은 예측 데이터를 메모리로부터 디코더와 연관된 캐시로 로드하는 것을 포함할 수도 있다. 비디오 블록들의 디코딩 순서는 캐시에 로드된 데이터의 이용을 촉진하는 방식으로 정의될 수도 있으며, 캐시 내의 데이터가 캐시 내의 데이터에 의존하는 임의의 예측 디코딩에 사용될 때까지 추가적인 메모리로부터의 캐시 리-로드들을 수행할 필요성을 감소시킬 수도 있다. 이러한 방법으로, 본 기법들은 캐시 히트들의 우도를 향상시켜 메모리의 사용을 향상시킴으로써, 외부 메모리로부터 디코더와 연관된 내부 캐시로의 메모리 로드들의 횟수를 저감시킬 수도 있다.
캐시에 이미 저장된 예측 데이터가 디코딩에 필요로 하고 이용되는 우도를 촉진하는 방식으로 디코딩 순서가 명확히 정의될 수도 있으며, 디코딩 프로세스 동안 외부 메모리로부터 내부 캐시로의 메모리 로드들을 감소시킬 수도 있다. 본 기법들은 비디오 유닛들의 시퀀스의 적어도 일 부분에 걸쳐 평균 모션 (average motion) 을 양자화하는 글로벌 모션 메트릭과 같은 통계적 메트릭을 이용할 수도 있다. 또다른 예에서, 통계적 메트릭은 제 1 비디오 유닛과 제 2 비디오 유닛 사이에 비디오 블록들의 평균 모션을 양자화하는 평균 모션 메트릭을 포함할 수도 있다. 어쨌든, 디코딩 순서가 디코딩 프로세스에서 메모리로부터 캐시로의 데이터 리로드를 요구함이 없이 캐시 히트들의 우도를 향상시키기 위해 통계적 메트릭에 의하여 적어도 부분적으로 정의될 수도 있다.
도 1 은 본 개시물의 기법들을 구현할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 도시하는 블록도이다. 도 1 에 나타낸 바와 같이, 시스템 (10) 은 통신 채널 (15) 을 통해서 인코딩된 비디오를 목적지 디바이스 (16) 로 송신하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 및 목적지 디바이스 (16) 는 광범위한 디바이스들 중 임의의 디바이스를 포함할 수도 있다. 일부의 경우, 소스 디바이스 (12) 및 목적지 디바이스 (16) 는 소위, 셀룰러 또는 위성 무선전화기들과 같은, 무선 통신 디바이스 핸드셋들을 포함할 수도 있다. 그러나, 비디오 디코딩에 더 일반적으로 적용하는, 본 개시물의 기법들은 반드시 무선 애플리케이션들 또는 셋팅들로 국한되지는 않으며, 비디오 디코딩 능력들을 포함하는 비-무선 디바이스들, 예컨대 컴퓨터들, 게이밍 콘솔들, 텔레비전 셋탑 박스들, 멀티미디어 플레이어들, 디스플레이들 등에 적용될 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (20), 비디오 인코더 (22), 변조기/복조기 (모뎀) (23) 및 송신기 (24) 를 포함할 수도 있다. 목적지 디바이스 (16) 는 수신기 (26), 모뎀 (27), 비디오 디코더 (28), 및 디스플레이 디바이스 (30) 를 포함할 수도 있다. 소스 디바이스 (12) 의 비디오 인코더 (22) 는 비디오 소스 (20) 로부터 수신된 비디오 데이터를 인코딩할 수도 있다. 비디오 소스 (20) 는 비디오 캡쳐 디바이스, 예컨대 비디오 카메라, 이전에 캡쳐된 비디오를 수용하는 비디오 아카이브 (archive), 또는 비디오 콘텐츠 제공자로부터 제공된 비디오를 포함할 수도 있다. 추가적인 대안으로서, 비디오 소스 (20) 는 소스 비디오로서, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터-생성된 비디오의 조합으로서 컴퓨터 그래픽 기반 데이터를 생성할 수도 있다. 일부의 경우, 비디오 소스 (20) 가 비디오 카메라인 경우, 소스 디바이스 (12) 및 목적지 디바이스 (16) 는 소위, 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 각 경우, 캡쳐된, 사전 캡쳐된 또는 컴퓨터-생성된 비디오는 비디오 인코더 (22) 에 의해 인코딩될 수도 있다.
일단 비디오 데이터가 비디오 인코더 (22) 에 의해 인코딩되면, 그 인코딩된 비디오 정보는 코드분할 다중접속 (CDMA) 또는 또다른 통신 표준 또는 기법과 같은 통신 표준에 따라서 모뎀 (23) 에 의해 변조되어, 송신기 (24) 를 경유해서 목적지 디바이스 (16) 로 송신될 수도 있다. 모뎀 (23) 은 여러 믹서들, 필터들, 증폭기들 또는 신호 변조용으로 설계된 다른 구성요소들을 포함할 수도 있다. 송신기 (24) 는 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함한, 데이터를 송신하기 위해 설계된 회로들을 포함할 수도 있다.
목적지 디바이스 (16) 의 수신기 (26) 는 채널 (15) 을 거쳐서 정보를 수신하고, 모뎀 (27) 은 그 정보를 복조한다. 비디오 디코더 (28) 에 의해 수행되는 비디오 디코딩 프로세스는 디코딩 프로세스 동안 메모리 사용을 향상시키기 위해 본 개시물의 기법들을 구현할 수도 있다. 구체적으로 말하면, 비디오 디코더 (28) 는 디코더 (28) 의 내부 캐시에 저장된 데이터의 사용을 촉진하는 방식으로 시간 비디오 블록 재정렬 및 가능하게는 공간 비디오 블록 재정렬을 구현할 수도 있다. 그렇게 함으로써, 디코더가 외부 메모리 (도 1 에 미도시) 로부터 디코더 (28) 의 내부 캐시로의 메모리 로드들의 양을 최소화하는데 도움을 줄 수도 있다.
비디오 디코더 (28) 는 ITU-T H.264/AVC 또는 또다른 표준과 같은 블록 기반의 예측 인코딩 기법 또는 표준에 따라서 비디오 블록들을 디코딩한다. 그후, 디코딩된 비디오 데이터를 형성하기 위해 그 디코딩된 비디오 블록들은 비디오 프레임들에 조합될 수 있다. 디스플레이 디바이스 (28) 는 그 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기발광 다이오드 (OLED) 디스플레이, 또는 또다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디바이스를 포함할 수도 있다.
통신 채널 (15) 은 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신선들, 또는 임의의 무선 매체와 유선 매체의 조합과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수도 있다. 통신 채널 (15) 은 로칼 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷 기반 네트워크의 일부를 형성할 수도 있다. 통신 채널 (15) 은 일반적으로 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (16) 로 송신하는 임의의 적합한 통신 매체, 또는 다른 통신 매체들의 컬렉션을 나타낸다.
비디오 인코더 (22) 및 비디오 디코더 (28) 는 ITU-T H.264/AVC 표준과 같은 비디오 압축 표준에 따라서 상호간에 (reciprocally) 동작할 수도 있다. 또한, ITU-T H.264 표준은 MPEG-4, Part 10, 고급 비디오 부호화 (Advanced Video Coding: AVC) 에 설명되어 있다. 그러나, 본 개시물의 기법들은 임의의 특정의 표준으로 국한되지 않으며, 다양한 다른 비디오 코딩 표준들 또는 기법들 중 임의의 표준 또는 기법에 용이하게 적용될 수도 있다.
도 1 에 나타내지는 않았지만, 일부 양태에서, 비디오 인코더 (22) 및 비디오 디코더 (28) 는 오디오 인코더 및 디코더와 각각 통합될 수도 있으며, 공통 데이터 스트림 또는 별개의 데이터 스트림들에서 오디오 및 비디오 양자의 인코딩을 처리하기 위해 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용가능한 경우, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜들에 따를 수도 있다.
비디오 인코더 (22) 및 비디오 디코더 (28) 는 각각 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 주문형 집적회로들 (ASICs), 필드 프로그래밍가능한 게이트 어레이들 (FPGAs), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들로 구현될 수도 있다. 비디오 인코더 (22) 및 비디오 디코더 (28) 각각은 각각의 모바일 디바이스, 가입자 디바이스, 브로드캐스트 디바이스, 서버 등에서 결합된 인코더/디코더 (CODEC) 의 일부로서 통합될 수도 있는, 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있다.
일부의 경우, 디바이스들 (12, 16) 은 실질적으로 대칭적인 방식으로 동작할 수도 있다. 예컨대, 디바이스들 (12, 16) 각각은 비디오 인코딩 및 디코딩 구성요소들을 포함할 수도 있다. 따라서, 시스템 (10) 은 예컨대, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 비디오 전화통화를 위해, 비디오 디바이스들 (12, 16) 사이에 일 방향 또는 2 방향 비디오 송신을 지원할 수도 있다.
특히, 본 개시물의 기법들은 비디오 디코더 (28) 에 의해 구현되는 디코딩 프로세스 동안 적용한다. 구체적으로 말하면, 비디오 디코더 (28) 는 디코딩가능한 유닛들의 비디오 블록들, 예컨대 비디오 프레임들을 재정렬하는 디코딩 기법들을 실행할 수도 있다. 더 자세히 말하면, 프레임들, 슬라이스들, 프레임들의 부분들, 화상 그룹들 (GOPs), 또는 다른 데이터 구조들은, 복수의 비디오 블록들을 각각 포함하는 독립적으로 디코딩가능한 유닛들로서 정의될 수도 있다. 일부의 경우, 각 비디오 프레임은 일련의 독립적으로 디코딩가능한 슬라이스들을 포함할 수도 있으며, 각 슬라이스는 심지어 더 작은 블록들로 배열될 수도 있는 일련의 매크로블록들을 포함할 수도 있다. 용어들 "코딩된 유닛" 및 "비디오 유닛" 은 프레임들, 슬라이스들, 프레임들의 부분들, 화상 그룹들 (GOPs), 또는 독립적으로 디코딩가능한 다른 데이터 구조들을 지칭한다. 코딩된 유닛들 내의 비디오 블록들은 고정된 또는 가변 사이즈들을 가질 수도 있으며, 지정된 코딩 표준에 따라서 사이즈가 상이할 수도 있다. 구문 데이터는 각 코딩된 유닛이 연관된 구문 데이터를 포함하도록, 코딩된-유닛 마다 (per coded-unit basis) 정의될 수도 있다.
비디오 블록들은 소위, 비디오 데이터의 매크로블록들, 또는 다른 사이즈의 블록들을 포함할 수도 있다. 일반적으로, 매크로블록들은 데이터의 16 x 16 블록들을 지칭한다. ITU-T H.264 표준은 인트라 예측을 여러 블록 사이즈들, 예컨대 루마 성분들의 경우 16 x 16, 8 x 8, 또는 4 x 4 으로, 그리고 크로마 성분들의 경우 8 x 8 으로 지원할 뿐만 아니라, 인터 예측을 여러 블록 사이즈들, 예컨대 루마 성분들의 경우 16 x 16, 16 x 8, 8 x 16, 8 x 8, 8 x 4, 4 x 8 및 4 x 4 으로 그리고 크로마 성분들의 경우 대응하는 스케일링된 사이즈들로 지원한다. 매크로블록은 16 x 16 픽셀들을 일괄적으로 정의하는 크로마 및 루마 블록들의 세트를 지칭할 수도 있다. 크로마 비디오 블록들은 종종 하향 샘플링되며, 루마 블록들은 가변 사이즈들을 취할 수도 있다. 본 개시물에서, 어구 "비디오 블록" 은 임의의 사이즈의 비디오 블록을 지칭한다. 비디오 블록들은 크로마 블록들, 루마 블록들, 또는 가능하게는 매크로블록들을 일괄하여 형성하는 크로마 및 루마 블록들의 세트를 지칭할 수도 있다. 더욱이, 비디오 블록들은 픽셀 영역 내의 비디오 데이터의 블록들, 또는 이산 코사인 변환 (DCT) 영역, DCT 와 유사한 영역, 웨이블릿 영역 등과 같은 변환 영역 내의 데이터의 블록들을 지칭할 수도 있다.
비디오 인코더 (22) 는, 예측 블록을 식별하기 위해, 코딩되는 비디오 블록을 예측 프레임 (또는 다른 코딩된 유닛) 과 비교하는 예측 코딩을 수행할 수도 있다. 코딩되고 있는 현재 비디오 블록과 예측 블록 사이의 차이들이 잔여 블록으로서 코딩되며, 예측 블록을 식별하기 위해 예측 구문이 이용된다. 그 잔여 블록은 변환되고 양자화될 수도 있다. 변환 기법들은 DCT 프로세스 또는 개념적으로 유사한 프로세스, 정수 변환들, 웨이블릿 변환들, 또는 다른 유형들의 변환들을 포함할 수도 있다. 일 예로서, DCT 프로세스에서, 변환 프로세스는 픽셀 값들의 세트를, 주파수 영역에서 픽셀 값들의 에너지를 나타낼 수도 있는 변환 계수들로 변환한다. 양자화가 일반적으로 그 변환 계수들에 적용되며, 대개 임의의 소정 변환 계수와 연관되는 비트들의 수를 제한하는 프로세스를 수반한다.
변환 및 양자화 후에, 엔트로피 코딩이 그 양자화된 및 변환된 잔여 비디오 블록들에 대해 수행될 수도 있다. 구문 엘리먼트들, 예컨대 인코딩 동안 정의된 필터 정보 및 예측 벡터들이, 또한 각 코딩된 유닛에 대한 엔트로피 코딩된 비트스트림에 포함될 수도 있다. 보통, 엔트로피 코딩은 양자화된 변환 계수들 및/또는 다른 구문 정보의 시퀀스를 일괄적으로 압축하는 하나 이상의 프로세스들을 포함한다. 2차원 비디오 블록들로부터 계수들의 하나 이상의 직렬화된 1차원 벡터들을 정의하기 위해, 그 양자화된 변환 계수들에 대해, 예컨대, 엔트로피 코딩 프로세스의 일부로서, 지그재그 스캐닝 기법들과 같은 스캐닝 기법들이 수행된다. 그후, 그 스캐닝 계수들이 예컨대, 콘텐츠 적응 가변 길이 코딩 (content adaptive variable length coding; CAVLC), 컨텍스트 적응 2진 산술연산 코딩 (context adaptive binary arithmetic coding; CABAC), 또는 또다른 엔트로피 코딩 프로세스를 통해서, 임의의 구문 정보와 함께 엔트로피 코딩된다.
언급한 바와 같이, 특히 본 개시물의 기법들은 비디오 디코더 (28) 에 의해 수행되는 디코딩 프로세스에 적용한다. 특히, 언급한 바와 같이 비디오 디코더 (28) 는 시간 비디오 블록 재정렬, 및 가능하게는 공간 비디오 블록 재정렬을, 디코더 (28) 의 내부 캐시에 저장된 데이터의 사용을 촉진하는 방식으로, 구현할 수도 있다. 디코딩 프로세스를 이해하는 것을 돕기 위해, 먼저 예시적인 인코딩 프로세스를 설명하기 위해 도 2 가 설명된다.
도 2 는 본 개시물에 부합하는 비디오 인코더 (50) 를 도시하는 블록도이다. 비디오 인코더 (50) 는 시스템 (10) 의 비디오 인코더 (22), 또는 다른 디바이스의 비디오 인코더에 대응할 수도 있다. 도 2 에 나타낸 바와 같이, 비디오 인코더 (50) 는 예측 유닛 (32), 가산기들 (48 및 51), 및 메모리 (34) 를 포함한다. 또한, 비디오 인코더 (50) 는 변환 유닛 (38) 및 양자화 유닛 (40) 뿐만 아니라 역양자화 유닛 (42) 및 역변환 유닛 (44) 을 포함한다. 또한, 비디오 인코더 (50) 는 엔트로피 코딩 유닛 (46) 을 포함한다. 또한, 이 인코딩 프로세스에서 하나 이상의 필터들 (미도시) 이 구현될 수도 있다.
인코딩 프로세스 동안, 비디오 인코더 (50) 는 코딩되는 비디오 블록을 수신하고, 예측 유닛 (32) 은 예측 코딩 기법들을 수행한다. 인터 코딩의 경우, 예측 유닛 (32) 은 예측 블록을 정의하기 위해, 그 인코딩되는 비디오 블록을 하나 이상의 비디오 참조 프레임들 또는 슬라이스들에서의 여러 블록들과 비교한다. 인트라 코딩의 경우, 예측 유닛 (32) 은 동일 코딩된 유닛 내의 인접한 데이터에 기초하여 예측 블록을 생성한다. 예측 유닛 (32) 은 예측 블록을 출력하고 가산기 (48) 는 그 코딩되는 비디오 블록으로부터 예측 블록을 감산하여, 잔여 블록을 생성한다.
인터 코딩의 경우, 예측 유닛 (32) 은 예측 블록을 가리키는 모션 벡터를 식별하고 그 모션 벡터에 기초하여 예측 블록을 생성하는 모션 추정 및 모션 보상 유닛들을 포함할 수도 있다. 일반적으로, 모션 추정은 모션을 추정하는 모션 벡터를 생성하는 프로세스로 간주된다. 예컨대, 모션 벡터는 현재 프레임 내의 현재 코딩되는 블록에 대한, 예측 프레임 내의 예측 블록의 변위를 나타낼 수도 있다. 모션 보상은 일반적으로 모션 추정에 의해 결정된 모션 벡터에 기초하여, 예측 블록을 페치하거나 또는 생성하는 프로세스로 간주된다. 인트라 코딩의 경우, 예측 유닛 (32) 은 동일 코딩된 유닛 내의 인접한 데이터에 기초하여 예측 블록을 생성한다. 하나 이상의 인트라-예측 모드들은 인트라 예측 블록이 정의될 수 있는 방법을 정의할 수도 있다.
예측 유닛 (32) 이 예측 블록을 출력하고 가산기 (48) 가 그 코딩되는 비디오 블록으로부터 예측 블록을 감산하여 잔여 블록을 생성한 후에, 변환 유닛 (38) 은 그 잔여 블록에 변환을 적용한다. 이 변환은 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환, 예컨대 H.264 표준에 의해 정의되는 변환을 포함할 수도 있다. 또한, 웨이블릿 변환들, 정수 변환들, 서브-밴드 변환들 또는 다른 유형들의 변환들이 이용될 수 있을 것이다. 어쨌든, 변환 유닛 (38) 은 그 잔여 블록에 변환을 적용하여, 잔여 변환 계수들의 블록을 생성한다. 이 변환은 잔여 정보를 픽셀 영역으로부터 주파수 영역으로 변환할 수도 있다.
그후, 양자화 유닛 (40) 은 비트 레이트를 추가로 감소시키기 위해 잔여 변환 계수들을 양자화한다. 양자화 유닛 (40) 은, 예를 들어, 계수들 각각을 코딩하는 데에 사용되는 비트들의 수를 제한할 수도 있다. 양자화 이후, 엔트로피 코딩 유닛 (46) 은 그 양자화된 계수 블록을 2차원 표현으로부터 하나 이상의 직렬화된 1차원 벡터들까지 스캐닝한다. 스캐닝 순서는 정의된 순서 (예컨대, 지그재그 스캐닝 또는 또다른 미리 정의된 순서) 로, 또는 가능하게는 이전 코딩 통계치에 기초하여 적응적으로 정의된 순서로, 일어나도록 사전 프로그래밍될 수도 있다.
이 스캐닝 프로세스 이후, 엔트로피 코딩 유닛 (46) 은 데이터를 추가로 압축하기 위해, 그 양자화된 변환 계수들을 (임의의 구문 엘리먼트들과 함께) CAVLC 또는 CABAC 과 같은 엔트로피 코딩 방법론에 따라서, 인코딩한다. 엔트로피 코딩된 비트스트림에 포함되는 구문 엘리먼트들은 인터 코딩의 경우의 모션 벡터들 또는 인트라 코딩의 경우의 예측 모드들과 같은, 예측 유닛 (32) 으로부터의 예측 구문을 포함할 수도 있다. 또한, 그 엔트로피 코딩된 비트스트림에 포함되는 구문 엘리먼트들은 필터 정보 또는 디코딩 프로세스에 이용될 수도 있는 다른 데이터를 포함할 수도 있다.
CAVLC 은 엔트로피 코딩 유닛 (46) 에 의해 벡터화 방식으로 (on a vectorized basis) 적용될 수 있고 ITU H.264/MPEG4, AVC 표준에 의해 지원되는 엔트로피 코딩 기법의 한 유형이다. CAVLC 은 변환 계수들 및/또는 구문 엘리먼트들의 직렬화된 "런들 (runs)" 을 효과적으로 압축하는 방식으로 가변 길이 코딩 (VLC) 테이블들을 이용한다. CABAC 는 엔트로피 코딩 유닛 (46) 에 의해 벡터화 방식으로 적용될 수 있고 ITU H.264/MPEG4, AVC 표준에 의해 지원되는 엔트로피 코딩 기법의 또다른 유형이다. CABAC 는 이진화, 컨텍스트 모델 선택 및 2진 산술연산 코딩을 포함한, 수개의 스테이지들을 수반할 수도 있다. 이 경우, 엔트로피 코딩 유닛 (46) 은 CABAC 에 따라서 변환 계수들 및 구문 엘리먼트들을 코딩한다. 또한, 많은 다른 유형의 엔트로피 코딩 기법들이 존재하며, 새로운 엔트로피 코딩 기법들이 미래에 십중팔구 나타날 것이다. 본 개시물은 임의의 특정의 엔트로피 코딩 기법에 한정되지 않는다.
엔트로피 코딩 유닛 (46) 에 의한 엔트로피 코딩 이후, 인코딩된 비디오는 또다른 디바이스로 송신되거나 또는 추후 송신 또는 취출을 위해 아카이브될 수도 있다. 또한, 인코딩된 비디오는 엔트로피 코딩된 모션 벡터들 및 디코더에 의해 디코딩 프로세스를 적절하게 구성하는데 이용될 수도 있는 다른 여러 구문을 포함할 수도 있다. 역양자화 유닛 (42) 및 역변환 유닛 (44) 은 역양자화 및 역변환을 각각 적용하여, 픽셀 영역에서 그 잔여 블록을 재구성한다. 합산기 (51) 는 그 재구성된 잔여 블록을 예측 유닛 (32) 에 의해 생성된 예측 블록에 가산하여, 메모리 (34) 에의 저장을 위해 재구성된 비디오 블록을 생성한다. 또한, 그러한 저장 이전에, 비디오 품질을 향상시키기 위해 필터링이 비디오 블록에 적용될 수도 있다. 그러한 필터링은 블록 현상 (blockiness) 또는 다른 아티팩트들 (artifacts) 을 저감할 수도 있으며, 루프 내에서 (이 경우, 예측에 이용된 데이터는 필터링된 데이터임) 또는 루프 이후에 (이 경우, 예측에 이용된 데이터는 필터링되지 않은 데이터임) 수행될 수도 있다.
도 3 은 본 개시물의 기법들 중 하나 이상의 기법을 이용하여 비디오 시퀀스를 디코딩하는 비디오 디코더 (60) 의 예를 도시하는 블록도이다. 수신된 비디오 시퀀스는 인코딩된 이미지 프레임들의 세트, 프레임 슬라이스들의 세트, 공통적으로 코딩된 화상 그룹 (GOPs), 또는 인코딩된 비디오 블록들과 그러한 비디오 블록들을 디코딩하는 방법을 정의하는 구문을 포함하는 매우 다양한 코딩된 비디오 유닛들을 포함할 수도 있다. 비디오 디코더 (60) 는 도 1 의 시스템 (10) 의 비디오 디코더 (28) 에 대응하거나, 또는 또다른 디바이스의 비디오 디코더를 포함할 수도 있다. 도 3 에 도시된 여러 구성요소들은 예시적인 목적을 위해 나타낸 것이다. 여러 구성요소들이 조합될 수도 있으며 다른 구성요소들이 존재할 수도 있다.
아래에서 더 자세히 설명하는 바와 같이, 비디오 디코더 (60) 는 종래의 디코딩 기법들에 대해서 비디오 블록들의 디코딩 순서를 변경하거나 또는 조정할 수도 있다. 통상적으로, 비디오 유닛들은 그 디코딩 순서로 순차적으로 디코딩될 수도 있다. 더욱이, 각 비디오 유닛의 비디오 블록들은 비디오 유닛의 좌상단 코너의 제 1 비디오 블록으로부터 우하단 코너의 최종 비디오 블록으로, 래스터 스캐닝 순서로 디코딩될 수도 있다. 그러나, 본 개시물의 기법들은 이 비디오 블록들의 디코딩 순서를 메모리의 효율적인 사용을 촉진시키는 방법으로 변경한다.
디코딩 순서는 상이한 비디오 프레임들 또는 슬라이스들 (또는 상이한 코딩된 유닛들) 의 비디오 블록들이 병렬로 디코딩되도록, 시간적으로 변경될 수도 있다. 이 경우, 비디오 블록들의 디코딩 순서가 2개 이상의 상이한 프레임들의 비디오 블록들 사이에서 교번할 수도 있다. 더욱이, 디코딩 순서는 또한 비디오 블록들이 비디오 블록들의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되도록, 소정 비디오 블록 내에서 공간적으로 변경될 수도 있다. 이와 달리 수행될 수도 있을 디코딩보다 더 빠른 디코딩을 위해 정렬되어야 되는 그들 비디오 블록들을 예측하는 것을 돕는 데에는, 캐시 (70) 내의 데이터가 대체되기 전에 그러한 비디오 블록 디코딩이 그러한 데이터를 이용할 수 있도록, 통계적 메트릭이 이용될 수도 있다. 이러한 방법으로, 캐시 (70) 에 대한 메모리 로드들의 횟수가 시간 경과에 따라 저감될 수도 있다.
비디오 디코더 (60) 는 도 2 의 엔트로피 코딩 유닛 (46) 에 의해 수행되는 인코딩의 역의 (reciprocal) 디코딩 기능을 수행하는 엔트로피 디코딩 유닛 (52) 을 포함한다. 특히, 엔트로피 디코딩 유닛 (52) 은 CAVLC 또는 CABAC 디코딩, 또는 비디오 인코더 (50) 에 의해 이용되는 임의의 다른 유형의 엔트로피 디코딩을 수행할 수도 있다. 1차원 직렬화된 포맷의 엔트로피 디코딩된 비디오 블록들은 계수들의 하나 이상의 1차원 벡터들을 2차원 블록 포맷으로 변환하기 위해, 역스캐닝될 수도 있다. 벡터들의 수와 사이즈 뿐만 아니라, 비디오 블록들에 대해 정의된 스캐닝 순서는, 2차원 블록이 재구성되는 방법을 정의할 수도 있다. 엔트로피 디코딩된 예측 구문 엘리먼트들, 예컨대 모션 벡터들 (및 가능하게는 다른 디코딩된 구문 엘리먼트들) 은 엔트로피 디코딩 유닛 (52) 으로부터 예측 유닛 (54) 으로 전송될 수도 있다.
또한, 비디오 디코더 (60) 는 예측 유닛 (54), 역양자화 유닛 (56), 역변환 유닛 (58), 메모리 (62) 및 합산기 (64) 를 포함한다. 게다가, 비디오 디코더 (60) 는 또한 합산기 (64) 의 출력을 필터링하는 필터 유닛 (미도시) 을 포함할 수도 있다. 예측 유닛 (54) 은 비교적 빠른 내부 메모리 회로, 예컨대 메모리 (62) 보다 빠르고 더 작은 회로를 포함할 수도 있는 연관된 캐시 (70) 를 포함할 수도 있다. 디코딩 프로세스에 요구될 캐시 (70) 내의 데이터를 촉진하기 위해 예측 데이터가 하나 이상의 비디오 유닛들의 통계치에 기초하여 메모리 (62) 로부터 캐시 (70) 로 로드될 수도 있다. 더욱이, 그러한 데이터를 리로드할 필요없이 캐시 (70) 내의 데이터의 사용을 더욱 촉진하기 위해, 상이한 코딩된 비디오 유닛들의 비디오 블록들의 디코딩 순서가 디스플레이 순서에 대응하지 않도록, 그 디코딩 순서가 변경될 수도 있다. 그 디코딩 프로세스가 2개 이상의 상이한 비디오 유닛들의 비디오 블록들 사이에서 교번하도록, 2개 이상의 비디오 유닛들이 병렬로 디코딩될 수도 있다. 이 경우, 예측 유닛 (54) 은 상호 의존할 수 없는 비디오 유닛들을 식별할 수도 있으며, 캐시 (70) 내의 데이터의 이용을 촉진하기 위해, 코딩 통계치를 이용하여, 캐시 (70) 를 팝퓰레이트하고 비디오 블록들의 디코딩 순서를 정의할 수도 있다. 제 1 비디오 유닛의 비디오 블록들이 제 2 비디오 유닛의 비디오 블록들을 가리키는 모션 벡터들을 가질 수 없는 경우에, 그리고 반대의 경우에도, 제 1 비디오 유닛 및 제 2 비디오 유닛은 상호 의존할 수 없다.
예측 유닛 (54) 은 엔트로피 디코딩 유닛 (52) 으로부터 (모션 벡터들과 같은) 예측 구문을 수신한다. 이 예측 구문을 이용하여, 예측 유닛 (54) 은 캐시 (70) 로부터, 가산기 (64) 를 통해서 잔여 블록들과 결합될 수도 있는 예측 블록들을 생성한다. 역양자화 유닛 (56) 은 역양자화를 수행하고, 역변환 유닛 (58) 은 잔여 비디오 블록들의 계수들을 픽셀 영역으로 역으로 변경하는 역변환들을 수행한다. 가산기 (64) 는 각 예측 블록을, 역변환 유닛 (58) 에 의해 출력된 대응하는 잔여 블록과 결합시켜, 소정 비디오 블록을 재구성한다.
일반적으로, 비디오 디코더 (60) 는 비디오 유닛들의 시퀀스를 수신할 수도 있으며, 그 시퀀스는 비디오 유닛들의 디스플레이 순서를 정의할 수도 있다. 예측 유닛 (54) 은 상호 의존할 수 없는 비디오 유닛들의 서브세트를 식별할 수도 있으며, 예측 데이터를 메모리 (62) 로부터 캐시 (70) 로 로드할 수도 있으며, 이때 캐시 (70) 는 디코더 (60) 의 예측 유닛 (54) 과 연관된다. 또한, 메모리 (62) 는 디코더 (70) 와 연관될 수도 있고, 또는 다른 프로세서들 또는 유닛들과 공유되는 외부 메모리일 수도 있다. 그러나, 보통, 캐시 (70) 는 메모리 (62) 보다 사이즈가 더 작고 메모리 액세스 속도가 더 빠른 메모리 회로를 포함할 수도 있다. 특히, 캐시 (70) 의 사이즈는 수개의 매크로블록 로우 (row) 들의 시작 시를 제외한 어디서든지 캐시 웜업 (warm-up) 에 대한 필요성을 피할 수 있도록 설계될 수도 있다. 특히, 캐시의 사이즈는 캐시 미스들 (misses) 을 최소화하도록 선택될 수도 있다. 프로세스는 (수개의 프레임들로부터) 4 개의 매크로블록 로우들의 연속적인 세트들로 이동할 수도 있으며, 프로세스가 매크로블록 로우들의 또다른 세트로 이동할 때, 캐시 내의 데이터는 비교적 큰 프레임 폭으로 인해 유효하지 않는 것으로 예상될 수도 있다. 이 경우, 웜업 기간 동안에 많은 캐시 미스들이 예상될 수도 있지만, 그 웜업 기간 이후에, 본 개시물의 기법들은 발생할 수 있는 그러한 캐시 실패들을 저감하는 데 도움이 될 수도 있다.
예측 유닛 (54) 은 캐시 (70) 내의 예측 데이터에 적어도 부분적으로 기초하여, 인코딩된 비디오 유닛들의 서브세트의 비디오 블록들을 디코딩할 수도 있다. 본 개시물에 따르면, 예측 유닛 (54) 은 제 2 비디오 유닛의 적어도 일부 비디오 블록들이 제 1 비디오 유닛의 적어도 일부 비디오 블록들 이전에 디코딩되고 제 2 비디오 유닛이 디스플레이 순서에서 제 1 비디오 유닛 뒤에 발생하는 디코딩 순서를 정의할 수도 있다. 메모리 (62) 및 캐시 (70) 는 매우 다양한 메모리 회로들 중 임의의 회로를 포함할 수도 있다. 일반적으로, 캐시 (70) 는 메모리 (62) 에 비해 더 작고 빠른 메모리이다. 일 예로서, 메모리 (62) 는 동적 랜덤 액세스 메모리 (DRAM) 를 포함할 수도 있으며 캐시 (70) 는 정적 랜덤 액세스 메모리 (SRAM) 또는 내장 DRAM 을 포함할 수도 있다.
인코딩된 비디오 유닛들의 시퀀스는 비디오 프레임들의 시퀀스, 비디오 프레임들의 부분들의 시퀀스, 또는 비디오 프레임들의 슬라이스들의 시퀀스를 포함할 수도 있다. 디코딩 순서는 제 1 인코딩된 비디오 유닛의 하나 이상의 비디오 블록들과, 제 2 비디오 유닛의 하나 이상의 비디오 블록들 사이에서 교번할 수도 있다. 본 개시물에 따르면, 디코딩 순서는, 캐시를 리로드할 필요없이, 캐시에 로드된 예측 데이터가 비디오 유닛들의 서브세트의 비디오 블록들을 디코딩하는데 사용되는 우도를 실질적으로 향상시킬 수 있도록 정의될 수도 있다.
또한, 디코딩 순서는 소정 코딩된 유닛의 비디오 블록들에 대해 공간적으로 정의되거나 또는 변경될 수도 있다. 이 경우, 디코딩 순서는 제 1 비디오 유닛의 비디오 블록들이 제 1 비디오 유닛의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되고 제 2 비디오 유닛의 비디오 블록들이 제 2 비디오 유닛의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되도록, 예측 유닛 (54) 에 의해 정의될 수도 있다. 따라서, 제 1 비디오 유닛의 제 2 로우의 적어도 하나의 비디오 블록은 제 1 비디오 유닛의 제 1 로우의 적어도 하나의 비디오 블록 이전에 디코딩될 수도 있으며, 이때 제 2 로우는 비디오 유닛의 디스플레이된 버전에서 제 1 로우보다 아래에 있다.
디코딩 순서를 정의하기 위해, 예측 유닛 (54) 은 상이한 코딩된 비디오 유닛들에서의 비디오 블록들의 통계치를 이용할 수도 있다. 예측 유닛 (54) 또는 가능하게는 엔트로피 디코딩 유닛 (52) 또는 별개의 사전 프로세싱 유닛 (미도시) 은 통계치를 생성하기 위해 미리 수개의 프레임들에 대한 비디오 스트림을 사전 프로세싱할 수도 있다. 통계치는 사전 프로세싱된 프레임들 및 연관된 참조 프레임 리스트들 모두에 대한 글로벌 모션 벡터를 포함할 수도 있다. 글로벌 모션 벡터는, 이 상황에서, 임의의 리얼 모션을 나타내지 않을 수도 있지만, 예컨대, 사전 프로세싱된 프레임들 모두에 대한, 그 스트림에서의 평균 모션 벡터를 포함할 수도 있다. 글로벌 모션 벡터는 참조 데이터 독출 시에 최상의 중첩 기회를 제공하는 프레임들 사이의 평균 수평 및 수직 변위를 식별하기 위해 이용될 수도 있다. 프레임들 사이의 평균 수평 및 수직 변위는, 중첩하는 참조 데이터를 가질 상이한 프레임들의 적당한 영역들을 정의하기 위해, 예컨대, 가장 가까운 16 개의 픽셀들에 대해, 정량화되고 사사오입될 수도 있다. 사전에 미리 프로세싱된 프레임들은 프레임들의 슬라이딩 윈도우를 포함하거나, 또는 아래에서 더 자세히 설명하는, IBPBP 프레임들의 세트 또는 IBBPBBP 프레임들의 세트와 같은, 별개의 프레임들의 세트를 포함할 수도 있다.
또한, 예측 유닛 (54) (또는, 사전 프로세싱을 수행하는 또다른 유닛) 은 예컨대, 그러한 비디오 유닛들이 예측을 위해 서로의 데이터에 의존하지 않는다는 것을 의미하는, 상호 의존할 수 없는 2개 이상의 비디오 유닛들을 먼저 결정할 수도 있다. 서로 관련되지 않는 이들 유형들의 비디오 유닛들은 병렬로 디코딩될 수도 있으며, 캐시 (70) 에 로드된 데이터가 (비디오 블록들의 정의된 코딩 순서와 함께) 캐시 (70) 로의 이중 로드들이 회피될 것을 보장하는 데 도움이 될 수도 있다. 메모리 (62) 로부터 캐시 (70) 에 로드된 임의의 예측 데이터는, 그러한 비디오 블록들이 비디오 유닛 내에서 비순차적이거나 또는 2개 이상의 상이한 비디오 유닛들에 포함되더라도, 수개의 비디오 블록들의 디코딩에 이용될 수도 있다.
일 예에서, 예측 유닛 (54) 은 그 비디오 유닛들의 시퀀스에서 비디오 블록들과 연관된 통계적 메트릭을 정의할 수도 있으며, 적어도 부분적으로 그 통계적 메트릭에 따라 디코딩 순서를 결정할 수도 있다. 통계적 메트릭은 비디오 유닛들의 시퀀스의 적어도 일 부분에 걸쳐서 평균 모션을 정량화하는 글로벌 모션 메트릭을 포함할 수도 있다. 또다른 예에서, 예측 유닛 (54) 은 제 1 비디오 유닛과 제 2 비디오 유닛 사이에 비디오 블록들의 평균 모션을 정량화하는 평균 모션 메트릭을 결정할 수도 있으며, 이때 제 1 비디오 유닛 및 제 2 비디오 유닛은 상호 의존할 수 없는 유닛들이다. 따라서, 예측 유닛 (54) 은 적어도 부분적으로 평균 모션 메트릭에 따라 디코딩 순서를 결정할 수도 있다.
아래에서 더 자세히 설명하는 바와 같이, 본 개시물의 기법들은 비디오 유닛들의 공통으로 사용되는 시퀀스들과 작업할 수도 있다. 일 예에서, 비디오 유닛들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 2 P-프레임을 포함하는 IBPBP 포맷을 따르며, 여기서, 비디오 유닛들의 서브세트는 제 1 B-프레임 및 제 2 P-프레임으로 이루어진다. 또다른 예에서, 비디오 유닛들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 3 B-프레임, 뒤이어서 제 4 B-프레임, 뒤이어서 제 2 P-프레임을 포함하는 IBBPBBP 포맷에 따를 수도 있으며, 여기서 비디오 유닛들의 서브세트는 제 1 B-프레임, 제 2 B-프레임 및 제 2 P-프레임으로 이루어진다. 사전 프로세싱이 별개의 IBPBP 프레임들의 세트들 또는 별개의 IBBPBBP 프레임들의 세트들에 대해 일어나거나, 또는 프레임들의 슬라이딩 윈도우에 걸쳐서 평균 모션을 정의하기 위해 슬라이딩 윈도우에서 이루어질 수 있다. 또한, 본 기법은 프레임들의 슬라이스들 또는 다른 부분들과 같은 다른 유형들의 비디오 유닛들에 적용될 수도 있다.
용어 I-프레임은 인트라-코딩된 프레임을 지칭한다. 용어 P-프레임은 예측 데이터의 한 세트에 의존하는 예측 인터-코딩된 프레임을 지칭한다. 용어 B-프레임은 (예컨대, 2개의 상이한 프레임들로부터) 2개의 상이한 예측 데이터 세트들에 의존하는 양방향-예측 인터-코딩된 프레임을 지칭한다. IBPBP 및 IBBPBBP 는 비디오 시퀀스들이 인코딩되는 2개의 일반적인 방식들이다. 본 개시물의 기법들은 이들 또는 다른 인코딩된 비디오 시퀀스들에 적용될 수도 있다.
도 4 는 예측 유닛 (54) 및 메모리 (62) 를 더 자세히 도시하는 블록도이다. 나타낸 바와 같이, 예측 유닛 (54) 은 캐시를 포함하며, 캐시는 외부 메모리 (72) 에 비해 작고 빠른 메모리를 포함할 수도 있다. 예측 유닛은 메모리 페치 (fetch) 지령들을 메모리 제어기 (71) 로 발하여, 데이터가 외부 메모리 (72) 로부터 예측 유닛 (54) 의 내부 캐시 (70) 로 로드되도록 할 수도 있다. 메모리 (72) 는, 다른 상황에서는 디코더 (50) 를 형성하는 프로세서의 외부에 위치된다는 점에서, 외부에 있을 수도 있다. 이에 반해서, 캐시 (70) 는 디코더 (50) 를 형성하는 프로세서에 대한 내부 메모리를 포함할 수도 있다. 프로세서는 도 3 에 나타낸 다른 유닛들 및 모듈들의 여러 기능들을 수행하도록 프로그래밍되거나 또는 구성될 수도 있다.
또한, 본 개시물은 예측 데이터를 메모리 (62) 로부터 캐시 (70) 로 로드하는 것을 포함하는 기법들을 제공한다. 비디오 블록들의 디코딩 순서가 캐시 (70) 에 로드된 데이터의 사용을 촉진하는 방식으로 정의되므로, 캐시 (70) 내의 데이터가 그러한 데이터에 의존하는 임의의 예측 디코딩에 이용될 때까지 추가적인 메모리-캐시 리로드를 수행할 필요성을 감소시킬 수도 있다. 이러한 방법으로, 본 기법들은 캐시 (70) 에서 캐시 히트들의 우도를 향상시켜 메모리 (62) 및 캐시 (70) 의 사용을 향상시킴으로써, 외부 메모리 (72) 로부터의 메모리 로드들의 횟수를 감소시킬 수도 있다.
또한, 디코딩 순서는, 상이한 비디오 프레임들 (또는 상이한 코딩된 유닛들) 의 비디오 블록들이 교번하는 방식으로 디코딩되도록, 시간적으로 변경될 수도 있다. 이 경우, 비디오 블록들의 디코딩 순서는 2개 이상의 상이한 프레임들의 비디오 블록들 사이에서 교번할 수도 있다. 더욱이, 디코딩 순서는 또한, 비디오 블록들이 비디오 블록들의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되도록, 소정 비디오 블록 내에서 공간적으로 변경될 수도 있다.
도 5 는 비디오 블록들의 래스터 스캐닝 순서와는 상이한 디코딩 순서로 디코딩될 수도 있는, 비디오 프레임과 같은 비디오 블록들의 비디오 유닛 (77) 을 도시하는 개념도이다. 이 시나리오는 비디오 유닛 (77) 의 비디오 블록들의 디코딩 순서의 공간 재정렬로서 지칭될 수도 있다. 도 5 에서, 비디오 유닛 (77) 의 비디오 블록들은 래스터 스캐닝 순서로 1 부터 64 까지 라벨되어 있다. 그러나, 본 개시물에 따르면, 비디오 유닛 (77) 의 비디오 블록들의 디코딩 순서는 이 래스터 스캐닝 순서와 다를 수도 있다. 특히, 제 1 로우 (row) 의 비디오 블록들 (VB 1 내지 VB 8) 모두를 디코딩하기 전에, 제 2 로우의 하나 이상의 비디오 블록들 (VB 9 내지 VB 16) 을 디코딩하는 것이 유리할 수도 있다. 예컨대, VB 1 및 VB 10 이, VB 1 및 VB 10 의 공간적 근접성으로 인해, VB 1 및 VB 9 보다 동일 예측 데이터에 의존할 가능성이 더 클 수도 있다. 이러한 이유로, VB 8 을 디코딩하기 전에, VB 10 을 디코딩하는 것이 캐시 (70) 의 사용의 관점에서 더 유리할 수도 있다. 디코딩이 최초에 수행되었던 인코딩에 의존하기 때문에, 비디오 디코더 (50) 는 디코딩 순서를 정의하기 위해, 도 5 에 나타낸 비디오 블록들의 모션 벡터들의 모션 벡터 통계치를 이용할 수도 있다. 모션 벡터들의 일반적인 통계치 (예컨대, 비디오 유닛 (77) 의 평균 모션) 는, 캐시 히트들을 촉진하고 캐시 (70) 내의 데이터를 로드하여 대체시킬 필요성을 감소시키기 위해, 비디오 디코더 (50) 로 하여금 캐시 (70) 에 로드된 데이터의 세트에 대해서 바람직한 디코딩 순서를 추정하게 할 수도 있다.
도 6 은 프레임 내에서 매크로블록들의 공간 재정렬을 도시하는 개념도이다. 나타낸 바와 같이, 로우 (66) 의 제 1 매크로블록이 디코딩된다. 그후, 로우 (67) 로부터의 제 2 매크로블록이 디코딩된다. 다음으로, 로우 (68) 로부터의 제 3 매크로블록이 디코딩되고, 마지막으로 로우 (69) 로부터의 제 4 매크로블록이 디코딩된다. 이때, 로우 (66) 로부터의 다음 매크로블록이 디코딩될 수도 있다. 이러한 방법으로, 소정 비디오 유닛의 비디오 블록들이 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되도록, 디코딩 순서가 정의된다. 즉, 제 1 비디오 유닛의 제 2 로우의 적어도 하나의 비디오 블록이 제 1 비디오 유닛의 제 1 로우의 적어도 하나의 비디오 블록 이전에 디코딩되며, 여기서, 제 2 로우는 제 1 로우보다 아래에 있다. 이것은 참조 프레임으로부터의 참조 영역 (65) 이 캐시 (70)(도 3) 에서 더 충분히 활용되게 하므로, 메모리 (62) 로부터 캐시 (70) 로의 데이터의 로드 및 리로드를 회피할 수 있도록 한다.
도 7 은 병렬로 디코딩될 수도 있는, 2개의 상이한 비디오 프레임들과 같은 비디오 블록들의 2개의 상이한 유닛들 (78 및 79) 을 도시하는 개념도이다. 이 시나리오는 비디오 유닛들 (78 및 79) 의 비디오 블록들의 디코딩 순서의 시간 재정렬로서 지칭될 수도 있다. 본 개시물은 캐시 사용을 향상시키고 캐시 히트들을 실질적으로 최대화하기 위해, 비디오 블록들의 시간 재정렬 및 공간 재정렬 양자 모두를 고려한다.
시간 재정렬의 경우, 비디오 디코더 (50) 는 디코딩 프로세스에서 비디오 유닛들 (78 및 79) 의 비디오 블록들 사이에서 교번할 수도 있다. 도 7 에서, 비디오 유닛 (78) 의 비디오 블록들은 1 부터 64 까지 래스터 스캐닝 순서로 라벨되어 있으며, 이와 유사하게, 비디오 유닛 (79) 의 비디오 블록들은 1 부터 64 까지 래스터 스캐닝 순서로 라벨되어 있다. 그러나, 본 개시물에 따르면, 비디오 유닛들 (78 및 79) 의 비디오 블록들의 디코딩 순서는, 비디오 유닛들 (78 및 79) 의 비디오 블록들이 병렬로 함께 디코딩될 수도 있는 한, 이 래스터 스캐닝 순서들과 다를 수도 있다. 특히, 비디오 유닛 (78) 의 비디오 블록들 모두를 디코딩하기 전에, 비디오 유닛 (79) 의 하나 이상의 비디오 블록들을 디코딩하는 것이 유리할 수도 있다.
예컨대, 동일-위치된 또는 인접하게 위치된 비디오 유닛들 (78 및 79) 의 비디오 블록들은 소정 비디오 유닛의 2개의 더 공간적으로 떨어진 비디오 블록들 보다 동일 예측 데이터에 의존할 가능성이 더 클 수도 있다. 이러한 이유로, 비디오 유닛 (78) 의 VB 8 를 디코딩하기 전에, 비디오 유닛 (79) 의 VB 1 을 디코딩하는 것이 캐시 (70) 의 사용의 관점에서 더 유리할 수도 있다. 비디오 유닛들 (78 및 79) 은 상호 의존하지 않을 수도 있는데, 이는 비디오 유닛 (78) 이 예측을 위해 비디오 유닛 (79) 의 임의의 데이터에 의존하지 않고 비디오 유닛 (79) 이 예측을 위해 비디오 유닛 (78) 의 임의의 데이터에 의존하지 않는다는 것을 의미한다. 이것은 비디오 유닛들 (78 및 79) 의 병렬 디코딩 및 디코딩 프로세스에서 비디오 유닛들 (78 및 79) 의 비디오 블록들 사이의 교번을 허용한다.
비디오 디코더 (50) 는 디코딩 순서를 정의하기 위해, 비디오 유닛 (79) 의 비디오 블록들의 모션 벡터들에 대한 비디오 유닛 (78) 의 비디오 블록들의 모션 벡터들의 모션 벡터 통계치를 이용할 수도 있다. 이 경우, 그 디코딩 동안 유사한 데이터를 이용할 수도 있는 그들 비디오 블록들을 추정하기 위해, 비디오 유닛 (78) 과 비디오 유닛 (79) 사이의 상대적인 모션이 이용될 수도 있다. 일 예로서, 비디오 유닛들 (78 및 79) 에 나타낸 굵은 활자체의 블록들은 예측 데이터의 공통 세트에 모두 의존할 수도 있다. 그러나, 비디오 유닛 (79) 의 굵은 활자체의 블록들은, 나타낸 바와 같이, 비디오 유닛 (78) 의 굵은 활자체의 블록들에 대한 모션을 갖는다. 비디오 유닛 (79) 의 비디오 블록들에 대해 비디오 유닛 (78) 의 비디오 블록들의 평균 모션이 그 예상된 모션을 정량화하거나 추정하는데 이용됨으로써, 비디오 디코더로 하여금 비디오 유닛 (78) 및 비디오 유닛 (79) 의 비디오 블록들 사이에서 교번하는 교번 비디오 블록 디코딩 순서를 정의하게 할 수도 있다. 이러한 방법으로, 디코딩 동안 유사한 데이터에 의존하는 비디오 유닛들 (78 및 79) 의 그들 비디오 블록들이 시간적으로 더 가깝게 디코딩되어, 그에 따라서, 캐시 (70) 내의 캐시의 우도를 최대하는 것을 돕고, 그 디코딩 프로세스에 걸쳐서 캐시 (70) 로의 중복적인 메모리 로드들을 감소시킬 수도 있다.
도 8a 는 비디오 유닛들의 IBPBP 패턴을 도시하는 개념도이다. IBPBP 포맷에서, 비디오 프레임들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 2 P-프레임을 포함한다. 이 경우, 제 1 B-프레임 및 제 2 P-프레임은 상호 의존할 수 없다. 따라서, 비디오 디코더 (50) 는 제 1 B-프레임 및 제 2 P-프레임을, 병렬로 함께 디코딩하기 위한 후보자들로서 식별하거나 또는 정의할 수도 있다. 이 경우, 비디오 디코더 (50) 는 비디오 프레임들을 순차적으로 프로세싱할 수도 있지만, 제 1 B-프레임의 비디오 블록들과 제 2 P-프레임의 비디오 블록들 사이에서 교번하면서, 제 1 B-프레임과 제 2 P-프레임을 병렬로 디코딩할 수도 있다.
도 8b 는 비디오 유닛들의 IBBPBBP 패턴을 도시하는 개념도이다. IBBPBBP 포맷에서, 비디오 프레임들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 3 B-프레임, 뒤이어서 제 4 B-프레임, 뒤이어서 제 2 P-프레임을 포함한다. 이 경우, 제 1 B-프레임, 제 2 B-프레임 및 제 2 P-프레임은 상호 의존할 수 없다. 따라서, 비디오 디코더 (50) 는 제 1 B-프레임, 제 2 B-프레임 및 제 2 P-프레임을, 병렬로 함께 디코딩하기 위한 후보자들로서 식별하거나 또는 정의할 수도 있다. 이 경우, 비디오 디코더 (50) 는 일반적으로 비디오 프레임들을 순차적으로 프로세싱할 수도 있지만, 제 1 B-프레임, 제 2 B-프레임 및 제 2 P-프레임의 비디오 블록들 사이에서 교번하면서, 제 1 B-프레임, 제 2 B-프레임 및 제 2 P-프레임을 병렬로 디코딩할 수도 있다.
도 9 는 병렬로 디코딩될 수도 있는 비디오 블록들을 갖는 프레임들을 도시하는 개념도이다. 도 9 에 나타낸 시나리오는 비디오 프레임들이 IBBPBBP 포맷을 따르는 도 8b 의 시나리오와 유사할 수도 있다. 이 IBBPBBP 포맷의 프레임들은 P/I-프레임 0, B-프레임 1, B-프레임 2, P-프레임 3, B-프레임 4, B-프레임 5 및 P-프레임 6 으로 라벨될 수도 있다. 이들 프레임들 중 단지 일부가 도 9 에 도시되어 있다.
도 9 는 디코딩 동안 참조 프레임 판독이 상이한 프레임들에서의 매크로블록들에 대한 동일 영역에서 비롯되는 한 예를 도시한 것이다. 시간적으로 및 공간적으로 인접한 매크로블록들에서의 모션 벡터들 사이의 상관성에 따라서, 연속 프로세싱되는 매크로블록들의 판독 영역의 유사성이 변할 수 있다. 도 9 에서, MB 는 매크로블록을 나타내고, 그 표기는 로우 및 칼럼 위치들을 나타낸다 (예컨대, 로우는 k 이고, 칼럼은 n 이고, Dv1 은 프레임들 사이의 수직 변위이고, Dh1 은 프레임들 사이의 수평 변위이다). Dv1 및 Dh1 는 여기서 설명하는 글로벌 모션 벡터들과 같은 통계적 메트릭에 기초할 수도 있다.
도 9 에 나타낸 바와 같이, B-프레임 1, B-프레임 2 및 P-프레임 6 모두는 P-프레임 3 및 I/P-프레임 0 으로부터의 데이터에 의존할 수도 있다. 도 9 에 나타낸 B-프레임 1, B-프레임 2 및 P-프레임 6 의 도시된 비디오 블록들은, 예를 들어, P-프레임 3 및 I/P 프레임 0 의 영역들 (81 및 82) 각각에 의해 정의되는 데이터의 서브세트들에 각각 의존할 수도 있다. 이 경우, 그 영역들 (81 및 82) 내의 데이터가 추후 디코딩을 위해 캐시 (70) 를 리로드하기 전에 캐시 (70) 에서 완전하게 활용될 수 있도록, B-프레임 1, B-프레임 2 및 P-프레임 6 의 비디오 블록들을 병렬로 디코딩하는 것이 이점이 있을 수 있다.
따라서, 비디오 디코더 (50) 는 상이한 프레임들의 비디오 블록들 사이에서 교번하는, B-프레임 1, B-프레임 2 및 P-프레임 6 의 비디오 블록들에 대해 디코딩 순서를 정의할 수도 있다. 예를 들어, 비디오 디코더 (50) 는 B-프레임 1 로부터의 블록, 뒤이어서 B-프레임 2 로부터의 블록, 뒤이어서 P-프레임 6 으로부터의 블록, 뒤이어서 B-프레임 1 로부터의 또다른 블록, 뒤이어서 B-프레임 2 로부터의 또다른 블록, 뒤이어서 P-프레임 6 으로부터의 또다른 블록 등을 디코딩할 수도 있다. 여기서 설명하는 바와 같이, 상이한 프레임들의 글로벌 모션, 또는 그 모션 벡터들에 기초하여 하나 이상의 통계적 메트릭들에 의해 정의된 그러한 프레임들의 상대적인 모션이, 비디오 블록들 사이의 교번이 일어나는 각 프레임 내의 공간적 위치들을 정의하는데 이용될 수도 있다. 즉, 비디오 블록들 사이의 교번이, 함께 위치된 (co-located) 비디오 블록들에 대해서는 일어나지 않을 수도 있지만, 그러한 프레임들 사이의 평균 모션의 추정된 양 만큼 오프셋된 상이한 프레임들의 비디오 블록들에 대해서 일어날 수도 있다. 캐시 (70) 의 사용을 더욱 향상시키기 위해, 비디오 블록들의 시간 재정렬이 각 프레임 내의 비디오 블록들의 공간 재정렬과 조합될 수도 있다.
도 10a 는 비디오 유닛들을 입력 스트림에 정의되는 바와 같은 디스플레이 순서로 도시하는 개념도이다. 이 예에서, 입력 스트림은 I-프레임, 뒤이어서 P-프레임, 뒤이어서 b-프레임, 뒤이어서 b-프레임, 뒤이어서 P-프레임, 뒤이어서 B-프레임, 뒤이어서 b-프레임, 뒤이어서 b-프레임, 뒤이어서 P-프레임, 뒤이어서 b-프레임, 뒤이어서 P-프레임을 포함한다. B-프레임들은 예측 데이터로서 이용되는 양방향-예측 프레임들을 포함할 수도 있는 반면, b-프레임들은 예측 데이터로서 이용될 수 없는 양방향-예측 프레임들을 포함할 수도 있다. 도면부호들 91, 92, 93 및 94 으로 정의되는 프레임들의 세트들은 동시에 디코딩될 수 있는 세트들일 수도 있다. 세트 (91) 는 어떠한 상호 의존성도 갖지 않을 수도 있다. 이와 유사하게, 세트 (92), 세트 (93) 및 세트 (94) 는 또한 각 소정 세트 내에서 어떠한 상호 의존성도 갖지 않을 수도 있다. 따라서, 이들 세트들 (91, 92, 93 및 94) 각각은 디코더 (50) 에 의해, 함께 디코딩가능한 것으로 식별될 수도 있다.
도 10b 는 디스플레이 순서와는 상이한 디코딩 순서에 따른 비디오 유닛들의 디코딩을 도시하는 개념도이다. 이 경우, 디코더 (50) 는 I-프레임 디코딩을, 뒤이어서 P-프레임 디코딩을 수행할 수도 있다. 그후, 디코더 (50) 는 예컨대, 도 10a 의 세트 (91) 에 의해 정의된, b-프레임 1, b-프레임 2 및 P-프레임에 대해서, 디코딩을 병렬로 수행할 수도 있다. 이 경우, 디코더 (50) 는 위에서 설명한 바와 같이 캐시 (70) 을 더 효율적으로 이용하기 위해, 세트 (91) 내 상이한 프레임들의 비디오 블록들 사이에서 교번할 수도 있다.
다음으로, 디코더 (50) 는 세트 (92) 의 P-프레임 디코딩과 병렬로 B-프레임 디코딩을 수행할 수도 있다. 다음으로, 디코더 (50) 는 세트 (93) 의 b-프레임 디코딩과 병렬로 b-프레임 디코딩을 수행할 수도 있다. 마지막으로, 디코더 (50) 는 세트 (94) 의 P-프레임 디코딩과 병렬로 b-프레임 디코딩을 수행할 수도 있다. 디코딩을 병렬로 수행할 때에, 디코더 (50) 는 메모리 리로드들을 요하지 않고 캐시 (70) 내의 데이터의 사용을 촉진하는 비디오 블록들의 시간 재정렬에 따라서, 상이한 프레임들의 비디오 블록들 사이에서 교번할 수도 있다. 동시에, 캐시 히트들의 횟수를 더욱 향상시키기 위해, 각 개개의 프레임에 대한 비디오 블록들의 공간 재정렬이 또한 비디오 디코더 (50) 에 의해 수행될 수도 있다.
도 11 은 본 개시물에 따른 디코딩 기법을 도시하는 흐름도이다. 도 5 에 나타낸 바와 같이, 비디오 디코더 (50) 는 디스플레이 순서를 정의하는 비디오 유닛들의 시퀀스를 수신한다 (101). 비디오 디코더 (50) 는 상호 의존할 수 없는 비디오 유닛들의 서브세트를 식별하기 위해 사전 프로세싱을 수행할 수도 있다 (102). 예컨대, 상호 의존할 수 없는 비디오 유닛들의 서브세트를 식별하기 위해, 엔트로피 디코딩 유닛 (52) 또는 예측 유닛 (54) 또는 가능하게는 별개의 사전 프로세싱 유닛 (미도시) 이 비디오 시퀀스의 사전 프로세싱을 수행할 수도 있다. 더욱이, 이 사전 프로세싱의 일부로서, 여기서 설명하는 바와 같은 통계치가 비디오 블록들의 디코딩 순서를 정의할 때에 이용을 위해 수집될 수도 있다. 예를 들어, 언급한 바와 같이, 이후 바람직한 디코딩 순서를 정의하는 것을 돕기 위해 이용될 수도 있는 그 프레임들의 세트에서의 글로벌 모션을 어림하거나 또는 추정하는데, 프레임들의 시퀀스에 걸쳐서 정의된 글로벌 모션이 이용될 수도 있다. 비디오 디코더 (50) 는, 디코딩하기 전에 수개의 프레임들이 사전 프로세싱된 후, 본 개시물에 따라서 프레임들의 세트들이 병렬로 디코딩될 수도 있으므로, 사전 프로세싱 및 디코딩 스테이지들 동안 입력 비디오 스트림을 저장하기 위한 추가적인 프레임 버퍼들을 포함할 수도 있다.
예측 유닛 (54) 은 예측 데이터를 메모리 (62) 로부터, 예측 유닛 (54) 과 연관된 캐시 (70) 에 로드한다 (103). 예측 유닛 (54) (또는 가능하게는 별개의 사전 프로세싱 유닛) 은 캐시 히트들을 실질적으로 최대화하는 비디오 블록들의 디코딩 순서를 정의할 수도 있다 (104). 이 경우, 디코딩 순서는 상이한 프레임들의 비디오 블록들 사이에서 교번할 수도 있으며 (시간 재정렬), 또한 소정 프레임 내에서 그 래스터 스캐닝 순서와는 다른 순서를 따를 수도 있다 (공간 재정렬). 예측 유닛 (54) 은 정의된 디코딩 순서에 기초하여 비디오 블록들을 디코딩한다 (105).
본 개시물의 기법들은, 무선 핸드셋, 및 집적회로 (IC) 또는 일련의 IC 들 (즉, 칩 셋) 을 포함한, 다양한 디바이스들 또는 장치들에서 실행될 수도 있다. 임의의 구성요들, 모듈들 또는 유닛들이 기능적인 양태들을 강조하기 위하여 제공되는 것으로 설명되었지만, 반드시 상이한 하드웨어 유닛들에 의한 실현을 요하지는 않는다.
따라서, 여기서 설명한 기법들은 하드웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 하드웨어로 구현되는 경우, 모듈들, 유닛들 또는 구성 요소들로서 설명한 임의의 피쳐들은, 일체형 로직 디바이스 내에 함께, 또는 별개지만 상호 동작가능한 로직 디바이스로서 따로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 본 기법들은 프로세서에서 실행될 때, 위에서 설명한 하나 이상의 방법들 중 하나 이상의 방법들을 수행하는 명령들을 포함하는 컴퓨터-판독가능 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터-판독가능 매체는 컴퓨터 판독가능 저장 매체를 포함할 수도 있으며, 패키징 재료를 포함할 수도 있는 컴퓨터 프로그램 제품의 일부분을 형성할 수도 있다. 컴퓨터 판독가능 매체는, 동기식 동적 랜덤 액세스 메모리 (SDRAM) 와 같은 랜덤 액세스 메모리 (RAM), 판독전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 전기적 소거가능 프로그래밍가능한 판독전용 메모리 (EEPROM), 플래시 메모리, 자기 또는 광학 데이터 저장 매체들 등을 포함할 수도 있다. 부가적으로 또는 이와 선택적으로, 본 기법들은 명령들 또는 데이터 구조들의 형태로 코드를 반송하거나 또는 통신하고 컴퓨터에 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터-판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다.
코드는, 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그래밍가능한 로직 어레이들 (FPGAs) 또는 다른 등가의 일체형 또는 이산 로직 회로와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 용어 "프로세서"는, 여기서 사용할 때, 임의의 전술한 구조, 또는 여기서 설명한 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 구조를 지칭할 수도 있다. 또한, 일부 양태들에서, 여기서 설명한 기능은 인코딩 및 디코딩을 위해 구성된 전용의 소프트웨어 모듈들 또는 하드웨어 모듈들 내에 제공되거나, 조합된 비디오 코덱 내에 포함될 수도 있다. 또한, 본 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들로 전적으로 구현될 수 있다.
본 개시물의 여러 양태들이 설명되었다. 이들 및 다른 양태들은 하기 청구항들의 범위 내이다.

Claims (47)

  1. 비디오 데이터를 디코딩하는 방법으로서,
    디코더에서 비디오 유닛들의 시퀀스를 수신하는 단계로서, 상기 시퀀스는 상기 비디오 유닛들의 디스플레이 순서를 정의하는, 상기 시퀀스를 수신하는 단계;
    상기 디코더를 통해서, 상호 의존하지 않는 비디오 유닛들의 서브세트를 식별하는 단계;
    예측 데이터를 메모리로부터 캐시로 로드하는 단계로서, 상기 캐시는 상기 디코더와 연관되는, 상기 예측 데이터를 로드하는 단계;
    상기 캐시 내의 상기 예측 데이터에 적어도 부분적으로 기초하여, 상기 비디오 유닛들의 식별된 서브세트의 비디오 블록들을 디코딩하는 단계로서,
    상기 비디오 블록들을 디코딩하는 단계는 제 2 비디오 유닛의 적어도 일부 비디오 블록들이 제 1 비디오 유닛의 적어도 일부 비디오 블록들 이전에 디코딩되는 디코딩 순서를 정의하는 단계를 포함하고, 상기 제 2 비디오 유닛은 상기 디스플레이 순서에서 상기 제 1 비디오 유닛 이후에 발생하는, 상기 비디오 블록들을 디코딩하는 단계;
    상기 비디오 유닛들의 시퀀스에서의 비디오 블록들과 연관된 통계적 메트릭을 정의하는 단계; 및
    적어도 부분적으로 상기 통계적 메트릭에 따라 상기 식별된 서브세트의 상기 디코딩 순서를 정의하는 단계를 포함하고,
    상기 통계적 메트릭은 상기 비디오 유닛들 중 하나의 비디오 유닛의 비디오 블록들의 모션 벡터들의 모션 벡터 통계치를 포함하고, 상기 비디오 유닛들 중 하나의 비디오 유닛의 비디오 블록들의 모션 벡터들은 나머지 비디오 유닛의 비디오 블록들의 모션 벡터들에 대한 것인, 비디오 데이터 디코딩 방법.
  2. 제 1 항에 있어서,
    상기 비디오 유닛들의 시퀀스는,
    비디오 프레임들의 시퀀스;
    비디오 프레임들의 부분들의 시퀀스; 및
    비디오 프레임들의 슬라이스들의 시퀀스
    중 적어도 하나를 포함하는, 비디오 데이터 디코딩 방법.
  3. 제 1 항에 있어서,
    상기 디코딩 순서는, 상기 제 1 비디오 유닛의 하나 이상의 비디오 블록들과 상기 제 2 비디오 유닛의 하나 이상의 비디오 블록들 사이에서 교번하는, 비디오 데이터 디코딩 방법.
  4. 제 1 항에 있어서,
    상기 디코딩 순서는, 상기 캐시에 로드된 상기 예측 데이터가 상기 캐시를 리로드할 필요없이 상기 비디오 유닛들의 서브세트의 상기 비디오 블록들을 디코딩할 때에 이용되는 우도를 향상시키도록 정의되는, 비디오 데이터 디코딩 방법.
  5. 제 1 항에 있어서,
    상기 디코딩 순서는, 상기 제 1 비디오 유닛의 상기 비디오 블록들이 상기 제 1 비디오 유닛의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되고 상기 제 2 비디오 유닛의 상기 비디오 블록들이 상기 제 2 비디오 유닛의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되도록 정의되는, 비디오 데이터 디코딩 방법.
  6. 제 5 항에 있어서,
    상기 제 1 비디오 유닛의 제 2 로우의 적어도 하나의 비디오 블록은 상기 제 1 비디오 유닛의 제 1 로우의 적어도 하나의 비디오 블록 이전에 디코딩되며,
    상기 제 2 로우는 상기 제 1 로우 아래에 있는, 비디오 데이터 디코딩 방법.
  7. 삭제
  8. 제 1 항에 있어서,
    상기 통계적 메트릭은 상기 비디오 유닛들의 시퀀스 중 적어도 일부분에 걸쳐서 평균 모션을 정량화하는 글로벌 모션 메트릭을 포함하는, 비디오 데이터 디코딩 방법.
  9. 제 1 항에 있어서,
    상기 제 1 비디오 유닛과 상기 제 2 비디오 유닛 사이에서의 비디오 블록들의 평균 모션을 정량화하는 평균 모션 메트릭을 결정하는 단계; 및
    적어도 부분적으로 상기 평균 모션 메트릭에 따라 상기 디코딩 순서를 정의하는 단계를 더 포함하는, 비디오 데이터 디코딩 방법.
  10. 제 1 항에 있어서,
    상기 비디오 유닛들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 2 P-프레임을 포함하는 IBPBP 포맷을 따르며,
    상기 비디오 유닛들의 서브세트는 상기 제 1 B-프레임 및 상기 제 2 P-프레임으로 이루어지는, 비디오 데이터 디코딩 방법.
  11. 제 1 항에 있어서,
    상기 비디오 유닛들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 3 B-프레임, 뒤이어서 제 4 B-프레임, 뒤이어서 제 2 P-프레임을 포함하는 IBBPBBP 포맷을 따르며,
    상기 비디오 유닛들의 서브세트는 상기 제 1 B-프레임, 상기 제 2 B-프레임 및 상기 제 2 P-프레임으로 이루어지는, 비디오 데이터 디코딩 방법.
  12. 비디오 데이터를 디코딩하는 장치로서,
    상기 장치는 비디오 디코더 및 연관된 캐시를 포함하고,
    상기 비디오 디코더는,
    비디오 유닛들의 디스플레이 순서를 정의하는 상기 비디오 유닛들의 시퀀스를 수신하고;
    상호 의존하지 않는 상기 비디오 유닛들의 서브세트를 식별하고;
    예측 데이터를 메모리로부터 상기 캐시로 로드하고;
    상기 캐시 내의 상기 예측 데이터에 적어도 부분적으로 기초하여, 상기 비디오 유닛들의 식별된 서브세트의 비디오 블록들을 디코딩하고;
    상기 비디오 블록들을 디코딩할 때에, 상기 디코더는 제 2 비디오 유닛의 적어도 일부 비디오 블록들이 제 1 비디오 유닛의 적어도 일부 비디오 블록들 이전에 디코딩되는 디코딩 순서를 정의하고,
    상기 제 2 비디오 유닛은 상기 디스플레이 순서에서 상기 제 1 비디오 유닛 이후에 발생하고,
    상기 비디오 유닛들의 시퀀스에서의 비디오 블록들과 연관된 통계적 메트릭을 정의하고; 그리고
    적어도 부분적으로 상기 통계적 메트릭에 따라 상기 식별된 서브세트의 상기 디코딩 순서를 정의하도록 구성되고,
    상기 통계적 메트릭은 상기 비디오 유닛들 중 하나의 비디오 유닛의 비디오 블록들의 모션 벡터들의 모션 벡터 통계치를 포함하고, 상기 비디오 유닛들 중 하나의 비디오 유닛의 비디오 블록들의 모션 벡터들은 나머지 비디오 유닛의 비디오 블록들의 모션 벡터들에 대한 것인, 비디오 데이터 디코딩 장치.
  13. 제 12 항에 있어서,
    상기 비디오 유닛들의 시퀀스는,
    비디오 프레임들의 시퀀스;
    비디오 프레임들의 부분들의 시퀀스; 및
    비디오 프레임들의 슬라이스들의 시퀀스
    중 적어도 하나를 포함하는, 비디오 데이터 디코딩 장치.
  14. 제 12 항에 있어서,
    상기 디코딩 순서는 상기 제 1 비디오 유닛의 하나 이상의 비디오 블록들과 상기 제 2 비디오 유닛의 하나 이상의 비디오 블록들 사이에서 교번하는, 비디오 데이터 디코딩 장치.
  15. 제 12 항에 있어서,
    상기 디코딩 순서는, 상기 캐시에 로드된 상기 예측 데이터가 상기 캐시를 리로드할 필요없이 상기 비디오 유닛들의 서브세트의 상기 비디오 블록들을 디코딩할 때에 이용되는 우도를 향상시키도록 정의되는, 비디오 데이터 디코딩 장치.
  16. 제 12 항에 있어서,
    상기 디코딩 순서는, 상기 제 1 비디오 유닛의 상기 비디오 블록들이 상기 제 1 비디오 유닛의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되고 상기 제 2 비디오 유닛의 상기 비디오 블록들이 상기 제 2 비디오 유닛의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되도록 정의되는, 비디오 데이터 디코딩 장치.
  17. 제 16 항에 있어서,
    상기 제 1 비디오 유닛의 제 2 로우의 적어도 하나의 비디오 블록은 상기 제 1 비디오 유닛의 제 1 로우의 적어도 하나의 비디오 블록 이전에 디코딩되며,
    상기 제 2 로우는 상기 제 1 로우 아래에 있는, 비디오 데이터 디코딩 장치.
  18. 삭제
  19. 제 12 항에 있어서,
    상기 통계적 메트릭은, 상기 비디오 유닛들의 시퀀스 중 적어도 일부분에 걸쳐서 평균 모션을 정량화하는 글로벌 모션 메트릭을 포함하는, 비디오 데이터 디코딩 장치.
  20. 제 12 항에 있어서,
    상기 디코더는,
    상기 제 1 비디오 유닛과 상기 제 2 비디오 유닛 사이에서의 비디오 블록들의 평균 모션을 정량화하는 평균 모션 메트릭을 결정하고;
    적어도 부분적으로 상기 평균 모션 메트릭에 따라 상기 디코딩 순서를 정의하도록 추가로 구성되는, 비디오 데이터 디코딩 장치.
  21. 제 12 항에 있어서,
    상기 비디오 유닛들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 2 P-프레임을 포함하는 IBPBP 포맷을 따르며,
    상기 비디오 유닛들의 서브세트는 상기 제 1 B-프레임 및 상기 제 2 P-프레임으로 이루어지는, 비디오 데이터 디코딩 장치.
  22. 제 12 항에 있어서,
    상기 비디오 유닛들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 3 B-프레임, 뒤이어서 제 4 B-프레임, 뒤이어서 제 2 P-프레임을 포함하는 IBBPBBP 포맷을 따르며,
    상기 비디오 유닛들의 서브세트는 상기 제 1 B-프레임, 상기 제 2 B-프레임 및 상기 제 2 P-프레임으로 이루어지는, 비디오 데이터 디코딩 장치.
  23. 제 12 항에 있어서,
    상기 비디오 디코더는 집적회로를 포함하는, 비디오 데이터 디코딩 장치.
  24. 제 12 항에 있어서,
    상기 비디오 디코더는 마이크로프로세서를 포함하는, 비디오 데이터 디코딩 장치.
  25. 제 12 항에 있어서,
    상기 장치는 상기 비디오 디코더를 포함하는 무선 통신 디바이스를 포함하는, 비디오 데이터 디코딩 장치.
  26. 비디오 데이터를 디코딩하는 디바이스로서,
    비디오 유닛들의 시퀀스를 수신하는 수단으로서, 상기 시퀀스는 상기 비디오 유닛들의 디스플레이 순서를 정의하는, 상기 시퀀스를 수신하는 수단;
    상호 의존하지 않는 비디오 유닛들의 서브세트를 식별하는 수단;
    예측 데이터를 메모리로부터 캐시로 로드하는 수단;
    상기 캐시 내의 상기 예측 데이터에 적어도 부분적으로 기초하여, 상기 비디오 유닛들의 식별된 서브세트의 비디오 블록들을 디코딩하는 수단으로서,
    상기 비디오 블록들을 디코딩하는 수단은 제 2 비디오 유닛의 적어도 일부 비디오 블록들이 제 1 비디오 유닛의 적어도 일부 비디오 블록들 이전에 디코딩되는 디코딩 순서를 정의하는 수단을 포함하고, 상기 제 2 비디오 유닛은 상기 디스플레이 순서에서 상기 제 1 비디오 유닛 이후에 발생하는, 상기 비디오 블록들을 디코딩하는 수단;
    상기 비디오 유닛들의 시퀀스에서의 비디오 블록들과 연관된 통계적 메트릭을 정의하는 수단; 및
    적어도 부분적으로 상기 통계적 메트릭에 따라 상기 식별된 서브세트의 상기 디코딩 순서를 정의하는 수단을 포함하고,
    상기 통계적 메트릭은 상기 비디오 유닛들 중 하나의 비디오 유닛의 비디오 블록들의 모션 벡터들의 모션 벡터 통계치를 포함하고, 상기 비디오 유닛들 중 하나의 비디오 유닛의 비디오 블록들의 모션 벡터들은 나머지 비디오 유닛의 비디오 블록들의 모션 벡터들에 대한 것인, 비디오 데이터 디코딩 디바이스.
  27. 제 26 항에 있어서,
    상기 비디오 유닛들의 시퀀스는,
    비디오 프레임들의 시퀀스;
    비디오 프레임들의 부분들의 시퀀스; 및
    비디오 프레임들의 슬라이스들의 시퀀스
    중 적어도 하나를 포함하는, 비디오 데이터 디코딩 디바이스.
  28. 제 26 항에 있어서,
    상기 디코딩 순서는 상기 제 1 비디오 유닛의 하나 이상의 비디오 블록들과 상기 제 2 비디오 유닛의 하나 이상의 비디오 블록들 사이에서 교번하는, 비디오 데이터 디코딩 디바이스.
  29. 제 26 항에 있어서,
    상기 디코딩 순서는, 상기 캐시에 로드된 상기 예측 데이터가 상기 캐시를 리로드할 필요없이 상기 비디오 유닛들의 서브세트의 상기 비디오 블록들을 디코딩할 때에 이용되는 우도를 향상시키도록 정의되는, 비디오 데이터 디코딩 디바이스.
  30. 제 26 항에 있어서,
    상기 디코딩 순서는, 상기 제 1 비디오 유닛의 상기 비디오 블록들이 상기 제 1 비디오 유닛의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되고 상기 제 2 비디오 유닛의 상기 비디오 블록들이 상기 제 2 비디오 유닛의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되도록 정의되는, 비디오 데이터 디코딩 디바이스.
  31. 제 30 항에 있어서,
    상기 제 1 비디오 유닛의 제 2 로우의 적어도 하나의 비디오 블록은 상기 제 1 비디오 유닛의 제 1 로우의 적어도 하나의 비디오 블록 이전에 디코딩되며,
    상기 제 2 로우는 상기 제 1 로우 아래에 있는, 비디오 데이터 디코딩 디바이스.
  32. 삭제
  33. 제 26 항에 있어서,
    상기 통계적 메트릭은 상기 비디오 유닛들의 시퀀스 중 적어도 일부분에 걸쳐서 평균 모션을 정량화하는 글로벌 모션 메트릭을 포함하는, 비디오 데이터 디코딩 디바이스.
  34. 제 26 항에 있어서,
    상기 제 1 비디오 유닛과 상기 제 2 비디오 유닛 사이에서의 비디오 블록들의 평균 모션을 정량화하는 평균 모션 메트릭을 결정하는 수단; 및
    적어도 부분적으로 상기 평균 모션 메트릭에 따라 상기 디코딩 순서를 정의하는 수단을 더 포함하는, 비디오 데이터 디코딩 디바이스.
  35. 제 26 항에 있어서,
    상기 비디오 유닛들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 2 P-프레임을 포함하는 IBPBP 포맷을 따르며,
    상기 비디오 유닛들의 서브세트는 상기 제 1 B-프레임 및 상기 제 2 P-프레임으로 이루어지는, 비디오 데이터 디코딩 디바이스.
  36. 제 26 항에 있어서,
    상기 비디오 유닛들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 3 B-프레임, 뒤이어서 제 4 B-프레임, 뒤이어서 제 2 P-프레임을 포함하는 IBBPBBP 포맷을 따르며,
    상기 비디오 유닛들의 서브세트는 상기 제 1 B-프레임, 상기 제 2 B-프레임 및 상기 제 2 P-프레임으로 이루어지는, 비디오 데이터 디코딩 디바이스.
  37. 프로세서에서 실행 시에, 상기 프로세서로 하여금,
    비디오 유닛들의 디스플레이 순서를 정의하는 상기 비디오 유닛들의 시퀀스를 수신하자마자,
    상호 의존하지 않는 상기 비디오 유닛들의 서브세트를 식별하게 하는 명령;
    예측 데이터를 메모리로부터 캐시로 로드하게 하는 명령;
    상기 캐시 내의 상기 예측 데이터에 적어도 부분적으로 기초하여, 상기 비디오 유닛들의 식별된 서브세트의 비디오 블록들을 디코딩하게 하는 명령으로서,
    상기 비디오 블록들을 디코딩할 때에, 상기 명령들은, 상기 프로세서로 하여금 제 2 비디오 유닛의 적어도 일부 비디오 블록들이 제 1 비디오 유닛의 적어도 일부 비디오 블록들 이전에 디코딩되는 디코딩 순서를 정의하게 하고, 상기 제 2 비디오 유닛은 상기 디스플레이 순서에서 상기 제 1 비디오 유닛 이후에 발생하는, 상기 비디오 블록들을 디코딩하게 하는 명령;
    상기 비디오 유닛들의 시퀀스에서의 비디오 블록들과 연관된 통계적 메트릭을 정의하게 하는 명령; 및
    적어도 부분적으로 상기 통계적 메트릭에 따라 상기 식별된 서브세트의 상기 디코딩 순서를 정의하게 하는 명령을 포함하고,
    상기 통계적 메트릭은 상기 비디오 유닛들 중 하나의 비디오 유닛의 비디오 블록들의 모션 벡터들의 모션 벡터 통계치를 포함하고, 상기 비디오 유닛들 중 하나의 비디오 유닛의 비디오 블록들의 모션 벡터들은 나머지 비디오 유닛의 비디오 블록들의 모션 벡터들에 대한 것인, 컴퓨터 판독가능 매체.
  38. 제 37 항에 있어서,
    상기 비디오 유닛들의 시퀀스는,
    비디오 프레임들의 시퀀스;
    비디오 프레임들의 부분들의 시퀀스; 및
    비디오 프레임들의 슬라이스들의 시퀀스
    중 적어도 하나를 포함하는, 컴퓨터 판독가능 매체.
  39. 제 37 항에 있어서,
    상기 디코딩 순서는 상기 제 1 비디오 유닛의 하나 이상의 비디오 블록들과 상기 제 2 비디오 유닛의 하나 이상의 비디오 블록들 사이에서 교번하는, 컴퓨터 판독가능 매체.
  40. 제 37 항에 있어서,
    상기 디코딩 순서는, 상기 캐시에 로드된 상기 예측 데이터가 상기 캐시를 리로드할 필요없이 상기 비디오 유닛들의 서브세트의 상기 비디오 블록들을 디코딩할 때에 이용되는 우도를 향상시키도록 정의되는, 컴퓨터 판독가능 매체.
  41. 제 37 항에 있어서,
    상기 디코딩 순서는, 상기 제 1 비디오 유닛의 상기 비디오 블록들이 상기 제 1 비디오 유닛의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되고 상기 제 2 비디오 유닛의 상기 비디오 블록들이 상기 제 2 비디오 유닛의 래스터 스캐닝 순서에 대응하지 않는 순서로 디코딩되도록 정의되는, 컴퓨터 판독가능 매체.
  42. 제 41 항에 있어서,
    상기 제 1 비디오 유닛의 제 2 로우의 적어도 하나의 비디오 블록은 상기 제 1 비디오 유닛의 제 1 로우의 적어도 하나의 비디오 블록 이전에 디코딩되며,
    상기 제 2 로우는 상기 제 1 로우 아래에 있는, 컴퓨터 판독가능 매체.
  43. 삭제
  44. 제 37 항에 있어서,
    상기 통계적 메트릭은 상기 비디오 유닛들의 시퀀스 중 적어도 일부분에 걸쳐서 평균 모션을 정량화하는 글로벌 모션 메트릭을 포함하는, 컴퓨터 판독가능 매체.
  45. 제 37 항에 있어서,
    상기 프로세서로 하여금,
    상기 제 1 비디오 유닛과 상기 제 2 비디오 유닛 사이에서의 비디오 블록들의 평균 모션을 정량화하는 평균 모션 메트릭을 결정하게 하는 명령; 및
    적어도 부분적으로 상기 평균 모션 메트릭에 따라 상기 디코딩 순서를 정의하게 하는 명령을 더 포함하는, 컴퓨터 판독가능 매체.
  46. 제 37 항에 있어서,
    상기 비디오 유닛들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 2 P-프레임을 포함하는 IBPBP 포맷을 따르며,
    상기 비디오 유닛들의 서브세트는 상기 제 1 B-프레임 및 상기 제 2 P-프레임으로 이루어지는, 컴퓨터 판독가능 매체.
  47. 제 37 항에 있어서,
    상기 비디오 유닛들의 시퀀스는 I-프레임, 뒤이어서 제 1 B-프레임, 뒤이어서 제 2 B-프레임, 뒤이어서 제 1 P-프레임, 뒤이어서 제 3 B-프레임, 뒤이어서 제 4 B-프레임, 뒤이어서 제 2 P-프레임을 포함하는 IBBPBBP 포맷을 따르며,
    상기 비디오 유닛들의 서브세트는 상기 제 1 B-프레임, 상기 제 2 B-프레임 및 상기 제 2 P-프레임으로 이루어지는, 컴퓨터 판독가능 매체.
KR1020127019359A 2009-12-21 2010-12-20 캐시 히트들을 향상시키기 위한 디코더에서의 시간 및 공간 비디오 블록 재정렬 KR101376008B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/643,523 US9877033B2 (en) 2009-12-21 2009-12-21 Temporal and spatial video block reordering in a decoder to improve cache hits
US12/643,523 2009-12-21
PCT/US2010/061368 WO2011084754A1 (en) 2009-12-21 2010-12-20 Temporal and spatial video block reordering in a decoder to improve cache hits

Publications (2)

Publication Number Publication Date
KR20120096592A KR20120096592A (ko) 2012-08-30
KR101376008B1 true KR101376008B1 (ko) 2014-03-20

Family

ID=43598348

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127019359A KR101376008B1 (ko) 2009-12-21 2010-12-20 캐시 히트들을 향상시키기 위한 디코더에서의 시간 및 공간 비디오 블록 재정렬

Country Status (7)

Country Link
US (1) US9877033B2 (ko)
EP (1) EP2517471A1 (ko)
JP (2) JP2013515448A (ko)
KR (1) KR101376008B1 (ko)
CN (1) CN102668563B (ko)
TW (1) TW201141239A (ko)
WO (1) WO2011084754A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9178648B2 (en) * 2010-01-06 2015-11-03 Alcatel Lucent Method to improve voice over IP capacity for user equipment employing variable rate vocoders
EP2601782A4 (en) 2010-08-02 2016-09-28 Univ Beijing REPRESENTATIVE MOVEMENT DATA FLOW EXTRACTION FOR EFFICIENT RECOVERY AND CLASSIFICATION OF VIDEO DATA
US8767824B2 (en) * 2011-07-11 2014-07-01 Sharp Kabushiki Kaisha Video decoder parallelization for tiles
US8787454B1 (en) 2011-07-13 2014-07-22 Google Inc. Method and apparatus for data compression using content-based features
US9736489B2 (en) 2011-09-17 2017-08-15 Qualcomm Incorporated Motion vector determination for video coding
US9253508B2 (en) 2011-11-04 2016-02-02 Futurewei Technologies, Inc. Differential pulse code modulation intra prediction for high efficiency video coding
US8873872B1 (en) * 2012-04-18 2014-10-28 Matrox Graphics Inc. Division of entropy coding in codecs
US10003803B1 (en) 2012-04-18 2018-06-19 Matrox Graphics Inc. Motion-based adaptive quantization
US10003802B1 (en) 2012-04-18 2018-06-19 Matrox Graphics Inc. Motion-based adaptive quantization
US20150085915A1 (en) * 2013-09-25 2015-03-26 Jay C.-C. Kuo Method and system for automatically encoding video with uniform throughput
KR101805630B1 (ko) * 2013-09-27 2017-12-07 삼성전자주식회사 멀티 디코딩 처리 방법 및 이를 수행하기 위한 멀티 디코더
JP6272194B2 (ja) * 2014-09-24 2018-01-31 株式会社日立情報通信エンジニアリング 動画像符号化装置、動画像復号装置、および動画像符号化・復号化方法
JP6438777B2 (ja) * 2015-01-30 2018-12-19 ルネサスエレクトロニクス株式会社 画像処理装置および半導体装置
US11051026B2 (en) * 2015-08-31 2021-06-29 Intel Corporation Method and system of frame re-ordering for video coding
US10034026B2 (en) * 2016-04-22 2018-07-24 Akila Subramaniam Device for and method of enabling the processing of a video stream
US10798375B2 (en) 2016-11-01 2020-10-06 Samsung Electronics Co., Ltd. Encoding method and device therefor, and decoding method and device therefor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090279801A1 (en) * 2006-09-26 2009-11-12 Jun Ohmiya Decoding device, decoding method, decoding program, and integrated circuit

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850567B1 (en) * 1997-01-13 2005-02-01 Koninklijke Philips Electronics N.V. Embedding supplemental data in a digital video signal
KR19980068686A (ko) * 1997-02-22 1998-10-26 구자홍 엠펙 디코더(MPEG Decoder)의 레터 박스(Letter Box) 처리방법
JP3322233B2 (ja) * 1999-03-19 2002-09-09 日本電気株式会社 動画像伸長方法及びそれを実行するプログラムを記録した記録媒体
US6948127B1 (en) * 2001-12-10 2005-09-20 Cisco Technology, Inc. Interface for compressed video data analysis
US20040190615A1 (en) * 2002-05-22 2004-09-30 Kiyofumi Abe Moving image encoding method, moving image decoding method, and data recording medium
WO2004012459A1 (ja) * 2002-07-26 2004-02-05 Matsushita Electric Industrial Co., Ltd. 動画像符号化方法、動画像復号化方法および記録媒体
US7715479B2 (en) * 2003-07-21 2010-05-11 International Business Machines Corporation Power-aware on-chip memory management for video coding algorithms
CN100534193C (zh) * 2004-08-04 2009-08-26 松下电器产业株式会社 图像解码装置
US7859574B1 (en) * 2005-07-19 2010-12-28 Maxim Integrated Products, Inc. Integrated camera image signal processor and video encoder
US20070025444A1 (en) * 2005-07-28 2007-02-01 Shigeyuki Okada Coding Method
CN101243690B (zh) 2005-08-17 2011-02-23 三叉微系统(远东)有限公司 保持高速缓存器位置的视频编码和解码方法
US8238442B2 (en) * 2006-08-25 2012-08-07 Sony Computer Entertainment Inc. Methods and apparatus for concealing corrupted blocks of video data
KR100906152B1 (ko) * 2007-12-07 2009-07-03 한국전자통신연구원 마이크로 볼로미터용 저항재료, 이의 제조방법 및 이를포함한 마이크로 볼로미터
US8265154B2 (en) * 2007-12-18 2012-09-11 At&T Intellectual Property I, Lp Redundant data dispersal in transmission of video data based on frame type
EP2104356A1 (en) 2008-03-18 2009-09-23 Deutsche Thomson OHG Method and device for generating an image data stream, method and device for reconstructing a current image from an image data stream, image data stream and storage medium carrying an image data stream
US20100027663A1 (en) * 2008-07-29 2010-02-04 Qualcomm Incorporated Intellegent frame skipping in video coding based on similarity metric in compressed domain
WO2010052837A1 (ja) * 2008-11-10 2010-05-14 パナソニック株式会社 画像復号装置、画像復号方法、集積回路及びプログラム
US20100215104A1 (en) * 2009-02-26 2010-08-26 Akira Osamoto Method and System for Motion Estimation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090279801A1 (en) * 2006-09-26 2009-11-12 Jun Ohmiya Decoding device, decoding method, decoding program, and integrated circuit

Also Published As

Publication number Publication date
US20110150085A1 (en) 2011-06-23
JP5985553B2 (ja) 2016-09-06
WO2011084754A1 (en) 2011-07-14
JP2015008497A (ja) 2015-01-15
KR20120096592A (ko) 2012-08-30
EP2517471A1 (en) 2012-10-31
US9877033B2 (en) 2018-01-23
TW201141239A (en) 2011-11-16
JP2013515448A (ja) 2013-05-02
CN102668563B (zh) 2017-08-22
CN102668563A (zh) 2012-09-12

Similar Documents

Publication Publication Date Title
KR101376008B1 (ko) 캐시 히트들을 향상시키기 위한 디코더에서의 시간 및 공간 비디오 블록 재정렬
KR101214148B1 (ko) 비디오 블록의 인터리빙된 서브?블록들의 엔트로피 코딩
US8995527B2 (en) Block type signalling in video coding
KR101244229B1 (ko) 비디오 코딩의 적응형 계수 스캐닝
JP5405596B2 (ja) ビデオのコーディングの際の、アクティビティメトリックに基づくフィルタ予測
KR101168843B1 (ko) 수평 및 수직 대칭에 기초한 필터 계수들의 비디오 코딩
US8331444B2 (en) Sub-band scanning techniques for entropy coding of sub-bands
KR101377883B1 (ko) 비디오 인코딩에서 넌-제로 라운딩 및 예측 모드 선택 기법들
US9819940B2 (en) Weighted prediction based on vectorized entropy coding

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee