KR101222400B1 - 대형 매크로블록을 사용한 비디오 코딩 - Google Patents

대형 매크로블록을 사용한 비디오 코딩 Download PDF

Info

Publication number
KR101222400B1
KR101222400B1 KR1020117010099A KR20117010099A KR101222400B1 KR 101222400 B1 KR101222400 B1 KR 101222400B1 KR 1020117010099 A KR1020117010099 A KR 1020117010099A KR 20117010099 A KR20117010099 A KR 20117010099A KR 101222400 B1 KR101222400 B1 KR 101222400B1
Authority
KR
South Korea
Prior art keywords
video
block
coding unit
video blocks
size
Prior art date
Application number
KR1020117010099A
Other languages
English (en)
Other versions
KR20110063855A (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
Family has litigation
Priority to US10278708P priority Critical
Priority to US61/102,787 priority
Priority to US14435709P priority
Priority to US61/144,357 priority
Priority to US16663109P priority
Priority to US61/166,631 priority
Priority to US12/562,504 priority patent/US8503527B2/en
Priority to US12/562,504 priority
Application filed by 콸콤 인코포레이티드 filed Critical 콸콤 인코포레이티드
Priority to PCT/US2009/058833 priority patent/WO2010039728A2/en
Publication of KR20110063855A publication Critical patent/KR20110063855A/ko
Application granted granted Critical
Publication of KR101222400B1 publication Critical patent/KR101222400B1/ko
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=42041691&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR101222400(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.

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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Abstract

종래의 비디오 인코딩 및 디코딩 표준에서 규정하는 매크로블록보다 큰 매크로블록을 사용하여 디지털 비디오 데이터를 인코딩 및 디코딩하는 기법이 기술되어 있다. 예를 들어, 이 기법은 16x16 초과의 픽셀을 포함하는 매크로블록을 사용하여 비디오 스트림을 인코딩 및 디코딩하는 것을 포함한다. 한 일례에서, 장치는 복수의 비디오 블록을 포함하는 코딩 단위를 인코딩하고 - 여기서 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -, 및 최대 크기 값을 포함하는 코딩 단위에 대한 구문 정보를 생성 - 최대 크기 값은 코딩 단위 내의 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기를 나타냄 - 하도록 구성된 비디오 인코더를 포함한다. 구문 정보는 또한 최소 크기 값을 포함할 수 있다. 이러한 방식으로, 인코더는 코딩 단위에 적용할 적당한 구문 디코더를 디코더에게 알려줄 수 있다.

Description

대형 매크로블록을 사용한 비디오 코딩{VIDEO CODING WITH LARGE MACROBLOCKS}

본 출원은 미국 가특허 출원인 2008년 10월 3일자로 출원된 제61/102,787호, 2009년 1월 13일자로 출원된 제61/144,357호, 및 2009년 4월 3일자로 출원된 제61/166,631호를 기초로 우선권을 주장하며, 이들 출원 각각은 참조 문헌으로서 그 전체 내용이 본 명세서에 포함된다.

본 출원은 모두가 본 출원과 동일자로 출원되고 모두가 동일한 발명의 명칭 "VIDEO CODING WITH LARGE MACROBLOCKS(대형 매크로블록을 사용한 비디오 코딩)"을 가지는 미국 특허 출원(임시적으로 대리인 사건 번호 090033U1, 090033U2, 030033U3로 참조됨)에 관한 것이며, 이들 모두는 본 출원의 양도인에게 양도되고 이로써 모든 목적을 위해 그 전체 내용이 본 명세서에 명확하게 포함된다.

본 개시 내용은 디지털 비디오 코딩(digital video coding)에 관한 것이며, 보다 상세하게는, 블록-기반 비디오 코딩(block-based video coding)에 관한 것이다.

디지털 텔레비전, 디지털 직접 방송 시스템(digital direct broadcast system), 무선 방송 시스템, PDA(personal digital assistant), 랩톱 또는 데스크톱 컴퓨터, 디지털 카메라, 디지털 레코딩 장치(digital recording device), 비디오 게임 장치, 비디오 게임 콘솔, 셀룰러 또는 위성 무선 전화 등을 비롯한 광범위한 장치에 디지털 비디오 기능이 포함될 수 있다. 디지털 비디오 장치는, 디지털 비디오 정보를 보다 효율적으로 전송 및 수신하기 위해, MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, Part 10, AVC(Advanced Video Coding), 및 이들 표준의 확장에 의해 정의된 표준에 기술된 것과 같은 비디오 압축 기법을 구현한다.

비디오 압축 기법은 비디오 시퀀스에 내재된 중복성을 감소 또는 제거하기 위해 공간 예측(spatial prediction) 및/또는 시간 예측(temporal prediction)을 수행한다. 블록-기반 비디오 코딩의 경우, 비디오 프레임 또는 슬라이스(slice)는 매크로블록으로 분할될 수 있다. 각각의 매크로블록은 추가적으로 분할될 수 있다. 인트라-코딩된(intra-coded)(I) 프레임 또는 슬라이스 내의 매크로블록은 이웃 매크로블록에 대해 공간 예측을 사용하여 인코딩된다. 인터-코딩된(inter-coded)(P 또는 B) 프레임 또는 슬라이스는 동일한 프레임 또는 슬라이스 내의 이웃 매크로블록에 대해 공간 예측을 사용하거나 다른 참조 프레임에 대해 시간 예측을 사용할 수 있다.

일반적으로, 본 개시 내용은 대형 매크로블록(large macroblock)을 사용하여 디지털 비디오 데이터를 인코딩하는 기법을 기술하고 있다. 대형 매크로블록은 기존의 비디오 인코딩 표준에서 일반적으로 규정하고 있는 매크로블록보다 크다. 대부분의 비디오 인코딩 표준은 16x16 픽셀 어레이 형태의 매크로블록의 사용을 규정하고 있다. 본 개시 내용에 따르면, 인코더 및 디코더는 크기가 16x16 픽셀보다 더 큰 대형 매크로블록을 이용할 수 있다. 일례로서, 대형 매크로블록은 32x32, 64x64 또는 그보다 큰 픽셀 어레이를 가질 수 있다.

비디오 코딩은 비디오 데이터의 압축을 지원하기 위해 공간 및/또는 시간 중복성에 의존한다. 더 높은 공간 해상도 및/또는 더 높은 프레임 레이트로 생성되는 비디오 프레임은 더 많은 중복성을 지원할 수 있다. 대형 매크로블록의 사용에 의해, 본 개시 내용에 기술된 바와 같이, 비디오 코딩 기법은 공간 해상도 및/또는 프레임 레이트가 증가함에 따라 생성된 더 큰 정도의 중복성을 이용할 수 있게 될 수 있다. 본 개시 내용에 따르면, 비디오 코딩 기법은 대형 매크로블록의 코딩을 지원하기 위해 각종의 특징을 이용할 수 있다.

본 개시 내용에 기술된 바와 같이, 대형 매크로블록 코딩 기법은 대형 매크로블록을 파티션(partition)으로 분할할 수 있고, 선택된 파티션에 대해 상이한 파티션 크기 및 상이한 코딩 모드(coding mode)[예를 들어, 상이한 공간(I) 또는 시간(P 또는 B) 모드]를 사용할 수 있다. 다른 일례로서, 코딩 기법은 대형 매크로블록 내에서 영이 아닌 계수를 가지는 코딩된 매크로블록 및 파티션을 효율적으로 식별하기 위해 계층적 CBP(coded block pattern, 코딩된 블록 패턴) 값을 이용할 수 있다. 추가의 일례로서, 코딩 기법은, 보다 바람직한 결과를 가져오는 매크로블록 크기를 선택하기 위해, 대형 및 소형 매크로블록을 사용하여 코딩하는 것에 의해 생성되는 레이트-왜곡 메트릭(rate-distortion metric)을 비교할 수 있다.

한 일례에서, 본 개시 내용은 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을, 비디오 인코더에서, 인코딩하는 단계, 블록의 크기를 나타내는 블록-유형 구문 정보(block-type syntax information)를 생성하는 단계, 및 인코딩된 블록에 대한 코딩된 블록 패턴 값을 생성하는 단계 - 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타냄 - 를 포함하는 방법을 제공한다.

다른 일례에서, 본 개시 내용은 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을 인코딩하고, 블록의 크기를 나타내는 블록-유형 구문 정보를 생성하며, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 생성 - 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타냄 - 하도록 구성된 비디오 인코더를 포함하는 장치를 제공한다.

다른 일례에서, 본 개시 내용은 비디오 인코딩 장치로 하여금 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을, 비디오 인코더에서, 인코딩하고, 블록의 크기를 나타내는 블록-유형 구문 정보를 생성하며, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 생성 - 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타냄 - 하게 하는 명령어로 인코딩된 컴퓨터-판독가능 매체를 제공한다.

부가의 일례에서, 본 개시 내용은 16x16 픽셀을 초과하는 크기를 가지는 인코딩된 비디오 블록을, 비디오 디코더에서, 수신하는 단계, 인코딩된 블록의 크기를 나타내는 블록-유형 구문 정보를 수신하는 단계, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 수신하는 단계 - 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타냄 -, 및 인코딩된 블록에 대한 블록-유형 구문 정보 및 코딩된 블록 패턴 값에 기초하여 인코딩된 블록을 디코딩하는 단계를 포함하는 방법을 제공한다.

추가의 일례에서, 본 개시 내용은 16x16 픽셀을 초과하는 크기를 가지는 인코딩된 비디오 블록을 수신하고, 인코딩된 블록의 크기를 나타내는 블록-유형 구문 정보를 수신하며, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 수신하고 - 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타냄 -, 인코딩된 블록에 대한 블록-유형 구문 정보 및 코딩된 블록 패턴 값에 기초하여 인코딩된 블록을 디코딩하도록 구성된 비디오 디코더를 포함하는 장치를 제공한다.

다른 일례에서, 본 개시 내용은 비디오 디코더로 하여금 16x16 픽셀을 초과하는 크기를 가지는 인코딩된 비디오 블록을 수신하고, 인코딩된 블록의 크기를 나타내는 블록-유형 구문 정보를 수신하며, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 수신하고 - 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타냄 -, 인코딩된 블록에 대한 블록-유형 구문 정보 및 코딩된 블록 패턴 값에 기초하여 인코딩된 블록을 디코딩하게 하는 명령어를 포함하는 컴퓨터-판독가능 매체를 제공한다.

다른 일례에서, 본 개시 내용은 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을, 비디오 인코더에서, 수신하는 단계, 블록을 파티션들로 분할하는 단계, 제1 인코딩 모드를 사용하여 파티션들 중 하나를 인코딩하는 단계, 제1 인코딩 모드와 다른 제2 인코딩 모드를 사용하여 파티션들 중 다른 하나를 인코딩하는 단계, 및 블록의 크기를 나타내고 파티션 및 파티션을 인코딩하는 데 사용되는 인코딩 모드를 식별해주는 블록-유형 구문 정보를 생성하는 단계를 포함하는 방법을 제공한다.

부가의 일례에서, 본 개시 내용은 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을 수신하고, 블록을 파티션들로 분할하며, 제1 인코딩 모드를 사용하여 파티션들 중 하나를 인코딩하고, 제1 인코딩 모드와 다른 제2 인코딩 모드를 사용하여 파티션들 중 다른 하나를 인코딩하며, 블록의 크기를 나타내고 파티션 및 파티션을 인코딩하는 데 사용되는 인코딩 모드를 식별해주는 블록-유형 구문 정보를 생성하도록 구성된 비디오 인코더를 포함하는 장치를 제공한다.

다른 일례에서, 본 개시 내용은 비디오 인코더로 하여금 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을 수신하고, 블록을 파티션들로 분할하며, 제1 인코딩 모드를 사용하여 파티션들 중 하나를 인코딩하고, 제1 인코딩 모드와 다른 제2 인코딩 모드를 사용하여 파티션들 중 다른 하나를 인코딩하며, 블록의 크기를 나타내고 파티션 및 파티션을 인코딩하는 데 사용되는 인코딩 모드를 식별해주는 블록-유형 구문 정보를 생성하게 하는 명령어로 인코딩된 컴퓨터-판독가능 매체를 제공한다.

추가의 일례에서, 본 개시 내용은 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을, 비디오 디코더에서, 수신하는 단계 - 블록은 파티션들로 분할되고, 파티션들 중 하나는 제1 인코딩 모드를 사용하여 인코딩되며, 파티션들 중 다른 하나는 제1 인코딩 모드와 다른 제2 인코딩 모드를 사용하여 인코딩됨 -, 블록의 크기를 나타내고 파티션 및 파티션을 인코딩하는 데 사용되는 인코딩 모드를 식별해주는 블록-유형 구문 정보를 수신하는 단계, 및 블록-유형 구문 정보에 기초하여 비디오 블록을 디코딩하는 단계를 포함하는 방법을 제공한다.

다른 일례에서, 본 개시 내용은 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을 수신하고 - 블록은 파티션들로 분할되고, 파티션들 중 하나는 제1 인코딩 모드를 사용하여 인코딩되며, 파티션들 중 다른 하나는 제1 인코딩 모드와 다른 제2 인코딩 모드를 사용하여 인코딩됨 -, 블록의 크기를 나타내고 파티션 및 파티션을 인코딩하는 데 사용되는 인코딩 모드를 식별해주는 블록-유형 구문 정보를 수신하며, 블록-유형 구문 정보에 기초하여 비디오 블록을 디코딩하도록 구성된 비디오 디코더를 포함하는 장치를 제공한다.

부가의 일례에서, 본 개시 내용은 비디오 디코더로 하여금 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을, 비디오 디코더에서, 수신하고 - 블록은 파티션들로 분할되고, 파티션들 중 하나는 제1 인코딩 모드를 사용하여 인코딩되며, 파티션들 중 다른 하나는 제1 인코딩 모드와 다른 제2 인코딩 모드를 사용하여 인코딩됨 -, 블록의 크기를 나타내고 파티션 및 파티션을 인코딩하는 데 사용되는 인코딩 모드를 식별해주는 블록-유형 구문 정보를 수신하며, 블록-유형 구문 정보에 기초하여 비디오 블록을 디코딩하게 하는 명령어로 인코딩된 컴퓨터-판독가능 매체를 제공한다.

다른 일례에서, 본 개시 내용은 비디오 코딩 단위(video coding unit)를, 디지털 비디오 인코더에서, 수신하는 단계, 16x16 픽셀의 크기를 가지는 제1 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하기 위한 제1 레이트-왜곡 메트릭을 결정하는 단계, 16x16 픽셀을 초과하는 크기를 가지는 제2 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하기 위한 제2 레이트-왜곡 메트릭을 결정하는 단계, 제1 레이트-왜곡 메트릭이 제2 레이트-왜곡 메트릭보다 작을 때 제1 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하는 단계, 및 제2 레이트-왜곡 메트릭이 제1 레이트-왜곡 메트릭보다 작을 때 제2 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하는 단계를 포함하는 방법을 제공한다.

부가의 일례에서, 본 개시 내용은 비디오 코딩 단위를 수신하고, 16x16 픽셀의 크기를 가지는 제1 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하기 위한 제1 레이트-왜곡 메트릭을 결정하며, 16x16 픽셀을 초과하는 크기를 가지는 제2 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하기 위한 제2 레이트-왜곡 메트릭을 결정하고, 제1 레이트-왜곡 메트릭이 제2 레이트-왜곡 메트릭보다 작을 때 제1 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하며, 제2 레이트-왜곡 메트릭이 제1 레이트-왜곡 메트릭보다 작을 때 제2 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하도록 구성된 비디오 인코더를 포함하는 장치를 제공한다.

다른 일례에서, 본 개시 내용은 비디오 인코더로 하여금 비디오 코딩 단위를 수신하고, 16x16 픽셀의 크기를 가지는 제1 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하기 위한 제1 레이트-왜곡 메트릭을 결정하며, 16x16 픽셀을 초과하는 크기를 가지는 제2 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하기 위한 제2 레이트-왜곡 메트릭을 결정하고, 제1 레이트-왜곡 메트릭이 제2 레이트-왜곡 메트릭보다 작을 때 제1 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하며, 제2 레이트-왜곡 메트릭이 제1 레이트-왜곡 메트릭보다 작을 때 제2 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하게 하는 명령어로 인코딩된 컴퓨터-판독가능 매체를 제공한다.

다른 일례에서, 본 개시 내용은 복수의 비디오 블록을 포함하는 코딩 단위(coded unit)를, 비디오 인코더에서, 인코딩하는 단계 - 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -, 및 최대 크기 값을 포함하는 코딩 단위에 대한 구문 정보를 생성하는 단계 - 최대 크기 값은 코딩 단위 내의 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기를 나타냄 - 를 포함하는 방법을 제공한다.

다른 일례에서, 본 개시 내용은 복수의 비디오 블록을 포함하는 코딩 단위를 인코딩하고 - 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -, 최대 크기 값을 포함하는 코딩 단위에 대한 구문 정보를 생성 - 최대 크기 값은 코딩 단위 내의 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기를 나타냄 - 하도록 구성된 비디오 인코더를 포함하는 장치를 제공한다.

다른 일례에서, 본 개시 내용은 복수의 비디오 블록을 포함하는 코딩 단위를 인코딩하는 수단 - 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -, 및 최대 크기 값을 포함하는 코딩 단위에 대한 구문 정보를 생성하는 수단 - 최대 크기 값은 코딩 단위 내의 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기를 나타냄 - 를 포함하는 장치를 제공한다.

다른 일례에서, 본 개시 내용은 프로그램가능 프로세서로 하여금 복수의 비디오 블록을 포함하는 코딩 단위를 인코딩하고 - 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -, 및 최대 크기 값을 포함하는 코딩 단위에 대한 구문 정보를 생성 - 최대 크기 값은 코딩 단위 내의 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기를 나타냄 - 하게 하는 명령어로 인코딩된 컴퓨터-판독가능 저장 매체를 제공한다.

다른 일례에서, 본 개시 내용은 복수의 비디오 블록을 포함하는 코딩 단위를, 비디오 디코더에서, 수신하는 단계 - 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -, 최대 크기 값을 포함하는 코딩 단위에 대한 구문 정보를 수신하는 단계 - 최대 크기 값은 코딩 단위 내의 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기를 나타냄 - 최대 크기 값에 따라 블록-유형 구문 디코더를 선택하는 단계, 및 선택된 블록-유형 구문 디코더를 사용하여 코딩 단위 내의 복수의 비디오 블록 각각을 디코딩하는 단계를 포함하는 방법을 제공한다.

다른 일례에서, 본 개시 내용은 복수의 비디오 블록을 포함하는 코딩 단위를 수신하고 - 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -, 최대 크기 값을 포함하는 코딩 단위에 대한 구문 정보를 수신하며 - 최대 크기 값은 코딩 단위 내의 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기를 나타냄 - 최대 크기 값에 따라 블록-유형 구문 디코더를 선택하고, 선택된 블록-유형 구문 디코더를 사용하여 코딩 단위 내의 복수의 비디오 블록 각각을 디코딩하도록 구성된 비디오 디코더를 포함하는 장치를 제공한다.

다른 일례에서, 본 개시 내용은 복수의 비디오 블록을 포함하는 코딩 단위를 수신하는 수단 - 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -, 최대 크기 값을 포함하는 코딩 단위에 대한 구문 정보를 수신하는 수단 - 최대 크기 값은 코딩 단위 내의 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기를 나타냄 - 최대 크기 값에 따라 블록-유형 구문 디코더를 선택하는 수단, 및 선택된 블록-유형 구문 디코더를 사용하여 코딩 단위 내의 복수의 비디오 블록 각각을 디코딩하는 수단을 제공한다.

다른 일례에서, 본 개시 내용은 프로그램가능 프로세서로 하여금 복수의 비디오 블록을 포함하는 코딩 단위를 수신하고 - 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -, 최대 크기 값을 포함하는 코딩 단위에 대한 구문 정보를 수신하며 - 최대 크기 값은 코딩 단위 내의 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기를 나타냄 - 최대 크기 값에 따라 블록-유형 구문 디코더를 선택하고, 선택된 블록-유형 구문 디코더를 사용하여 코딩 단위 내의 복수의 비디오 블록 각각을 디코딩하게 하는 명령어로 인코딩된 컴퓨터-판독가능 저장 매체를 제공한다.

하나 이상의 일례에 대한 상세 내용은 첨부 도면 및 이하의 설명에 기재되어 있다. 다른 특징, 목적 및 장점이 상세한 설명 및 첨부 도면과 특허청구범위로부터 명백하게 될 것이다.

도 1은 대형 매크로블록을 사용하여 디지털 비디오 데이터를 인코딩 및 디코딩하는 예시적인 비디오 인코딩 및 디코딩 시스템을 나타낸 블록도.
도 2는 대형 매크로블록을 코딩하는 기법을 구현하는 비디오 인코더의 일례를 나타낸 블록도.
도 3은 대형 매크로블록을 코딩하는 기법을 구현하는 비디오 디코더의 일례를 나타낸 블록도.
도 4a는 대형 매크로블록의 다양한 레벨에서의 분할을 나타낸 개념도.
도 4b는 대형 매크로블록의 상이한 파티션에 상이한 코딩 모드를 할당하는 것을 나타낸 개념도.
도 5는 대형 매크로블록의 다양한 레벨의 계층적 뷰를 나타낸 개념도.
도 6은 64x64 픽셀 대형 매크로블록의 CBP(coded block pattern, 코딩된 블록 패턴) 값을 설정하는 예시적인 방법을 나타낸 플로우차트.
도 7은 64x64 픽셀 대형 매크로블록의 32x32 픽셀 파티션의 CBP 값을 설정하는 예시적인 방법을 나타낸 플로우차트.
도 8은 64x64 픽셀 대형 매크로블록의 32x32 픽셀 파티션의 16x16 픽셀 파티션의 CBP 값을 설정하는 예시적인 방법을 나타낸 플로우차트.
도 9는 2-비트 luma16x8_CBP 값을 결정하는 예시적인 방법을 나타낸 플로우차트.
도 10은 64x64 픽셀 대형 매크로블록의 예시적인 배열을 나타낸 블록도.
도 11은 NxN 픽셀 대형 비디오 블록에 대한 최적의 분할 및 인코딩 방법을 계산하는 예시적인 방법을 나타낸 플로우차트.
도 12는 다양한 파티션을 가지는 예시적인 64x64 픽셀 매크로블록 및 각각의 파티션에 대한 선택된 인코딩 방법을 나타낸 블록도.
도 13은 비디오 시퀀스의 프레임을 인코딩하기 위한 매크로블록의 최적의 크기를 결정하는 예시적인 방법을 나타낸 플로우차트.
도 14는 대형 매크로블록을 사용하여 디지털 비디오 데이터를 코딩하는 비디오 인코더/디코더(CODEC)를 포함하는 예시적인 무선 통신 장치를 나타낸 블록도.
도 15는 대형 매크로블록에 대한 계층적 CBP 표현의 예시적인 어레이 표현을 나타낸 블록도.
도 16은 도 15의 계층적 CBP 표현에 대응하는 예시적인 트리 구조를 나타낸 블록도.
도 17은 코딩 단위의 구문 정보를 사용하여, 코딩 단위의 비디오 블록에 대한 블록-기반 구문 인코더 및 디코더를 나타내고 선택하는 예시적인 방법을 나타낸 플로우차트.

본 개시 내용은 대형 매크로블록을 사용하여 디지털 비디오 데이터를 인코딩 및 디코딩하는 기법을 기술하고 있다. 대형 매크로블록은 기존의 비디오 인코딩 표준에서 일반적으로 규정하고 있는 매크로블록보다 크다. 대부분의 비디오 인코딩 표준은 16x16 픽셀 어레이 형태의 매크로블록의 사용을 규정하고 있다. 본 개시 내용에 따르면, 인코더 및/또는 디코더는 크기가 16x16 픽셀보다 더 큰 대형 매크로블록을 이용할 수 있다. 일례로서, 대형 매크로블록은 32x32, 64x64 또는 어쩌면 그보다 큰 픽셀 어레이를 가질 수 있다.

일반적으로, 매크로블록은, 이 용어가 본 개시 내용에서 사용되는 바와 같이, NxN 픽셀(단, N은 양의 정수 값임)로서 표현되는 정의된 크기를 포함하는 픽셀 어레이에 대한 데이터 구조를 말하는 것일 수 있다. 매크로블록은 각각이 (N/2)x(N/2) 픽셀 어레이를 포함하는 4개의 루미넌스 블록(luminance block), 각각이 NxN 픽셀 어레이를 포함하는 2개의 크로미넌스 블록(chrominance block), 그리고 매크로블록-유형 정보 및 CBP(coded block pattern) 정보를 포함하는 헤더를 정의할 수 있으며, 이에 대해서는 이하에서 더 상세히 논의한다.

종래의 비디오 코딩 표준은 정의된 매크로블록 크기가 16x16 픽셀 어레이인 것으로 보통 규정하고 있다. 본 개시 내용에 기술된 다양한 기법에 따르면, 매크로블록은 NxN 픽셀 어레이(단, N은 16보다 클 수 있음)를 포함할 수 있다. 이와 마찬가지로, 종래의 비디오 코딩 표준은 인터-인코딩된(inter-encoded) 매크로블록이 통상적으로 단일 움직임 벡터를 할당받는 것으로 규정하고 있다. 본 개시 내용에 기술된 다양한 기법에 따르면, NxN 매크로블록의 인터-인코딩된 파티션에 대해 복수의 움직임 벡터가 할당될 수 있으며, 이에 대해서는 이하에서 더 상세히 기술한다. "대형 매크로블록"이라는 것 또는 유사한 문구는 일반적으로 16x16 초과의 픽셀 어레이를 가지는 매크로블록을 말한다.

어떤 경우에, 대형 매크로블록은, 이미지 품질을 유지하거나 어쩌면 개선시키면서, 코딩 효율의 개선 및/또는 데이터 전송 오버헤드의 감소를 지원할 수 있다. 예를 들어, 대형 매크로블록의 사용은 비디오 인코더 및/또는 디코더가 증가된 공간 해상도(예를 들어, 1280x720 또는 1920x1080 픽셀/프레임) 및/또는 증가된 프레임 레이트(예를 들어, 30 또는 60 프레임/초)로 생성된 비디오 데이터에 의해 제공되는 증가된 중복성을 이용할 수 있게 해줄 수 있다.

예시로서, 1280x720 픽셀/프레임의 공간 해상도 및 60 프레임/초의 프레임 레이트를 가지는 디지털 비디오 시퀀스는 176x144 픽셀/프레임의 공간 해상도 및 15 프레임/초의 프레임 레이트를 가지는 디지털 비디오 시퀀스보다 공간적으로 36배 더 크고 시간적으로 4배 더 빠르다. 매크로블록 크기가 증가된 경우, 비디오 인코더 및/또는 디코더는 비디오 데이터의 압축을 지원하기 위해 증가된 공간 및/또는 시간 중복성을 더 잘 이용할 수 있다.

또한, 대형 매크로블록을 사용함으로써, 주어진 프레임 또는 슬라이스에 대해 적은 수의 블록이 인코딩될 수 있고, 전송될 필요가 있는 오버헤드 정보의 양을 감소시킬 수 있다. 환언하면, 대형 매크로블록은 프레임 또는 슬라이스당 코딩되는 매크로블록의 총수의 감소를 가능하게 해줄 수 있다. 예를 들어, 프레임의 공간 해상도가 4배 증가되면, 프레임 내의 픽셀에 대해 4배의 16x16 매크로블록이 필요하게 된다. 이 일례에서, 64x64 매크로블록의 경우, 증가된 공간 해상도를 처리하는 데 필요한 매크로블록의 수가 감소된다. 예를 들어, 프레임 또는 슬라이스당 매크로블록의 수가 감소되면, 구문 정보, 움직임 벡터 데이터, 기타 등등의 코딩 정보의 누적량이 감소될 수 있다.

본 개시 내용에서, 매크로블록의 크기는 일반적으로, 매크로블록에 들어 있는 픽셀의 수(예를 들어, 64x64, 32x32, 16x16 등)를 말한다. 따라서, 대형 매크로블록(예를 들어, 64x64 또는 32x32)은 16x16 매크로블록보다 많은 수의 픽셀을 포함한다는 점에서 클 수 있다. 그렇지만, 비디오 프레임의 수직 및 수평 차원에 의해 정의되는 영역의 일부분(fraction)인 대형 매크로블록의 수직 및 수평 차원에 의해 정의되는 공간 영역이 종래의 16x16 매크로블록의 영역보다 크거나 크지 않을 수 있다. 어떤 일례에서, 대형 매크로블록의 영역이 종래의 16x16 매크로블록과 동일하거나 그와 유사할 수 있다. 그렇지만, 대형 매크로블록은 매크로블록 내의 많은 수의 픽셀 및 높은 공간 픽셀 밀도를 특징으로 하는 높은 공간 해상도를 가진다.

매크로블록의 크기는 프레임 내의 픽셀의 수, 즉 프레임에서의 공간 해상도에 적어도 부분적으로 기초하여 구성될 수 있다. 프레임이 많은 수의 픽셀을 가지는 경우, 대형 매크로블록이 많은 수의 픽셀을 가지도록 구성될 수 있다. 예시로서, 비디오 인코더는 30 프레임/초로 디스플레이되는 1280x720 픽셀 프레임에 대해 32x32 픽셀 매크로블록을 이용하도록 구성될 수 있다. 다른 예시로서, 비디오 인코더는 60 프레임/초로 디스플레이되는 1280x720 픽셀 프레임에 대해 64x64 픽셀 매크로블록을 이용하도록 구성될 수 있다.

인코더에서 인코딩되는 각각의 매크로블록은 매크로블록의 하나 이상의 특성을 나타내는 데이터를 필요로 할 수 있다. 이 데이터는, 예를 들어, 매크로블록의 크기, 매크로블록이 분할되는 방식, 그리고 매크로블록 및/또는 그의 파티션에 적용되는 코딩 모드(공간 또는 시간)를 나타내는 매크로블록 유형 데이터를 가리킬 수 있다. 그에 부가하여, 이 데이터는 매크로블록 및/또는 그의 파티션에 대한 움직임 벡터 정보를 나타내는 움직임 벡터 차분(mvd, motion vector difference) 데이터를, 기타 구문 요소와 함께, 포함할 수 있다. 또한, 이 데이터는 예측 이후의 잔차 정보(residual information)를 나타내는 CBP(coded block pattern) 값을, 기타 구문 정보와 함께, 포함할 수 있다. 대형 매크로블록의 단일 매크로블록 헤더 내에 매크로블록 유형 데이터가 제공될 수 있다.

앞서 언급한 바와 같이, 대형 매크로블록을 이용함으로써, 인코더는 프레임 또는 슬라이스당 매크로블록의 수를 감소시킬 수 있으며, 그로써 각각의 프레임 또는 슬라이스에 대해 전송될 필요가 있는 순 오버헤드(net overhead)의 양을 감소시킬 수 있다. 또한, 대형 매크로블록을 이용함으로써, 특정의 프레임 또는 슬라이스에 대한 매크로블록의 총수가 감소될 수 있으며, 이는 사용자에게 디스플레이되는 비디오에서의 블록형 아티팩트(blocky artifact)를 감소시킬 수 있다.

본 개시 내용에 기술된 비디오 코딩 기법은 대형 매크로블록의 코딩을 지원하는 하나 이상의 특징을 이용할 수 있다. 예를 들어, 대형 매크로블록이 작은 파티션들로 분할될 수 있다. 대형 매크로블록 내의 선택된 파티션에 상이한 코딩 모드[예를 들어, 상이한 공간(I) 또는 시간(P 또는 B) 코딩 모드]가 적용될 수 있다. 또한, 잔차 데이터를 나타내는 영이 아닌 변환 계수를 가지는 코딩된 매크로블록 및 파티션을 효율적으로 식별하기 위해 계층적 CBP(coded block pattern) 값이 이용될 수 있다. 그에 부가하여, 바람직한 결과를 가져오는 매크로블록 크기를 선택하기 위해, 큰 매크로블록 크기 및 작은 매크로블록 크기를 사용하는 코딩에 대한 레이트-왜곡 메트릭이 비교될 수 있다. 게다가, 다양한 크기의 매크로블록을 포함하는 코딩 단위[예를 들어, 프레임, 슬라이스, 시퀀스, 또는 GOP(group of pictures)]는 코딩 단위 내의 최대 매크로블록의 크기를 나타내는 구문 요소를 포함할 수 있다. 이하에서 더 상세히 기술되는 바와 같이, 대형 매크로블록은 표준의 16x16 픽셀 블록과 다른 블록-레벨 구문을 포함한다. 그에 따라, 코딩 단위 내의 최대 매크로블록의 크기를 나타냄으로써, 인코더는 코딩 단위의 매크로블록에 적용할 블록-레벨 구문 디코더를 디코더에 신호할 수 있다.

대형 매크로블록의 상이한 파티션에 대해 상이한 코딩 모드를 사용하는 것을 대형 매크로블록의 혼합 모드 코딩(mixed mode coding)이라고 할 수 있다. 모든 파티션이 동일한 인트라-코딩 또는 인터-코딩 모드를 갖도록 대형 매크로블록을 균일하게 코딩하는 대신에, 일부 파티션이 상이한 코딩 모드[상이한 인트라-코딩 모드(예를 들어, I_16x16, I_8x8, I_4x4), 또는 인트라-코딩 및 인터-코딩 모드 등]를 가지도록 대형 매크로블록이 코딩될 수 있다.

예를 들어, 대형 매크로블록이 2개 이상의 파티션으로 나누어지는 경우, 적어도 하나의 파티션은 제1 모드로 코딩될 수 있고, 다른 파티션은 제1 모드와 다른 제2 모드로 코딩될 수 있다. 어떤 경우에, 제1 모드는 제1 I 모드일 수 있고, 제2 모드는 제1 I 모드와 다른 제2 I 모드일 수 있다. 다른 경우에, 제1 모드는 I 모드일 수 있고, 제2 모드는 P 또는 B 모드일 수 있다. 따라서, 어떤 일례에서, 대형 매크로블록은 하나 이상의 시간(P 또는 B) 코딩된 파티션 및 하나 이상의 공간(I) 코딩된 파티션 또는 상이한 I 모드에 의한 하나 이상의 공간 코딩된 파티션을 포함할 수 있다.

대형 매크로블록 내의 임의의 파티션이 적어도 하나의 영이 아닌 변환 계수를 가지는지와, 가지는 경우, 어느 파티션이 가지는지를 효율적으로 나타내기 위해, 하나 이상의 계층적 CBP(coded block pattern) 값이 사용될 수 있다. 변환 계수는 대형 매크로블록의 잔차 데이터를 인코딩한다. 대형 매크로블록 레벨 CBP 비트는 대형 매크로블록 내의 임의의 파티션이 영이 아닌 양자화된 계수를 포함하는지를 나타낸다. 포함하지 않는 경우, 대형 매크로블록 전체가 영이 아닌 계수를 갖지 않는 것으로 알려져 있기 때문에, 임의의 파티션이 영이 아닌 계수를 가지는지를 고려할 필요가 없다. 이 경우에, 잔차 데이터를 사용하지 않고 매크로블록를 디코딩하기 위해 예측 매크로블록이 사용될 수 있다.

다른 대안으로서, 매크로블록-레벨 CBP 값이 대형 매크로블록 내의 적어도 하나의 파티션이 영이 아닌 계수를 가진다고 나타낼 때, 파티션들 중 어느 것이 적어도 하나의 영이 아닌 계수를 포함하는지를 식별하기 위해 파티션-레벨 CBP 값이 분석될 수 있다. 디코더는 이어서 적어도 하나의 영이 아닌 계수를 가지는 파티션에 대한 해당 잔차 데이터를 검색하고, 잔차 데이터 및 예측 블록 데이터를 사용하여 파티션을 디코딩할 수 있다. 어떤 경우에, 하나 이상의 파티션은 영이 아닌 계수를 가질 수 있고, 따라서 해당 표시를 갖는 파티션-레벨 CBP 값을 포함할 수 있다. 대형 매크로블록 및 파티션들 중 적어도 일부 모두가 16x16 픽셀보다 클 수 있다.

바람직한 레이트-왜곡 메트릭을 산출하는 매크로블록 크기를 선택하기 위해, 대형 매크로블록(예를 들어, 32x32 또는 64x64) 및 소형 매크로블록(예를 들어, 16x16) 모두에 대해 레이트-왜곡 메트릭이 분석될 수 있다. 예를 들어, 인코더는 프레임 또는 슬라이스 등의 코딩 단위에 대한 16x16 매크로블록, 32x32 매크로블록, 및 64x64 매크로블록 간에 레이트-왜곡 메트릭을 비교할 수 있다. 이어서, 인코더는 최상의 레이트-왜곡을 가져오는 매크로블록 크기를 선택하고 선택된 매크로블록 크기, 즉 최상의 레이트-왜곡을 가지는 매크로블록 크기를 사용하여 코딩 단위를 인코딩할 수 있다.

선택은 프레임 또는 슬라이스를 3개 이상의 패스(pass)(예를 들어, 16x16 픽셀 매크로블록을 사용하는 제1 패스, 32x32 픽셀 매크로블록을 사용하는 제2 패스, 및 64x64 픽셀 매크로블록을 사용하는 제3 패스)에서 인코딩하고 각각의 패스에 대한 레이트-왜곡 메트릭을 비교하는 것에 기초할 수 있다. 이러한 방식으로, 인코더는, 매크로블록 크기를 변화시키고 주어진 코딩 단위(슬라이스 또는 프레임 등)에 대해 최상의 또는 최적의 레이트-왜곡을 가져오는 매크로블록 크기를 선택함으로써, 레이트-왜곡을 최적화할 수 있다. 인코더는 코딩 단위에서 사용되는 매크로블록의 크기를 식별해주는 코딩 단위에 대한 구문 정보를, 예를 들어, 프레임 헤더 또는 슬라이스 헤더의 일부로서, 추가로 전송할 수 있다. 이하에서 더 상세히 논의되는 바와 같이, 코딩 단위에 대한 구문 정보는 코딩 단위에서 사용되는 매크로블록의 최대 크기를 나타내는 최대 크기 표시기를 포함할 수 있다. 이러한 방식으로, 인코더는 코딩 단위의 매크로블록에 대해 어느 구문을 예상하는지에 관해 디코더에 통보할 수 있다. 매크로블록의 최대 크기가 16x16 픽셀을 포함할 때, 디코더는 표준의 H.264 구문을 예상하고 H.264에 명시된 구문에 따라 매크로블록을 파싱할 수 있다. 그렇지만, 매크로블록의 최대 크기가 16x16보다 클 때, 예를 들어, 64x64 픽셀을 포함할 때, 디코더는, 본 개시 내용에서 기술되는 바와 같은, 대형 매크로블록의 처리에 관련된 수정된 및/또는 부가의 구문 요소를 예상하고 이러한 수정된 또는 부가의 구문에 따라 매크로블록을 파싱할 수 있다.

일부 비디오 프레임 또는 슬라이스에 대해, 대형 매크로블록은 상당한 비트 레이트 절감을 제공할 수 있고 그로써, 비교적 낮은 왜곡이 주어진 경우, 최상의 레이트-왜곡 결과를 가져올 수 있다. 다른 비디오 프레임 또는 슬라이스에 대해, 소형 매크로블록은 적은 왜곡을 제공할 수 있고, 레이트-왜곡 비용 분석에서 비트 레이트보다 더 중요할 수 있다. 따라서, 다른 경우에, 예를 들어, 비디오 콘텐츠 및 복잡도에 따라, 다른 비디오 프레임 또는 슬라이스에 대해 64x64, 32x32 또는 16x16가 적절할 수 있다.

도 1은 대형 매크로블록(즉, 16x16 매크로블록보다 많은 픽셀을 포함하는 매크로블록)을 사용하여 디지털 비디오 데이터를 인코딩/디코딩하는 기법을 이용할 수 있는 예시적인 비디오 인코딩 및 디코딩 시스템(10)을 나타낸 블록도이다. 도 1에 도시된 바와 같이, 시스템(10)은 인코딩된 비디오를 통신 채널(16)을 통해 목적지 장치(14)로 전송하는 소스 장치(12)를 포함한다. 소스 장치(12) 및 목적지 장치(14)는 광범위한 장치들 중 임의의 장치를 포함할 수 있다. 어떤 경우에, 소스 장치(12) 및 목적지 장치(14)는 통신 채널(16)을 통해 비디오 정보를 전달할 수 있는 무선 통신 장치(무선 핸드셋, 소위 셀룰러 또는 위성 무선 전화, 또는 임의의 무선 장치 등)를 포함할 수 있으며, 이 경우에 통신 채널(16)은 무선이다. 그렇지만, 종래의 비디오 인코딩 표준에서 규정하는 매크로블록보다 많은 픽셀을 포함하는 대형 매크로블록의 사용에 관한 본 개시 내용의 기법이 꼭 무선 응용 또는 설정으로 제한되는 것은 아니다. 예를 들어, 이들 기법은 공중파 텔레비전 방송, 케이블 텔레비전 전송, 위성 텔레비전 전송, 인터넷 비디오 전송, 저장 매체에 인코딩되어 있는 인코딩된 디지털 비디오, 또는 기타 시나리오에 적용될 수 있다. 그에 따라, 통신 채널(16)은 인코딩된 비디오 데이터의 전송에 적합한 무선 또는 유선 매체의 임의의 조합을 포함할 수 있다.

도 1의 일례에서, 소스 장치(12)는 비디오 소스(18), 비디오 인코더(20), 변조기/복조기(모뎀)(22) 및 송신기(24)를 포함할 수 있다. 목적지 장치(14)는 수신기(26), 모뎀(28), 비디오 디코더(30), 및 디스플레이 장치(32)를 포함할 수 있다. 본 개시 내용에 따르면, 소스 장치(12)의 비디오 인코더(20)는, 비디오 인코딩 프로세스에서, 종래의 비디오 인코딩 표준에서 규정하는 매크로블록 크기보다 큰 크기를 가지는 대형 매크로블록을 사용하는 기법들 중 하나 이상을 적용하도록 구성될 수 있다. 이와 유사하게, 목적지 장치(14)의 비디오 디코더(30)는, 비디오 디코딩 프로세스에서, 종래의 비디오 인코딩 표준에서 규정하는 매크로블록 크기보다 큰 매크로블록 크기를 사용하는 기법들 중 하나 이상을 적용하도록 구성될 수 있다.

도 1의 예시된 시스템(10)은 한 일례에 불과하다. 본 개시 내용에 기술된 바와 같은 대형 매크로블록을 사용하는 기법은 임의의 디지털 비디오 인코딩 및/또는 디코딩 장치에 의해 수행될 수 있다. 소스 장치(12) 및 목적지 장치(14)는 소스 장치(12)가 목적지 장치(14)로 전송하기 위한 코딩된 비디오 데이터를 생성하는 이러한 코딩 장치의 일례에 불과하다. 어떤 일례에서, 장치(12, 14)는 각각의 장치(12, 14)가 비디오 인코딩 및 디코딩 구성요소를 포함하도록 실질적으로 대칭적인 방식으로 동작할 수 있다. 따라서, 시스템(10)은, 예를 들어, 비디오 스트리밍, 비디오 재생, 비디오 방송, 또는 비디오 전화를 위해, 비디오 장치(12, 14) 간의 단방향 또는 양방향 비디오 전송을 지원할 수 있다.

소스 장치(12)의 비디오 소스(18)는 비디오 카메라, 이전에 캡처한 비디오가 들어 있는 비디오 아카이브(video archive), 및/또는 비디오 콘텐츠 공급자로부터의 비디오 피드(video feed) 등의 비디오 캡처 장치를 포함할 수 있다. 추가의 대안으로서, 비디오 소스(18)는 소스 비디오로서의 컴퓨터 그래픽-기반 데이터, 또는 라이브 비디오, 아카이브 비디오 및 컴퓨터-생성 비디오의 조합을 생성할 수 있다. 어떤 경우에, 비디오 소스(18)가 비디오 카메라인 경우, 소스 장치(12) 및 목적지 장치(14)는 소위 카메라 폰 또는 비디오 폰을 구성할 수 있다. 그렇지만, 앞서 언급한 바와 같이, 본 개시 내용에 기술된 기법은 일반적인 비디오 코딩에 적용가능할 수 있고, 무선 또는 유선 응용에 적용될 수 있다. 각각의 경우에, 캡처된, 사전 캡처된 또는 컴퓨터-생성 비디오는 비디오 인코더(20)에 의해 인코딩될 수 있다. 인코딩된 비디오 정보는 이어서 통신 표준에 따라 모뎀(22)에서 변조되고 송신기(24)를 통해 목적지 장치(14)로 전송될 수 있다. 모뎀(22)은 신호 변조를 하도록 설계된 다양한 믹서, 필터, 증폭기, 또는 기타 구성요소를 포함할 수 있다. 송신기(24)는 증폭기, 필터 및 하나 이상의 안테나를 포함하는, 데이터를 전송하도록 설계된 회로를 포함할 수 있다.

목적지 장치(14)의 수신기(26)는 채널(16)을 통해 정보를 수신하고, 모뎀(28)은 정보를 복조한다. 다시 말하자면, 비디오 인코딩 프로세스는 비디오 데이터의 인터(즉, 시간) 및/또는 인트라(즉, 공간) 인코딩을 위해 대형 매크로블록(예를 들어, 16x16보다 큼)을 사용하는 본 명세서에 기술된 기법들 중 하나 이상을 구현할 수 있다. 비디오 디코더(30)에 의해 수행되는 비디오 디코딩 프로세스도 역시 디코딩 프로세스 동안 이러한 기법을 사용할 수 있다. 채널(16)을 통해 전달된 정보는 대형 매크로블록의 특성 및/또는 처리를 기술하고 있는 구문 요소를 포함하는, 비디오 인코더(20)에 의해 정의된 구문 정보를 포함할 수 있고 이 구문 정보는 또한 비디오 디코더(30)에 의해서도 사용될 수 있으며, 이에 대해서는 이하에서 더 상세히 논의한다. 구문 정보는 프레임 헤더, 슬라이스 헤더, 시퀀스 헤더(예를 들어, H.264와 관련해서는, 코딩된 비디오 시퀀스가 준수하는 프로파일 및 레벨을 사용함), 또는 매크로블록 헤더 중 일부 또는 전부에 포함될 수 있다. 디스플레이 장치(32)는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, CRT(cathode ray tube), LCD(liquid crystal display), 플라즈마 디스플레이, OLED(organic light emitting diode) 디스플레이, 또는 기타 유형의 디스플레이 장치 등의 각종의 디스플레이 장치 중 임의의 것을 포함할 수 있다.

도 1의 일례에서, 통신 채널(16)은 RF(radio frequency) 스펙트럼 또는 하나 이상의 물리 전송 선로, 또는 무선 및 유선 매체의 임의의 조합 등의 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 채널(16)은 LAN(local area network), WAN(wide-area network), 또는 전세계 네트워크(인터넷 등) 등의 패킷-기반 네트워크의 일부를 구성할 수 있다. 통신 채널(16)은 일반적으로 소스 장치(12)로부터 목적지 장치(14)로 비디오 데이터를 전송하기 위한 임의의 적합한 통신 매체 또는 상이한 통신 매체들의 집합체(유선 또는 무선 매체의 임의의 적합한 조합을 포함함)를 나타낸다. 통신 채널(16)은 소스 장치(12)로부터 목적지 장치(14)로의 통신을 용이하게 해주는 데 유용할 수 있는 라우터, 스위치, 기지국 또는 임의의 다른 장비를 포함할 수 있다.

비디오 인코더(20) 및 비디오 디코더(30)는 ITU-T H.264 표준[대안으로서, MPEG-4, Part 10, AVC(Advanced Video Coding)이라고도 함] 등의 비디오 압축 표준에 따라 동작할 수 있다. 그렇지만, 본 개시 내용의 기법은 임의의 특정의 코딩 표준으로 제한되지 않는다. 다른 일례는 MPEG-2 및 ITU-T H.263을 포함한다. 도 1에 도시되어 있지는 않지만, 일부 측면에서, 비디오 인코더(20) 및 비디오 디코더(30) 각각은 오디오 인코더 및 디코더와 통합될 수 있고, 공통의 데이터 스트림 또는 개별적인 데이터 스트림 내의 오디오 및 비디오 둘다의 인코딩을 처리하기 위해 적절한 MUX-DEMUX 유닛 또는 기타 하드웨어 및 소프트웨어를 포함할 수 있다. 적용가능한 경우, MUX-DEMUX 유닛은 ITU H.223 멀티플렉서 프로토콜, 또는 기타 프로토콜[UDP(user datagram protocol) 등]을 준수할 수 있다.

ITU-T H.264/MPEG-4(AVC) 표준은, JVT(Joint Video Team)라고 알려진 공동 파트너쉽(collective partnership)의 성과로서, ITU-T VCEG(Video Coding Experts Group)가 ISO/IEC MPEG(Moving Picture Experts Group)와 함께 수립한 것이다. 일부 측면에서, 본 개시 내용에 기술된 기법은 일반적으로 H.264 표준을 준수하는 장치에 적용될 수 있다. H.264 표준은 ITU-T Study Group의 ITU-T Recommendation H.264, Advanced Video Coding for generic audiovisual services(2005년 3월)(본 명세서에서 H.264 표준 또는 H.264 규격 또는 H.264/AVC 표준 또는 규격이라고 지칭할 수 있음)에 기술되어 있다. JVT(Joint Video Team)는 H.264/MPEG-4 AVC의 확장에 관해 계속 연구하고 있다.

비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 이상의 마이크로프로세서, DSP(digital signal processor), ASIC(application specific integrated circuit), FPGA(field programmable gate array), 개별 논리, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합 등의 각종의 적합한 인코더 회로 중 임의의 것으로서 구현될 수 있다. 비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 이상의 인코더 또는 디코더에 포함될 수 있고, 이들 중 어느 하나가 각자의 카메라, 컴퓨터, 모바일 장치, 가입자 장치, 방송 장치, 셋톱 박스, 서버 등에 겸용 CODEC(encoder/decoder)의 일부로서 통합될 수 있다.

비디오 시퀀스는 통상적으로 일련의 비디오 프레임을 포함한다. 비디오 인코더(20)는 비디오 데이터를 인코딩하기 위해 개별 비디오 프레임 내의 비디오 블록에 작용한다. 비디오 블록은 매크로블록 또는 매크로블록의 파티션에 대응할 수 있다. 비디오 블록은 또한 파티션의 파티션에 대응할 수 있다. 비디오 블록은 고정 또는 가변 크기를 가질 수 있고, 지정된 코딩 표준에 따라 또는 본 개시 내용의 기법에 따라 크기가 다를 수 있다. 각각의 비디오 프레임은 복수의 슬라이스를 포함할 수 있다. 각각의 슬라이스는 파티션(서브-블록이라고도 함)으로 배열되어 있을 수 있는 복수의 매크로블록을 포함할 수 있다.

일례로서, ITU-T H.264 표준은 다양한 블록 크기[루마 성분(luma component)에 대한 16 대 16, 8 대 8, 또는 4 대 4와 크로마 성분(chroma component)에 대한 8x8 등]에서 인트라 예측(intra prediction)은 물론, 다양한 블록 크기(루마 성분에 대한 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 및 4x4와 크로마 성분에 대한 대응하는 스케일의 크기 등)에서의 인터 예측(inter prediction)을 지원한다. 본 개시 내용에서, "x"와 "대"는 수직 차원과 수평 차원으로 블록의 픽셀 차원을 언급하기 위해 서로 바꾸어 사용될 수 있다(예를 들어, 16x16 픽셀 또는 16 대 16 픽셀). 일반적으로, 16x16 블록은 수직 방향으로 16개 픽셀과 수평 방향으로 16개 픽셀을 가질 것이다. 이와 마찬가지로, NxN 블록은 일반적으로 수직 방향으로 N개 픽셀과 수평 방향으로 N개 픽셀을 가지며, 여기서 N은 16보다 클 수 있는 양의 정수 값을 나타낸다. 블록 내의 픽셀은 행 및 열로 배열될 수 있다.

16 대 16보다 작은 블록 크기는 16 대 16 매크로블록의 파티션이라고 할 수 있다. 이와 마찬가지로, NxN 블록에 대해, NxN보다 작은 블록 크기는 NxN 블록의 파티션이라고 할 수 있다. 본 개시 내용의 기법은 종래의 16x16 픽셀 매크로블록보다 큰 매크로블록(32x32 픽셀 매크로블록, 64x64 픽셀 매크로블록, 또는 그보다 큰 매크로블록 등)에 대한 인트라-코딩 및 인터-코딩을 기술하고 있다. 비디오 블록은 픽셀 영역에서의 픽셀 데이터 블록 또는 [예를 들어, DCT(discrete cosine transform), 정수 변환, 웨이블릿 변환, 또는 개념적으로 유사한 변환 등의 변환을 코딩된 비디오 블록과 예측 비디오 블록 간의 픽셀 차분을 나타내는 잔차 비디오 블록 데이터에 적용한 후의] 변환 영역에서의 변환 계수 블록을 포함할 수 있다. 어떤 경우에, 비디오 블록은 변환 영역에서의 양자화된 변환 계수 블록을 포함할 수 있다.

보다 작은 비디오 블록이 보다 양호한 해상도를 제공할 수 있으며, 높은 LOD(level of detail)를 포함하는 비디오 프레임의 위치에 대해 사용될 수 있다. 일반적으로, 매크로블록 및 다양한 파티션(때때로 서브-블록이라고 함)이 비디오 블록인 것으로 간주될 수 있다. 그에 부가하여, 슬라이스는 복수의 비디오 블록(매크로블록 및/또는 서브-블록 등)인 것으로 간주될 수 있다. 각각의 슬라이스는 비디오 프레임의 독립적으로 디코딩가능한 단위일 수 있다. 다른 대안으로서, 프레임 자체가 디코딩가능 단위일 수 있거나, 프레임의 다른 부분이 디코딩가능 단위로서 정의될 수 있다. "코딩 단위(coded unit)" 또는 "코딩 단위(coding unit)"는 비디오 프레임의 임의의 독립적으로 디코딩가능한 단위[전체 프레임, 프레임의 슬라이스, GOP(group of pictures)(시퀀스라고도 함) 또는 적용가능한 코딩 기법에 따라 정의된 다른 독립적으로 디코딩가능한 단위 등]를 말하는 것일 수 있다.

예측 데이터 및 잔차 데이터를 생성하는 인트라-예측 또는 인터-예측 코딩 이후에, 그리고 변환 계수를 생성하는 임의의 변환[ H.264/ AVC에서 사용되는 4x4 또는 8x8 정수 변환 또는 DCT(discrete cosine transform) 등] 이후에, 변환 계수의 양자화가 수행될 수 있다. 양자화는 일반적으로, 어쩌면 계수를 표현하는 데 사용되는 데이터의 양을 줄이기 위해, 변환 계수가 양자화되는 프로세스를 말한다. 양자화 프로세스는 계수들 중 일부 또는 전부와 연관된 비트 깊이(bit depth)를 감소시킬 수 있다. 예를 들어, 양자화 동안 n-비트 값이 m-비트 값으로 반내림(rounded down)될 수 있으며, 여기서 n은 m보다 크다.

양자화 이후에, 예를 들어, CAVLC(content adaptive variable length coding), CABAC(context adaptive binary arithmetic coding) 또는 다른 엔트로피 코딩 방법에 따라, 양자화된 데이터의 엔트로피 코딩이 수행될 수 있다. 엔트로피 코딩하도록 구성된 처리 장치 또는 다른 처리 장치는 다른 처리 기능[양자화된 계수의 제로 런 길이 코딩(zero run length coding) 및/또는 코딩 단위(프레임, 슬라이스, 매크로블록, 또는 시퀀스)에 대한 CBP 값, 매크로블록 유형, 코딩 모드, 최대 매크로블록 크기 등의 구문 정보의 생성, 기타 등등]을 수행할 수 있다.

본 개시 내용의 다양한 기법에 따르면, 비디오 인코더(20)는 디지털 비디오 데이터를 인코딩하는 종래의 비디오 인코딩 표준에서 규정된 것보다 큰 매크로블록을 사용할 수 있다. 한 일례에서, 비디오 인코더(20)는 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을, 비디오 인코더에서, 인코딩하고, 블록의 크기를 나타내는 블록-유형 구문 정보(block-type syntax information)를 생성하며, 인코딩된 블록에 대한 CBP 값을 생성할 수 있고, 여기서 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타낸다. 대형 매크로블록의 매크로블록 헤더 내에 매크로블록 블록-유형 구문 정보가 제공될 수 있다. 매크로블록 블록-유형 구문 정보는 프레임 또는 슬라이스에서의 매크로블록의 주소 또는 위치, 또는 매크로블록의 위치를 식별해주는 매크로블록 번호, 매크로블록에 적용되는 코딩 모드의 유형, 매크로블록에 대한 양자화 값, 매크로블록에 대한 임의의 움직임 벡터 정보, 및 매크로블록에 대한 CBP 값을 나타낼 수 있다.

다른 일례에서, 비디오 인코더(20)는 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을 수신하고, 블록을 파티션들로 분할하며, 제1 인코딩 모드를 사용하여 파티션들 중 하나를 인코딩하고, 제1 인코딩 모드와 다른 제2 인코딩 모드를 사용하여 파티션들 중 다른 하나를 인코딩하며, 블록의 크기를 나타내고 파티션 및 파티션을 인코딩하는 데 사용되는 인코딩 모드를 식별해주는 블록-유형 구문 정보를 생성할 수 있다.

부가의 일례에서, 비디오 인코더(20)는 프레임 또는 슬라이스 등의 비디오 코딩 단위를 수신하고, 16x16 픽셀의 크기를 가지는 제1 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하기 위한 제1 레이트-왜곡 메트릭을 결정하며, 16x16 픽셀을 초과하는 크기를 가지는 제2 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하기 위한 제2 레이트-왜곡 메트릭을 결정하고, 제1 레이트-왜곡 메트릭이 제2 레이트-왜곡 메트릭보다 작을 때 제1 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩하며, 제2 레이트-왜곡 메트릭이 제1 레이트-왜곡 메트릭보다 작을 때 제2 비디오 블록을 사용하여 비디오 코딩 단위를 인코딩할 수 있다.

한 일례에서, 비디오 디코더(30)는 16x16 픽셀을 초과하는 크기를 가지는 인코딩된 비디오 블록을 수신하고, 인코딩된 블록의 크기를 나타내는 블록-유형 구문 정보를 수신하며, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 수신하고 - 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타냄 -, 인코딩된 블록에 대한 블록-유형 구문 정보 및 코딩된 블록 패턴 값에 기초하여 인코딩된 블록을 디코딩할 수 있다.

다른 일례에서, 비디오 디코더(30)는 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을 수신하고 - 블록은 파티션들로 분할되고, 파티션들 중 하나는 인트라-인코딩되며, 파티션들 중 다른 하나는 인트라-인코딩됨 -, 블록의 크기를 나타내고 파티션 및 파티션을 인코딩하는 데 사용되는 인코딩 모드를 식별해주는 블록-유형 구문 정보를 수신하며, 블록-유형 구문 정보에 기초하여 비디오 블록을 디코딩할 수 있다.

도 2는 본 개시 내용에 따른 대형 매크로블록을 사용하는 기법을 구현할 수 있는 비디오 인코더(50)의 일례를 나타낸 블록도이다. 비디오 인코더(50)는 소스 장치(12)의 비디오 인코더(20) 또는 다른 장치의 비디오 인코더에 대응할 수 있다. 비디오 인코더(50)는 대형 매크로블록 또는 대형 매크로블록의 파티션 또는 서브-파티션을 비롯한 비디오 프레임 내에서 인트라-코딩 및 인터-코딩을 수행할 수 있다. 인트라-코딩은 주어진 비디오 프레임 내에서 비디오 내의 공간 중복성을 감소 또는 제거하기 위해 공간 예측에 의존한다. 인터-코딩은 비디오 시퀀스의 인접 프레임 내에서 비디오 내의 시간 중복성을 감소 또는 제거하기 위해 시간 예측에 의존한다.

인트라-모드(I-모드)는 몇가지 공간-기반 압축 모드 중 임의의 것을 말할 수 있고, 예측(P-모드) 또는 양방향(B-모드) 등의 인터-모드는 몇가지 시간-기반 압축 모드 중 임의의 것을 말할 수 있다. 본 개시 내용의 기법은 인터-코딩 및 인트라-코딩 둘다 동안에 적용될 수 있다. 어떤 경우에, 본 개시 내용의 기법은 또한 비디오가 아닌 디지털 화상(non-video digital picture)을 인코딩하는 데 적용될 수 있다. 즉, 디지털 정지 화상 인코더는, 비디오 시퀀스에서 비디오 프레임 내의 인트라-코딩된 매크로블록을 인코딩하는 것과 유사한 방식으로, 대형 매크로블록을 사용해 디지털 정지 화상을 인트라-코딩하기 위해 본 개시 내용의 기법을 이용할 수 있다.

도 2에 도시된 바와 같이, 비디오 인코더(50)는 인코딩될 비디오 프레임 내의 현재 비디오 블록을 수신한다. 도 2의 일례에서, 비디오 인코더(50)는 움직임 보상 유닛(35), 움직임 추정 유닛(36), 인트라 예측 유닛(37), 모드 선택 유닛(39), 참조 프레임 저장소(34), 합산기(48), 변환 유닛(38), 양자화 유닛(40), 및 엔트로피 코딩 유닛(46)을 포함한다. 비디오 블록 재구성을 위해, 비디오 인코더(50)는 또한 역양자화 유닛(42), 역변환 유닛(44), 및 합산기(51)를 포함한다. 재구성된 비디오로부터 블록형 아티팩트(blockiness artifact)를 제거하기 위해 블록 경계를 필터링하기 위해 디블록킹 필터(deblocking filter)(도 2에 도시되지 않음)도 역시 포함될 수 있다. 원하는 경우, 디블록킹 필터는 통상적으로 합산기(51)의 출력을 필터링할 것이다.

인코딩 프로세스 동안, 비디오 인코더(50)는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 프레임 또는 슬라이스는 대형 매크로블록을 비롯한 다수의 비디오 블록으로 나누어질 수 있다. 움직임 추정 유닛(36) 및 움직임 보상 유닛(35)은, 시간 압축을 제공하기 위해, 하나 이상의 참조 프레임 내의 하나 이상의 블록에 대해 수신된 비디오 블록의 인터-예측 코딩을 수행한다. 인트라 예측 유닛(37)은, 공간 압축을 제공하기 위해, 코딩될 블록과 동일한 프레임 또는 슬라이스 내의 하나 이상의 이웃 블록에 대해 수신된 비디오 블록의 인트라-예측 코딩을 수행한다.

모드 선택 유닛(39)은, 예를 들어, 오류 결과에 기초하여, 코딩 모드들(인트라 또는 인터) 중 하나를 선택할 수 있고, 얻어진 인트라-코딩 또는 인터-코딩된 블록을 합산기(48)에게 제공하여 잔차 블록 데이터를 생성하고, 합산기(51)에게 제공하여 참조 프레임으로서 사용하기 위한 인코딩된 블록을 재구성한다. 본 개시 내용의 기법에 따르면, 코딩될 비디오 블록은 종래의 코딩 표준에서 규정된 것보다 큰, 즉 16x16 픽셀 매크로블록보다 큰 매크로블록을 포함할 수 있다. 예를 들어, 대형 비디오 블록은 64x64 픽셀 매크로블록 또는 32x32 픽셀 매크로블록을 포함할 수 있다.

움직임 추정 유닛(36) 및 움직임 보상 유닛(35)은 고도로 통합되어 있을 수 있지만, 개념적인 목적을 위해 개별적으로 나타내어져 있다. 움직임 추정은 비디오 블록의 움직임을 추정하는 움직임 벡터를 생성하는 프로세스이다. 예를 들어, 움직임 벡터는 현재 프레임(또는 기타 코딩 단위) 내에서의 코딩되는 현재 블록에 대한 예측 참조 프레임(또는 기타 코딩 단위) 내에서의 예측 블록의 변위를 나타낼 수 있다. 예측 블록은 SAD(sum of absolute difference, 차분 절대값 합), SSD(sum of square difference, 차분 제곱 합), 또는 기타 차분 메트릭에 의해 결정될 수 있는 픽셀 차분의 점에서 코딩될 블록에 가깝게 일치하는 것으로 발견된 블록이다.

움직임 벡터는 또한 대형 매크로블록의 파티션의 변위를 나타낼 수 있다. 하나의 32x64 파티션 및 2개의 32x32 파티션을 가지는 64x64 픽셀 매크로블록에 대한 한 일례에서, 제1 움직임 벡터는 32x64 파티션의 변위를 나타낼 수 있고, 제2 움직임 벡터는 32x32 파티션들 중 제1 파티션의 변위를 나타낼 수 있으며, 제3 움직임 벡터는 32x32 파티션들 중 제2 파티션의 변위를 나타낼 수 있고, 이들 움직임 벡터 모두는 참조 프레임 내의 대응하는 파티션에 대한 것이다. 이러한 파티션도 역시 비디오 블록으로 간주될 수 있는데, 그 이유는 이들 용어가 본 개시 내용에서 사용되기 때문이다. 움직임 보상은, 움직임 추정에 의해 결정된 움직임 벡터에 기초하여, 예측 블록을 가져오거나 생성하는 것을 포함할 수 있다. 다시 말하자면, 움직임 추정 유닛(36) 및 움직임 보상 유닛(35)은 기능적으로 통합되어 있을 수 있다.

움직임 추정 유닛(36)은, 인터-코딩된 프레임의 비디오 블록을 참조 프레임 저장소(34) 내의 참조 프레임의 비디오 블록과 비교함으로써, 인터-코딩된 프레임의 비디오 블록에 대한 움직임 벡터를 계산한다. 움직임 보상 유닛(35)은 또한 참조 프레임(예를 들어, I-프레임 또는 P-프레임)의 서브-정수 픽셀(sub-integer pixel)을 보간할 수 있다. ITU H.264 표준에서는 참조 프레임을 "리스트(list)"라고 한다. 따라서, 참조 프레임 저장소(34)에 저장된 데이터도 역시 리스트인 것으로 간주될 수 있다. 움직임 추정 유닛(36)은 참조 프레임 저장소(34)로부터의 하나 이상의 참조 프레임(또는 리스트)의 블록을 현재 프레임(예를 들어, P-프레임 또는 B-프레임)의 인코딩될 블록과 비교한다. 참조 프레임 저장소(34) 내의 참조 프레임이 서브-정수 픽셀에 대한 값을 포함할 때, 움직임 추정 유닛(36)에 의해 계산된 움직임 벡터는 참조 프레임의 서브-정수 픽셀 위치를 말할 수 있다. 움직임 추정 유닛(36)은 계산된 움직임 벡터를 엔트로피 코딩 유닛(46) 및 움직임 보상 유닛(35)으로 보낸다. 움직임 벡터에 의해 식별되는 참조 프레임 블록을 예측 블록이라고 할 수 있다. 움직임 보상 유닛(35)은 참조 프레임의 예측 블록에 대한 오차 값을 계산한다.

움직임 보상 유닛(35)은 예측 블록에 기초하여 예측 데이터를 계산할 수 있다. 비디오 인코더(50)는, 움직임 보상 유닛(35)으로부터의 예측 데이터를 코딩된 원본 비디오 블록으로부터 감산함으로써, 잔차 비디오 블록을 형성한다. 합산기(48)는 이 감산 연산을 수행하는 구성요소 또는 구성요소들을 나타낸다. 변환 유닛(38)은 DCT(discrete cosine transform) 또는 개념적으로 유사한 변환 등의 변환을 잔차 블록에 적용하여, 잔차 변환 계수값을 포함하는 비디오 블록을 생성한다. 변환 유닛(38)은 DCT와 개념적으로 유사한, H.264 표준에서 정의된 것 등의 기타 변환을 수행할 수 있다. 웨이블릿 변환, 정수 변환, 서브-대역 변환 또는 기타 유형의 변환도 사용될 수 있다. 어느 경우든지, 변환 유닛(38)은 변환을 잔차 블록에 적용하여, 잔차 변환 계수 블록을 생성한다. 변환은 잔차 정보를 픽셀 값 영역으로부터 변환 영역(주파수 영역 등)으로 변환할 수 있다.

양자화 유닛(40)은, 비트 레이트를 추가로 감소시키기 위해, 잔차 변환 계수를 양자화한다. 양자화 프로세스는 계수들 중 일부 또는 전부와 연관된 비트 깊이를 감소시킬 수 있다. 한 일례에서, 양자화 유닛(40)은, 본 개시 내용에서 QPY라고 하는 루미넌스 양자화 파라미터에 따라, 각각의 64x64 픽셀 매크로블록마다 상이한 양자화 정도(degree of quantization)를 설정할 수 있다. 양자화 유닛(40)은 또한, 본 명세서에서 "MB64_delta_QP"라고 하는 양자화 파라미터 수정자 및 이전에 인코딩된 64x64 픽셀 매크로블록에 기초하여, 64x64 매크로블록의 양자화 동안 사용되는 루미넌스 양자화 파라미터를 수정할 수 있다.

각각의 64x64 픽셀 대형 매크로블록은 -26 내지 +25의 범위(경계 포함)에 있는 개별 MB64_delta_QP 값을 포함할 수 있다. 일반적으로, 비디오 인코더(50)는, 블록의 인코딩된 버전을 전송하기 위한 원하는 비트 레이트에 기초하여, 특정의 블록에 대한 MB64_delta_QP 값을 설정할 수 있다. 제1 64x64 픽셀 매크로블록의 MB64_delta_QP 값은, 예를 들어, 프레임/또는 슬라이스 헤더에 있는, 제1 64x64 픽셀 매크로블록을 포함하는 프레임 또는 슬라이스의 QP 값과 같을 수 있다. 현재 64x64 픽셀 매크로블록에 대한 QPY는 하기의 수식에 따라 계산될 수 있다:

QPY = (QPY,PREV + MB64_delta_QP + 52)%52

여기서 QPY,PREV는 현재 슬라이스/프레임의 디코딩 순서에서 이전 64x64 픽셀 매크로블록의 QPY 값을 말하고, "%"는 N%52가 N을 52로 나눈 나머지 값에 대응하는 0 내지 51(경계 포함)의 결과를 반환하도록 되어 있는 모듈로 연산자(modulo operator)를 말한다. 프레임/슬라이스에서의 제1 매크로블록에 대해, QPY,PREV는 프레임/슬라이스 헤더로 보내지는 프레임/슬라이스 QP와 같도록 설정될 수 있다.

한 일례에서, 양자화 유닛(40)은, P_Skip 및 B_Skip 매크로블록 유형 등의 "skip" 유형 매크로블록을 비롯한, 특정의 64x64 픽셀 매크로블록에 대해 MB64_delta_QP 값이 정의되어 있지 않을 때, MB64_delta_QP 값이 0인 것으로 가정한다. 어떤 일례에서, 64x64 픽셀 매크로블록 내의 파티션의 보다 세분화된 양자화 제어를 위해 부가의 delta_QP 값(일반적으로 양자화 파라미터 수정 값이라고 함)(64x64 픽셀 매크로블록의 32x32 픽셀 파티션 각각에 대한 MB32_delta_QP 값 등)이 정의될 수 있다. 어떤 일례에서, 64x64 매크로블록의 각각의 파티션은 개별 양자화 파라미터를 할당받을 수 있다. 각각의 파티션에 대한 개별화된 양자화 파라미터를 사용하면, 매크로블록의 보다 효율적인 양자화가 얻어질 수 있으며, 예를 들어, 64x64 매크로블록에 대해 단일 QP를 사용하는 것 대신에, 비균질 영역에 대한 양자화를 더 잘 조절할 수 있다. 각각의 양자화 파라미터 수정 값은 대응하는 인코딩된 블록에 구문 정보로서 포함될 수 있으며, 디코더는, 양자화 파라미터 수정 값에 따라, 인코딩된 블록을 역양자화(dequantizing 또는 inverse quantizing)함으로써 인코딩된 블록을 디코딩할 수 있다.

양자화 후에, 엔트로피 코딩 유닛(46)은 양자화된 변환 계수를 엔트로피 코딩한다. 예를 들어, 엔트로피 코딩 유닛(46)은 CAVLC(content adaptive variable length coding), CABAC(context adaptive binary arithmetic coding) 또는 다른 엔트로피 코딩 기법을 수행할 수 있다. 엔트로피 코딩 유닛(46)에 의한 엔트로피 코딩 후에, 인코딩된 비디오는 다른 장치로 전송되거나 나중에 전송 또는 검색하기 위해 아카이브될 수 있다. 코딩된 비트스트림은 엔트로피 코딩된 잔차 변환 계수 블록, 이러한 블록에 대한 움직임 벡터, 각각의 64x64 픽셀 매크로블록에 대한 MB64_delta_QP 값, 및 기타 구문 요소[예를 들어, 매크로블록-유형 식별자 값, 코딩 단위 내의 매크로블록의 최대 크기를 나타내는 코딩 단위 헤더, QPY 값, CBP(coded block pattern) 값, 매크로블록 또는 서브-블록의 분할 방법을 식별해주는 값, 및 변환 크기 플래그 값을 포함함]를 포함할 수 있으며, 이에 대해서는 이하에서 더 상세히 논의한다. CABAC(context adaptive binary arithmetic coding)의 경우에, 컨텍스트는 이웃 매크로블록에 기초할 수 있다.

어떤 경우에, 비디오 인코더(50)의 엔트로피 코딩 유닛(46) 또는 다른 유닛은, 엔트로피 코딩에 부가하여, 다른 코딩 기능을 수행하도록 구성될 수 있다. 예를 들어, 엔트로피 코딩 유닛(46)은 대형 매크로블록 및 파티션에 대한 CBP 값을 결정하도록 구성될 수 있다. 엔트로피 코딩 유닛(46)은 대형 매크로블록 내의 임의의 파티션이 영이 아닌 변환 계수 값을 포함하는지를 나타내는 대형 매크로블록에 대한 CBP 값, 및, 포함하는 경우, 대형 매크로블록 내의 특정 파티션이 영이 아닌 변환 계수 값을 가지는지를 나타내는 다른 CBP 값을 제공하기 위해 계층적 CBP 방식을 적용할 수 있다. 또한, 어떤 경우에, 엔트로피 코딩 유닛(46)은 대형 매크로블록 또는 서브-파티션에서의 계수의 런 길이 코딩을 수행할 수 있다. 상세하게는, 엔트로피 코딩 유닛(46)은 지그재그 스캔 또는 기타 스캔 패턴을 적용하여 매크로블록 또는 파티션에서의 변환 계수를 스캔하고 추가의 압축을 위해 제로의 런(run of zeros)을 인코딩할 수 있다. 엔트로피 코딩 유닛(46)은 또한 인코딩된 비디오 비트스트림으로 전송하기 위한 적절한 구문 요소로 헤더 정보를 구성할 수 있다.

역양자화 유닛(42) 및 역변환 유닛(44)은 각각 역양자화 및 역변환을 적용하여, 예를 들어, 나중에 참조 블록으로서 사용하기 위해, 픽셀 영역에서의 잔차 블록을 재구성한다. 움직임 보상 유닛(35)은 잔차 블록을 참조 프레임 저장소(34)의 프레임들 중 하나의 프레임의 예측 블록에 가산함으로써 참조 블록을 계산할 수 있다. 움직임 보상 유닛(35)은 또한 서브-정수 픽셀 값을 계산하기 위해 하나 이상의 보간 필터를 재구성된 잔차 블록에 적용할 수 있다. 합산기(51)는 재구성된 잔차 블록을 움직임 보상 유닛(35)에 의해 생성된 움직임 보상된 예측 블록에 가산하여, 참조 프레임 저장소(34)에 저장하기 위한 재구성된 비디오 블록을 생성한다. 재구성된 비디오 블록은 움직임 추정 유닛(36) 및 움직임 보상 유닛(35)에서 차후의 비디오 프레임에서 블록을 인터-코딩하기 위한 참조 블록으로서 사용될 수 있다. 대형 매크로블록은 64x64 픽셀 매크로블록, 32x32 픽셀 매크로블록, 또는 종래의 비디오 코딩 표준에서 규정하는 크기보다 큰 기타 매크로블록을 포함할 수 있다.

도 3은 본 개시 내용에 기술된 방식으로 인코딩되는 비디오 시퀀스를 디코딩하는 비디오 디코더(60)의 일례를 나타낸 블록도이다. 인코딩된 비디오 시퀀스는 종래의 비디오 인코딩 표준에서 규정하는 크기보다 큰 인코딩된 매크로블록을 포함할 수 있다. 예를 들어, 인코딩된 매크로블록은 32x32 픽셀 또는 64x64 픽셀 매크로블록일 수 있다. 도 3의 일례에서, 비디오 디코더(60)는 엔트로피 디코딩 유닛(52), 움직임 보상 유닛(54), 인트라 예측 유닛(55), 역양자화 유닛(56), 역변환 유닛(58), 참조 프레임 저장소(62) 및 합산기(64)를 포함한다. 비디오 디코더(60)는, 어떤 일례에서, 일반적으로 비디오 인코더(50)와 관련하여 기술된 인코딩 패스(encoding pass)에 상반하는 디코딩 패스(decoding pass)를 수행할 수 있다(도 2). 움직임 보상 유닛(54)은 엔트로피 디코딩 유닛(52)으로부터 수신된 움직임 벡터에 기초하여 예측 데이터를 생성할 수 있다.

엔트로피 디코딩 유닛(52)은 수신된 비트스트림을 엔트로피 디코딩하여, 양자화된 계수 및 구문 요소(예를 들어, 움직임 벡터, CBP 값, QPY 값, 변환 크기 플래그 값, MB64_delta_QP 값)를 생성한다. 엔트로피 디코딩 유닛(52)은 코딩 단위(프레임, 슬라이스 및/또는 매크로블록 헤더 등)에서의 구문 정보를 식별하기 위해 비트스트림을 파싱할 수 있다. 복수의 매크로블록을 포함하는 코딩 단위에 대한 구문 정보는 매크로블록의 최대 크기(예를 들어, 16x16 픽셀, 32x32 픽셀, 64x64 픽셀, 또는 코딩 단위에서의 다른 그보다 큰 크기의 매크로블록)를 나타낼 수 있다. 블록에 대한 구문 정보는 엔트로피 디코딩 유닛(52)으로부터, 예를 들어, 블록의 코딩 모드에 따라, 움직임 보상 유닛(54) 또는 인트라 예측 유닛(55)으로 전달된다. 디코더는 코딩 단위의 구문에서의 최대 크기 표시기를 사용하여, 코딩 단위에 대한 구문 디코더를 선택할 수 있다. 최대 크기에 대해 지정된 구문 디코더를 사용하여, 디코더는 이어서 코딩 단위에 포함된 큰 크기의 매크로블록을 적절히 해석 및 처리할 수 있다.

움직임 보상 유닛(54)은 비트스트림으로 수신된 움직임 벡터를 사용하여, 참조 프레임 저장소(62) 내의 참조 프레임에서 예측 블록을 식별할 수 있다. 인트라 예측 유닛(55)은 비트스트림으로 수신된 인트라 예측 모드를 사용하여, 공간적으로 인접한 블록으로부터 예측 블록을 형성할 수 있다. 역양자화 유닛(56)은 비트스트림으로 제공되어 엔트로피 디코딩 유닛(52)에 의해 디코딩된 양자화된 블록 계수를 역양자화(inverse quantize 또는 de-quantize)한다. 역양자화 프로세스는, 예를 들어, H.264 디코딩 표준에 정의된 바와 같은 종래의 프로세스를 포함할 수 있다. 역양자화 프로세스는 또한 각각의 64x64 매크로블록에 대해 인코더(50)에서 계산된 양자화 파라미터 QPY를 사용하여, 적용되어야 하는 양자화 정도와 마찬가지로 역양자화 정도(degree of inverse quantization)를 결정하는 것을 포함할 수 있다.

역변환 유닛(58)은 역변환(예를 들어, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역변환 프로세스)을 변환 계수에 적용하여, 픽셀 영역에서의 잔차 블록을 생성한다. 움직임 보상 유닛(54)은 움직임 보상된 블록을 생성하고, 어쩌면 보간 필터에 기초하여 보간을 수행한다. 서브-픽셀 정밀도로 움직임 추정하는 데 사용될 보간 필터에 대한 식별자는 구문 요소에 포함될 수 있다. 움직임 보상 유닛(54)은 비디오 블록의 인코딩 동안 비디오 인코더(50)에서 사용된 것과 같은 보간 필터를 사용하여, 참조 블록의 서브-정수 픽셀에 대한 보간된 값을 계산할 수 있다. 움직임 보상 유닛(54)은 수신된 구문 정보에 따라 비디오 인코더(50)에서 사용된 보간 필터를 결정하고 보간 필터를 사용하여 예측 블록을 생성할 수 있다.

움직임 보상 유닛(54)은 인코딩된 비디오 시퀀스의 프레임(들)을 인코딩하는 데 사용되는 매크로블록의 크기, 인코딩된 비디오 시퀀스의 프레임의 각각의 매크로블록이 어떻게 분할되는지를 기술하는 파티션 정보, 각각의 파티션이 어떻게 인코딩되는지를 나타내는 모드, 각각의 인터-인코딩된 매크로블록 또는 파티션에 대한 하나 이상의 참조 프레임(또는 리스트), 및 기타 정보를 결정하여 인코딩된 비디오 시퀀스를 디코딩하기 위해 구문 정보 중 일부를 사용한다.

합산기(64)는 잔차 블록을 움직임 보상 유닛(54) 또는 인트라-예측 유닛에 의해 생성된 대응하는 예측 블록과 합산하여, 디코딩된 블록을 형성한다. 원하는 경우, 디코딩된 블록을 필터링하여 블록형 아티팩트를 제거하기 위해, 디블록킹 필터도 역시 적용될 수 있다. 디코딩된 비디오 블록은 이어서 참조 프레임 저장소(62)에 저장되고, 참조 프레임 저장소(62)는 차후의 움직임 보상을 위한 참조 블록을 제공하고 또한 디스플레이 장치[도 1의 장치(32) 등] 상에 제시하기 위한 디코딩된 비디오를 생성한다. 디코딩된 비디오 블록 각각은 64x64 픽셀 매크로블록, 32x32 픽셀 매크로블록, 또는 기타 표준보다 큰 매크로블록을 포함할 수 있다. 일부 매크로블록은 각종의 상이한 파티션 크기를 가지는 파티션을 포함할 수 있다.

도 4a는 대형 매크로블록의 다양한 파티션 레벨에서의 예시적인 분할을 나타낸 개념도이다. 각각의 파티션 레벨의 블록은 특정의 레벨에 대응하는 수의 픽셀을 포함한다. 각각의 레벨마다 4개의 분할 패턴이 또한 도시되어 있으며, 여기서 제1 파티션 패턴은 전체 블록을 포함하고, 제2 파티션 패턴은 동일한 크기의 2개의 수평 파티션을 포함하며, 제3 파티션 패턴은 동일한 크기의 2개의 수직 파티션을 포함하며, 제4 파티션 패턴은 4개의 동일한 크기의 파티션을 포함한다. 각각의 파티션 레벨에서 각각의 파티션마다 분할 패턴들 중 하나가 선택될 수 있다.

도 4a의 일례에서, 레벨 0은 루마 샘플 및 연관된 크로마 샘플의 64x64 픽셀 매크로블록 파티션에 대응한다. 레벨 1은 루마 샘플 및 연관된 크로마 샘플의 32x32 픽셀 블록에 대응한다. 레벨 2는 루마 샘플 및 연관된 크로마 샘플의 16x16 픽셀 블록에 대응하고, 레벨 3은 루마 샘플 및 연관된 크로마 샘플의 8x8 픽셀 블록에 대응한다.

다른 일례에서, 보다 많거나 보다 적은 수의 픽셀을 이용하기 위해 부가의 레벨이 도입될 수 있다. 예를 들어, 레벨 0은 128x128 픽셀 매크로블록, 256x256 픽셀 매크로블록, 또는 다른 그보다 더 큰 크기의 매크로블록으로 시작할 수 있다. 어떤 일례에서, 최고 번호의 레벨은 단일 픽셀(즉, 1x1 블록) 정도로 세분화될 수 있다. 따라서, 최저 레벨부터 최고 레벨까지, 매크로블록이 분할되고, 파티션이 추가로 분할되며, 추가의 파티션이 또한 추가로 분할되고, 이하 마찬가지로 되도록, 분할이 점점 더 세분(sub-partitioned)될 수 있다. 어떤 경우에, 레벨 0 아래의 파티션(즉, 파티션의 파티션)을 서브-파티션(sub-partition)이라고 할 수 있다.

하나의 레벨에 있는 블록이 4개의 똑같은 크기의 서브-블록(sub-block)을 사용하여 분할될 때, 서브-블록들 중 일부 또는 전부가 그 다음 레벨의 파티션 패턴에 따라 분할될 수 있다. 즉, 레벨 x에서 4개의 똑같은 크기의 서브-블록 (N/2)x(N/2)으로 분할된 NxN 블록의 경우, (N/2)x(N/2) 서브-블록 중 임의의 것이 레벨 x+1의 파티션 패턴들 중 임의의 것에 따라 추가로 분할될 수 있다. 따라서, 레벨 0에서 64x64 픽셀 매크로블록의 32x32 픽셀 서브-블록은 도 4a에서 레벨 1에 도시된 패턴들(예를 들어, 32x32, 32x16 및 32x16, 16x32 및 16x32, 또는 16x16, 16x16, 16x16 및 16x16) 중 임의의 것에 따라 추가로 분할될 수 있다. 이와 마찬가지로, 32x32 픽셀 서브-블록이 분할됨으로써 4개의 16x16 픽셀 서브-블록이 얻어지는 경우, 각각의 16x16 픽셀 서브-블록은 도 4a에서 레벨 2에 도시된 패턴들 중 임의의 것에 따라 추가로 분할될 수 있다. 16x16 픽셀 서브-블록이 분할됨으로써 4개의 8x8 픽셀 서브-블록이 얻어지는 경우, 각각의 8x8 픽셀 서브-블록은 도 4a에서 레벨 3에 도시된 패턴들 중 임의의 것에 따라 추가로 분할될 수 있다.

도 4a에 도시된 예시적인 4개의 파티션 레벨을 사용하여, 균질한 큰 영역 및 간헐적인 미세 변화가 본 개시 내용의 구성 및 기법을 구현하는 인코더에 의해 적응적으로 표현될 수 있다. 예를 들어, 비디오 인코더(50)는, 예를 들어, 레이트-왜곡 분석에 기초하여, 상이한 매크로블록에 대한 상이한 파티션 레벨은 물론, 이러한 파티션에 적용할 코딩 모드도 결정할 수 있다. 또한, 이하에서 더 상세히 기술되는 바와 같이, 비디오 인코더(50)는, 예를 들어, 레이트-왜곡 메트릭 결과 또는 기타 고려사항에 기초하여, 공간(P-인코딩된 또는 B-인코딩된) 또는 시간(I-인코딩된) 예측을 사용하여, 최종 파티션들 중 적어도 일부를 서로 다르게 인코딩할 수 있다.

모든 파티션이 동일한 인트라-코딩 또는 인터-코딩 모드를 갖도록 대형 매크로블록을 균일하게 코딩하는 대신에, 일부 파티션이 상이한 코딩 모드를 가지도록 대형 매크로블록이 코딩될 수 있다. 예를 들어, 일부(적어도 하나의) 파티션이 동일한 매크로블록 내의 다른(적어도 하나의) 파티션에 대해 상이한 인트라-코딩 모드(예를 들어, I_16x16, I_8x8, I_4x4)로 코딩될 수 있다. 또한, 일부(적어도 하나의) 파티션은 인트라-코딩될 수 있는 반면, 동일한 매크로블록 내의 다른(적어도 하나의) 파티션은 인터-코딩된다.

예를 들어, 비디오 인코더(50)는, 4개의 16x16 파티션을 가지는 32x32 블록에 대해, 16x16 파티션들 중 일부를 공간 예측을 사용하여 인코딩하고 다른 16x16 파티션을 시간 예측을 사용하여 인코딩할 수 있다. 다른 일례로서, 비디오 인코더(50)는, 4개의 16x16 파티션을 가지는 32x32 블록에 대해, 16x16 파티션들 중 하나 이상을 제1 예측 모드(예를 들어, I_16x16, I_8x8, I_4x4 중 하나)를 사용하여 인코딩하고 하나 이상의 다른 16x16 파티션을 상이한 공간 예측 모드(예를 들어, I_16x16, I_8x8, I_4x4 중 하나)를 사용하여 인코딩할 수 있다.

도 4b는 대형 매크로블록의 상이한 파티션에 상이한 코딩 모드를 할당하는 것을 나타낸 개념도이다. 상세하게는, 도 4b는 대형 32x32 매크로블록의 좌측 상부 16x16 블록에 I_16x16 인트라-코딩 모드를 할당하고, 대형 32x32 매크로블록의 우측 상부 및 좌측 하부 16x16 블록에 I_8x8 인트라-코딩 모드를 할당하며, 대형 32x32 매크로블록의 우측 하부 16x16 블록에 I_4x4 인트라-코딩 모드를 할당하는 것을 나타낸 것이다. 어떤 경우에, 도 4b에 나타낸 코딩 모드는 루마 코딩에 대한 H.264 인트라-코딩 모드일 수 있다.

전술한 방식으로, 각각의 파티션은 선택적 방식으로 추가로 분할될 수 있고, 각각의 최종 파티션은 시간 예측 또는 공간 예측을 사용하여 그리고 선택된 시간 또는 공간 코딩 모드를 사용하여 선택적으로 코딩될 수 있다. 결과적으로, 매크로블록 내의 일부 파티션이 인트라-코딩되고 동일한 매크로블록 내의 다른 파티션이 인터-코딩되도록, 또는 동일한 매크로블록 내의 일부 파티션이 상이한 인트라-코딩 모드 또는 상이한 인터-코딩 모드를 사용하여 코딩되도록, 혼합 모드를 사용하여 대형 매크로블록을 코딩할 수 있다.

비디오 인코더(50)는 또한 매크로블록 유형에 따라 각각의 파티션을 정의할 수 있다. 매크로블록 유형은 인코딩된 비트스트림에 구문 요소로서(예를 들어, 매크로블록 헤더에 구문 요소로서) 포함될 수 있다. 일반적으로, 매크로블록 유형은 매크로블록이 어떻게 분할되는지 및 매크로블록의 각각의 파티션을 인코딩하는 각자의 인코딩 방법 또는 모드를 식별하는 데 사용될 수 있으며, 이에 대해서는 전술하였다. 파티션을 인코딩하는 방법은 인트라-코딩 및 인터-코딩을 포함할 뿐만 아니라, 인트라-코딩(예를 들어, I_16x16, I_8x8, I_4x4) 또는 인터-코딩(예를 들어, P_ 또는 B_ 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 및 4x4)의 특정 모드도 포함할 수 있다.

P-블록에 대한 이하의 표 1의 일례와 관련하여 그리고 B-블록에 대한 이하의 표 2의 일례와 관련하여 더 상세히 논의되는 바와 같이, 64x64 픽셀을 가지는 매크로블록을 나타내는 MB64_type 구문 요소에 따라 파티션 레벨 0 블록이 정의될 수 있다. 임의의 MB[N]_type에 대해 유사한 유형 정의가 형성될 수 있고, 여기서 [N]은 NxN 픽셀을 가지는 블록을 말하고, N은 16보다 클 수 있는 양의 정수이다. 도 4a에서 마지막 열에 도시된 바와 같이, NxN 블록이 4개의 (N/2)x(N/2) 크기의 파티션을 가질 때, 4개의 파티션 각각은 그 자신의 유형 정의(예를 들어, MB[N/2]_type)를 수신할 수 있다. 예를 들어, 4개의 32x32 픽셀 파티션을 가지는 (유형 MB64_type의) 64x64 픽셀 블록의 경우, 비디오 인코더(50)는 4개의 32x32 픽셀 파티션 각각에 대해 MB32_type을 도입할 수 있다. 이들 매크로블록 유형 구문 요소는, 본 개시 내용에 기술된 바와 같이, 디코더(60)가 대형 매크로블록 및 대형 매크로블록의 다양한 파티션을 디코딩하는 데 도움이 될 수 있다. 각각의 NxN 픽셀 매크로블록(단, N은 16보다 큼)은 일반적으로 고유의 유형 정의에 대응한다. 그에 따라, 인코더는 특정의 매크로블록에 적절한 구문을 생성하고 코딩 단위(프레임, 슬라이스, 매크로블록의 시퀀스)에서의 매크로블록의 최대 크기를 디코더에게 알려줄 수 있다. 이러한 방식으로, 디코더는 코딩 단위의 매크로블록에 적용할 구문 디코더의 표시를 수신할 수 있다. 이것은 또한, 인코더가 매크로블록에 적용할 구문 디코더의 유형(예를 들어, 표준 H.264 또는 본 개시 내용의 기법에 따라 대형 매크로블록의 처리를 위해 지정된 것)을 알려줄 수 있다는 점에서, 디코더가 기존의 코딩 표준(H.264 등)과 역호환될 수 있도록 보장해준다.

일반적으로, 각각의 MB[N]_type 정의는, 대응하는 유형에 대해, 대응하는 유형의 블록 내의 픽셀의 수(예를 들어, 64x64), 블록에 대한 참조 프레임(또는 참조 리스트), 블록에 대한 파티션의 수, 블록의 각각의 파티션의 크기, 각각의 파티션이 어떻게 인코딩되는지(예를 들어, 인트라 또는 인터 및 특정 모드), 및 파티션이 인터-코딩될 때 블록의 각각의 파티션에 대한 참조 프레임(또는 참조 리스트)를 표현할 수 있다. 16x16 및 그보다 작은 블록에 대해, 비디오 인코더(50)는, 어떤 일례에서, 종래의 유형 정의(H.264 표준에 명시된 유형 등)를 블록의 유형으로서 사용할 수 있다. 다른 일례에서, 비디오 인코더(50)는 16x16 및 그보다 작은 블록에 대한 새로 정의된 블록 유형을 적용할 수 있다.

비디오 인코더(50)는 보통의 매크로블록 크기 및 파티션을 사용하는 종래의 인터-코딩 또는 인트라-코딩 방법(ITU H.264에서 규정한 방법 등)과 본 개시 내용에서 기술된 대형 매크로블록 및 파티션을 사용하는 인터-코딩 또는 인트라-코딩 방법 둘다를 평가하고 각각의 방식의 레이트-왜곡 특성을 비교하여 어느 방법에서 최상의 레이트-왜곡 성능이 얻어지는지를 판정할 수 있다. 비디오 인코더(50)는 이어서, 코딩 방식에 대한 최적의 또는 허용가능한 레이트-왜곡 결과에 기초하여, 최상의 코딩 방식(인터-모드 또는 인트라-모드, 매크로블록 크기(큼, 더 큼 또는 보통) 및 분할을 포함함)을 선택하여 코딩될 블록에 적용할 수 있다. 예시로서, 비디오 인코더(50)는, 비디오 인코더가 이러한 매크로블록 크기를 사용할 때 생성된 레이트-왜곡 결과에 기초하여, 특정의 프레임 또는 슬라이스를 인코딩하기 위해 64x64 매크로블록, 32x32 매크로블록, 또는 16x16 매크로블록의 사용을 선택할 수 있다.

일반적으로, 대형 매크로블록을 사용하는 인트라 모드를 설계하기 위해 2개의 상이한 방식이 사용될 수 있다. 한 일례로서, 인트라-코딩 동안, 이웃 블록에 직접 기초하여 블록에 대해 공간 예측이 수행될 수 있다. 본 개시 내용의 기법에 따르면, 비디오 인코더(50)는 공간 예측 32x32 블록을 그의 이웃 픽셀에 직접 기초하여 생성하고 공간 예측 64x64 블록을 그의 이웃 픽셀에 직접 기초하여 생성할 수 있다. 이러한 방식으로, 공간 예측이 16x16 인트라 블록에 비해 더 큰 규모로 수행될 수 있다. 따라서, 이들 기법에 의해, 어떤 일례에서, 얼마간의 비트 레이트 절감이 얻어질 수 있고, 예를 들어, 프레임 또는 슬라이스당 블록 또는 파티션의 수가 더 적다.

다른 일례로서, 비디오 인코더(50)는 4개의 NxN 블록을 그룹화하여 (N*2)x(N*2) 블록을 생성하고, 이어서 (N*2)x(N*2) 블록을 인코딩할 수 있다. 기존의 H.264 인트라-코딩 모드를 사용하여, 비디오 인코더(50)는 4개의 인트라-코딩된 블록을 그룹화함으로써, 대형 인트라-코딩된 매크로블록을 형성할 수 있다. 예를 들어, 각각이 16x16의 크기를 가지는 4개의 인트라-코딩된 블록은 그룹화되어 대형 32x32 인트라-코딩된 블록을 형성할 수 있다. 비디오 인코더(50)는 4개의 대응하는 NxN 블록 각각을 상이한 인코딩 모드(예를 들어, H.264에 따른 I_16x16, I_8x8, 또는 I_4x4)를 사용하여 인코딩할 수 있다. 이러한 방식으로, 각각의 16x16 블록은, 예를 들어, 바람직한 인코딩 결과를 증진시키기 위해, 비디오 인코더(50)에 의해 그 자신의 공간 예측 모드를 할당받을 수 있다.

비디오 인코더(50)는 전술한 2가지 상이한 방법 중 어느 하나에 따라 인트라 모드를 설계하고, 상이한 방법을 분석하여 어느 방식이 보다 나은 인코딩 결과를 제공하는지를 판정할 수 있다. 예를 들어, 비디오 인코더(50)는 상이한 인트라 모드 방식을 적용하고, 이들이 최상의 레이트-왜곡 성능을 위해 서로 경쟁할 수 있도록 단일 후보 풀에 이들을 배치할 수 있다. 상이한 방식 간의 레이트-왜곡 비교를 사용하여, 비디오 인코더(50)는 각각의 파티션 및/또는 매크로블록을 어떻게 인코딩할지를 결정할 수 있다. 상세하게는, 비디오 인코더(50)는 주어진 매크로블록에 대해 최상의 레이트-왜곡 성능을 내는 코딩 모드를 선택하고 그 코딩 모드를 적용하여 매크로블록을 인코딩할 수 있다.

도 5는 대형 매크로블록의 다양한 파티션 레벨의 계층적 뷰를 나타낸 개념도이다. 도 5는 또한 도 4a와 관련하여 기술된 바와 같은 대형 매크로블록의 다양한 파티션 레벨 간의 관계도 나타내고 있다. 파티션 레벨의 각각의 블록은, 도 5의 일례에 나타낸 바와 같이, 대응하는 CBP(coded block pattern) 값을 가질 수 있다. CBP 값은 블록 또는 매크로블록을 기술하는 구문 정보의 일부를 구성한다. 한 일례에서, CBP 값 각각은 변환 및 양자화 연산 이후에 주어진 블록에 임의의 영이 아닌 변환 계수 값이 있는지 여부를 나타내는 1-비트 구문 값이다.

어떤 경우에, 모든 잔차 변환 계수가 0으로 양자화되도록(이 경우 코딩된 블록에 대한 변환 계수를 전송할 필요가 없을 수 있음), 예측 블록은 픽셀 콘텐츠가 코딩될 블록과 아주 가까울 수 있다. 그 대신에, 코딩된 블록이 영이 아닌 계수를 포함하지 않는다는 것을 나타내기 위해 블록에 대한 CBP 값이 0으로 설정될 수 있다. 다른 대안으로서, 블록이 적어도 하나의 영이 아닌 계수를 포함하는 경우, CBP 값은 1로 설정될 수 있다. 디코더(60)는 CBP 값을 사용하여, 코딩되는(즉, 하나 이상의 영이 아닌 변환 계수를 가지는) 잔차 블록과 코딩되지 않는(즉, 영이 아닌 변환 계수를 포함하지 않는) 블록을 식별할 수 있다.

본 개시 내용에 기술된 기법들 중 일부에 따르면, 인코더는 대형 매크로블록(그의 파티션을 포함함)이 적어도 하나의 영이 아닌 계수를 가지는지에 기초하여 계층적으로 CBP 값을 대형 매크로블록에 할당하고, 어느 파티션이 영이 아닌 계수를 가지는지를 나타내기 위해 CBP 값을 파티션에 할당할 수 있다. 대형 매크로블록에 대한 계층적 CBP는 코딩된 대형 매크로블록 및 비코딩된 대형 매크로블록을 신속하게 식별하기 위해 대형 매크로블록을 처리하는 것을 용이하게 해줄 수 있고, 블록을 디코딩하는 데 잔차 데이터를 사용할 필요가 있는지를 판정하기 위해 대형 매크로블록의 각각의 파티션 레벨에서 코딩된 파티션을 식별하는 것을 가능하게 해줄 수 있다.

한 일례에서, 레벨 0에서의 64x64 픽셀 매크로블록은, 64x64 픽셀 매크로블록 전체(임의의 파티션을 포함함)가 영이 아닌 계수를 가지는지 여부를 나타내기 위해, CBP64 값(예를 들어, 1-비트 값)을 포함하는 구문 정보를 포함할 수 있다. 한 일례에서, 비디오 인코더(50)는, 64x64 픽셀 매크로블록이 적어도 하나의 영이 아닌 계수를 포함한다는 것을 나타내기 위해, CBP64 비트를, 예를 들어, "1"의 값으로 "세트"한다. 따라서, CBP64 값이, 예를 들어, "1"의 값으로 세트되어 있을 때, 64x64 픽셀 매크로블록은 매크로블록의 어딘가에 적어도 하나의 영이 아닌 계수를 포함한다. 다른 일례에서, 비디오 인코더(50)는, 64x64 픽셀 매크로블록이 모두가 영인 계수(all zero coefficients)를 가진다는 것을 나타내기 위해, CBP64 비트를, 예를 들어, "0"의 값으로 "클리어"한다. 따라서, CBP64 값이, 예를 들어, "0"의 값으로 클리어되어 있을 때, 64x64 픽셀 매크로블록은 모두가 영인 계수를 가지는 것으로 표시된다. "0"의 CBP64 값을 가지는 매크로블록은 일반적으로 잔차 데이터를 비트스트림으로 전송하는 것을 필요로 하지 않는 반면, "1"의 CBP64 값을 가지는 매크로블록은 일반적으로 이러한 매크로블록을 디코딩하는 데 사용하기 위해 잔차 데이터를 비트스트림으로 전송하는 것을 필요로 한다.

모두 영 계수를 가지는 64x64 픽셀 매크로블록은 그의 파티션 또는 서브-블록에 대한 CBP 값을 포함할 필요가 없다. 즉, 64x64 픽셀 매크로블록이 모두 영 계수를 가지기 때문에, 각각의 파티션도 역시 모두가 영인 계수를 가져야 한다. 이와 달리, 적어도 하나의 영이 아닌 계수를 포함하는 64x64 픽셀 매크로블록은 또한 그 다음 파티션 레벨에 있는 파티션에 대한 CBP 값을 포함할 수 있다. 예를 들어, 1의 값을 가지는 CBP64는 64x64 블록의 각각의 32x32 파티션에 대해 1-비트 값 CBP32 형태의 부가의 구문 정보를 포함할 수 있다. 즉, 한 일례에서, 64x64 픽셀 매크로블록의 각각의 32x32 픽셀 파티션(도 5에서 레벨 1의 4개의 파티션 블록 등)은 64x64 픽셀 매크로블록의 구문 정보의 일부로서 CBP32 값을 할당받는다. CBP64 값에서와 같이, 각각의 CBP32 값은 대응하는 32x32 픽셀 블록이 적어도 하나의 영이 아닌 계수를 가질 때 1의 값으로 세트되고 대응하는 32x32 픽셀 블록이 모두가 영인 계수를 가질 때 0의 값으로 클리어되는 비트를 포함할 수 있다. 인코더는 또한 각각의 매크로블록의 구문 정보를 어떻게 해석해야 하는지(예를 들어, 코딩 단위에서의 매크로블록을 처리하는 데 어느 구문 디코더를 사용할지)를 디코더에게 알려주기 위해, 복수의 매크로블록을 포함하는 코딩 단위(프레임, 슬라이스 또는 시퀀스 등)의 구문에, 코딩 단위에서의 매크로블록의 최대 크기를 나타낼 수 있다.

이러한 방식으로, 모두가 영인 계수를 가지는 64x64 픽셀 매크로블록은 단일 비트를 사용하여, 매크로블록이 모두가 영인 계수를 가진다는 사실을 나타낼 수 있는 반면, 적어도 하나의 영이 아닌 계수를 가지는 64x64 픽셀 매크로블록은 적어도 5 비트를 포함하는 CBP 구문 정보를 포함할 수 있고, 첫번째 비트는 64x64 픽셀 매크로블록이 영이 아닌 계수를 가진다는 것을 나타내고, 4개의 부가 비트 각각은 매크로블록의 4개의 32x32 픽셀 파티션 중 대응하는 파티션이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타낸다. 어떤 일례에서, 4개의 부가 비트 중 처음 3개가 0일 때, 4번째 부가 비트는 포함되지 않을 수 있고, 디코더는 이를 마지막 파티션이 1인 것으로 해석할 수 있다. 즉, 인코더는, 처음 3 비트가 0이고 상위 레벨 계층구조를 나타내는 비트가 1의 값을 가질 때, 마지막 비트가 1의 값을 가지는 것으로 판정할 수 있다. 예를 들어, "10001"의 CBP64 값의 프리픽스(prefix)는, 첫번째 비트가 4개의 파티션 중 적어도 하나가 영이 아닌 계수를 가진다는 것을 나타내고 그 다음 3개의 영이 처음 3개의 파티션이 모두가 영인 계수를 가진다는 것을 나타내기 때문에, "1000"으로 단축될 수 있다. 따라서, 디코더는, 이러한 사실을 디코더에 알려주는 명시적인 비트가 없더라도, 예를 들어, 비트 문자열 "1000"으로부터, 마지막 파티션이 영이 아닌 계수를 포함하는 것으로 추론할 수 있다. 즉, 디코더는 CBP64 프리픽스 "1000"을 "10001"로서 해석할 수 있다.

이와 마찬가지로, 1-비트 CBP32는 32x32 픽셀 파티션이 적어도 하나의 영이 아닌 계수를 포함할 때 "1"의 값으로 세트되고 모든 계수가 0의 값을 가질 때 "0"의 값으로 세트될 수 있다. 32x32 픽셀 파티션이 1의 CBP 값을 가지는 경우, 그 다음 파티션 레벨에 있는 그 32x32 파티션의 파티션은 각자의 파티션이 임의의 영이 아닌 계수를 포함하는지를 나타내는 CBP 값을 할당받을 수 있다. 따라서, 영이 아닌 계수를 포함하는 파티션 또는 추가의 파티션 레벨이 없을 때까지 CBP 값이 각각의 파티션 레벨에서 계층적 방식으로 할당될 수 있다.

상기의 방식으로, 인코더 및/또는 디코더는 계층적 CBP 값을 이용하여, 대형 매크로블록(예를 들어, 64x64 또는 32x32) 및 그의 파티션이 적어도 하나의 영이 아닌 계수 또는 모두가 영인 계수를 포함하는지를 나타낼 수 있다. 그에 따라, 인코더는 매크로블록 블록이 16x16 초과의 픽셀을 포함하도록, 디지털 비디오 스트림의 코딩 단위의 대형 매크로블록을 인코딩하고, 블록의 크기를 식별해주는 블록-유형 구문 정보를 생성하며, CBP 값이 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 식별해주도록, 블록에 대한 CBP 값을 생성하고, 적용가능한 경우, 다양한 파티션 레벨에 대한 부가의 CBP 값을 생성할 수 있다.

한 일례에서, 계층적 CBP 값은 프리픽스의 값에 의존하는 길이를 가지는 비트 어레이(예를 들어, 비트 벡터)를 포함할 수 있다. 어레이는 또한 도 5에 도시된 바와 같은 CBP 값의 계층구조(트리 구조 등)를 나타낼 수 있다. 어레이는 폭 우선(breadth-first) 방식으로 트리의 노드를 나타낼 수 있고, 여기서 각각의 노드는 어레이에서의 비트에 대응한다. 한 일례에서, 트리의 노드가 "1"로 세트되어 있는 비트를 가질 때, 노드는 (4개의 파티션에 대응하는) 4개의 분기를 가지며, 비트가 "0"으로 클리어되어 있을 때, 노드는 분기를 갖지 않는다.

이 일례에서, 특정의 노드 X로부터 분기하는 노드의 값을 식별하기 위해, 인코더 및/또는 디코더는 하기의 수식을 계산함으로써 노드 x로부터 분기하는 노드들을 나타내는 노드 Y에서 시작하는 4개의 연속 비트를 결정할 수 있다:

Figure 112011032616925-pct00001

여기서, tree[]는 0의 시작 인덱스를 가지는 비트 어레이에 대응하고, i는 어레이 tree[]에 대한 정수 인덱스이며, x는 tree[]에서의 노드 X의 인덱스에 대응하고, y는 노드 X의 첫번째 분기-노드인 노드 Y의 인덱스에 대응한다. 3개의 후속 어레이 위치(즉, y+1, y+2, y+3)는 노드 X의 나머지 분기-노드에 대응한다.

비디오 인코더(50)(도 2) 등의 인코더는 16x16 블록에 대한 CBP 값을 64x64 픽셀 매크로블록의 구문의 일부로서 설정하는 ITU H.264에서 규정한 방법 등의 기존의 방법을 사용하여 적어도 하나의 영이 아닌 계수를 가지는 32x32 픽셀 파티션의 16x16 픽셀 파티션에 대한 CBP 값을 할당할 수 있다. 인코더는 또한, 파티션의 크기, 파티션에 대응하는 블록의 유형(예를 들어, 크로마 블록 또는 루마 블록), 또는 파티션의 기타 특성에 기초하여, 적어도 하나의 영이 아닌 계수를 가지는 32x32 픽셀 파티션의 파티션에 대한 CBP 값을 선택할 수 있다. 32x32 픽셀 파티션의 파티션의 CBP 값을 설정하는 예시적인 방법은 도 8 및 도 9와 관련하여 더 상세히 논의된다.

도 6 내지 도 9는 본 개시 내용의 기법에 따라 다양한 CBP(coded block pattern) 값을 설정하는 예시적인 방법을 나타낸 플로우차트이다. 도 6 내지 도 9의 예시적인 방법이 64x64 픽셀 매크로블록과 관련하여 논의되고 있지만, 다른 크기의 매크로블록에 대한 계층적 CBP 값을 할당하기 위해 유사한 기법이 적용될 수 있다는 것을 잘 알 것이다. 도 6 내지 도 9의 일례가 비디오 인코더(50)(도 2)와 관련하여 논의되고 있지만, 다른 인코더가 유사한 방법을 이용하여 표준보다 큰 매크로블록에 CBP 값을 할당할 수 있다는 것을 잘 알 것이다. 이와 마찬가지로, 디코더는 유사하지만 상반하는 방법을 이용하여 매크로블록에 대한 특정의 CBP 값의 의미를 해석할 수 있다. 예를 들어, 비트스트림으로 수신되는 인터-코딩된 매크로블록이 "0"의 CBP 값을 가지는 경우, 디코더는 매크로블록에 대한 어떤 잔차 데이터도 수신하지 않을 수 있고 단순히 움직임 벡터에 의해 디코딩된 매크로블록으로서 식별된 예측 블록 또는 매크로블록의 파티션과 관련하여 움직임 벡터에 의해 식별된 일군의 예측 블록을 생성할 수 있다.

도 6은 예시적인 64x64 픽셀 매크로블록의 CBP64 값을 설정하는 예시적인 방법을 나타낸 플로우차트이다. 유사한 방법이 64x64보다 큰 매크로블록에 대해 적용될 수 있다. 먼저, 비디오 인코더(50)는 64x64 픽셀 매크로블록을 수신한다(100). 이어서, 움직임 추정 유닛(36) 및 움직임 보상 유닛(35)은 매크로블록을 인코딩하기 위해 제각기 하나 이상의 움직임 벡터 및 하나 이상의 잔차 블록을 생성할 수 있다. 변환 유닛(38)의 출력은 일반적으로 인트라-코딩된 블록 또는 인터-코딩된 블록의 잔차 블록에 대한 잔차 변환 계수값의 어레이를 포함하며, 이 어레이는 양자화 유닛(40)에 의해 양자화되어 일련의 양자화된 변환 계수를 생성한다.

엔트로피 코딩 유닛(46)은 엔트로피 코딩 및 엔트로피 코딩과 별개인 기타 코딩 기능을 제공한다. 예를 들어, CAVLC, CABAC 또는 기타 엔트로피 코딩 기능에 부가하여, 엔트로피 코딩 유닛(46) 또는 비디오 인코더(50)의 다른 유닛은 대형 매크로블록 및 파티션에 대한 CBP 값을 결정할 수 있다. 상세하게는, 엔트로피 코딩 유닛(46)은, 먼저 64x64 픽셀 매크로블록이 적어도 하나의 영이 아닌 양자화된 변환 계수를 가지는지를 판정(102)함으로써, 64x64 픽셀 매크로블록에 대한 CBP64 값을 결정할 수 있다. 엔트로피 코딩 유닛(46)이 모든 변환 계수가 0의 값을 가지는 것으로 판정할 때(102의 "아니오" 분기), 엔트로피 코딩 유닛(46)은 64x64 매크로블록에 대한 CBP64 값을 클리어시킨다(예를 들어, CBP64 값에 대한 비트를 "0"으로 리셋한다)(104). 엔트로피 코딩 유닛(46)이 64x64 매크로블록에 대해 적어도 하나의 영이 아닌 계수를 식별할 때(102의 "예" 분기), 엔트로피 코딩 유닛(46)은 CBP64 값을 세트시킨다(예를 들어, CBP64 값에 대한 비트를 "1"로 세트시킨다)(106).

매크로블록이 모두가 영인 계수를 가질 때, 엔트로피 코딩 유닛(46)은 매크로블록의 파티션에 대한 어떤 부가의 CBP 값도 설정할 필요가 없으며, 이는 오버헤드를 감소시킬 수 있다. 한 일례에서, 그렇지만, 매크로블록이 적어도 하나의 영이 아닌 계수를 가질 때, 엔트로피 코딩 유닛(46)은 계속하여 64x64 픽셀 매크로블록의 4개의 32x32 픽셀 파티션 각각에 대한 CBP 값을 결정한다(108). 엔트로피 코딩 유닛(46)은 도 7과 관련하여 기술된 방법을, 4개의 파티션 각각에 대해 한번씩, 4번 이용하여 4개의 CBP32 값(각각이 64x64 매크로블록의 4개의 32x32 픽셀 파티션 중 상이한 파티션에 대응함)을 설정할 수 있다. 이러한 방식으로, 매크로블록이 모두가 영인 계수를 가질 때, 엔트로피 코딩 유닛(46)은 매크로블록이 모두가 영인 계수를 가진다는 것을 나타내기 위해 "0"의 값을 가지는 단일 비트를 전송할 수 있는 반면, 매크로블록이 적어도 하나의 영이 아닌 계수를 가질 때, 엔트로피 코딩 유닛(46)은 5 비트(매크로블록에 대한 1 비트 및 각각이 매크로블록의 4개의 파티션 중 하나에 대응하는 4 비트)를 전송할 수 있다. 그에 부가하여, 파티션이 적어도 하나의 영이 아닌 계수를 포함할 때, 파티션에 대한 잔차 데이터는 인코딩된 비트스트림으로 보내질 수 있다. 앞서 논의된 CBP64의 일례에서와 같이, 4개의 부가 비트 중 처음 3개가 0일 때, 4번째 부가 비트가 필요하지 않을 수 있는데, 그 이유는 디코더가 4번째 부가 비트가 1의 값을 가지는 것으로 판정할 수 있기 때문이다. 따라서, 어떤 일례에서, 인코더는, 3개의 0과 하나의 1(즉, "0001")이 아니라, 단지 3개의 영(즉, "000")만을 보낼 수 있다.

도 7은 64x64 픽셀 매크로블록의 32x32 픽셀 파티션의 CBP32 값을 설정하는 예시적인 방법을 나타낸 플로우차트이다. 먼저, 그 다음 파티션 레벨에 대해, 엔트로피 코딩 유닛(46)은 매크로블록의 32x32 픽셀 파티션(예를 들어, 도 6과 관련하여 언급된 4개의 파티션 중 하나)을 수신한다(110). 이어서, 엔트로피 코딩 유닛(46)은 먼저 32x32 픽셀 파티션이 적어도 하나의 영이 아닌 계수를 포함하는지를 판정(112)함으로써, 32x32 픽셀 파티션에 대한 CBP32 값을 결정한다. 엔트로피 코딩 유닛(46)이 파티션에 대한 모든 계수가 0의 값을 가지는 것으로 판정할 때(112의 "아니오" 분기), 엔트로피 코딩 유닛(46)은 CBP32 값을 클리어시킨다(예를 들어, CBP32 값에 대한 비트를 "0"으로 리셋한다)(114). 엔트로피 코딩 유닛(46)이 파티션의 적어도 하나의 영이 아닌 계수를 식별할 때(112의 "예" 분기), 엔트로피 코딩 유닛(46)은 CBP32 값을 세트시킨다(예를 들어, CBP32 값에 대한 비트를 "1"의 값으로 세트시킨다)(116).

한 일례에서, 파티션이 모두가 영인 계수를 가질 때, 엔트로피 코딩 유닛(46)은 파티션에 대한 어떤 부가의 CBP 값도 설정하지 않는다. 그렇지만, 파티션이 적어도 하나의 영이 아닌 계수를 포함할 때, 엔트로피 코딩 유닛(46)은 매크로블록의 32x32 픽셀 파티션의 4개의 16x16 픽셀 파티션 각각에 대한 CBP 값을 결정한다. 엔트로피 코딩 유닛(46)은 도 8과 관련하여 기술된 방법을 이용하여, 각각이 4개의 16x16 픽셀 파티션 중 하나에 대응하는 4개의 CBP16 값을 설정할 수 있다.

이러한 방식으로, 파티션이 모두가 영인 계수를 가질 때, 엔트로피 코딩 유닛(46)은 파티션이 모두가 영인 계수를 가진다는 것을 나타내기 위해 "0"의 값을 가지는 비트를 설정할 수 있는 반면, 파티션이 적어도 하나의 영이 아닌 계수를 가질 때, 엔트로피 코딩 유닛(46)은 5 비트(파티션에 대한 1 비트 및 각각이 매크로블록의 파티션의 4개의 서브-파티션 중 상이한 서브-파티션에 대응하는 4 비트)를 포함시킬 수 있다. 따라서, 각각의 부가의 파티션 레벨은, 이전 파티션 레벨에서의 파티션이 적어도 하나의 영이 아닌 변환 계수 값을 가질 때, 4개의 부가 CBP 비트를 제공할 수 있다. 한 일례로서, 64x64 매크로블록이 1의 CBP 값을 가지고 4개의 32x32 파티션이 제각기 1, 0, 1 및 1의 CBP 값을 가질 때, 그 지점까지의 전체 CBP 값은 11011이다. 32x32 파티션의 부가의 파티션(예를 들어, 16x16 파티션)에 대해 부가의 CBP 비트가 추가될 수 있다.

도 8은 64x64 픽셀 대형 매크로블록의 32x32 픽셀 파티션의 16x16 픽셀 파티션의 CBP16 값을 설정하는 예시적인 방법을 나타낸 플로우차트이다. 특정 16x16 픽셀 파티션에 대해, 비디오 인코더(50)는 ITU H.264 등의 비디오 코딩 표준에서 규정한 CBP 값을 이용할 수 있으며, 이에 대해서는 이하에서 논의한다. 다른 16x16 파티션에 대해, 비디오 인코더(50)는 본 개시 내용의 다른 기법에 따른 CBP 값을 이용할 수 있다. 먼저, 도 8에 도시된 바와 같이, 엔트로피 코딩 유닛(46)은 16x16 파티션(예를 들어, 도 7과 관련하여 기술한 32x32 파티션의 16x16 파티션들 중 하나)을 수신한다(120).

이어서, 엔트로피 코딩 유닛(46)은 16x16 픽셀 파티션에 대한 움직임 파티션(motion partition)이 8x8 픽셀 블록보다 큰지를 판정할 수 있다(122). 일반적으로, 움직임 파티션은 움직임이 집중되어 있는 파티션을 가리킨다. 예를 들어, 단지 하나의 움직임 벡터를 가지는 16x16 픽셀 파티션은 16x16 움직임 파티션으로 간주될 수 있다. 이와 유사하게, 각각이 하나의 움직임 벡터를 가지는 2개의 8x16 파티션을 가지는 16x16 픽셀 파티션에 대해, 2개의 8x16 파티션 각각은 8x16 움직임 파티션으로 간주될 수 있다. 어느 경우든지, 움직임 파티션이 8x8 픽셀 블록보다 크지 않을 때(122의 "아니오" 분기), 도 8의 일례에서, 엔트로피 코딩 유닛(46)은 ITU H.264에서 규정하는 것과 동일한 방식으로 16x16 픽셀 파티션에 CBP 값을 할당한다(124).

8x8 픽셀 블록보다 큰 16x16 픽셀 파티션에 대한 움직임 파티션이 존재할 때(122의 "예" 분기), 엔트로피 코딩 유닛(46)은 단계(125) 이후의 단계들을 사용하여 lumacbp16 값을 구성하여 전송한다(125). 도 8의 일례에서, lumacbp16 값을 구성하기 위해, 엔트로피 코딩 유닛(46)은 파티션의 16x16 픽셀 루마 성분이 적어도 하나의 영이 아닌 계수를 가지는지를 판정한다(126). 16x16 픽셀 루마 성분이 모두가 영인 계수를 가질 때(126의 "아니오" 분기), 도 8의 일례에서, 엔트로피 코딩 유닛(46)은 ITU H.264의 Coded Block Pattern Chroma 부분에 따라 CBP16 값을 할당한다(128).

엔트로피 코딩 유닛(46)이 16x16 픽셀 루마 성분이 적어도 하나의 영이 아닌 계수를 가지는 것으로 판정할 때(126의 "예"), 엔트로피 코딩 유닛(46)은 16x16 픽셀 파티션에 대한 변환-크기 플래그를 결정한다(130). 변환-크기 플래그는 일반적으로 파티션에 대해 사용되는 변환을 나타낸다. 변환-크기 플래그가 나타내는 변환은 4x4 변환, 8x8 변환, 16x16 변환, 16x8 변환, 또는 8x16 변환 중 하나를 포함할 수 있다. 변환-크기 플래그는 가능한 변환들 중 하나를 식별해주는 열거된 값에 대응하는 정수값을 포함할 수 있다. 이어서, 엔트로피 코딩 유닛(46)은 변환-크기 플래그가 변환 크기가 16x8(또는 8x16)보다 크거나 같은 것으로 나타내는지를 판정할 수 있다(132).

변환-크기 플래그가 변환 크기가 16x8(또는 8x16)보다 크거나 같다고 나타내지 않을 때(132의 "아니오" 분기), 도 8의 일례에서, 엔트로피 코딩 유닛(46)은 ITU H.264에 따라 CBP16에 값을 할당한다(134). 변환-크기 플래그가 변환 크기가 16x8(또는 8x16)보다 크거나 같다고 나타낼 때(132의 "예" 분기), 엔트로피 코딩 유닛(46)은 16x16 픽셀 파티션의 유형이 2개의 16x8 픽셀 파티션인지 2개의 8x16 픽셀 파티션인지를 판정한다(136).

16x16 픽셀 파티션의 유형이 2개의 16x8 픽셀 파티션도 아니고 2개의 8x16 픽셀 파티션도 아닐 때(138의 "아니오" 분기), 도 8의 일례에서, 엔트로피 코딩 유닛(46)은 ITU H.264에서 규정하는 Chroma Coded Block Partition에 따라 CBP16 값을 할당한다(140). 16x16 픽셀 파티션의 유형이 2개의 16x8 픽셀 파티션 또는 2개의 8x16 픽셀 파티션일 때(138의 "예" 분기), 엔트로피 코딩 유닛(46)은 또한 ITU H.264에서 규정하는 Chroma Coded Block Pattern을 사용하지만, 그에 부가하여, 예를 들어, 도 9와 관련하여 기술하는 방법에 따라, CBP16 값에 2-비트 luma16x8_CBP 값을 할당한다(142).

도 9는 2-비트 luma16x8_CBP 값을 결정하는 예시적인 방법을 나타낸 플로우차트이다. 엔트로피 코딩 유닛(46)은 2개의 16x8 픽셀 파티션 또는 2개의 8x16 픽셀 파티션으로 추가로 분할되는 16x16 픽셀 파티션을 수신한다(150). 엔트로피 코딩 유닛(46)은 일반적으로 16x16 픽셀 파티션의 대응하는 서브-블록이 적어도 하나의 영이 아닌 계수를 포함하는지에 따라 luma16x8_CBP의 각각의 비트를 할당한다.

엔트로피 코딩 유닛(46)은 16x16 픽셀 파티션의 제1 서브-블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 판정하여, 제1 서브-블록이 적어도 하나의 영이 아닌 계수를 가지는지를 판정한다(152). 제1 서브-블록이 모두가 영인 계수를 가지는 경우(152의 "아니오" 분기), 엔트로피 코딩 유닛(46)은 luma16x8_CBP의 첫번째 비트를 클리어시킨다(예를 들어, luma16x8_CBP[0]에 "0"의 값을 할당한다)(154). 제1 서브-블록이 적어도 하나의 영이 아닌 계수를 가지는 경우(152의 "예" 분기), 엔트로피 코딩 유닛(46)은 luma16x8_CBP의 첫번째 비트를 세트시킨다(예를 들어, luma16x8_CBP[0]에 "1"의 값을 할당한다)(156).

엔트로피 코딩 유닛(46)은 또한 16x16 픽셀 파티션의 제2 서브-파티션이 적어도 하나의 영이 아닌 계수를 가지는지를 판정한다(158). 제2 서브-파티션이 모두가 영인 계수를 가지는 경우(158의 "아니오" 분기), 엔트로피 코딩 유닛(46)은 luma16x8_CBP의 두번째 비트를 클리어시킨다(예를 들어, luma16x8_CBP[1]에 "0"의 값을 할당한다)(160). 제2 서브-블록이 적어도 하나의 영이 아닌 계수를 가지는 경우(158의 "예" 분기), 엔트로피 코딩 유닛(46)은 luma16x8_CBP의 두번째 비트를 세트시킨다(예를 들어, luma16x8_CBP[1]에 "1"의 값을 할당한다)(162).

이하의 의사 코드는 도 8 및 도 9와 관련하여 기술된 방법의 한 예시적인 구현예를 제공한다.

Figure 112011032616925-pct00002

의사 코드에서, "lumacbp16"는 16x16 루마 블록 전체가 영이 아닌 계수를 가지는지 여부를 나타내는 1-비트 플래그를 첨부하는 동작에 대응한다. "lumacbp16"이 1일 때, 적어도 하나의 영이 아닌 계수가 있다. 함수 "Transform_size_flag"는 계산이 수행되면 사용되는 변환[예를 들어, 4x4 변환, 8x8 변환, (16x16보다 크거나 같은 움직임 파티션에 대한) 16x16 변환, (P_16x8에 대한) 16x8 변환, 또는 (P_8x16에 대한) 8x16 변환 중 하나]을 나타내는 결과를 가진다는 것을 말한다. TRANSFORM_SIZE_GREATER_THAN_16x8은 변환 크기가 16x8 또는 8x16보다 크거나 같다는 것을 나타내기 위해 사용되는 열거된 값(enumerated value)(예를 들어, "2")이다. transform_size_flag의 결과는 64x64 픽셀 매크로블록의 구문 정보에 포함된다.

"luma16x8_cbp"는, 각각의 비트가 P_16x8 또는 P_8x16의 2개의 파티션 중 하나의 파티션이 영이 아닌 계수를 가지는지 여부를 나타내는, 2-비트 수를 생성하는 계산을 말한다. luma16x8_cbp로부터 얻어지는 2-비트 수는 64x64 픽셀 매크로블록의 구문에 포함된다. "chroma_cbp" 값은 ITU H.264에서 규정하는 CodedBlockPatternChroma와 동일한 방식으로 계산될 수 있다. 계산된 chroma_cbp 값은 64x64 픽셀 매크로블록의 구문 정보에 포함된다. 함수 h264_cbp는 ITU H.264에 정의된 CBP와 동일한 방식으로 계산될 수 있다. 계산된 H264_cbp 값은 64x64 픽셀 매크로블록의 구문 정보에 포함된다.

일반적으로, 도 6 내지 도 9에 따른 방법은 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을, 비디오 인코더에서, 인코딩하는 단계, 블록의 크기를 나타내는 블록-유형 구문 정보를 생성하는 단계, 및 인코딩된 블록에 대한 코딩된 블록 패턴 값을 생성하는 단계를 포함할 수 있으며, 여기서 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 영이 아닌 계수를 포함하는지를 나타낸다.

도 10은 64x64 픽셀 매크로블록의 예시적인 배열을 나타낸 블록도이다. 도 10의 매크로블록은 4개의 32x32 파티션(도 10에서 A, B, C 및 D로 표시됨)을 포함한다. 도 4a와 관련하여 논의된 바와 같이, 한 일례에서, 블록은 4가지 방식, 즉 서브-파티션을 갖지 않는 전체 블록(64x64), 2개의 똑같은 크기의 수평 파티션(32x64 및 32x64), 2개의 똑같은 크기의 수직 파티션(64x32 및 64x32) 또는 4개의 똑같은 크기의 정사각형 파티션(32x32, 32x32, 32x32 및 32x32) 중 임의의 방식으로 분할될 수 있다.

도 10의 일례에서, 전체 블록 파티션은 각각의 블록 A, B, C 및 D를 포함하고, 2개의 똑같은 크기의 수평 파티션 중 첫번째 것은 A 및 B를 포함하는 반면, 2개의 똑같은 크기의 수평 파티션 중 두번째 것은 C 및 D를 포함하며, 2개의 똑같은 크기의 수직 파티션 중 첫번째 것은 A 및 C를 포함하는 반면, 2개의 똑같은 크기의 수직 파티션 중 두번째 것은 B 및 D를 포함하고, 4개의 똑같은 크기의 정사각형 파티션은 각각의 A, B, C 및 D 중 하나에 대응한다. 임의의 크기 블록(예를 들어, 64x64 픽셀, 32x32 픽셀, 16x16 픽셀, 8x8 픽셀보다 크거나, 다른 크기의 비디오 블록)에 대해 유사한 파티션 방식이 사용될 수 있다.

비디오 블록이 인트라-코딩되어 있을 때, 비디오 블록을 분할하는 데 다양한 방법이 사용될 수 있다. 더욱이, 각각의 파티션이 상이하게(즉, 상이한 인트라-모드 등의 상이한 모드로) 인트라-코딩될 수 있다. 예를 들어, 도 10의 파티션 A 등의 32x32 파티션은 4개의 똑같은 크기인 16x16 픽셀 크기의 블록으로 추가로 분할될 수 있다. 한 일례로서, ITU H.264는 16x16 매크로블록을 인트라-인코딩하는 3가지 상이한 방법(16x16 레벨에서의 인트라-코딩, 8x8 레벨에서의 인트라-코딩, 및 4x4 레벨에서의 인트라-코딩을 포함함)을 기술하고 있다. 그렇지만, ITU H.264는 16x16 매크로블록의 각각의 파티션을 동일한 인트라-코딩 모드를 사용하여 인코딩하는 것을 규정하고 있다. 따라서, ITU H.264에 따르면, 16x16 매크로블록의 하나의 서브-블록이 4x4 레벨에서 인트라-코딩되는 경우, 16x16 매크로블록의 모든 서브-블록이 4x4 레벨에서 인트라-코딩되어야만 한다.

한편, 본 개시 내용의 기법에 따라 구성된 인코더는 혼합 모드 방식을 적용할 수 있다. 예를 들어, 인트라-코딩의 경우, 대형 매크로블록은 상이한 코딩 모드로 인코딩된 다양한 파티션을 가질 수 있다. 예시로서, 32x32 파티션에서, 예를 들어, 도 4b에 도시된 바와 같이, 하나의 16x16 파티션은 4x4 픽셀 레벨에서 인트라-코딩될 수 있는 반면, 다른 16x16 파티션은 8x8 레벨에서 인트라-코딩될 수 있고, 하나의 16x16 파티션은 16x16 레벨에서 인트라-코딩될 수 있다.

비디오 블록이 인트라-코딩을 위해 4개의 똑같은 크기의 서브-블록으로 분할되어야 할 때, 인트라-코딩될 첫번째 블록은 좌측-상부 블록일 수 있고, 그 다음은 첫번째 블록의 바로 오른쪽에 있는 블록, 그 다음은 첫번째 블록의 바로 아래에 있는 블록, 마지막으로 그 다음은 첫번째 블록의 오른쪽 아래에 있는 블록일 수 있다. 도 10의 예시적인 블록을 참조하면, 인트라-코딩의 순서는 A로부터 시작하여 B, C로, 그리고 마지막으로 D로 갈 수 있다. 도 10이 64x64 픽셀 매크로블록을 나타내고 있지만, 상이한 크기의 분할된 블록의 인트라-코딩이 이 동일한 순서를 따를 수 있다.

비디오 블록이 P-프레임 또는 P-슬라이스의 일부로서 인터-코딩되어야 할 때, 블록은 각각이 개별적으로 인코딩될 수 있는 상기한 4개의 파티션 중 임의의 파티션으로 분할될 수 있다. 즉, 블록의 각각의 파티션은 상이한 인코딩 모드에 따라 인코딩될 수 있다[인트라-인코딩(I-코딩)되거나 단일의 참조 프레임/슬라이스/리스트를 참조하여 인터-인코딩(P-코딩)될 수 있다]. 이하의 표 1은 NxN 크기의 블록의 각각의 가능한 파티션에 대한 인터-인코딩 정보를 요약한 것이다. 표 1에서 "M"이 언급되는 경우, M = N/2이다. 이하의 표 1에서, L0는 "리스트 0"(즉, 참조 프레임/슬라이스/리스트)을 말한다. NxN 블록을 어떻게 가장 잘 분할할지를 결정할 때, 인코더[비디오 인코더(50) 등]는 Lagrange 승수(이에 대해서는 도 11과 관련하여 더 상세히 논의됨)에 기초하여 각각의 MB_N_type(즉, 각각의 파티션 유형)에 대한 레이트-왜곡 비용 정보를 분석하여, 최저 비용을 최상의 분할 방법으로서 선택할 수 있다.

MB_N_type MB_N_type의 이름 파티션의 수 예측 모드
파티션 1
예측 모드
파티션 2
파티션 폭 파티션 높이
0 P_L0_NxN 1 Pred_L0 해당사항없음 N N 1 P_L0_L0_NxM 2 Pred_L0 Pred_L0 N M 2 P_L0_L0_MxN 2 Pred_L0 Pred_L0 M N 3 PN_MxM 4 해당사항없음 해당사항없음 M M 추론됨 PN_Skip 1 Pred_L0 해당사항없음 N N

상기 표 1에서, "MB_N_type" 열의 요소는 NxN 블록의 각각의 파티션 유형에 대한 키이다. "MB_N_type의 이름" 열의 요소는 NxN 블록의 상이한 파티션 유형의 이름이다. 이름에서의 "P"는 블록이 P-코딩을 사용하여(즉, 단일 프레임/슬라이스/리스트를 참조하여) 인터-코딩되는 것을 말한다. 이름에서의 "L0"는 P 코딩을 위해 참조 프레임 또는 슬라이스로서 사용되는 참조 프레임/슬라이스/리스트(예를 들어, "리스트 0")를 말한다. "NxN"은 파티션이 전체 블록임을 말하고, "NxM"은 파티션이 폭 N과 높이 M의 2개의 파티션임을 말하며, "MxN"은 파티션이 폭 M과 높이 N의 2개의 파티션임을 말하고, "MxM"은 파티션이 각각 폭 M과 높이 M을 가지는 4개의 똑같은 크기의 파티션임을 말한다.

표 1에서, PN_Skip은 (예를 들어, 코딩으로부터 얻어진 블록이 모두가 영인 계수를 가졌기 때문에) 블록이 "생략"되었다는 것을 암시한다. "예측 모드 파티션 1" 열의 요소는 파티션의 서브-파티션 1에 대한 참조 프레임/슬라이스/리스트를 말하는 반면, "예측 모드 파티션 2" 열의 요소는 파티션의 서브-파티션 2에 대한 참조 프레임/슬라이스/리스트를 말한다. P_L0_NxN이 단지 하나의 파티션을 가지기 때문에, 제2 서브-파티션이 없을 때 "예측 모드 파티션 2"의 대응하는 요소는 "해당 사항 없음"이다. PN_MxM에 대해, 개별적으로 인코딩될 수 있는 4개의 파티션 블록이 존재한다. 따라서, PN_MxM에 대한 예측 모드 열 둘다는 "해당 사항 없음"을 포함하고 있다. PN_Skip은, P_L0_NxN에서와 같이, 단 하나의 파티션을 가지며, 따라서 "예측 모드 파티션 2" 열의 대응하는 요소는 "해당 사항 없음"이다

이하의 표 2는 표 1의 열 및 요소와 유사한 열 및 요소를 포함한다. 그렇지만, 표 2는 양방향 예측(B-인코딩)을 사용하는 인터-코딩된 블록에 대한 다양한 인코딩 모드에 대응한다. 따라서, 각각의 파티션은 제1 프레임/슬라이스/리스트(L0) 및 제2 프레임/슬라이스/리스트(L1) 중 어느 하나 또는 둘다에 의해 인코딩될 수 있다. "BiPred"는 대응하는 파티션이 L0 및 L1 둘다로부터 예측되는 것을 말한다. 표 2에서, 열 라벨 및 값은 표 1에서 사용된 것과 의미가 유사하다.

MB_N_type MB_N_type의 이름 파티션의 수 예측 모드 파티션 1 예측 모드 파티션 2 파티션 폭 파티션 높이 0 B_Direct_NxN 해당사항없음 Direct 해당사항없음 N N 1 B_L0_NxN 1 Pred_L0 해당사항없음 N N 2 B_L1_NxN 1 Pred_L1 해당사항없음 N N 3 B_Bi_NxN 1 BiPred 해당사항없음 N N 4 B_L0_L0_NxM 2 Pred_L0 Pred_L0 N M 5 B_L0_L0_MxN 2 Pred_L0 Pred_L0 M N 6 B_L1_L1_NxM 2 Pred_L1 Pred_L1 N M 7 B_L1_L1_MxN 2 Pred_L1 Pred_L1 M N 8 B_L0_L1_NxM 2 Pred_L0 Pred_L1 N M 9 B_L0_L1_MxN 2 Pred_L0 Pred_L1 M N 10 B_L1_L0_NxM 2 Pred_L1 Pred_L0 N M 11 B_L1_L0_MxN 2 Pred_L1 Pred_L0 M N 12 B_L0_Bi_NxM 2 Pred_L0 BiPred N M 13 B_L0_Bi_MxN 2 Pred_L0 BiPred M N 14 B_L1_Bi_NxM 2 Pred_L1 BiPred N M 15 B_L1_Bi_MxN 2 Pred_L1 BiPred M N 16 B_Bi_L0_NxM 2 BiPred Pred_L0 N M 17 B_Bi_L0_MxN 2 BiPred Pred_L0 M N 18 B_Bi_L1_NxM 2 BiPred Pred_L1 N M 19 B_Bi_L1_MxN 2 BiPred Pred_L1 M N 20 B_Bi_Bi_NxM 2 BiPred BiPred N M 21 B_Bi_Bi_MxN 2 BiPred BiPred M N 22 BN_MxM 4 해당사항없음 해당사항없음 M M 추론됨 BN_Skip 해당사항없음 Direct 해당사항없음 M M

도 11은 NxN 픽셀 비디오 블록에 대한 최적의 분할 및 인코딩 방법을 계산하는 예시적인 방법을 나타낸 플로우차트이다. 일반적으로, 도 11의 방법은 예를 들어, 도 4a에 도시된 각각의 상이한 분할 방법에 적용되는 각각의 상이한 인코딩 방법(예를 들어, 다양한 공간 또는 시간 모드)에 대한 비용을 계산하는 단계, 및 NxN 픽셀 비디오 블록에 대한 최상의 레이트-왜곡 비용을 가지는 인코딩 모드 및 분할 방법의 조합을 선택하는 단계를 포함한다. 비용은 일반적으로, 레이트-왜곡 비용 = distortion + λ * rate이도록, Lagrange 승수를 사용하여 레이트 및 왜곡 값에 의해 계산될 수 있고, 여기서 distortion은 원본 블록과 코딩된 블록 간의 오차를 나타내고, rate는 코딩 모드를 지원하는 데 필요한 비트 레이트를 나타낸다. 어떤 경우에, rate 및 distortion은 매크로블록, 파티션, 슬라이스 또는 프레임 레벨에서 결정될 수 있다.

먼저, 비디오 인코더(50)는 인코딩될 NxN 비디오 블록을 수신한다(170). 예를 들어, 비디오 인코더(50)는 64x64 대형 매크로블록 또는 그의 파티션(예를 들어, 32x32 또는 16x16 파티션)을 수신할 수 있고, 비디오 인코더(50)는 그에 대한 인코딩 및 분할 방법을 선택해야 한다. 이어서, 비디오 인코더(50)는 각종의 상이한 코딩 모드(상이한 인트라-코딩 및 인터-코딩 모드 등)를 사용하여 NxN 블록을 인코딩하는 비용을 계산한다(172). NxN 블록을 공간적으로 인코딩하는 비용을 계산하기 위해, 비디오 인코더(50)는 주어진 코딩 모드에서 NxN 블록을 인코딩하는 데 필요한 왜곡 및 비트 레이트를 계산할 수 있고, 이어서 비용 = distortion(Mode, NxN) + λ * rate(Mode, NxN)을 계산할 수 있다. 비디오 인코더(50)는 지정된 코딩 기법을 사용하여 매크로블록을 인코딩하고 얻어진 비트 레이트 비용 및 왜곡을 결정할 수 있다. 왜곡은 코딩된 매크로블록에서의 픽셀과 원본 매크로블록에서의 픽셀 간의 픽셀 차분에 기초하여[예를 들어, SAD(sum of absolute difference) 메트릭, SSD(sum of square difference) 메트릭 또는 기타 픽셀 차분 메트릭에 기초하여] 결정될 수 있다.

이어서, 비디오 인코더(50)는 NxN 블록을 2개의 똑같은 크기의 비중첩 수평 Nx(N/2) 파티션으로 분할할 수 있다. 비디오 인코더(50)는 다양한 코딩 모드를 사용하여 각각의 파티션을 인코딩하는 비용을 계산할 수 있다(176). 예를 들어, 제1 Nx(N/2) 파티션을 인코딩하는 비용을 계산하기 위해, 비디오 인코더(50)는 제1 Nx(N/2) 파티션을 인코딩하기 위한 왜곡 및 비트 레이트를 계산하고, 이어서 비용 = distortion(Mode, FIRST PARTITION, Nx(N/2)) + λ * rate(Mode, FIRST PARTITION, Nx(N/2))를 계산할 수 있다.

이어서, 비디오 인코더(50)는 NxN 블록을 2개의 똑같은 크기의 비중첩 수직 (N/2)xN 파티션으로 분할할 수 있다. 비디오 인코더(50)는 다양한 코딩 모드를 사용하여 각각의 파티션을 인코딩하는 비용을 계산할 수 있다(178). 예를 들어, 제1 (N/2)xN 파티션을 인코딩하는 비용을 계산하기 위해, 비디오 인코더(50)는 제1 (N/2)xN 파티션을 인코딩하기 위한 왜곡 및 비트 레이트를 계산하고, 이어서 비용 = distortion(Mode, FIRST PARTITION, (N/2)xN) + λ * rate(Mode, FIRST PARTITION, (N/2)xN)를 계산할 수 있다. 비디오 인코더(50)는 제2 (N/2)xN 매크로블록 파티션을 인코딩하는 비용에 대한 유사한 계산을 수행할 수 있다.

이어서, 비디오 인코더(50)는 NxN 블록을 4개의 똑같은 크기의 비중첩 (N/2)x(N/2) 파티션으로 분할할 수 있다. 비디오 인코더(50)는 다양한 코딩 모드를 사용하여 파티션을 인코딩하는 비용을 계산할 수 있다(180). (N/2)x(N/2) 파티션을 인코딩하는 비용을 계산하기 위해, 비디오 인코더(50)는 먼저 좌측 상부 (N/2)x(N/2) 파티션을 인코딩하기 위한 왜곡 및 비트 레이트를 계산하고 cost(Mode, UPPER-LEFT, (N/2)x(N/2)) = distortion(Mode, UPPER-LEFT, (N/2)x(N/2)) + λ * rate(Mode, UPPER-LEFT, (N/2)x(N/2))로서 그의 비용을 구할 수 있다. 비디오 인코더(50)는 이와 유사하게 하기의 순서로 각각의 (N/2)x(N/2) 블록의 비용을 계산할 수 있다: (1) 좌측 상부 파티션, (2) 우측 상부 파티션, (3) 좌측 하부 파티션, (4) 우측 하부 파티션. 비디오 인코더(50)는, 어떤 일례에서, (N/2)x(N/2) 파티션 각각을 추가로[예를 들어, (N/2)x(N/4) 파티션, (N/4)x(N/2) 파티션, 및 (N/4)x(N/4) 파티션으로서] 분할하고 개별적으로 인코딩하는 비용을 계산하기 위해 (N/2)x(N/2) 파티션 중 하나 이상에 대해 이 방법을 재귀적으로 호출할 수 있다.

그 다음에, 비디오 인코더(50)는 분할 및 인코딩 모드의 어느 조합이 레이트 및 왜곡의 점에서 최상의 비용(즉, 최저 비용)을 가져왔는지를 판정할 수 있다(182). 예를 들어, 비디오 인코더(50)는 2개의 인접 (N/2)x(N/2) 파티션을 인코딩하는 최상의 비용을 2개의 인접 (N/2)x(N/2) 파티션을 포함하는 Nx(N/2) 파티션을 인코딩하는 최상의 비용과 비교할 수 있다. 2개의 인접 (N/2)x(N/2) 파티션을 인코딩하는 총비용이 이들을 포함하는 Nx(N/2) 파티션을 인코딩하는 비용을 초과할 때, 비디오 인코더(50)는 Nx(N/2) 파티션을 인코딩하는 최저 비용 옵션을 선택할 수 있다. 일반적으로, 비디오 인코더(50)는 최저 비용 분할 및 인코딩 방법을 식별하기 위해 각각의 파티션에 대한 분할 방법 및 인코딩 모드의 모든 조합을 적용할 수 있다. 어떤 경우에, 비디오 인코더(50)는 보다 제한된 일련의 분할 및 인코딩 모드 조합을 평가하도록 구성될 수 있다.

최상의(예를 들어, 최저 비용) 분할 및 인코딩 방법을 결정할 때, 비디오 인코더(50)는 최상 비용의 결정된 방법을 사용하여 NxN 매크로블록을 인코딩할 수 있다(184). 어떤 경우에, 결과는 상이한 코딩 모드를 사용하여 코딩되는 파티션을 가지는 대형 매크로블록일 수 있다. 대형 매크로블록에서의 상이한 파티션에 상이한 코딩 모드가 적용될 수 있도록 대형 매크로블록에 혼합 모드 코딩을 적용할 수 있는 것에 의해, 매크로블록이 감소된 비용으로 코딩될 수 있게 된다.

어떤 일례에서, 혼합 모드로 코딩하는 방법은 16x16 픽셀을 초과하는 크기를 가지는 비디오 블록을, 비디오 디코더(50)에서, 수신하는 단계, 블록을 파티션들로 분할하는 단계, 제1 인코딩 모드를 사용하여 파티션들 중 하나를 인코딩하는 단계, 제1 인코딩 모드와 다른 제2 코딩 모드를 사용하여 파티션들 중 다른 하나를 인코딩하는 단계, 및 블록의 크기를 나타내고 파티션 및 파티션을 인코딩하는 데 사용되는 인코딩 모드를 식별해주는 블록-유형 구문 정보를 생성하는 단계를 포함할 수 있다.

도 12는 다양한 파티션을 가지는 예시적인 64x64 픽셀 대형 매크로블록 및 각각의 파티션에 대한 상이한 선택된 인코딩 방법을 나타낸 블록도이다. 도 12의 일례에서, 각각의 파티션은 "I", "P", 또는 "B"로 표시되어 있다. "I"로 표시된 파티션은 인코더가, 예를 들어, 레이트-왜곡 평가에 기초하여, 인트라-코딩(intra-coding)을 이용하기로 한 파티션이다. "P"로 표시된 파티션은 인코더가, 예를 들어, 레이트-왜곡 평가에 기초하여, 단일 참조 인터-코딩(single-reference inter-coding)을 이용하기로 한 파티션이다. "B"로 표시된 파티션은 인코더가, 예를 들어, 레이트-왜곡 평가에 기초하여, 양방향 예측 인터-코딩(bi-predicted inter-coding)을 이용하기로 한 파티션이다. 도 12의 일례에서, 동일한 대형 매크로블록 내의 상이한 파티션은 상이한 코딩 모드(상이한 파티션 또는 서브-파티션 크기 및 상이한 인트라-코딩 또는 인터-코딩 모드를 포함함)를 가진다.

대형 매크로블록은 H.264 코딩 표준의 확장 등의 주어진 코딩 표준에 대한 매크로블록 유형(예를 들어, mb64_type 또는 mb32_type)을 식별해주는 매크로블록 구문 요소에 의해 식별되는 매크로블록이다. 매크로블록 유형 구문 요소는 인코딩된 비디오 비트스트림에서 매크로블록 헤더 구문 요소로서 제공될 수 있다. 도 12에 예시되어 있는 I-코딩된, P-코딩된 및 B-코딩된 파티션은 상이한 코딩 모드(예를 들어, 인트라-예측 또는 인터-예측 모드)에 따라 다양한 블록 크기(크기가 16x16을 초과하는 대형 파티션에 대한 대형 블록 크기 모드 또는 크기가 16x16 이하인 파티션에 대한 H.264 모드를 포함함)로 코딩될 수 있다.

한 일례에서, 비디오 인코더(50) 등의 인코더는 도 11과 관련하여 기술된 예시적인 방법을 사용하여, 도 12의 예시적인 대형 매크로블록의 상이한 파티션 및 서브-파티션에 대한 다양한 인코딩 모드 및 파티션 크기를 선택할 수 있다. 예를 들어, 비디오 인코더(50)는 64x64 매크로블록을 수신하고, 도 11의 방법을 실행하며, 그 결과로서 다양한 파티션 크기 및 코딩 모드로 도 12의 예시적인 매크로블록을 생성할 수 있다. 그렇지만, 분할 및 인코딩 모드에 대한 선택이 도 11의 방법을 적용하는 것으로부터(예를 들어, 매크로블록을 선택한 프레임의 유형에 기초하여 그리고 방법이 실행되는 입력 매크로블록에 기초하여) 얻어질 수 있다는 것을 잘 알 것이다. 예를 들어, 프레임이 I-프레임을 포함할 때, 각각의 파티션은 인트라-인코딩될 것이다. 다른 일례로서, 프레임이 P-프레임을 포함할 때, 각각의 파티션은 단일 참조 프레임에 기초하여(즉, 양방향-예측 없이) 인트라-인코딩 또는 인터-코딩될 수 있다.

도 12의 예시적인 매크로블록은 설명의 목적상 양방향-예측된 프레임(B-프레임)으로부터 선택된 것으로 가정된다. 다른 일례에서, 매크로블록이 P-프레임으로부터 선택되는 경우, 비디오 인코더(50)는 양방향 예측을 사용하여 파티션을 인코딩하지 않을 것이다. 이와 마찬가지로, 매크로블록이 I-프레임으로부터 선택되는 경우, 비디오 인코더(50)는 인터-코딩(P-인코딩 또는 B-인코딩)을 사용하여 파티션을 인코딩하지 않을 것이다. 그렇지만, 어느 경우든지, 비디오 인코더(50)는 매크로블록의 상이한 부분에 대해 다양한 파티션 크기를 선택하고 임의의 이용가능한 인코딩 모드를 사용하여 각각의 파티션을 인코딩하기로 할 수 있다.

도 12의 일례에서, 레이트-왜곡 분석에 기초한 파티션 및 모드 선택의 조합으로부터 하나의 32x32 B-코딩된 파티션, 하나의 32x32 P-코딩된 파티션, 하나의 16x32 I-코딩된 파티션, 하나의 32x16 B-코딩된 파티션, 하나의 16x16 P-코딩된 파티션, 하나의 16x8 P-코딩된 파티션, 하나의 8x16 P-코딩된 파티션, 하나의 8x8 P-코딩된 파티션, 하나의 8x8 B-코딩된 파티션, 하나의 8x8 I-코딩된 파티션, 및 다양한 코딩 모드를 가지는 다수의 더 작은 서브-파티션이 얻어진 것으로 가정한다. 도 12의 일례는 대형 매크로블록에서 파티션의 혼합 모드 코딩을 개념적으로 예시하기 위해 제공된 것이며, 특정의 대형 64x64 매크로블록에 대한 실제 코딩 결과를 나타내는 것으로 꼭 생각되어야 하는 것은 아니다.

도 13은 비디오 시퀀스의 프레임 또는 슬라이스를 인코딩하기 위한 매크로블록의 최적의 크기를 결정하는 예시적인 방법을 나타낸 플로우차트이다. 프레임에 대한 최적의 매크로블록 크기를 선택하는 것과 관련하여 기술되어 있지만, 도 13과 관련하여 기술되는 것과 유사한 방법이 슬라이스에 대한 최적의 매크로블록 크기를 선택하는 데 사용될 수 있다. 이와 마찬가지로, 도 13의 방법이 비디오 인코더(50)와 관련하여 기술되어 있지만, 어떤 인코더라도 도 13의 예시적인 방법을 이용하여 비디오 시퀀스의 프레임을 인코딩하는 최적의(예를 들어, 최소 비용) 매크로블록 크기를 결정할 수 있다는 것을 잘 알 것이다. 일반적으로, 도 13의 방법은, 16x16 매크로블록, 32x32 매크로블록 및 64x64 매크로블록 각각에 대해 한번씩, 인코딩 패스를 3번 수행하는 것을 포함하고, 비디오 인코더는 어느 매크로블록 크기가 최상의 레이트-왜곡을 제공하는지를 결정하기 위해 각각의 패스에 대한 레이트-왜곡 메트릭을 계산할 수 있다.

비디오 인코더(50)는 먼저 제1 인코딩 패스 동안 16x16 픽셀 매크로블록을 사용하여[예를 들어, 함수 encode (frame, MB16_type)를 사용하여] 프레임을 인코딩하여(190), 인코딩된 프레임 F16을 생성할 수 있다. 제1 인코딩 패스 후에, 비디오 인코더(50)는 16x16 픽셀 매크로블록의 사용에 기초하여 비트 레이트 및 왜곡을 제각기 R16 및 D16으로서 계산할 수 있다(192). 이어서, 비디오 인코더(50)는, Lagrange 승수 C16 = D16 + λ*R16을 사용하여, 16x16 픽셀 매크로블록을 사용하는 비용(C16)의 형태로 레이트-왜곡 메트릭을 계산할 수 있다(194). 예를 들어, H.264 표준에 따라, 16x16 픽셀 매크로블록에 대한 코딩 모드 및 파티션 크기가 선택될 수 있다.

이어서, 비디오 인코더(50)는 제2 인코딩 패스 동안 32x32 픽셀 매크로블록을 사용하여[예를 들어, 함수 encode (frame, MB32_type)를 사용하여] 프레임을 인코딩하여(196), 인코딩된 프레임 F32를 생성할 수 있다. 제2 인코딩 패스 후에, 비디오 인코더(50)는 32x32 픽셀 매크로블록의 사용에 기초하여 비트 레이트 및 왜곡을 제각기 R32 및 D32로서 계산할 수 있다(198). 이어서, 비디오 인코더(50)는, Lagrange 승수 C32 = D32 + λ*R32를 사용하여, 32x32 픽셀 매크로블록을 사용하는 비용(C32)의 형태로 레이트-왜곡 메트릭을 계산할 수 있다(200). 예를 들어, 도 11 및 도 12를 참조하여 기술된 레이트 및 왜곡 평가 기법을 사용하여, 32x32 픽셀 매크로블록에 대해 코딩 모드 및 파티션 크기가 선택될 수 있다.

이어서, 비디오 인코더(50)는 제3 인코딩 패스 동안 64x64 픽셀 매크로블록을 사용하여[예를 들어, 함수 encode (frame, MB64_type)를 사용하여] 프레임을 인코딩하여(202), 인코딩된 프레임 F64를 생성할 수 있다. 제3 인코딩 패스 후에, 비디오 인코더(50)는 64x64 픽셀 매크로블록의 사용에 기초하여 비트 레이트 및 왜곡을 제각기 R64 및 D64로서 계산할 수 있다(204). 이어서, 비디오 인코더(50)는, Lagrange 승수 C64 = D64 + λ*R64를 사용하여, 64x64 픽셀 매크로블록을 사용하는 비용(C64)의 형태로 레이트-왜곡 메트릭을 계산할 수 있다(206). 예를 들어, 도 11 및 도 12를 참조하여 기술된 레이트 및 왜곡 평가 기법을 사용하여, 64x64 픽셀 매크로블록에 대해 코딩 모드 및 파티션 크기가 선택될 수 있다.

그 다음에, 비디오 인코더(50)는 메트릭 C16, C32 및 C64 중 어느 것이 프레임에 대해 최저인지를 결정할 수 있다(208). 비디오 인코더(50)는 최저 비용이 얻어진 매크로블록 크기로 인코딩된 프레임을 사용하기로 할 수 있다(210). 따라서, 예를 들어, C16이 최저일 때, 비디오 인코더(50)는 16x16 매크로블록으로 인코딩된 프레임 F16을 인코딩된 프레임으로서 비트스트림으로, 저장 또는 전송을 위해, 디코더로 전달할 수 있다. C32가 최저일 때, 비디오 인코더(50)는 32x32 매크로블록으로 인코딩된 F32를 전달할 수 있다. C64가 최저일 때, 비디오 인코더(50)는 64x64 매크로블록으로 인코딩된 F64를 전달할 수 있다.

다른 일례에서, 비디오 인코더(50)는 인코딩 패스를 임의의 순서로 수행할 수 있다. 예를 들어, 비디오 인코더(50)는 64x64 매크로블록 인코딩 패스에서 시작하고, 두번째로 32x32 매크로블록 인코딩 패스를 수행하며, 16x16 매크로블록 인코딩 패스로 끝낼 수 있다. 또한, 복수의 매크로블록(상이한 크기의 매크로블록을 가지는 슬라이스 등)을 포함하는 기타 코딩 단위를 인코딩하기 위해 유사한 방법이 사용될 수 있다. 예를 들어, 비디오 인코더(50)는, 전체 프레임보다는, 프레임의 슬라이스를 인코딩하는 데 최적의 매크로블록 크기를 선택하기 위해 도 13의 것과 유사한 방법을 적용할 수 있다.

비디오 인코더(50)는 또한 특정의 코딩 단위(예를 들어, 프레임 또는 슬라이스)에 대한 매크로블록 크기의 식별자를, 디코더에서 사용하기 위해, 코딩 단위의 헤더로 전송할 수 있다. 도 13의 방법에 따르면, 방법은 디지털 비디오 스트림의 코딩 단위를, 디지털 비디오 인코더에서, 수신하는 단계, 각각이 16x16 픽셀을 포함하는 제1 복수의 블록을 사용하여 코딩 단위를 인코딩하기 위해 레이트-왜곡에 대응하는 제1 레이트-왜곡 메트릭을 계산하는 단계, 각각이 16x16 초과의 픽셀을 포함하는 제2 복수의 블록을 사용하여 코딩 단위를 인코딩하기 위해 레이트-왜곡에 대응하는 제2 레이트-왜곡 메트릭을 계산하는 단계, 및 제1 레이트-왜곡 메트릭 및 제2 레이트-왜곡 메트릭 중 어느 것이 코딩 단위에 대해 최저인지를 판정하는 단계를 포함할 수 있다. 이 방법은 제1 레이트-왜곡 메트릭이 최저인 것으로 판정될 때, 코딩 단위를 제1 복수의 블록을 사용하여 인코딩하는 단계, 및 제2 레이트-왜곡 메트릭이 최저인 것으로 판정될 때, 코딩 단위를 제2 복수의 블록을 사용하여 인코딩하는 단계를 추가로 포함할 수 있다.

도 14는, 본 개시 내용에 기술된 각종의 기법 중 임의의 것을 사용하여, 표준보다 큰 매크로블록을 사용하는 디지털 비디오 데이터를 인코딩 및/또는 디코딩할 수 있는 비디오 인코더/디코더(CODEC)(234)를 포함하는 예시적인 무선 통신 장치(230)를 나타낸 블록도이다. 도 14의 일례에서, 무선 통신 장치(230)는 비디오 카메라(232), 비디오 인코더-디코더(CODEC)(234), 변조기/복조기(모뎀)(236), 송수신기(238), 프로세서(240), 사용자 인터페이스(242), 메모리(244), 데이터 저장 장치(246), 안테나(248) 및 버스(250)를 포함한다.

도 14에 도시된 무선 통신 장치(230)에 포함된 구성요소는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 적합한 조합에 의해 실현될 수 있다. 예시된 일례에서, 구성요소는 개별 유닛으로서 나타내어져 있다. 그렇지만, 다른 일례에서, 다양한 구성요소가 공통의 하드웨어 및/또는 소프트웨어 내에서 겸용 유닛 내에 통합될 수 있다. 한 일례로서, 메모리(244)는 비디오 CODEC(234)의 다양한 기능에 대응하는, 프로세서(240)에 의해 실행가능한 명령어를 저장할 수 있다. 다른 일례로서, 비디오 카메라(232)는 비디오 CODEC(234)의 기능(예를 들어, 비디오 데이터를 인코딩 및/또는 디코딩하는 것)을 수행하는 비디오 CODEC을 포함할 수 있다.

한 일례에서, 비디오 카메라(232)는 비디오 소스(18)(도 1)에 대응할 수 있다. 일반적으로, 비디오 카메라(232)는 디지털 비디오 데이터를 생성하기 위해 센서 어레이에 의해 캡처되는 비디오 데이터를 레코딩할 수 있다. 비디오 카메라(232)는 원시의 레코딩된 디지털 비디오 데이터를 인코딩을 위해 비디오 CODEC(234)으로, 이어서 데이터 저장을 위해 버스(250)를 통해 데이터 저장 장치(246)로 전송할 수 있다. 프로세서(240)는 비디오를 레코딩하는 모드, 비디오를 레코딩하는 프레임 레이트, 레코딩을 종료하거나 프레임 레이트 모드를 변경할 시간, 비디오 데이터를 비디오 CODEC(234)으로 전송할 시간, 또는 기타 모드 또는 파라미터를 나타내는 신호에 관한 신호를 버스(250)를 통해 비디오 카메라(232)로 전송할 수 있다.

사용자 인터페이스(242)는 입력 및 출력 인터페이스 등의 하나 이상의 인터페이스를 포함할 수 있다. 예를 들어, 사용자 인터페이스(242)는 터치 스크린, 키패드, 버튼, 뷰파인더로서 역할할 수 있는 스크린, 마이크, 스피커, 또는 기타 인터페이스를 포함할 수 있다. 비디오 카메라(232)가 비디오 데이터를 수신할 때, 프로세서(240)는 뷰파인더 상에 디스플레이되도록 비디오 데이터를 사용자 인터페이스(242)로 전송하라고 비디오 카메라(232)에게 신호할 수 있다.

비디오 CODEC(234)은 비디오 카메라(232)로부터의 비디오 데이터를 인코딩하고 안테나(248), 송수신기(238) 및 모뎀(236)을 통해 수신된 비디오 데이터를 디코딩할 수 있다. 비디오 CODEC(234)은, 그에 부가하여 또는 다른 대안으로서, 재생을 위해 데이터 저장 장치(246)로부터 수신되는 이전에 인코딩된 데이터를 디코딩할 수 있다. 비디오 CODEC(234)은 종래의 비디오 인코딩 표준에서 규정하는 매크로블록의 크기보다 큰 매크로블록을 사용하는 디지털 비디오 데이터를 인코딩 및/또는 디코딩할 수 있다. 예를 들어, 비디오 CODEC(234)은 64x64 픽셀 또는 32x32 픽셀을 포함하는 대형 매크로블록을 사용하는 디지털 비디오 데이터를 인코딩 및/또는 디코딩할 수 있다. 대형 매크로블록은 H.264 표준의 확장 등의 비디오 표준에 따라 매크로블록 유형 구문 요소에 의해 식별될 수 있다.

비디오 CODEC(234)은 비디오 인코더(50)(도 2) 및/또는 비디오 디코더(60)(도 3) 중 어느 하나 또는 둘다의 기능은 물론, 본 개시 내용에 기술된 임의의 다른 인코딩/디코딩 기능 또는 기법을 수행할 수 있다. 예를 들어, CODEC(234)은 대형 매크로블록을 각종의 상이한 크기의 소형 파티션으로 분할하고, 선택된 파티션에 대해 상이한 코딩 모드[예를 들어, 공간(I) 또는 시간(P 또는 B)]를 사용할 수 있다. 파티션 크기 및 코딩 모드의 선택은 이러한 파티션 크기 및 코딩 모드에 대한 레이트-왜곡 결과에 기초할 수 있다. CODEC(234)은 또한 대형 매크로블록 내에서 영이 아닌 계수를 가지는 코딩된 매크로블록 및 파티션을 식별하기 위해 계층적 CBP(coded block pattern, 코딩된 블록 패턴) 값을 이용할 수 있다. 그에 부가하여, CODEC(234)은 대형 및 소형 매크로블록에 대한 레이트-왜곡 메트릭을 비교하여, 프레임, 슬라이스 또는 기타 코딩 단위에 대한 보다 바람직한 결과를 가져오는 매크로블록 크기를 선택할 수 있다.

사용자는 데이터 저장 장치(246) 내의 레코딩된 비디오 시퀀스를, 모뎀(236), 송수신기(238) 및 안테나(248)를 통해, 다른 장치(다른 무선 통신 장치 등)로 전송하기 위해 사용자 인터페이스(242)와 상호작용할 수 있다. 비디오 시퀀스는 본 개시 내용에 기술된 확장 또는 수정을 준수하는 인코딩 표준(MPEG-2, MPEG- 3, MPEG-4, H.263, H.264, 또는 기타 비디오 인코딩 표준 등)에 따라 인코딩될 수 있다. 예를 들어, 비디오 시퀀스는 또한, 본 개시 내용에 기술된 바와 같이, 표준보다 큰 매크로블록을 사용하여 인코딩될 수 있다. 무선 통신 장치(230)는 또한 인코딩된 비디오 세그먼트를 수신하고 수신된 비디오 시퀀스를 데이터 저장 장치(246)에 저장할 수 있다.

수신된 인코딩된 비디오 시퀀스의 매크로블록은 종래의 비디오 인코딩 표준에서 명시한 매크로블록보다 클 수 있다. 데이터 저장 장치(246) 내의 인코딩된 비디오 세그먼트(레코딩된 비디오 시퀀스 또는 수신된 비디오 세그먼트 등)를 디스플레이하기 위해, 비디오 CODEC(234)은 비디오 시퀀스를 디코딩하고 비디오 세그먼트의 디코딩된 프레임을 사용자 인터페이스(242)로 전송할 수 있다. 비디오 시퀀스가 오디오 데이터를 포함할 때, 비디오 CODEC(234)이 오디오를 디코딩할 수 있거나, 무선 통신 장치(230)는 오디오를 디코딩하는 오디오 코덱(도시 생략)을 추가로 포함할 수 있다. 이러한 방식으로, 비디오 CODEC(234)은 인코더 및/또는 디코더의 기능 둘다를 수행할 수 있다.

도 14의 무선 통신 장치(230)의 메모리(244)는 프로세서(240) 및/또는 비디오 CODEC(234)으로 하여금, 인코딩된 비디오 데이터를 저장하는 것에 부가하여, 다양한 작업을 수행하게 하는 컴퓨터 판독가능 명령어로 인코딩될 수 있다. 이러한 명령어는 데이터 저장 장치(246) 등의 데이터 저장 장치로부터 메모리(244)에 로드될 수 있다. 예를 들어, 명령어는 프로세서(240)로 하여금 비디오 CODEC(234)과 관련하여 기술된 기능을 수행하게 할 수 있다.

도 15는 예시적인 계층적 CBP(coded block pattern)(260)를 나타낸 블록도이다. CBP(260)의 일례는 일반적으로 64x64 픽셀 매크로블록에 대한 구문 정보의 일부분에 대응한다. 도 15의 일례에서, CBP(260)는 하나의 CBP64 값(262), 4개의 CBP32 값(264, 266, 268, 270), 및 4개의 CBP16 값(272, 274, 276, 278)을 포함한다. CBP(260)의 각각의 블록은 하나 이상의 비트를 포함할 수 있다. 한 일례에서, CBP64 값(262)이 대형 매크로블록에 적어도 하나의 영이 아닌 계수가 있다는 것을 나타내는 "1"의 값을 가지는 비트일 때, 도 15의 일례에 나타낸 바와 같이, CBP(260)는 대형 64x64 매크로블록의 4개의 32x32 파티션에 대한 4개의 CBP32 값(264, 266, 268, 270)을 포함한다.

다른 일례에서, CBP64 값(262)이 "0"의 값을 가지는 비트일 때, CBP(260)는 CBP64만으로 이루어져 있을 수 있는데, 그 이유는 "0"의 값이 CBP(260)에 대응하는 블록이 모두가 영의 값인 계수를 가진다는 것을 나타낼 수 있기 때문이다. 따라서, 그 블록의 모든 파티션도 마찬가지로 모두가 영의 값인 계수를 포함할 것이다. 한 일례에서, CBP64가 "1"의 값을 가지는 비트이고 특정의 32x32 파티션에 대한 CBP32 값들 중 하나가 "1"의 값을 가지는 비트일 때, 예를 들어, CBP32 값(266)과 관련하여 나타낸 바와 같이, 32x32 파티션에 대한 CBP32 값은 CBP16 값을 나타내는 4개의 분기를 가진다. 한 일례에서, CBP32 값이 "0"의 값을 가지는 비트일 때, CBP32는 어떤 분기도 갖지 않는다. 도 15의 일례에서, CBP(260)는 5-비트 프리픽스 "10100"을 가질 수 있으며, 이는 CBP64 값이 "1"이고 32x32 파티션들 중 하나가 "1"의 CBP32 값을 가지며 후속하는 비트가 "1"의 CBP32 값을 가지는 32x32 파티션의 16x16 파티션에 대응하는 4개의 CBP16 값(272, 274, 276, 278)에 대응한다는 것을 나타낸다. 도 15의 일례에서 단 하나의 CBP32 값이 "1"의 값을 가지는 것으로 도시되어 있지만, 다른 일례에서, 2개, 3개 또는 4개의 32x32 파티션 전부가 "1"의 CBP32 값을 가질 수 있으며, 이 경우에 대응하는 CBP16 값을 가지는 4개의 16x16 파티션의 다수의 인스턴스가 필요하게 될 것이다.

도 15의 일례에서, 4개의 16x16 파티션에 대한 4개의 CBP16 값(272, 274, 276, 278)이 다양한 방법에 따라(예를 들어, 도 8 및 도 9의 방법에 따라) 계산될 수 있다. CBP16 값(272, 274, 276, 278) 중 일부 또는 전부는 "lumacbp16" 값, transform_size_flag, 및/또는 luma16x8_cbp를 포함할 수 있다.. CBP16 값(272, 274, 276, 278)은 또한 ITU H.264에 정의된 CBP 값에 따라 또는 ITU H.264에서의 CodedBlockPatternChroma로서 계산될 수 있으며, 이에 대해서는 도 8 및 도 9과 관련하여 논의되었다. 도 15의 일례에서, CBP16(278)이 "1"의 값을 갖고 나머지 CBP16 값(272, 274, 276)이 "0"의 값을 가지는 것으로 가정하면, 64x64 매크로블록에 대한 9-비트 CBP 값은 "101000001"일 것이며, 여기서 각각의 비트는 CBP/파티션 계층구조에서의 각자의 레벨에 있는 파티션들 중 하나에 대응한다.

도 16은 CBP(260)(도 15)에 대응하는 예시적인 트리 구조(280)를 나타낸 블록도이다. CBP64 노드(282)는 CBP64 값(262)에 대응하고, CBP32 노드(284, 286, 288, 290) 각각은 CBP32 값(264, 266, 268, 270)의 각자의 값에 대응하며, CBP16 노드(292, 294, 296, 298) 각각은 CBP16 값(272, 274, 276, 278)의 각자의 값에 대응한다. 이러한 방식으로, 본 개시 내용에 정의되는 코딩된 블록 패턴 값은 계층적 CBP에 대응할 수 있다. 트리에서 다른 분기를 내는 각각의 노드는 각자의 CBP 값 "1"에 대응한다. 도 15 및 도 16의 일례에서, CBP64(282) 및 CBP32(286) 둘다는 "1"의 값을 가지며, 가능한 CBP 값 "1"을 가지는 추가의 파티션을 생성하고, 여기서 그 다음 파티션 레벨에 있는 적어도 하나의 파티션은 적어도 하나의 영이 아닌 변환 계수 값을 포함한다.

도 17은 코딩 단위의 구문 정보를 사용하여, 코딩 단위의 비디오 블록에 대한 블록-기반 구문 인코더 및 디코더를 나타내고 선택하는 예시적인 방법을 나타낸 플로우차트이다. 일반적으로, 도 17의 단계(300) 내지 단계(310)는, 코딩 단위에 대한 복수의 비디오 블록을 인코딩하는 것에 부가하여 또한 그와 관련하여, 비디오 인코더(20)(도 1) 등의 비디오 인코더에 의해 수행될 수 있다. 코딩 단위는 비디오 프레임, 슬라이스 또는 GOP(group of pictures)("시퀀스"라고도 함)를 포함할 수 있다. 도 17의 단계(312) 내지 단계(316)는, 코딩 단위에 대한 복수의 비디오 블록을 디코딩하는 것에 부가하여 또한 그와 관련하여, 비디오 디코더(30)(도 1) 등의 비디오 디코더에 의해 수행될 수 있다.

먼저, 비디오 인코더(20)는 코딩 단위[프레임, 슬라이스 또는 GOP(group of pictures) 등]에 대한 일련의 다양한 크기의 블록을 수신할 수 있다(300). 본 개시 내용의 기법에 따르면, 블록들 중 하나 이상은 16x16 초과의 픽셀(예를 들어, 32x32 픽셀, 64x64 픽셀, 기타)을 포함할 수 있다. 그렇지만, 블록들 각각이 동일한 수의 픽셀을 포함할 필요는 없다. 일반적으로, 비디오 인코더(20)는 각각의 블록을 동일한 블록-기반 구문을 사용하여 인코딩할 수 있다. 예를 들어, 비디오 인코더(20)는, 이상에서 기술한 바와 같이, 계층적 CBP(coded block pattern)를 사용하여 각각의 블록을 인코딩할 수 있다.

비디오 인코더(20)는 코딩 단위에 대한 일련의 블록에서의 최대 블록(즉, 최대 블록 크기)에 기초하여 사용할 블록-기반 구문을 선택할 수 있다. 최대 블록 크기는 코딩 단위에 포함된 최대 매크로블록의 크기에 대응할 수 있다. 그에 따라, 비디오 인코더(20)는 일련의 블록에서의 최대 크기 블록을 결정할 수 있다(302). 도 17의 일례에서, 비디오 인코더(20)는 또한 일련의 블록에서의 최소 크기 블록을 결정할 수 있다(304). 앞서 논의된 바와 같이, 블록의 계층적 CBP는 블록의 파티션이 영이 아닌 양자화된 계수를 가지는지에 대응하는 길이를 가진다. 어떤 일례에서, 비디오 인코더(20)는 코딩 단위에 대한 구문 정보에 최소 크기 값을 포함시킬 수 있다. 어떤 일례에서, 최소 크기 값은 코딩 단위에서의 최소 파티션 크기를 나타낸다. 최소 파티션 크기(예를 들어, 코딩 단위에서의 최소 블록)는 이러한 방식으로 계층적 CBP에 대한 최대 길이를 결정하는 데 사용될 수 있다.

이어서, 비디오 인코더(20)는, 최대 블록에 대응하는 구문에 따라, 코딩 단위에 대한 일련의 블록의 각각의 블록을 인코딩할 수 있다(306). 예를 들어, 최대 블록이 64x64 픽셀을 포함하는 것으로 가정하면, 비디오 인코더(20)는 MB64_type에 대해 이상에서 정의한 것 등의 구문을 사용할 수 있다. 다른 일례로서, 최대 블록이 32x32 픽셀 블록을 포함하는 것으로 가정하면, 비디오 인코더(20)는 MB32_type에 대해 이상에서 정의한 것 등의 구문을 사용할 수 있다.

비디오 인코더(20)는 또한 코딩 단위에서의 최대 블록 및 코딩 단위에서의 최소 블록에 대응하는 값을 포함하는 코딩 단위 구문 정보를 생성한다(308). 이어서, 비디오 인코더(20)는 코딩 단위(코딩 단위에 대한 구문 정보 및 코딩 단위의 각각의 블록을 포함함)를 비디오 디코더(30)로 전송할 수 있다.

비디오 디코더(30)는 비디오 인코더(20)로부터 코딩 단위 및 코딩 단위에 대한 구문 정보를 수신할 수 있다(312). 비디오 디코더(30)는 코딩 단위 구문 정보에 있는 코딩 단위에서의 최대 블록의 표시에 기초하여 블록-기반 구문 디코더를 선택할 수 있다(314). 예를 들어, 코딩 단위 구문 정보가 코딩 단위에서의 최대 블록이 64x64 픽셀을 포함한 것으로 가정하여, 비디오 디코더(30)는 MB64_type 블록에 대한 구문 디코더를 선택할 수 있다. 이어서, 비디오 디코더(30)는 선택된 구문 디코더를 코딩 단위의 블록에 적용하여, 코딩 단위의 블록을 디코딩할 수 있다(316). 비디오 디코더(30)는 또한 코딩 단위 구문 정보에 있는 최소 인코딩된 파티션의 표시에 기초하여 블록이 추가로 개별적으로 인코딩된 서브-파티션을 갖지 않을 때를 판정할 수 있다. 예를 들어, 최대 블록이 64x64 픽셀이고 최소 블록도 역시 64x64 픽셀인 경우, 64x64 블록이 64x64 크기보다 작은 서브-파티션으로 나누어지지 않은 것으로 판정될 수 있다. 다른 일례로서, 최대 블록이 64x64 픽셀이고 최소 블록이 32x32 픽셀인 경우, 64x64 블록이 32x32 이상의 서브-파티션으로 나누어지는 것으로 판정될 수 있다.

이러한 방식으로, 비디오 디코더(30)는 기존의 코딩 표준(H.264 등)과 역호환되는 채로 있을 수 있다. 예를 들어, 코딩 단위에서의 최대 블록이 16x16 픽셀을 포함할 때, 비디오 인코더(20)는 코딩 단위 구문 정보에 이것을 나타낼 수 있고, 비디오 디코더(30)는 표준 H.264 블록-기반 구문 디코더를 적용할 수 있다. 그렇지만, 코딩 단위에서의 최대 블록이 16x16 초과의 픽셀을 포함할 때, 비디오 인코더(20)는 코딩 단위 구문 정보에 이것을 나타낼 수 있고, 비디오 디코더(30)는 본 개시 내용의 기법에 따라 블록 기반 구문 디코더를 선택적으로 적용하여 코딩 단위의 블록을 디코딩할 수 있다.

하나 이상의 일례에서, 기술된 기능이 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능은 하나 이상의 명령어 또는 코드로서 컴퓨터-판독가능 매체 상에 저장되거나 그를 통해 전송될 수 있다. 컴퓨터-판독가능 매체는 컴퓨터 프로그램을 한 곳에서 다른 곳으로 전달하는 것을 용이하게 해주는 컴퓨터 저장 매체 및 통신 매체 둘다를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 이용가능한 매체라면 어느 것이라도 될 수 있다. 제한이 아닌 일례로서, 이러한 컴퓨터-판독가능 매체는, 명령어 또는 데이터 구조 형태의 원하는 프로그램 코드를 전달 또는 저장하는 데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광 디스크 저장 장치, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 임의의 다른 매체를 포함할 수 있다. 따라서, 어떤 연결이라도 적절하게는 컴퓨터-판독가능 매체라고 한다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선쌍(twisted pair), 디지털 가입자 회선(DSL), 또는 무선 기술(적외선, 무선 및 마이크로파 등)을 사용하여 웹 사이트, 서버 또는 기타 원격 소스로부터 전송되는 경우, 동축 케이블, 광섬유 케이블, 연선쌍, DSL, 또는 무선 기술(적외선, 무선 및 마이크로파 등)이 매체의 정의에 포함된다. 디스크(Disk) 및 디스크(disc)는, 본 명세서에서 사용되는 바와 같이, CD(compact disc), 레이저 디스크, 광 디스크, DVD(digital versatile disc), 플로피 디스크 및 블루레이 디스크를 포함하고, 여기서 디스크(disk)는 보통 데이터를 자기적으로 재생하는 반면, 디스크(disc)는 데이터를 레이저를 사용하여 광학적으로 재생한다. 상기한 것들의 조합도 역시 컴퓨터-판독가능 매체의 범위 내에 포함되어야 한다.

다양한 일례가 기술되었다. 이들 및 기타 일례가 이하의 특허청구범위의 범위 내에 속한다.

Claims (28)

  1. 복수의 비디오 블록의 크기가 가장 작은 비디오 블록에서 가장 큰 비디오 블록까지의 범위를 갖는 상기 복수의 비디오 블록을 포함하는 코딩 단위(coded unit)를 비디오 인코더를 사용하여 인코딩하는 단계 - 상기 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함하고, 상기 비디오 블록 각각의 인코딩은 상기 복수의 비디오 블록 중 상기 가장 큰 비디오 블록에 대한 구문(syntax)에 따라 수행됨 -, 및
    최대 크기 값을 포함하는 상기 코딩 단위에 대한 구문 정보를 생성하는 단계 - 상기 최대 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 큰 비디오 블록의 크기를 나타냄 - 를 포함하는 방법.
  2. 제1항에 있어서, 상기 코딩 단위는 프레임, 슬라이스 및 GOP(group of pictures) 중 하나를 포함하는 방법.
  3. 제1항에 있어서, 상기 구문 정보는 상기 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기에 대응하는 고정-길이 코드를 포함하는 방법.
  4. 제1항에 있어서, 상기 구문 정보를 생성하는 단계는 최소 크기 값을 상기 구문 정보에 포함시키는 단계 - 상기 최소 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 작은 비디오 블록의 크기를 나타냄 - 를 더 포함하는 방법.
  5. 제4항에 있어서, 상기 최대 크기 값 및 상기 최소 크기 값에 따라 상기 복수의 비디오 블록 각각에 대한 블록-기반 구문 정보를 생성하는 단계를 더 포함하는 방법.
  6. 복수의 비디오 블록의 크기가 가장 작은 비디오 블록에서 가장 큰 비디오 블록까지의 범위를 갖는 상기 복수의 비디오 블록을 포함하는 코딩 단위를 인코딩하고 - 상기 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함하고, 상기 비디오 블록 각각의 인코딩은 상기 복수의 비디오 블록 중 상기 가장 큰 비디오 블록에 대한 구문에 따라 수행됨 -,
    최대 크기 값을 포함하는 상기 코딩 단위에 대한 구문 정보를 생성 - 상기 최대 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 큰 비디오 블록의 크기를 나타냄 - 하도록 구성된 비디오 인코더를 포함하는 장치.
  7. 제6항에 있어서, 상기 코딩 단위는 프레임, 슬라이스 및 GOP(group of pictures) 중 하나를 포함하는 장치.
  8. 제6항에 있어서, 상기 구문 정보는 상기 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기에 대응하는 고정-길이 코드를 포함하는 장치.
  9. 제6항에 있어서, 상기 비디오 인코더는 최소 크기 값을 상기 구문 정보에 포함시키도록 구성되어 있고, 상기 최소 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 작은 비디오 블록의 크기를 나타내는 장치.
  10. 제9항에 있어서, 상기 비디오 인코더는 상기 최대 크기 값 및 상기 최소 크기 값에 따라 상기 복수의 비디오 블록 각각에 대한 블록-기반 구문 정보를 생성하도록 구성되어 있는 장치.
  11. 복수의 비디오 블록의 크기가 가장 작은 비디오 블록에서 가장 큰 비디오 블록까지의 범위를 갖는 상기 복수의 비디오 블록을 포함하는 코딩 단위를 인코딩하는 수단 - 상기 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함하고, 상기 비디오 블록 각각의 인코딩은 상기 복수의 비디오 블록 중 상기 가장 큰 비디오 블록에 대한 구문에 따라 수행됨 -, 및
    최대 크기 값을 포함하는 상기 코딩 단위에 대한 구문 정보를 생성하는 수단 - 상기 최대 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 큰 비디오 블록의 크기를 나타냄 - 을 포함하는 장치.
  12. 제11항에 있어서, 상기 코딩 단위는 프레임, 슬라이스 및 GOP(group of pictures) 중 하나를 포함하는 장치.
  13. 제11항에 있어서, 상기 구문 정보는 상기 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기에 대응하는 고정-길이 코드를 포함하는 장치.
  14. 제11항에 있어서, 상기 구문 정보를 생성하는 수단은 최소 크기 값을 상기 구문 정보에 포함시키는 수단을 더 포함하고, 상기 최소 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 작은 비디오 블록의 크기를 나타내는 장치.
  15. 제14항에 있어서, 상기 최대 크기 값 및 상기 최소 크기 값에 따라 상기 복수의 비디오 블록 각각에 대한 블록-기반 구문 정보를 생성하는 수단을 더 포함하는 장치.
  16. 프로그램가능 프로세서로 하여금
    복수의 비디오 블록의 크기가 가장 작은 비디오 블록에서 가장 큰 비디오 블록까지의 범위를 갖는 상기 복수의 비디오 블록을 포함하는 코딩 단위를 인코딩하고 - 상기 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함하고, 상기 비디오 블록 각각의 인코딩은 상기 복수의 비디오 블록 중 상기 가장 큰 비디오 블록에 대한 구문에 따라 수행됨 -,
    최대 크기 값을 포함하는 상기 코딩 단위에 대한 구문 정보를 생성 - 상기 최대 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 큰 비디오 블록의 크기를 나타냄 - 하게 하는 명령어로 인코딩된 컴퓨터-판독가능 저장 매체.
  17. 제16항에 있어서, 상기 코딩 단위는 프레임, 슬라이스 및 GOP(group of pictures) 중 하나를 포함하는 컴퓨터-판독가능 저장 매체.
  18. 제16항에 있어서, 상기 구문 정보는 상기 복수의 비디오 블록 중 가장 큰 비디오 블록의 크기에 대응하는 고정-길이 코드를 포함하는 컴퓨터-판독가능 저장 매체.
  19. 제16항에 있어서, 상기 구문 정보를 생성하는 명령어는 최소 크기 값을 상기 구문 정보에 포함시키는 명령어를 더 포함하고, 상기 최소 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 작은 비디오 블록의 크기를 나타내는 컴퓨터-판독가능 저장 매체.
  20. 제19항에 있어서, 상기 최대 크기 값 및 상기 최소 크기 값에 따라 복수의 비디오 블록 각각에 대한 블록-기반 구문 정보를 생성하는 명령어를 더 포함하는 컴퓨터-판독가능 저장 매체.
  21. 복수의 비디오 블록의 크기가 가장 작은 비디오 블록에서 가장 큰 비디오 블록까지의 범위를 갖는 상기 복수의 비디오 블록을 포함하는 코딩 단위를 비디오 디코더를 사용하여 수신하는 단계 - 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -,
    최대 크기 값을 포함하는 상기 코딩 단위에 대한 구문 정보를 수신하는 단계 - 상기 최대 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 큰 비디오 블록의 크기를 나타냄 -,
    상기 최대 크기 값에 따라 블록-유형 구문 디코더를 선택하는 단계, 및
    상기 선택된 블록-유형 구문 디코더를 사용하여 상기 코딩 단위 내의 복수의 비디오 블록 각각을 디코딩하는 단계를 포함하는 방법.
  22. 제21항에 있어서, 상기 구문 정보는 최소 크기 값을 포함하고, 상기 최소 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 작은 비디오 블록의 크기를 나타내며, 상기 선택된 블록-유형 구문 디코더는 상기 최소 크기 값에 따라 상기 코딩 단위 내의 복수의 비디오 블록을 어떻게 디코딩할지를 나타내는 방법.
  23. 복수의 비디오 블록의 크기가 가장 작은 비디오 블록에서 가장 큰 비디오 블록까지의 범위를 갖는 상기 복수의 비디오 블록을 포함하는 코딩 단위를 수신하고 - 상기 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -,
    최대 크기 값을 포함하는 상기 코딩 단위에 대한 구문 정보를 수신하며 - 상기 최대 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 큰 비디오 블록의 크기를 나타냄 -,
    상기 최대 크기 값에 따라 블록-유형 구문 디코더를 선택하고,
    상기 선택된 블록-유형 구문 디코더를 사용하여 상기 코딩 단위 내의 복수의 비디오 블록 각각을 디코딩하도록 구성된 비디오 디코더를 포함하는 장치.
  24. 제23항에 있어서, 상기 구문 정보는 최소 크기 값을 포함하고, 상기 최소 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 작은 비디오 블록의 크기를 나타내며, 상기 선택된 블록-유형 구문 디코더는 상기 최소 크기 값에 따라 상기 코딩 단위 내의 복수의 비디오 블록을 어떻게 디코딩할지를 나타내는 장치.
  25. 복수의 비디오 블록의 크기가 가장 작은 비디오 블록에서 가장 큰 비디오 블록까지의 범위를 갖는 상기 복수의 비디오 블록을 포함하는 코딩 단위를 수신하는 수단 - 상기 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -,
    최대 크기 값을 포함하는 코딩 단위에 대한 구문 정보를 수신하는 수단 - 상기 최대 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 큰 비디오 블록의 크기를 나타냄 -,
    상기 최대 크기 값에 따라 블록-유형 구문 디코더를 선택하는 수단, 및
    상기 선택된 블록-유형 구문 디코더를 사용하여 상기 코딩 단위 내의 복수의 비디오 블록 각각을 디코딩하는 수단을 포함하는 장치.
  26. 제25항에 있어서, 상기 구문 정보는 최소 크기 값을 포함하고, 상기 최소 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 작은 비디오 블록의 크기를 나타내며, 상기 선택된 블록-유형 구문 디코더는 상기 최소 크기 값에 따라 상기 코딩 단위 내의 복수의 비디오 블록을 어떻게 디코딩할지를 나타내는 장치.
  27. 프로그램가능 프로세서로 하여금
    복수의 비디오 블록의 크기가 가장 작은 비디오 블록에서 가장 큰 비디오 블록까지의 범위를 갖는 상기 복수의 비디오 블록을 포함하는 코딩 단위를 수신하고 - 상기 복수의 비디오 블록 중 적어도 하나의 비디오 블록은 16x16 픽셀을 초과하는 크기를 포함함 -,
    최대 크기 값을 포함하는 상기 코딩 단위에 대한 구문 정보를 수신하며 - 상기 최대 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 큰 비디오 블록의 크기를 나타냄 -,
    상기 최대 크기 값에 따라 블록-유형 구문 디코더를 선택하고,
    상기 선택된 블록-유형 구문 디코더를 사용하여 상기 코딩 단위 내의 복수의 비디오 블록 각각을 디코딩하게 하는 명령어로 인코딩된 컴퓨터-판독가능 저장 매체.
  28. 제27항에 있어서, 상기 구문 정보는 최소 크기 값을 포함하고, 상기 최소 크기 값은 상기 코딩 단위 내의 복수의 비디오 블록 중 상기 가장 작은 비디오 블록의 크기를 나타내며, 상기 선택된 블록-유형 구문 디코더는 상기 최소 크기 값에 따라 상기 코딩 단위 내의 복수의 비디오 블록을 어떻게 디코딩할지를 나타내는 컴퓨터-판독가능 저장 매체.
KR1020117010099A 2008-10-03 2009-09-29 대형 매크로블록을 사용한 비디오 코딩 KR101222400B1 (ko)

Priority Applications (9)

Application Number Priority Date Filing Date Title
US10278708P true 2008-10-03 2008-10-03
US61/102,787 2008-10-03
US14435709P true 2009-01-13 2009-01-13
US61/144,357 2009-01-13
US16663109P true 2009-04-03 2009-04-03
US61/166,631 2009-04-03
US12/562,504 US8503527B2 (en) 2008-10-03 2009-09-18 Video coding with large macroblocks
US12/562,504 2009-09-18
PCT/US2009/058833 WO2010039728A2 (en) 2008-10-03 2009-09-29 Video coding with large macroblocks

Publications (2)

Publication Number Publication Date
KR20110063855A KR20110063855A (ko) 2011-06-14
KR101222400B1 true KR101222400B1 (ko) 2013-01-16

Family

ID=42041691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117010099A KR101222400B1 (ko) 2008-10-03 2009-09-29 대형 매크로블록을 사용한 비디오 코딩

Country Status (7)

Country Link
US (6) US8503527B2 (ko)
EP (1) EP2347591B1 (ko)
JP (3) JP2012504908A (ko)
KR (1) KR101222400B1 (ko)
CN (2) CN102172021B (ko)
TW (1) TWI392370B (ko)
WO (1) WO2010039728A2 (ko)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8379727B2 (en) * 2008-09-26 2013-02-19 General Instrument Corporation Method and apparatus for scalable motion estimation
US8503527B2 (en) 2008-10-03 2013-08-06 Qualcomm Incorporated Video coding with large macroblocks
US8619856B2 (en) * 2008-10-03 2013-12-31 Qualcomm Incorporated Video coding with large macroblocks
US8483285B2 (en) 2008-10-03 2013-07-09 Qualcomm Incorporated Video coding using transforms bigger than 4×4 and 8×8
US8634456B2 (en) * 2008-10-03 2014-01-21 Qualcomm Incorporated Video coding with large macroblocks
KR101712351B1 (ko) * 2009-06-26 2017-03-06 에스케이 텔레콤주식회사 다차원 정수 변환을 이용한 영상 부호화/복호화 장치 및 방법
KR101452859B1 (ko) 2009-08-13 2014-10-23 삼성전자주식회사 움직임 벡터를 부호화 및 복호화하는 방법 및 장치
KR101474756B1 (ko) 2009-08-13 2014-12-19 삼성전자주식회사 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치
KR101487686B1 (ko) 2009-08-14 2015-01-30 삼성전자주식회사 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
JP5234368B2 (ja) 2009-09-30 2013-07-10 ソニー株式会社 画像処理装置および方法
ES2747977T3 (es) 2009-10-01 2020-03-12 Sk Telecom Co Ltd Procedimiento y aparato para codificación / decodificación de imagen utilizando macrobloques de tamaño variable
US9549190B2 (en) * 2009-10-01 2017-01-17 Sk Telecom Co., Ltd. Method and apparatus for encoding/decoding image using variable-size macroblocks
ES2554237T3 (es) * 2009-10-01 2015-12-17 Sk Telecom. Co., Ltd. Método y aparato para codificar/decodificar imagen usando una capa dividida
KR101504887B1 (ko) * 2009-10-23 2015-03-24 삼성전자 주식회사 데이터 단위 레벨의 독립적 파싱 또는 복호화에 따른 비디오 복호화 방법 및 그 장치, 그리고 데이터 단위 레벨의 독립적 파싱 또는 복호화를 위한 비디오 부호화 방법 및 그 장치
KR101457418B1 (ko) * 2009-10-23 2014-11-04 삼성전자주식회사 계층적 부호화 단위의 크기에 따른 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
US20170289540A9 (en) * 2009-11-20 2017-10-05 Texas Instruments Incorporated Block Artifact Suppression in Video Coding
KR101387467B1 (ko) * 2010-06-07 2014-04-22 (주)휴맥스 고해상도 영상의 부호화/복호화 방법 및 이를 수행하는 장치
KR20110061468A (ko) * 2009-12-01 2011-06-09 (주)휴맥스 고해상도 영상의 부호화/복호화 방법 및 이를 수행하는 장치
KR101484280B1 (ko) 2009-12-08 2015-01-20 삼성전자주식회사 Method and apparatus for video coding according to motion prediction using arbitrary partitions, video decoding method and apparatus according to motion compensation using arbitrary partitions
CN104661033B (zh) * 2009-12-10 2018-02-06 Sk电信有限公司 使用树形结构的解码装置
US8885711B2 (en) * 2009-12-17 2014-11-11 Sk Telecom Co., Ltd. Image encoding/decoding method and device
KR102036118B1 (ko) * 2010-01-12 2019-10-24 엘지전자 주식회사 비디오 신호의 처리 방법 및 장치
KR101675118B1 (ko) 2010-01-14 2016-11-10 삼성전자 주식회사 스킵 및 분할 순서를 고려한 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
KR101703327B1 (ko) * 2010-01-14 2017-02-06 삼성전자 주식회사 계층적 데이터 단위의 패턴 정보를 이용하는 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
US20110249754A1 (en) * 2010-04-12 2011-10-13 Qualcomm Incorporated Variable length coding of coded block pattern (cbp) in video compression
US8942282B2 (en) 2010-04-12 2015-01-27 Qualcomm Incorporated Variable length coding of coded block pattern (CBP) in video compression
CN106231332B (zh) 2010-04-13 2020-04-14 Ge视频压缩有限责任公司 解码器、解码方法、编码器以及编码方法
JP5718453B2 (ja) 2010-04-13 2015-05-13 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン Decryption method
KR101584480B1 (ko) 2010-04-13 2016-01-14 지이 비디오 컴프레션, 엘엘씨 평면 간 예측
EP2559005B1 (en) 2010-04-13 2015-11-04 GE Video Compression, LLC Inheritance in sample array multitree subdivision
EP3200454A1 (en) 2010-04-13 2017-08-02 Samsung Electronics Co., Ltd. Video decoding method which performs deblocking filtering based on tree-structure encoding units
KR101813189B1 (ko) * 2010-04-16 2018-01-31 에스케이 텔레콤주식회사 영상 부호화/복호화 장치 및 방법
US20110274162A1 (en) 2010-05-04 2011-11-10 Minhua Zhou Coding Unit Quantization Parameters in Video Coding
MX355733B (es) 2010-06-10 2018-04-27 Thomson Licensing METHODS AND APPLIANCES FOR DETERMINING QUANTIFICATION PARAMETER PREDICTORS FROM A PLURALITY OF CONTIGED QUANTIFICATION PARAMETERS.
US8837577B2 (en) * 2010-07-15 2014-09-16 Sharp Laboratories Of America, Inc. Method of parallel video coding based upon prediction type
KR20120009618A (ko) * 2010-07-19 2012-02-02 에스케이 텔레콤주식회사 주파수변환단위 분할부호화 방법 및 장치와 이를 이용한 영상 부호화/복호화 방법 및 장치
CA2812949C (en) 2010-09-30 2017-04-18 Min-Su Cheon Video encoding method for encoding hierarchical-structure symbols and a device therefor, and video decoding method for decoding hierarchical-structure symbols and a device therefor
US9532059B2 (en) 2010-10-05 2016-12-27 Google Technology Holdings LLC Method and apparatus for spatial scalability for video coding
US9172963B2 (en) 2010-11-01 2015-10-27 Qualcomm Incorporated Joint coding of syntax elements for video coding
US20120106622A1 (en) * 2010-11-03 2012-05-03 Mediatek Inc. Method and Apparatus of Slice Grouping for High Efficiency Video Coding
WO2012093891A2 (ko) * 2011-01-06 2012-07-12 삼성전자 주식회사 계층적 구조의 데이터 단위를 이용한 비디오의 부호화 방법 및 장치, 그 복호화 방법 및 장치
WO2012093890A2 (ko) * 2011-01-07 2012-07-12 삼성전자 주식회사 양방향 예측 및 단일방향 예측이 가능한 비디오 예측 방법 및 그 장치, 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
EP2665272A4 (en) * 2011-01-13 2014-07-09 Nec Corp Video encoding device, video decoding device, video encoding method, video decoding method, and program
CN108111847A (zh) * 2011-01-13 2018-06-01 日本电气株式会社 视频解码设备和视频解码方法
US20120189052A1 (en) * 2011-01-24 2012-07-26 Qualcomm Incorporated Signaling quantization parameter changes for coded units in high efficiency video coding (hevc)
WO2012165886A2 (ko) * 2011-05-31 2012-12-06 (주)휴맥스 화면 간 예측 방법에서 움직임 예측 관련 정보 저장 방법 및 화면 간 예측 방법에서 움직임 예측 관련 정보 산출 방법
WO2012167711A1 (en) 2011-06-10 2012-12-13 Mediatek Inc. Method and apparatus of scalable video coding
JP5745175B2 (ja) * 2011-06-28 2015-07-08 サムスン エレクトロニクス カンパニー リミテッド 適応的な量子化パラメータ差分値を用いた映像の符号化及び復号化方法と装置
KR101955374B1 (ko) 2011-06-30 2019-05-31 에스케이 텔레콤주식회사 고속 코딩 단위(Coding Unit) 모드 결정을 통한 부호화/복호화 방법 및 장치
US8929455B2 (en) * 2011-07-01 2015-01-06 Mitsubishi Electric Research Laboratories, Inc. Method for selecting transform types from mapping table for prediction modes
JP5677576B2 (ja) * 2011-07-22 2015-02-25 株式会社日立製作所 動画像復号化方法及び動画像符号化方法
US9787982B2 (en) * 2011-09-12 2017-10-10 Qualcomm Incorporated Non-square transform units and prediction units in video coding
LT2744204T (lt) * 2011-09-14 2019-01-10 Samsung Electronics Co., Ltd. FORECAST UNIT (PU) DECODATION METHOD BASED ON ITS SIZE
US9332283B2 (en) * 2011-09-27 2016-05-03 Broadcom Corporation Signaling of prediction size unit in accordance with video coding
IN2014CN02456A (ko) 2011-09-29 2015-06-19 Sharp Kk
WO2013047805A1 (ja) * 2011-09-29 2013-04-04 シャープ株式会社 画像復号装置、画像復号方法および画像符号化装置
US9066068B2 (en) * 2011-10-31 2015-06-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Intra-prediction mode selection while encoding a picture
US9167261B2 (en) 2011-11-07 2015-10-20 Sharp Laboratories Of America, Inc. Video decoder with constrained dynamic range
US8923388B2 (en) * 2011-11-21 2014-12-30 Texas Instruments Incorporated Early stage slice cap decision in video coding
WO2013107027A1 (en) 2012-01-19 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of cbf coding in hevc
CN103379319B (zh) * 2012-04-12 2018-03-20 中兴通讯股份有限公司 一种滤波方法、滤波器及包含该滤波器的编码器和解码器
US9113164B1 (en) * 2012-05-15 2015-08-18 Google Inc. Constant bit rate control using implicit quantization values
EP2869563B1 (en) * 2012-07-02 2018-06-13 Samsung Electronics Co., Ltd. METHOD FOR ENTROPY DECODING of a VIDEO
RU2510589C2 (ru) * 2012-07-05 2014-03-27 Вадим Витальевич Ярошенко Способ кодирования цифрового видеоизображения
CN104885467B (zh) * 2013-01-30 2018-08-17 英特尔公司 用于下一代视频编码的内容自适应参数变换
KR101484282B1 (ko) 2013-04-02 2015-01-22 삼성전자주식회사 임의적인 파티션을 이용한 움직임 예측에 따른 비디오 부호화 방법 및 장치, 임의적인 파티션을 이용한 움직임 보상에 따른 비디오 복호화 방법 및 장치
US20150189269A1 (en) * 2013-12-30 2015-07-02 Google Inc. Recursive block partitioning
GB2523993A (en) * 2014-03-06 2015-09-16 Sony Corp Data encoding and decoding
US20150262404A1 (en) * 2014-03-13 2015-09-17 Huawei Technologies Co., Ltd. Screen Content And Mixed Content Coding
US9596479B2 (en) * 2014-10-07 2017-03-14 Hfi Innovation Inc. Method of pulse-code modulation and palette coding for video coding
US20160321287A1 (en) 2015-04-29 2016-11-03 Box, Inc. File tree streaming in a virtual file system for cloud-based shared content
CN105847798A (zh) * 2016-03-30 2016-08-10 乐视控股(北京)有限公司 一种用于视频编码的快速编码单元划分方法及装置
KR20180106443A (ko) * 2017-03-20 2018-10-01 삼성전자주식회사 인코딩 시스템 및 이의 동작 방법
EP3496403A1 (en) * 2017-12-06 2019-06-12 V-Nova International Limited Hierarchical data structure
WO2019111013A1 (en) * 2017-12-06 2019-06-13 V-Nova International Ltd Method and apparatus for decoding a received set of encoded data
US10812819B2 (en) * 2018-10-07 2020-10-20 Tencent America LLC Method and apparatus for video coding

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008027192A2 (en) 2006-08-25 2008-03-06 Thomson Licensing Methods and apparatus for reduced resolution partitioning

Family Cites Families (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH082106B2 (ja) 1986-11-10 1996-01-10 国際電信電話株式会社 動画像信号のハイブリツド符号化方式
US5107345A (en) * 1990-02-27 1992-04-21 Qualcomm Incorporated Adaptive block size image compression method and system
JPH08205140A (ja) 1995-01-31 1996-08-09 Canon Inc 画像圧縮装置
EP1267581B1 (en) 1995-03-15 2007-05-02 Kabushiki Kaisha Toshiba Moving picture decoding systems
JP2000511366A (ja) 1995-10-25 2000-08-29 サーノフ コーポレイション 4分割ツリーベースの可変ブロックサイズ動き推定装置および方法
JP3855286B2 (ja) 1995-10-26 2006-12-06 ソニー株式会社 画像符号化装置および画像符号化方法、画像復号化装置および画像復号化方法、並びに記録媒体
US5956088A (en) 1995-11-21 1999-09-21 Imedia Corporation Method and apparatus for modifying encoded digital video for improved channel utilization
US6215910B1 (en) 1996-03-28 2001-04-10 Microsoft Corporation Table-based compression with embedded coding
US5748116A (en) 1996-11-27 1998-05-05 Teralogic, Incorporated System and method for nested split coding of sparse data sets
US6633611B2 (en) 1997-04-24 2003-10-14 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for region-based moving image encoding and decoding
US6571016B1 (en) 1997-05-05 2003-05-27 Microsoft Corporation Intra compression of pixel blocks using predicted mean
US6539124B2 (en) 1999-02-03 2003-03-25 Sarnoff Corporation Quantizer selection based on region complexities derived using a rate distortion model
US6529634B1 (en) 1999-11-08 2003-03-04 Qualcomm, Inc. Contrast sensitive variance based adaptive block size DCT image compression
US6600836B1 (en) * 2000-01-28 2003-07-29 Qualcomm, Incorporated Quality based image compression
DE10022331A1 (de) 2000-05-10 2001-11-15 Bosch Gmbh Robert Verfahren zur Transformationscodierung von Bewegtbildsequenzen
US6968012B1 (en) 2000-10-02 2005-11-22 Firepad, Inc. Methods for encoding digital video for decoding on low performance devices
US6937770B1 (en) 2000-12-28 2005-08-30 Emc Corporation Adaptive bit rate control for rate reduction of MPEG coded video
US7474699B2 (en) 2001-08-28 2009-01-06 Ntt Docomo, Inc. Moving picture encoding/transmission system, moving picture encoding/transmission method, and encoding apparatus, decoding apparatus, encoding method decoding method and program usable for the same
FI111592B (fi) 2001-09-06 2003-08-15 Oulun Yliopisto Menetelmä ja laite peräkkäisten kuvien koodaamiseksi
US6959116B2 (en) 2001-09-18 2005-10-25 Emc Corporation Largest magnitude indices selection for (run, level) encoding of a block coded picture
US6980596B2 (en) 2001-11-27 2005-12-27 General Instrument Corporation Macroblock level adaptive frame/field coding for digital video content
GB2382940A (en) 2001-11-27 2003-06-11 Nokia Corp Encoding objects and background blocks
US20030123738A1 (en) 2001-11-30 2003-07-03 Per Frojdh Global motion compensation for video pictures
ES2664270T3 (es) 2001-12-17 2018-04-18 Microsoft Technology Licensing, Llc Codificación por omisión de macrobloques
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US20050213831A1 (en) 2002-03-05 2005-09-29 Van Der Schaar Mihaela Method and system for encoding fractional bitplanes
EP1483918A2 (en) 2002-03-05 2004-12-08 Philips Electronics N.V. Method and system for layered video encoding
JP2003319394A (ja) 2002-04-26 2003-11-07 Sony Corp 符号化装置および方法、復号装置および方法、記録媒体、並びにプログラム
US7038676B2 (en) * 2002-06-11 2006-05-02 Sony Computer Entertainmant Inc. System and method for data compression
US7289674B2 (en) 2002-06-11 2007-10-30 Nokia Corporation Spatial prediction based intra coding
KR100959969B1 (ko) 2002-07-11 2010-05-27 파나소닉 주식회사 화상 부호화 방법 및 화상 복호화 방법
US6795584B2 (en) 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
KR100992044B1 (ko) 2003-01-07 2010-11-05 톰슨 라이센싱 매크로블록 파티션의 혼합된 인터/인트라 비디오 코딩 방법
KR100604032B1 (ko) * 2003-01-08 2006-07-24 엘지전자 주식회사 복수 코덱을 지원하는 장치와 방법
JP4593556B2 (ja) 2003-01-09 2010-12-08 ザ リージェンツ オブ ザ ユニバーシティ オブ カリフォルニア Video encoding method and device
BR0317943A (pt) * 2003-01-10 2005-11-29 Thomson Licensing Sa Ocultação de erros espaciais baseada nos modos de intraprevisão transmitidos em um fluxo codificado
CA2513537C (en) 2003-02-21 2013-03-26 Matsushita Electric Industrial Co. Ltd. Picture coding method and picture decoding method
US20070053436A1 (en) 2003-05-06 2007-03-08 Koninklijke Philips Electronics N.V. Encoding video information using block based adaptive scan order
HU0301368A3 (en) 2003-05-20 2005-09-28 Amt Advanced Multimedia Techno Method and equipment for compressing motion picture data
EP1639827B1 (en) 2003-06-25 2010-04-14 Thomson Licensing Fast mode-decision encoding for interframes
US7830963B2 (en) 2003-07-18 2010-11-09 Microsoft Corporation Decoding jointly coded transform type and subblock pattern information
US7426308B2 (en) 2003-07-18 2008-09-16 Microsoft Corporation Intraframe and interframe interlace coding and decoding
US8085846B2 (en) 2004-08-24 2011-12-27 Thomson Licensing Method and apparatus for decoding hybrid intra-inter coded blocks
CN1843040A (zh) 2003-08-26 2006-10-04 三星电子株式会社 可扩缩视频编码和解码方法及可扩缩视频编码器和解码器
KR101089738B1 (ko) 2003-08-26 2011-12-07 톰슨 라이센싱 하이브리드 인트라-인터 코딩된 블록을 인코딩하기 위한 방법 및 장치
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
US7599438B2 (en) 2003-09-07 2009-10-06 Microsoft Corporation Motion vector block pattern coding and decoding
US7286710B2 (en) 2003-10-01 2007-10-23 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Coding of a syntax element contained in a pre-coded video signal
US7366462B2 (en) 2003-10-24 2008-04-29 Qualcomm Incorporated Method and apparatus for seamlessly switching reception between multimedia streams in a wireless communication system
US7362804B2 (en) * 2003-11-24 2008-04-22 Lsi Logic Corporation Graphical symbols for H.264 bitstream syntax elements
JP3910594B2 (ja) * 2004-02-20 2007-04-25 三菱電機株式会社 画像符号化装置
US8116374B2 (en) 2004-05-07 2012-02-14 Broadcom Corporation Method and system for generating a transform size syntax element for video decoding
US7894530B2 (en) * 2004-05-07 2011-02-22 Broadcom Corporation Method and system for dynamic selection of transform size in a video decoder based on signal content
US7852916B2 (en) 2004-06-27 2010-12-14 Apple Inc. Efficient use of storage in encoding and decoding video data streams
US7792188B2 (en) 2004-06-27 2010-09-07 Apple Inc. Selecting encoding types and predictive modes for encoding video data
KR100627329B1 (ko) 2004-08-19 2006-09-25 전자부품연구원 H.264 비디오 코덱을 위한 적응형 움직임 예측 및 모드결정 장치 및 그 방법
US8179962B2 (en) * 2004-09-08 2012-05-15 Panasonic Corporation Motion image encoding method and motion image decoding method
KR20060043115A (ko) 2004-10-26 2006-05-15 엘지전자 주식회사 베이스 레이어를 이용하는 영상신호의 엔코딩/디코딩 방법및 장치
JP4877449B2 (ja) 2004-11-04 2012-02-15 カシオ計算機株式会社 動画像符号化装置および動画像符号化処理プログラム
DE102004056446A1 (de) 2004-11-23 2006-06-29 Siemens Ag Method for transcoding and transcoding device
KR100679031B1 (ko) 2004-12-03 2007-02-05 삼성전자주식회사 다 계층 기반의 비디오 인코딩 방법, 디코딩 방법 및 상기방법을 이용한 장치
US7430238B2 (en) 2004-12-10 2008-09-30 Micronas Usa, Inc. Shared pipeline architecture for motion vector prediction and residual decoding
US20060133495A1 (en) 2004-12-22 2006-06-22 Yan Ye Temporal error concealment for video communications
EP1849303A2 (en) 2005-02-18 2007-10-31 THOMSON Licensing Method for deriving coding information for high resolution pictures from low resolution pictures
US20060203905A1 (en) 2005-03-14 2006-09-14 Shih-Chang Hsia Video coding system
CN1319383C (zh) 2005-04-07 2007-05-30 西安交通大学 高性能空域可伸缩的运动估计与运动矢量编码实现方法
US7949044B2 (en) 2005-04-12 2011-05-24 Lsi Corporation Method for coefficient bitdepth limitation, encoder and bitstream generation apparatus
JP2006304107A (ja) 2005-04-22 2006-11-02 Ntt Electornics Corp 符号化装置、及び、この符号化装置に適用されるプログラム
US8169953B2 (en) 2005-05-17 2012-05-01 Qualcomm Incorporated Method and apparatus for wireless multi-carrier communications
US7895250B2 (en) 2005-05-25 2011-02-22 Qualcomm Incorporated Fixed point integer division techniques for AC/DC prediction in video coding devices
JP4510701B2 (ja) * 2005-05-31 2010-07-28 株式会社Kddi研究所 動画像符号化装置
US8118676B2 (en) 2005-07-08 2012-02-21 Activevideo Networks, Inc. Video game system using pre-encoded macro-blocks
KR20070012201A (ko) 2005-07-21 2007-01-25 엘지전자 주식회사 영상 신호의 인코딩 및 디코딩 방법
US7912127B2 (en) 2005-08-05 2011-03-22 Lsi Corporation H.264 to VC-1 and VC-1 to H.264 transcoding
US7881384B2 (en) 2005-08-05 2011-02-01 Lsi Corporation Method and apparatus for H.264 to MPEG-2 video transcoding
EP2720468B1 (en) * 2005-09-26 2017-03-29 Mitsubishi Electric Corporation Moving image decoding method
KR100654601B1 (ko) 2005-10-06 2006-12-08 주식회사 휴맥스 통합 코덱 장치 및 방법
US8000539B2 (en) 2005-12-21 2011-08-16 Ntt Docomo, Inc. Geometrical image representation and compression
US8861585B2 (en) 2006-01-20 2014-10-14 Qualcomm Incorporated Method and apparatus for error resilience algorithms in wireless video communication
JP2007243427A (ja) 2006-03-07 2007-09-20 Nippon Hoso Kyokai <Nhk> 符号化装置及び復号化装置
US8848789B2 (en) 2006-03-27 2014-09-30 Qualcomm Incorporated Method and system for coding and decoding information associated with video compression
US8750387B2 (en) 2006-04-04 2014-06-10 Qualcomm Incorporated Adaptive encoder-assisted frame rate up conversion
US8494052B2 (en) 2006-04-07 2013-07-23 Microsoft Corporation Dynamic selection of motion estimation search ranges and extended motion vector ranges
US20070274396A1 (en) * 2006-05-26 2007-11-29 Ximin Zhang Complexity adaptive skip mode estimation for video encoding
KR100809298B1 (ko) 2006-06-22 2008-03-04 삼성전자주식회사 플래그 인코딩 방법, 플래그 디코딩 방법, 및 상기 방법을이용한 장치
US20080002770A1 (en) 2006-06-30 2008-01-03 Nokia Corporation Methods, apparatus, and a computer program product for providing a fast inter mode decision for video encoding in resource constrained devices
GB0619570D0 (en) 2006-10-04 2006-11-15 Univ Bristol Complexity scalable video transcoder and encoder
CN101175210B (zh) 2006-10-30 2010-08-11 中国科学院计算技术研究所 用于视频预测残差系数解码的熵解码方法及熵解码装置
US8923393B2 (en) 2006-11-02 2014-12-30 Qualcomm Incorporated Apparatus and method of reduced reference frame search in video encoding
US7573407B2 (en) 2006-11-14 2009-08-11 Qualcomm Incorporated Memory efficient adaptive block coding
CN101888555B (zh) * 2006-11-17 2013-04-03 Lg电子株式会社 用于解码/编码视频信号的方法及装置
CN101553988B (zh) 2006-12-14 2012-10-17 日本电气株式会社 视频编码方法、视频编码装置
US8804829B2 (en) 2006-12-20 2014-08-12 Microsoft Corporation Offline motion description for video generation
US8311120B2 (en) 2006-12-22 2012-11-13 Qualcomm Incorporated Coding mode selection using information of other coding modes
KR101356735B1 (ko) 2007-01-03 2014-02-03 삼성전자주식회사 전역 움직임 벡터를 사용해서 움직임 벡터를 추정하기 위한방법, 장치, 인코더, 디코더 및 복호화 방법
US8335261B2 (en) * 2007-01-08 2012-12-18 Qualcomm Incorporated Variable length coding techniques for coded block patterns
CN101222641B (zh) 2007-01-11 2011-08-24 华为技术有限公司 帧内预测编解码方法及其装置
JP4901772B2 (ja) 2007-02-09 2012-03-21 パナソニック株式会社 動画像符号化方法及び動画像符号化装置
EP3107292B1 (en) 2007-03-20 2018-08-15 Fujitsu Limited Video encoding method and apparatus, and video decoding apparatus
JPWO2008120577A1 (ja) 2007-03-29 2010-07-15 株式会社東芝 画像符号化及び復号化の方法及び装置
KR20090115176A (ko) 2007-04-16 2009-11-04 가부시끼가이샤 도시바 화상 부호화와 화상 복호화의 방법 및 장치
KR101305491B1 (ko) 2007-04-17 2013-09-17 (주)휴맥스 비트스트림 디코딩 장치 및 방법
CN100512442C (zh) 2007-04-20 2009-07-08 西安交通大学 一种自适应运动补偿时域滤波的方法
US8340183B2 (en) * 2007-05-04 2012-12-25 Qualcomm Incorporated Digital multimedia channel switching
US8428133B2 (en) 2007-06-15 2013-04-23 Qualcomm Incorporated Adaptive coding of video block prediction mode
US7991237B2 (en) 2007-06-28 2011-08-02 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method and image decoding method
US7885819B2 (en) 2007-06-29 2011-02-08 Microsoft Corporation Bitstream syntax for multi-process audio decoding
US7895347B2 (en) 2007-07-27 2011-02-22 Red Hat, Inc. Compact encoding of arbitrary length binary objects
WO2009022048A1 (en) 2007-08-16 2009-02-19 Nokia Corporation A method and apparatuses for encoding and decoding an image
BRPI0818444A2 (pt) 2007-10-12 2016-10-11 Qualcomm Inc codificação adaptativa de informação de cabeçalho de bloco de vídeo
US8938009B2 (en) 2007-10-12 2015-01-20 Qualcomm Incorporated Layered encoded bitstream structure
US20100208827A1 (en) 2007-10-16 2010-08-19 Thomson Licensing Methods and apparatus for video encoding and decoding geometerically partitioned super macroblocks
UY31437A1 (es) 2007-10-29 2009-05-29 MYCOPLASMA BOVIS VACCINE AND SAME USE METHODS
RU2010132652A (ru) 2008-03-07 2012-02-10 Кабусики Кайся Тосиба (Jp) Способ и устройство кодирования/декодирования видеосигнала
WO2009151246A2 (en) 2008-06-09 2009-12-17 Lg Electronics Inc. Transmitting/receiving system and method of processing broadcast signal in transmitting/receiving system
KR20090129926A (ko) 2008-06-13 2009-12-17 삼성전자주식회사 영상 부호화 방법 및 그 장치, 영상 복호화 방법 및 그 장치
PL2640076T3 (pl) * 2008-07-02 2015-02-27 Samsung Electronics Co Ltd The method of decoding the image
EP2150060A1 (en) 2008-07-28 2010-02-03 Alcatel, Lucent Method and arrangement for video encoding
WO2010018992A2 (en) 2008-08-12 2010-02-18 Lg Electronics Inc. Method of processing a video signal
US9479786B2 (en) 2008-09-26 2016-10-25 Dolby Laboratories Licensing Corporation Complexity allocation for video and image coding applications
US8619856B2 (en) 2008-10-03 2013-12-31 Qualcomm Incorporated Video coding with large macroblocks
US8483285B2 (en) 2008-10-03 2013-07-09 Qualcomm Incorporated Video coding using transforms bigger than 4×4 and 8×8
US8634456B2 (en) 2008-10-03 2014-01-21 Qualcomm Incorporated Video coding with large macroblocks
US8503527B2 (en) * 2008-10-03 2013-08-06 Qualcomm Incorporated Video coding with large macroblocks
US20100086031A1 (en) 2008-10-03 2010-04-08 Qualcomm Incorporated Video coding with large macroblocks
WO2010041857A2 (en) 2008-10-06 2010-04-15 Lg Electronics Inc. A method and an apparatus for decoding a video signal
US8265155B2 (en) 2009-01-05 2012-09-11 Electronics And Telecommunications Research Institute Method of block partition for H.264 inter prediction
KR101740039B1 (ko) 2009-06-26 2017-05-25 톰슨 라이센싱 적응형 기하학적 분할을 이용한 비디오 인코딩 및 디코딩 방법 및 장치
KR101474756B1 (ko) 2009-08-13 2014-12-19 삼성전자주식회사 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치
KR101452859B1 (ko) 2009-08-13 2014-10-23 삼성전자주식회사 움직임 벡터를 부호화 및 복호화하는 방법 및 장치
KR101487686B1 (ko) 2009-08-14 2015-01-30 삼성전자주식회사 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
KR101456498B1 (ko) 2009-08-14 2014-10-31 삼성전자주식회사 계층적 부호화 단위의 스캔 순서를 고려한 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
US8896612B2 (en) * 2010-11-16 2014-11-25 Ncomputing Inc. System and method for on-the-fly key color generation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008027192A2 (en) 2006-08-25 2008-03-06 Thomson Licensing Methods and apparatus for reduced resolution partitioning

Also Published As

Publication number Publication date
JP5944423B2 (ja) 2016-07-05
KR20110063855A (ko) 2011-06-14
CN102172021A (zh) 2011-08-31
US20130308701A1 (en) 2013-11-21
TWI392370B (zh) 2013-04-01
TW201028008A (en) 2010-07-16
EP2347591A2 (en) 2011-07-27
US8948258B2 (en) 2015-02-03
US20190158882A1 (en) 2019-05-23
US8503527B2 (en) 2013-08-06
US9930365B2 (en) 2018-03-27
CN103957406A (zh) 2014-07-30
US20170366825A1 (en) 2017-12-21
CN102172021B (zh) 2014-06-25
US20180176600A1 (en) 2018-06-21
JP2012504908A (ja) 2012-02-23
WO2010039728A2 (en) 2010-04-08
JP5551232B2 (ja) 2014-07-16
CN103957406B (zh) 2017-08-22
US20100086032A1 (en) 2010-04-08
EP2347591B1 (en) 2020-04-08
WO2010039728A3 (en) 2010-07-08
US10225581B2 (en) 2019-03-05
US20150139337A1 (en) 2015-05-21
JP2013085280A (ja) 2013-05-09
JP2014143706A (ja) 2014-08-07
US9788015B2 (en) 2017-10-10

Similar Documents

Publication Publication Date Title
KR101927387B1 (ko) 영상 부호화 방법 및 장치, 그리고 복호화 방법 및 장치
KR101868290B1 (ko) 영상 부호화/복호화 장치 및 방법
JP6271477B2 (ja) 変換係数の関数ベース走査順序を使用するビデオ符号化
US10390044B2 (en) Signaling selected directional transform for video coding
JP6543716B2 (ja) 適応型成分間残差予測
ES2779461T3 (es) Intrapredicción de vídeo mejorada que usa una combinación de predicción dependiente de la posición para codificación de vídeo
US10264280B2 (en) Enhanced intra-prediction mode signaling for video coding using neighboring mode
JP6042470B2 (ja) ビデオコーディングのための適応動き解像度
JP2017123665A (ja) イントラ予測を使用したビデオ符号化
JP2019525585A (ja) 四分木だけで区分化されないビデオコーディングにおける量子化情報のシグナリング
AU2016201602B2 (en) Unified design for picture partitioning schemes
KR101660133B1 (ko) 적응적 모션 벡터 해상도를 이용한 비디오 코딩
EP2904790B1 (en) Coded block flag (cbf) coding for 4:2:2 sample format in video coding
JP2015188237A (ja) ビデオコード化における量子化
EP2751999B1 (en) Intra prediction mode coding with directional partitions
AU2011336589B2 (en) Separately coding the position of a last significant coefficient of a video block in video coding
EP2647204B1 (en) Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
JP5951606B2 (ja) ビデオ符号化のためのインター予測モード及び参照ピクチャリストインデックスの符号化
EP2735149B1 (en) Adaptation parameter sets for video coding
US10200689B2 (en) Quantized pulse code modulation in video coding
US9641846B2 (en) Adaptive scanning of transform coefficients for video coding
JP5788520B2 (ja) Joint coding of syntax elements for video coding
JP5587508B2 (ja) ビデオコード化のためのイントラ平滑化フィルタ
JP5778298B2 (ja) ビデオコーディングのための結合された参照ピクチャリストの構成
CN102172021B (zh) 用大宏块进行视频译码

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: 20151230

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190104

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200103

Year of fee payment: 8