KR101375891B1 - 큰 매크로블록들을 이용한 비디오 코딩 - Google Patents

큰 매크로블록들을 이용한 비디오 코딩 Download PDF

Info

Publication number
KR101375891B1
KR101375891B1 KR1020137011532A KR20137011532A KR101375891B1 KR 101375891 B1 KR101375891 B1 KR 101375891B1 KR 1020137011532 A KR1020137011532 A KR 1020137011532A KR 20137011532 A KR20137011532 A KR 20137011532A KR 101375891 B1 KR101375891 B1 KR 101375891B1
Authority
KR
South Korea
Prior art keywords
mode
encoding
encoding mode
partitions
video
Prior art date
Application number
KR1020137011532A
Other languages
English (en)
Other versions
KR20130054461A (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
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=42060949&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR101375891(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20130054461A publication Critical patent/KR20130054461A/ko
Application granted granted Critical
Publication of KR101375891B1 publication Critical patent/KR101375891B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using 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/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/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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • 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/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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

종래의 비디오 인코딩 및 디코딩 표준들에 의해 규정된 매크로블록들보다 큰 매크로블록들을 이용하여 디지털 비디오 데이터를 인코딩 및 디코딩하는 기술들이 설명된다. 예를 들어, 이 기술들은 16×16 픽셀들보다 큰, 예를 들어, 64×64 픽셀들을 포함하는 매크로블록들을 이용하여 비디오 스트림을 인코딩 및 디코딩하는 것을 포함한다. 각각의 매크로블록은 2 개 이상의 파티션들로 파티셔닝될 수도 있고, 파티션들 중 2 개 이상은 상이한 모드들을 이용하여 인코딩될 수도 있다. 일 예에서, 장치는 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하고, 블록을 파티션들로 파티셔닝하고, 제 1 인코딩 모드를 이용하여 파티션들 중 하나를 인코딩하고, 제 1 인코딩 모드와는 상이한 제 2 인코딩 모드를 이용하여 파티션들 중 다른 파티션을 인코딩하며, 블록의 사이즈를 나타내고 파티션들 및 그 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 블록 타입 신택스 정보를 생성하도록 구성된 비디오 인코더를 포함한다.

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" 를 갖고 있는 미국 특허 출원들과 관련된다 (모두가 본 출원의 양수인에게 양도되고 여기에 다목적을 위해 완전히 참조에 의해 명백히 통합되는, Attorney Docket Numbers 090033U1, 090033U3, 090033U4 에 의해 일시적으로 참조된다).
기술 분야
본 개시물은 디지털 비디오 코딩에 관한 것으로, 더 상세하게는, 블록 기반 비디오 코딩에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전, 디지털 직접 브로드캐스트 시스템, 무선 브로드캐스트 시스템, 개인 휴대 정보 단말기 (PDA), 랩탑 컴퓨터 또는 데스크탑 컴퓨터, 디지털 카메라, 디지털 레코딩 디바이스, 비디오 게이밍 디바이스, 비디오 게임 콘솔, 셀룰러 또는 위성 무선 전화기 등을 포함하는, 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 디지털 비디오 정보를 보다 효율적으로 송신 및 수신하기 위해, MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, Part 10, AVC (Advanced Video Coding) 에 의해 정의된 표준들, 및 이러한 표준들의 확장들에서 설명된 것과 같은 비디오 압축 기술들을 구현한다.
비디오 압축 기술들은 비디오 시퀀스에 고유한 리던던시 (redundancy) 를 저감시키거나 제거하기 위해 공간 예측 (spatial prediction) 및/또는 시간 예측 (temporal prediction) 을 수행한다. 블록 기반 비디오 코딩을 위해, 비디오 프레임 또는 슬라이스는 매크로블록들로 파티셔닝될 수도 있다. 각각의 매크로블록이 더욱 파티셔닝될 수 있다. 인트라-코딩된 (I) 프레임 또는 슬라이스 내의 매크로블록들은 이웃 매크로블록들에 대하여 공간 예측을 이용하여 인코딩된다. 인터-코딩된 (P 또는 B) 프레임 또는 슬라이스 내의 매크로블록들은 동일한 프레임 또는 슬라이스 내의 이웃 매크로블록들에 대하여 공간 예측을 이용할 수도 있고 또는 다른 기준 프레임들에 대하여 시간 예측을 이용할 수도 있다.
일반적으로, 본 개시물은 큰 매크로블록들 (large macroblocks) 을 이용하여 디지털 비디오 데이터를 인코딩하는 기술들을 설명한다. 큰 매크로블록들은 기존의 비디오 인코딩 표준들에 의해 일반적으로 규정된 매크로블록들보다 크다. 대부분의 비디오 인코딩 표준들은 픽셀들의 16×16 어레이의 형태의 매크로블록의 이용을 규정한다. 본 개시물에 따르면, 인코더 및 디코더는 큰 매크로블록들을 이용할 수도 있으며, 큰 매크로블록들은 사이즈가 16×16 픽셀들보다 크다. 예로서, 큰 매크로블록은 32×32, 64×64, 또는 픽셀들의 더 큰 어레이를 가질 수도 있다.
비디오 코딩은 비디오 데이터의 압축을 지원하기 위해 공간 및/또는 시간 리던던시에 의존한다. 더 높은 공간 해상도 및/또는 더 높은 프레임 레이트로 생성된 비디오 프레임들은 더 많은 리던던시를 지원할 수도 있다. 큰 매크로블록들의 이용은, 본 개시물에서 설명한 바와 같이, 비디오 코딩 기술이 공간 해상도 및/또는 프레임 레이트가 증가함에 따라 생성된 더 큰 정도의 리던던시를 이용하는 것을 허용할 수도 있다. 본 개시물에 따르면, 비디오 코딩 기술들은 큰 매크로블록들의 코딩을 지원하기 위해 다양한 특징들을 이용할 수도 있다.
본 개시물에서 설명한 바와 같이, 큰 매크로블록 코딩 기술은 큰 매크로블록을 파티션들로 파티셔닝할 수도 있고, 선택된 파티션들에 대해, 상이한 파티션 사이즈들 및 상이한 코딩 모드들, 예를 들어, 상이한 공간 (I) 또는 시간 (P 또는 B) 모드들을 이용할 수도 있다. 다른 예로서, 코딩 기술은 큰 매크로블록 내에서 넌-제로 계수들을 갖는 코딩된 매크로블록들 및 파티션들을 효율적으로 식별하기 위해 계층적 코딩된 블록 패턴 (coded block pattern; CBP) 값들을 이용할 수도 있다. 추가 예로서, 코딩 기술은 큰 매크로블록과 작은 매크로블록을 이용하여 코딩함으로써 생성된 레이트-왜곡 메트릭들을 비교하여 보다 바람직한 결과들을 야기하는 매크로블록 사이즈를 선택할 수도 있다.
일 예에서, 본 개시물은 비디오 인코더로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 인코딩하는 단계, 그 블록의 사이즈를 나타내는 블록 타입 신택스 정보를 생성하는 단계, 및 인코딩된 블록에 대한 코딩된 블록 패턴 값을 생성하는 단계를 포함하는 방법을 제공하며, 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 나타낸다.
다른 예에서, 본 개시물은 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 인코딩하고, 그 블록의 사이즈를 나타내는 블록 타입 신택스 정보를 생성하며, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 생성하도록 구성된 비디오 인코더를 포함하는 장치를 제공하며, 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 나타낸다.
다른 예에서, 본 개시물은 비디오 인코딩 장치로 하여금, 비디오 인코더로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 인코딩하게 하고, 그 블록의 사이즈를 나타내는 블록 타입 신택스 정보를 생성하게 하며, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 생성하게 하는 명령들로 인코딩된 컴퓨터 판독가능 매체를 제공하며, 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 나타낸다.
추가적인 예에서, 본 개시물은 비디오 디코더로, 사이즈가 16×16 픽셀들보다 큰 인코딩된 비디오 블록을 수신하는 단계, 인코딩된 블록의 사이즈를 나타내는 블록 타입 신택스 정보를 수신하는 단계, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 수신하는 단계로서, 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 나타내는, 상기 코딩된 블록 패턴 값을 수신하는 단계, 및 블록 타입 신택스 정보 및 인코딩된 블록에 대한 코딩된 블록 패턴 값에 기초하여 인코딩된 블록을 디코딩하는 단계를 포함하는 방법을 제공한다.
*추가 예에서, 본 개시물은 사이즈가 16×16 픽셀들보다 큰 인코딩된 비디오 블록을 수신하고, 인코딩된 블록의 사이즈를 나타내는 블록 타입 신택스 정보를 수신하고, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 수신하며, 블록 타입 신택스 정보 및 인코딩된 블록에 대한 코딩된 블록 패턴 값에 기초하여 인코딩된 블록을 디코딩하도록 구성된 비디오 디코더를 포함하는 장치를 제공하며, 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 나타낸다.
다른 예에서, 본 개시물은 비디오 디코더로 하여금, 사이즈가 16×16 픽셀들보다 큰 인코딩된 비디오 블록을 수신하게 하고, 인코딩된 블록의 사이즈를 나타내는 블록 타입 신택스 정보를 수신하게 하고, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 수신하게 하며, 블록 타입 신택스 정보 및 인코딩된 블록에 대한 코딩된 블록 패턴 값에 기초하여 인코딩된 블록을 디코딩하게 하는 명령들을 포함하는 컴퓨터 판독가능 매체를 제공하며, 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 나타낸다.
다른 예에서, 본 개시물은 비디오 인코더로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하는 단계, 그 블록을 파티션들로 파티셔닝하는 단계, 제 1 인코딩 모드를 이용하여 파티션들 중 하나의 파티션을 인코딩하는 단계, 제 1 인코딩 모드와는 상이한 제 2 인코딩 모드를 이용하여 파티션들 중 다른 파티션을 인코딩하는 단계, 및 블록의 사이즈를 나타내고 파티션들 및 그 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 블록 타입 신택스 정보를 생성하는 단계를 포함하는 방법을 제공한다.
추가적인 예에서, 본 개시물은 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하고, 그 블록을 파티션들로 파티셔닝하고, 제 1 인코딩 모드를 이용하여 파티션들 중 하나의 파티션을 인코딩하고, 제 1 인코딩 모드와는 상이한 제 2 인코딩 모드를 이용하여 파티션들 중 다른 파티션을 인코딩하며, 블록의 사이즈를 나타내고 파티션들 및 그 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 블록 타입 신택스 정보를 생성하도록 구성된 비디오 인코더를 포함하는 장치를 제공한다.
다른 예에서, 본 개시물은 비디오 인코더로 하여금, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하게 하고, 그 블록을 파티션들로 파티셔닝하게 하고, 제 1 인코딩 모드를 이용하여 파티션들 중 하나의 파티션을 인코딩하게 하고, 제 1 인코딩 모드와는 상이한 제 2 인코딩 모드를 이용하여 파티션들 중 다른 파티션을 인코딩하게 하며, 블록의 사이즈를 나타내고 파티션들 및 그 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 블록 타입 신택스 정보를 생성하게 하는 명령들로 인코딩된 컴퓨터 판독가능 매체를 제공한다.
추가 예에서, 본 개시물은 비디오 디코더로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하는 단계로서, 그 블록은 파티션들로 파티셔닝되고, 그 파티션들 중 하나의 파티션은 제 1 인코딩 모드로 인코딩되고, 파티션들 중 다른 파티션은 제 1 인코딩 모드와는 상이한 제 2 인코딩 모드로 인코딩되는, 상기 비디오 블록을 수신하는 단계, 블록의 사이즈를 나타내고 파티션들 및 그 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 블록 타입 신택스 정보를 수신하는 단계, 및 블록 타입 신택스 정보에 기초하여 비디오 블록을 디코딩하는 단계를 포함하는 방법을 제공한다.
다른 예에서, 본 개시물은 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하고 (여기서, 블록은 파티션들로 파티셔닝되고, 파티션들 중 하나의 파티션은 제 1 인코딩 모드로 인코딩되며, 파티션들 중 다른 파티션은 제 1 인코딩 모드와는 상이한 제 2 인코딩 모드로 인코딩된다), 블록의 사이즈를 나타내고 파티션들 및 그 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 블록 타입 신택스 정보를 수신하며, 블록 타입 신택스 정보에 기초하여 비디오 블록을 디코딩하도록 구성된 비디오 디코더를 포함하는 장치를 제공한다.
추가적인 예에서, 본 개시물은 비디오 디코더로 하여금, 비디오 디코더로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하게 하고 (여기서 블록은 파티션들로 파티셔닝되고, 파티션들 중 하나의 파티션은 제 1 인코딩 모드로 인코딩되며, 파티션들 중 다른 파티션은 제 1 인코딩 모드와는 상이한 제 2 인코딩 모드로 인코딩된다), 블록의 사이즈를 나타내고 파티션들 및 그 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 블록 타입 신택스 정보를 수신하게 하며, 블록 타입 신택스 정보에 기초하여 비디오 블록을 디코딩하게 하는 명령들로 인코딩된 컴퓨터 판독가능 매체를 제공한다.
다른 예에서, 본 개시물은 디지털 비디오 인코더로, 비디오 코딩 유닛을 수신하는 단계, 사이즈가 16×16 픽셀들인 제 1 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하기 위한 제 1 레이트-왜곡 메트릭을 결정하는 단계, 사이즈가 16×16 픽셀들보다 큰 제 2 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하기 위한 제 2 레이트-왜곡 메트릭을 결정하는 단계, 제 1 레이트-왜곡 메트릭이 제 2 레이트-왜곡 메트릭보다 작은 경우 제 1 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하는 단계, 및 제 2 레이트-왜곡 메트릭이 제 1 레이트-왜곡 메트릭보다 작은 경우 제 2 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하는 단계를 포함하는 방법을 제공한다.
추가적인 예에서, 본 개시물은 비디오 코딩 유닛을 수신하고, 사이즈가 16×16 픽셀들인 제 1 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하기 위한 제 1 레이트-왜곡 메트릭을 결정하고, 사이즈가 16×16 픽셀들보다 큰 제 2 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하기 위한 제 2 레이트-왜곡 메트릭을 결정하고, 제 1 레이트-왜곡 메트릭이 제 2 레이트-왜곡 메트릭보다 작은 경우 제 1 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하며, 제 2 레이트-왜곡 메트릭이 제 1 레이트-왜곡 메트릭보다 작은 경우 제 2 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하도록 구성된 비디오 인코더를 포함하는 장치를 제공한다.
다른 예에서, 본 개시물은 비디오 인코더로 하여금, 비디오 코딩 유닛을 수신하게 하고, 사이즈가 16×16 픽셀들인 제 1 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하기 위한 제 1 레이트-왜곡 메트릭을 결정하게 하고, 사이즈가 16×16 픽셀들보다 큰 제 2 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하기 위한 제 2 레이트-왜곡 메트릭을 결정하게 하고, 제 1 레이트-왜곡 메트릭이 제 2 레이트-왜곡 메트릭보다 작은 경우 제 1 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하게 하며, 제 2 레이트-왜곡 메트릭이 제 1 레이트-왜곡 메트릭보다 작은 경우 제 2 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하게 하는 명령들로 인코딩된 컴퓨터 판독가능 매체를 제공한다.
다른 예에서, 본 개시물은 비디오 인코더로, 복수의 비디오 블록들을 포함하는 코딩된 유닛을 인코딩하는 단계로서, 복수의 비디오 블록들 중 적어도 하나의 비디오 블록은 사이즈가 16×16 픽셀들보다 큰, 상기 코딩된 유닛을 인코딩하는 단계, 및 최대 사이즈 값을 포함하는 코딩된 유닛에 대한 신택스 정보를 생성하는 단계로서, 최대 사이즈 값은 코딩된 유닛 내의 복수의 비디오 블록들 중 가장 큰 비디오 블록의 사이즈를 나타내는, 상기 신택스 정보를 생성하는 단계를 포함하는 방법을 제공한다.
다른 예에서, 본 개시물은 복수의 비디오 블록들을 포함하는 코딩된 유닛을 인코딩하고 (여기서 복수의 비디오 블록들 중 적어도 하나의 비디오 블록은 사이즈가 16×16 픽셀들보다 크다), 최대 사이즈 값을 포함하는 코딩된 유닛에 대한 신택스 정보를 생성 (여기서 최대 사이즈 값은 코딩된 유닛 내의 복수의 비디오 블록들 중 가장 큰 비디오 블록의 사이즈를 나타낸다) 하도록 구성된 비디오 인코더를 포함하는 장치를 제공한다.
다른 예에서, 본 개시물은 복수의 비디오 블록들을 포함하는 코딩된 유닛을 인코딩하는 수단으로서, 복수의 비디오 블록들 중 적어도 하나의 비디오 블록은 사이즈가 16×16 픽셀들보다 큰, 상기 코딩된 유닛을 인코딩하는 수단, 및 최대 사이즈 값을 포함하는 코딩된 유닛에 대한 신택스 정보를 생성하는 수단으로서, 최대 사이즈 값은 코딩된 유닛 내의 복수의 비디오 블록들 중 가장 큰 비디오 블록의 사이즈를 나타내는, 상기 신택스 정보를 생성하는 수단을 포함하는 장치를 제공한다.
다른 예에서, 본 개시물은 프로그램가능한 프로세서로 하여금, 복수의 비디오 블록들을 포함하는 코딩된 유닛을 인코딩하게 하고 (여기서 복수의 비디오 블록들 중 적어도 하나의 비디오 블록은 사이즈가 16×16 픽셀들보다 크다), 최대 사이즈 값을 포함하는 코딩된 유닛에 대한 신택스 정보를 생성 (여기서 최대 사이즈 값은 코딩된 유닛 내의 복수의 비디오 블록들 중 가장 큰 비디오 블록의 사이즈를 나타낸다) 하게 하는 명령들로 인코딩된 컴퓨터 판독가능 저장 매체를 제공한다.
다른 예에서, 본 개시물은 비디오 디코더로, 복수의 비디오 블록들을 포함하는 코딩된 유닛을 수신하는 단계로서, 복수의 비디오 블록들 중 적어도 하나의 비디오 블록은 사이즈가 16×16 픽셀들보다 큰, 상기 코딩된 유닛을 수신하는 단계, 최대 사이즈 값을 포함하는 코딩된 유닛에 대한 신택스 정보를 생성하는 단계로서, 최대 사이즈 값은 코딩된 유닛 내의 복수의 비디오 블록들 중 가장 큰 비디오 블록의 사이즈를 나타내는, 상기 신택스 정보를 생성하는 단계, 최대 사이즈 값에 따라 블록 타입 신택스 디코더를 선택하는 단계, 및 선택된 블록 타입 신택스 디코더를 이용하여 코딩된 유닛 내의 복수의 비디오 블록들 각각을 디코딩하는 단계를 포함하는 방법을 제공한다.
다른 예에서, 본 개시물은 복수의 비디오 블록들을 포함하는 코딩된 유닛을 수신하고 (여기서 복수의 비디오 블록들 중 적어도 하나의 비디오 블록은 사이즈가 16×16 픽셀들보다 크다), 최대 사이즈 값을 포함하는 코딩된 유닛에 대한 신택스 정보를 수신하고 (여기서 최대 사이즈 값은 코딩된 유닛 내의 복수의 비디오 블록들 중 가장 큰 비디오 블록의 사이즈를 나타낸다), 최대 사이즈 값에 따라 블록 타입 신택스 디코더를 선택하며, 선택된 블록 타입 신택스 디코더를 이용하여 코딩된 유닛 내의 복수의 비디오 블록들 각각을 디코딩하도록 구성된 비디오 디코더를 포함하는 장치를 제공한다.
다른 예에서, 본 개시물은 복수의 비디오 블록들을 포함하는 코딩된 유닛을 수신하는 수단으로서, 복수의 비디오 블록들 중 적어도 하나의 비디오 블록은 사이즈가 16×16 픽셀들보다 큰, 상기 코딩된 유닛을 수신하는 수단, 최대 사이즈 값을 포함하는 코딩된 유닛에 대한 신택스 정보를 수신하는 수단으로서, 최대 사이즈 값은 코딩된 유닛 내의 복수의 비디오 블록들 중 가장 큰 비디오 블록의 사이즈를 나타내는, 상기 신택스 정보를 수신하는 수단, 최대 사이즈 값에 따라 블록 타입 신택스 디코더를 선택하는 수단, 및 선택된 블록 타입 신택스 디코더를 이용하여 코딩된 유닛 내의 복수의 비디오 블록들 각각을 디코딩하는 수단을 제공한다.
다른 예에서, 본 개시물은 프로그램가능한 프로세서로 하여금, 복수의 비디오 블록들을 포함하는 코딩된 유닛을 수신하게 하고 (여기서 복수의 비디오 블록들 중 적어도 하나의 비디오 블록은 사이즈가 16×16 픽셀들보다 크다), 최대 사이즈 값을 포함하는 코딩된 유닛에 대한 신택스 정보를 수신하게 하고 (여기서 최대 사이즈 값은 코딩된 유닛 내의 복수의 비디오 블록들 중 가장 큰 비디오 블록의 사이즈를 나타낸다), 최대 사이즈 값에 따라 블록 타입 신택스 디코더를 선택하게 하며, 선택된 블록 타입 신택스 디코더를 이용하여 코딩된 유닛 내의 복수의 비디오 블록들 각각을 디코딩하게 하는 명령들로 인코딩된 컴퓨터 판독가능 저장 매체를 제공한다.
하나 이상의 예들의 상세가 이하의 상세한 설명 및 첨부 도면에서 기술된다. 다른 특징들, 목적들 및 이점들은 상세한 설명 및 도면들로부터, 및 특허청구범위로부터 명백해질 것이다.
도 1 은 큰 매크로블록들을 이용하여 디지털 비디오 데이터를 인코딩 및 디코딩하는 비디오 인코딩 및 디코딩 시스템의 일 예를 예시한 블록도이다.
도 2 는 큰 매크로블록들을 코딩하기 위한 기술들을 구현하는 비디오 인코더의 일 예를 예시한 블록도이다.
도 3 은 큰 매크로블록들을 코딩하기 위한 기술들을 구현하는 비디오 디코더의 일 예를 예시한 블록도이다.
도 4a 는 큰 매크로블록의 다양한 레벨들 사이에서 파티셔닝하는 것을 예시한 개념도이다.
도 4b 는 상이한 코딩 모드들의 큰 매크로블록의 상이한 파티션들에의 할당을 예시한 개념도이다.
도 5 는 큰 매크로블록의 다양한 레벨들의 계층적 뷰를 예시한 개념도이다.
도 6 은 64×64 픽셀의 큰 매크로블록의 코딩된 블록 패턴 (CBP) 값을 설정하는 방법 예를 예시한 흐름도이다.
도 7 은 64×64 픽셀의 큰 매크로블록의 32×32 픽셀 파티션의 CBP 값을 설정하는 방법 예를 예시한 흐름도이다.
도 8 은 64×64 픽셀의 큰 매크로블록의 32×32 픽셀 파티션의 16×16 픽셀 파티션의 CBP 값을 설정하는 방법 예를 예시한 흐름도이다.
도 9 는 2-비트 LUMA16×8_CBP 값을 결정하는 방법 예를 예시한 흐름도이다.
도 10 은 64×64 픽셀의 큰 매크로블록의 배열 예를 예시한 블록도이다.
도 11 은 N×N 픽셀의 큰 비디오 블록에 대한 최적의 파티셔닝 및 인코딩 방법들을 계산하는 방법 예를 예시한 흐름도이다.
도 12 는 다양한 파티션들 및 각각의 파티션에 대한 선택된 인코딩 방법들을 가진 64×64 픽셀 매크로블록의 일 예를 예시한 블록도이다.
도 13 은 비디오 시퀀스의 프레임을 인코딩하기 위한 매크로블록의 최적의 사이즈를 결정하는 방법 예를 예시한 흐름도이다.
도 14 는 큰 매크로블록들을 이용하여 디지털 비디오 데이터를 코딩하는 비디오 인코더/디코더 (CODEC) 를 포함하는 무선 통신 디바이스의 일 예를 예시한 블록도이다.
도 15 는 큰 매크로블록에 대한 계층적 CBP 표현의 어레이 표현의 일 예를 예시한 블록도이다.
도 16 은 도 15 의 계층적 CBP 표현에 대응하는 트리 구조의 일 예를 예시한 블록도이다.
도 17 은 코딩된 유닛의 비디오 블록들에 대한 블록 기반 신택스 인코더들 및 디코더들을 나타내고 선택하기 위해 코딩된 유닛의 신택스 정보를 이용하는 방법 예를 예시한 흐름도이다.
본 개시물은 큰 매크로블록들을 이용하여 디지털 비디오 데이터를 인코딩 및 디코딩하는 기술들을 설명한다. 큰 매크로블록들은 기존의 비디오 인코딩 표준들에 의해 일반적으로 규정된 매크로블록들보다 크다. 대부분의 비디오 인코딩 표준들은 픽셀들의 16×16 어레이의 형태의 매크로블록의 이용을 규정한다. 본 개시물에 따르면, 인코더 및/또는 디코더는 큰 매크로블록들을 이용할 수도 있으며, 큰 매크로블록들은 사이즈가 16×16 픽셀들보다 크다. 예로서, 큰 매크로블록은 32×32, 64×64, 또는 가능하다면 픽셀들의 더 큰 어레이를 가질 수도 있다.
일반적으로, 매크로블록은, 본 명세서에서 그 용어가 사용되는 한은, N×N 픽셀들 (여기서 N 은 포지티브 정수 값이다) 로서 표현되는 정의된 사이즈를 포함하는 픽셀 어레이에 대한 데이터 구조를 지칭할 수도 있다. 매크로블록은 이하 더 상세하게 설명되는 바와 같이, 각각이 (N/2)×(N/2) 픽셀들의 어레이를 포함하는 4 개의 루미넌스 (luminance) 블록들, 각각이 N×N 픽셀들의 어레이를 포함하는 2 개의 크로미넌스 (chrominance) 블록들, 및 매크로블록 타입 정보 및 코딩된 블록 패턴 (CBP) 정보를 포함하는 헤더를 정의할 수도 있다.
종래의 비디오 코딩 표준들은 보통 정의된 매크로블록 사이즈가 픽셀들의 16×16 어레이라는 것을 규정한다. 본 개시물에서 설명된 다양한 기술들에 따르면, 매크로블록들은 픽셀들의 N×N 어레이들 (여기서 N 은 16 보다 클 수도 있다) 을 포함할 수도 있다. 마찬가지로, 종래의 비디오 코딩 표준들은 인터-인코딩된 매크로블록이 통상적으로 단일의 모션 벡터를 할당받는다는 것을 규정한다. 본 개시물에서 설명된 다양한 기술들에 따르면, 복수의 모션 벡터들이 이하 더 상세하게 설명되는 바와 같이 N×N 매크로블록의 인터-인코딩된 파티션들에 대해 할당될 수도 있다. "큰 매크로블록들" 또는 유사한 어구들에 대한 참조는 일반적으로 16×16 보다 큰 픽셀들의 어레이들을 가진 매크로블록들을 지칭한다.
일부 경우에, 큰 매크로블록들은 이미지 품질을 유지하면서 또는 가능하다면 개선하면서 코딩 효율의 개선 및/또는 데이터 송신 오버헤드의 저감을 지원할 수도 있다. 예를 들어, 큰 매크로블록들의 이용은 비디오 인코더 및/또는 디코더가 증가된 공간 해상도 (예를 들어, 프레임당 1280×720 또는 1920×1080 픽셀들) 및/또는 증가된 프레임 레이트 (예를 들어, 초당 30 또는 60 프레임들) 로 생성된 비디오 데이터에 의해 제공되는 증가된 리던던시를 이용하는 것을 허용할 수도 있다.
예시로서, 프레임당 1280×720 픽셀들의 공간 해상도 및 초당 60 프레임들의 프레임 레이트를 가진 디지털 비디오 시퀀스는 프레임당 176×144 픽셀들의 공간 해상도 및 초당 15 프레임들의 프레임 레이트를 가진 디지털 비디오 시퀀스보다 공간적으로 36 배 더 크고 시간적으로 4 배 더 빠르다. 증가된 매크로블록 사이즈로 인해, 비디오 인코더 및/또는 디코더는 비디오 데이터의 압축을 지원하기 위해 증가된 공간 및/또는 시간 리던던시를 더 잘 활용할 수 있다.
또한, 큰 매크로블록들을 이용함으로써, 더 적은 수의 블록들이 소정의 프레임 또는 슬라이스에 대해 인코딩되어 송신될 필요가 있는 오버헤드 정보의 양이 저감될 수도 있다. 즉, 더 큰 매크로블록들은 프레임 또는 슬라이스당 코딩되는 전체 매크로블록들의 수의 저감을 허용할 수도 있다. 프레임의 공간 해상도가 예를 들어 4 배만큼 증가된다면, 프레임 내의 픽셀들에 대해 16×16 매크로블록들보다 4 배 많은 매크로블록들이 요구될 것이다. 이 예에서는, 64×64 매크로블록들로, 증가된 공간 해상도를 다루기 위해 필요한 매크로블록들의 수가 저감된다. 예를 들어, 프레임 또는 슬라이스당 저감된 매크로블록들의 수로, 신택스 정보, 모션 벡터 데이터 등과 같은 코딩 정보의 누적량이 저감될 수 있다.
본 개시물에서, 매크로블록들의 사이즈는 일반적으로 매크로블록에 포함되는 픽셀들의 수, 예를 들어, 64×64, 32×32, 16×16 등을 지칭한다. 따라서, 큰 매크로블록 (예를 들어, 64×64 또는 32×32) 은 그 매크로블록이 16×16 매크로블록보다 더 큰 수의 픽셀들을 포함한다는 의미에서 클 수도 있다. 그러나, 큰 매크로블록의 수직 및 수평 차원들에 의해 정의되는 공간 영역, 즉 비디오 프레임의 수직 및 수평 차원들에 의해 정의되는 영역의 단편 (fraction) 은 종래의 16×16 매크로블록의 영역보다 클 수도 있고 또는 크지 않을 수도 있다. 일부 예에서, 큰 매크로블록의 영역은 종래의 16×16 매크로블록과 동일하거나 유사할 수도 있다. 그러나, 큰 매크로블록은 그 매크로블록 내의 픽셀들의 더 높은 수 및 더 높은 공간 밀도에 의해 특징지어진 더 높은 공간 해상도를 갖는다.
매크로블록의 사이즈는 프레임 내의 픽셀들의 수, 즉 프레임 내의 공간 해상도에 적어도 부분적으로 기초하여 구성될 수도 있다. 프레임이 더 높은 픽셀들의 수를 갖는다면, 큰 매크로블록은 더 높은 픽셀들의 수를 갖도록 구성될 수 있다. 예시로서, 비디오 인코더는 초당 30 프레임들에서 디스플레이된 1280×720 픽셀 프레임에 대해 32×32 픽셀 매크로블록을 이용하도록 구성될 수도 있다. 다른 예시로서, 비디오 인코더는 초당 60 프레임들에서 디스플레이된 1280×720 픽셀 프레임에 대해 64×64 픽셀 매크로블록을 이용하도록 구성될 수도 있다.
인코더에 의해 인코딩된 각각의 매크로블록은 매크로블록의 하나 이상의 특성들을 기술하는 데이터를 요구할 수도 있다. 그 데이터는 예를 들어 매크로블록의 사이즈, 매크로블록이 파티셔닝되는 방식, 및 매크로블록 및/또는 그의 파티션들에 적용된 코딩 모드 (공간 또는 시간) 를 나타내는 매크로블록 타입 데이터를 나타낼 수도 있다. 또한, 그 데이터는 매크로블록 및/또는 그의 파티션들에 대한 모션 벡터 정보를 나타내는 다른 신택스 엘리먼트들과 함께 모션 벡터 차이 (mvd) 데이터를 포함할 수도 있다. 또한, 그 데이터는 예측 후의 잔류 정보를 나타내는 다른 신택스 엘리먼트들과 함께 코딩된 블록 패턴 (CBP) 값을 포함할 수도 있다. 매크로블록 타입 데이터는 큰 매크로블록에 대한 단일의 매크로블록 헤더에서 제공될 수도 있다.
상기 언급한 바와 같이, 큰 매크로블록을 이용함으로써, 인코더는 프레임 또는 슬라이스당 매크로블록들의 수를 저감시켜, 각각의 프레임 또는 슬라이스를 위해 송신될 필요가 있는 네트 (net) 오버헤드의 양을 저감시킬 수도 있다. 또한, 큰 매크로블록을 이용함으로써, 매크로블록의 총 수는 특정 프레임 또는 슬라이스에 대해 감소할 수도 있으며, 이는 사용자에게 디스플레이되는 비디오 내의 블록화 아티팩트 (blocky artifact) 를 저감시킬 수도 있다.
본 개시물에서 설명되는 비디오 코딩 기술들은 큰 매크로블록들의 코딩을 지원하기 위해 하나 이상의 특징들을 이용할 수도 있다. 예를 들어, 큰 매크로블록은 더 작은 파티션들로 파티셔닝될 수도 있다. 상이한 코딩 모드들, 예를 들어, 상이한 공간 (I) 또는 시간 (P 또는 B) 코딩 모드들은 큰 매크로블록 내의 선택된 파티션들에 적용될 수도 있다. 또한, 계층적 코딩된 블록 패턴 (CBP) 값들은 잔류 데이터를 나타내는 넌-제로 변환 계수들을 갖는 코딩된 매크로블록들 및 파티션들을 효율적으로 식별하기 위해 이용될 수 있다. 또한, 큰 매크로블록 사이즈 및 작은 매크로블록 사이즈를 이용하여 코딩하기 위해 레이트-왜곡 메트릭들을 비교하여 바람직한 결과들을 야기하는 매크로블록 사이즈를 선택할 수도 있다. 더욱이, 가변 사이즈의 매크로블록들을 포함하는 코딩된 유닛 (예를 들어, 프레임, 슬라이스, 시퀀스 또는 픽처들의 그룹) 은 코딩된 유닛 내의 가장 큰 매크로블록의 사이즈를 나타내는 신택스 엘리먼트를 포함할 수도 있다. 이하 더 상세하게 설명되는 바와 같이, 큰 매크로블록들은 표준 16×16 픽셀 블록들과는 상이한 블록 레벨 신택스를 포함한다. 따라서, 코딩된 유닛 내의 가장 큰 매크로블록의 사이즈를 나타냄으로써, 인코더는 디코더 (블록 레벨 신택스 디코더) 에 코딩된 유닛의 매크로블록들에 적용하라는 신호를 보낼 수도 있다.
큰 매크로블록 내의 상이한 파티션들에 대한 상이한 코딩 모드들의 이용은 큰 매크로블록들의 혼합된 모드 코딩으로 지칭될 수도 있다. 모든 파티션들이 동일한 인트라-코딩 모드 또는 인터-코딩 모드를 갖도록 큰 매크로블록을 균일하게 코딩하는 대신에, 큰 매크로블록은 일부 파티션들이 상이한 코딩 모드들, 이를 테면 상이한 인트라-코딩 모드들 (예를 들어, I_16×16, I_8×8, I_4×4) 또는 인트라-코딩 및 인터-코딩 모드들을 갖도록 코딩될 수도 있다.
큰 매크로블록이 예를 들어, 2 개 이상의 파티션들로 분할된다면, 적어도 하나의 파티션은 제 1 모드로 코딩될 수도 있고 다른 파티션은 제 1 모드와는 상이한 제 2 모드로 코딩될 수도 있다. 일부 경우에, 제 1 모드는 제 1 I 모드일 수도 있고 제 2 모드는 제 1 I 모드와는 상이한 제 2 I 모드일 수도 있다. 다른 경우에, 제 1 모드는 I 모드일 수도 있고 제 2 모드는 P 모드 또는 B 모드일 수도 있다. 따라서, 일부 예에서, 큰 매크로블록은 하나 이상의 시간적으로 (P 또는 B) 코딩된 파티션들 및 하나 이상의 공간적으로 (I) 코딩된 파티션들을 포함할 수도 있고, 또는 상이한 I 모드들로 하나 이상의 공간적으로 코딩된 파티션들을 포함할 수도 있다.
하나 이상의 계층적 코딩된 블록 패턴 (CBP) 값들은 큰 매크로블록 내의 임의의 파티션들이 적어도 하나의 넌-제로 변환 계수를 갖는지 여부, 및 만일 그렇다면, 어느 파티션들인지를 효율적으로 기술하는데 이용될 수도 있다. 변환 계수들은 큰 매크로블록에 대한 잔류 데이터를 인코딩한다. 큰 매크로블록 레벨 CBP 비트는 큰 매크로블록 내의 임의의 파티션들이 넌-제로, 양자화된 계수를 포함하는지 여부를 나타낸다. 그렇지 않다면, 전체 큰 매크로블록이 어떠한 넌-제로 계수들도 갖지 않는 것으로 알려져 있기 때문에 파티션들 중 임의의 파티션들이 넌-제로 계수를 갖는지 여부를 고려할 필요가 없다. 이 경우에, 예측 매크로블록이 잔류 데이터 없이 매크로블록을 디코딩하는데 이용될 수 있다.
대안으로, 큰 매크로블록 내의 적어도 하나의 파티션이 넌-제로 계수를 갖는다는 것을 매크로블록 레벨 CBP 값이 나타낸다면, 파티션 레벨 CBP 값들은 파티션들 중 어느 파티션이 적어도 하나의 넌-제로 계수를 포함하는지를 식별하기 위해 분석될 수 있다. 그 후 디코더는 적어도 하나의 넌-제로 계수를 갖는 파티션들에 대해 적절한 잔류 데이터를 검색하고, 잔류 데이터 및 예측 블록 데이터를 이용하여 파티션들을 디코딩할 수도 있다. 일부 경우에, 하나 이상의 파티션들은 넌-제로 계수들을 가질 수도 있으며, 따라서 적절한 표시를 가진 파티션 레벨 CBP 값들을 포함할 수도 있다. 큰 매크로블록과 파티션들 중 적어도 일부 파티션 양자는 16×16 픽셀들보다 클 수도 있다.
바람직한 레이트-왜곡 메트릭들을 산출하는 매크로블록 사이즈들을 선택하기 위해, 레이트-왜곡 메트릭들은 큰 매크로블록들 (예를 들어, 32×32 또는 64×64) 및 작은 매크로블록들 (예를 들어, 16×16) 양자에 대해 분석될 수도 있다. 예를 들어, 인코더는 프레임 또는 슬라이스와 같은 코딩된 유닛에 대한 16×16 매크로블록들, 32×32 매크로블록들, 및 64×64 매크로블록들 간의 레이트-왜곡 메트릭들을 비교할 수도 있다. 인코더는 그 후 최상의 레이트-왜곡을 초래하는 매크로블록 사이즈를 선택하고, 선택된 매크로블록 사이즈, 즉 최상의 레이트-왜곡을 가진 매크로블록 사이즈를 이용하여 코딩된 유닛을 인코딩할 수도 있다.
상기 선택은 3 개 이상의 패스들, 예를 들어, 16×16 픽셀 매크로블록들을 이용한 제 1 패스, 32×32 픽셀 매크로블록들을 이용한 제 2 패스, 및 64×64 픽셀 매크로블록들을 이용한 제 3 패스에서 프레임 또는 슬라이스를 인코딩하고 각각의 패스에 대한 레이트-왜곡 메트릭들을 비교하는 것에 기초할 수도 있다. 이런 식으로, 인코더는 매크로블록 사이즈를 변화시키고 슬라이스 또는 프레임과 같은 소정의 코딩 유닛에 대한 최상 또는 최적의 레이트-왜곡을 초래하는 매크로블록 사이즈를 선택함으로써 레이트-왜곡을 최적화할 수도 있다. 디코더는 또한 코딩된 유닛에서 이용되는 매크로블록들의 사이즈를 식별하는, 예를 들어 프레임 헤더 또는 슬라이스 헤더의 일부로서 코딩된 유닛에 대한 신택스 정보를 송신할 수도 있다. 이하 더 상세하게 설명되는 바와 같이, 코딩된 유닛에 대한 신택스 정보는 코딩된 유닛에서 이용되는 매크로블록들의 최대 사이즈를 나타내는 최대 사이즈 표시자를 포함할 수도 있다. 이런 식으로, 인코더는 코딩된 유닛의 매크로블록들에 대해 어떤 신택스가 예상되는지에 관해 디코더에 통지할 수도 있다. 매크로블록들의 최대 사이즈가 16×16 픽셀들을 포함하는 경우에, 디코더는 표준 H.264 신택스를 예상하고 H.264 특정 신택스에 따라 매크로블록들을 파싱 (parse) 할 수도 있다. 그러나, 매크로블록들의 최대 사이즈가 16×16 보다 큰 경우에, 예를 들어, 64×64 픽셀들을 포함하는 경우에, 디코더는 본 개시물에 의해 설명한 바와 같이, 더 큰 매크로블록들의 프로세싱에 관한 변형된 및/또는 추가적인 신택스 엘리먼트들을 예상하고, 이러한 변형된 또는 추가적인 신택스에 따라 매크로블록들을 파싱할 수도 있다.
일부 비디오 프레임들 또는 슬라이스들의 경우, 큰 매크로블록들은 비교적 낮은 왜곡이 주어진다고 하면, 실질적인 비트 레이트 절약을 보여, 최상의 레이트-왜곡 결과들을 야기할 수도 있다. 그러나, 다른 비디오 프레임들 또는 슬라이스들의 경우, 더 작은 매크로블록들이 더 적은 왜곡을 보여, 레이트-왜곡 비용 분석에 있어서 비트 레이트가 보다 중요할 수도 있다. 따라서, 상이한 경우에는, 64×64, 32×32 또는 16×16 이 예를 들어, 비디오 컨텐트 및 복잡도에 따라, 상이한 비디오 프레임들 또는 슬라이스들에 대해 적절할 수도 있다.
도 1 은 큰 매크로블록, 즉, 16×16 매크로블록보다 더 많은 픽셀들을 포함하는 매크로블록을 이용하여 디지털 비디오 데이터를 인코딩/디코딩하는 기술들을 이용할 수도 있는 비디오 인코딩 및 디코딩 시스템 (10) 의 일 예를 예시한 블록도이다. 도 1 에 도시한 바와 같이, 이 시스템 (10) 은 인코딩된 비디오를 통신 채널 (16) 을 통해 목적지 디바이스 (14) 로 송신하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우에, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 핸드셋, 소위 셀룰러 또는 위성 무선전화기와 같은 무선 통신 디바이스들, 또는 통신 채널 (16) 이 무선인 경우에는 통신 채널 (16) 을 통해 비디오 정보를 통신할 수 있는 임의의 무선 디바이스들을 포함할 수도 있다. 그러나, 종래의 비디오 인코딩 표준들에 의해 규정된 매크로블록들보다 더 많은 픽셀들을 포함하는 큰 매크로블록의 이용에 관한 본 개시물의 기술들이 반드시 무선 애플리케이션 또는 설정에 제한되는 것은 아니다. 예를 들어, 이들 기술들은 공중 경유 (over-the-air) 텔레비전 브로드캐스트, 케이블 텔레비전 송신, 위성 텔레비전 송신, 인터넷 비디오 송신, 저장 매체로 인코딩되는 인코딩된 디지털 비디오, 또는 다른 시나리오들에 적용할 수도 있다. 따라서, 통신 채널 (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) 간 일 방향 (one-way) 또는 양 방향 (two-way) 송신을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는 비디오 캡처 디바이스, 이를 테면, 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 컨텐트 제공자로부터의 비디오 피드를 포함할 수도 있다. 추가 대안으로서, 비디오 소스 (18) 는 소스 비디오와 같은 컴퓨터 그래픽 기반 데이터, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성된 비디오의 조합을 생성할 수도 있다. 일부 경우에, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소위 카메라 폰 또는 비디오 폰을 형성할 수도 있다. 그러나, 상기 언급한 바와 같이, 본 개시물에서 설명된 기술들은 일반적으로 비디오 코딩에 적용가능할 수도 있고, 무선 또는 유선 애플리케이션들에 적용될 수도 있다. 각각의 경우에, 캡처되거나, 사전 캡처되거나 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 정보는 그 후 통신 표준에 따라 모뎀 (22) 에 의해 변조되고, 송신기 (24) 를 통해 목적지 디바이스 (14) 로 송신될 수도 있다. 모뎀 (22) 은 다양한 믹서들, 필터들, 증폭기들 또는 신호 변조를 위해 설계된 다른 컴포넌트들을 포함할 수도 있다. 송신기 (24) 는 증폭기들, 필터들 및 하나 이상의 안테나들을 포함하는, 데이터를 송신하기 위해 설계된 회로들을 포함할 수도 있다.
목적지 디바이스 (14) 의 수신기 (26) 는 통신 채널 (16) 을 통해 정보를 수신하고, 모뎀 (28) 이 그 정보를 복조한다. 다시, 비디오 인코딩 프로세스는 비디오 데이터의 인터 (즉, 시간) 및/또는 인트라 (즉, 공간) 인코딩을 위해, 큰 매크로블록 (예를 들어, 16×16 보다 큼) 을 이용하기 위해 본원에 설명된 기술들 중 하나 이상을 구현할 수도 있다. 비디오 디코더 (30) 에 의해 수행된 비디오 디코딩 프로세스는 또한 디코딩 프로세스 동안 이러한 기술들을 이용할 수도 있다. 통신 채널 (16) 을 통해 통신된 정보는 이하 더 상세하게 설명되는 바와 같이, 큰 매크로블록들의 특성들 및/또는 프로세싱을 기술하는 신택스 엘리먼트들을 포함하는, 비디오 인코더 (20) 에 의해 정의된 신택스 정보 (이는 또한 비디오 디코더 (30) 에 의해서도 이용된다) 를 포함할 수도 있다. 신택스 정보는 프레임 헤더, 슬라이스 헤더, 시퀀스 헤더 (예를 들어, H.264 에 대하여, 코딩된 비디오 시퀀스가 따르는 프로파일 및 레벨을 이용함으로써), 또는 매크로블록 헤더 중 임의의 것 또는 모두에 포함될 수도 있다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 포함할 수도 있다.
도 1 의 예에서, 통신 채널 (16) 은 임의의 무선 또는 유선 통신 매체, 이를 테면 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 선로, 또는 무선과 유선 매체의 임의의 조합을 포함할 수도 있다. 통신 채널 (16) 은 근거리 네트워크 (local area network), 광역 네트워크 (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) 과 같은 다른 프로토콜들에 따를 수도 있다.
ITU-T H.264/MPEG-4 (AVC) 표준은 JVT (Joint Video Team) 로 알려진 집합적 파트너쉽 (collective partnership) 의 제품으로서 ISO/IEC MPEG (Moving Picture Experts Group) 와 함께 ITU-T VCEG (Video Coding Experts Group) 에 의해 공식화되었다. 일부 양태에서, 본 개시물에서 설명된 기술들은, 일반적으로 H.264 표준에 따르는 디바이스들에 적용될 수도 있다. H.264 표준은 2005년 3월의 ITU-T 연구 그룹에 의한 일반 오디오 비주얼 서비스에 대한 ITU-T 권장 H.264, 어드밴스드 비디오 코딩에 기술되어 있으며, 이것은 본원에서 H.264 표준 또는 H.264 사양, 또는 H.264/AVC 표준 또는 사양으로서 지칭될 수도 있다. JVT 는 H.264/MPEG-4 AVC 에 대한 확장 작업을 계속한다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 하나 이상의 마이크로프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그램가능한 게이트 어레이 (FPGA), 별개의 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 다양한 적절한 인코더 회로 중 임의의 것으로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 어느 하나가 각각의 카메라, 컴퓨터, 모바일 디바이스, 가입자 디바이스, 브로드캐스트 디바이스, 셋톱 박스, 서버 등 내에 결합된 인코더/디코더 (CODEC) 의 일부로서 통합될 수도 있는, 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있다.
비디오 시퀀스는 통상적으로 일련의 비디오 프레임들을 포함한다. 비디오 인코더 (20) 는 비디오 데이터를 인코딩하기 위하여 개개의 비디오 프레임 내의 비디오 블록들에 작용한다. 비디오 블록은 매크로블록 또는 매크로블록의 파티션에 대응할 수도 있다. 비디오 블록은 또한 파티션의 파티션에 대응할 수도 있다. 비디오 블록들은 고정 사이즈 또는 가변 사이즈를 가질 수도 있으며, 특정 코딩 표준에 따라 또는 본 개시물의 기술들에 따라 사이즈가 다를 수도 있다. 각각의 비디오 프레임은 복수의 슬라이스들을 포함할 수도 있다. 각각의 슬라이스는 복수의 매크로블록들을 포함할 수도 있고, 복수의 매크로블록들은 서브-블록들이라고도 지칭되는 파티션들로 배열될 수도 있다.
일 예로서, ITU-T H.264 표준은 루마 (luma) 컴포넌트들에 대해 16×16, 8×8 또는 4×4 및 크로마 (chroma) 컴포넌트들에 대해 8×8 과 같은 다양한 블록 사이즈들의 인트라 예측을 지원할 뿐만 아니라, 루마 컴포넌트들에 대해 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 및 4×4 및 크로마 컴포넌트들에 대해 대응하는 스케일링된 사이즈들과 같은 다양한 블록 사이즈들의 인터 예측을 지원한다. 본 개시물에서, "x" 및 "by" 는 수직 및 수평 차원들의 관점에서의 블록의 픽셀 차원들, 예를 들어 16×16 (16 by 16) 픽셀들을 지칭하기 위해 상호교환가능하게 사용될 수도 있다. 일반적으로, 16×16 블록은 수직 방향의 16 픽셀들 및 수평 방향의 16 픽셀들을 가질 것이다. 마찬가지로, N×N 블록은 일반적으로 수직 방향의 N 픽셀들 및 수평 방향의 N 픽셀들을 가지며, 여기서 N 은 16 보다 클 수도 있는 포지티브 정수 값을 나타낸다. 블록 내의 픽셀들은 로우 (row) 및 컬럼 (column) 으로 배열될 수도 있다.
16×16 보다 작은 블록 사이즈들은 16×16 매크로블록의 파티션들로 지칭될 수도 있다. 마찬가지로, N×N 블록의 경우, N×N 보다 작은 블록 사이즈들은 N×N 블록의 파티션들로 지칭될 수도 있다. 본 개시물의 기술들은 종래의 16×16 픽셀 매크로블록보다 큰 매크로블록들, 이를 테면 32×32 픽셀 매크로블록들, 64×64 픽셀 매크로블록들, 또는 더 큰 매크로블록들에 대한 인트라-코딩 및 인터-코딩을 기술한다. 비디오 블록들은 픽셀 도메인에서의 픽셀 데이터의 블록들, 또는 예를 들어 코딩된 비디오 블록들과 예측 비디오 블록들 간의 픽셀 차이를 나타내는 잔류 비디오 블록 데이터에 이산 코사인 변환 (DCT), 정수 변환, 웨이브릿 변환, 또는 개념상 유사한 변환과 같은 변환의 적용을 뒤따르는 변환 도메인에서의 변환 계수들의 블록들을 포함할 수도 있다. 일부 경우에, 비디오 블록은 변환 도메인에서의 양자화된 변환 계수들의 블록들을 포함할 수도 있다.
더 작은 비디오 블록들은 더 양호한 해상도를 제공할 수 있으며, 높은 레벨의 상세를 포함하는 비디오 프레임의 위치에 대해 이용될 수도 있다. 일반적으로, 매크로블록들 및 다양한 파티션들 (때로는 서브-블록들로 지칭) 은 비디오 블록들인 것으로 간주될 수도 있다. 또한, 슬라이스는 매크로블록들 및/또는 서브-블록들과 같은 복수의 비디오 블록들인 것으로 간주될 수도 있다. 각각의 슬라이스는 비디오 프레임의 독립적으로 디코딩가능한 유닛일 수도 있다. 대안으로, 프레임들 그 자체는 디코딩가능한 유닛들일 수도 있으며, 또는 프레임의 다른 부분들이 디코딩가능한 유닛들로서 정의될 수도 있다. "코딩된 유닛" 또는 "코딩 유닛" 이란 용어는 전체 프레임, 프레임의 슬라이스, 픽처들의 그룹 (GOP) (시퀀스라고도 지칭됨), 또는 적용가능한 코딩 기술들에 따라 정의된 다른 독립적으로 디코딩가능한 유닛과 같은 비디오 프레임의 임의의 독립적으로 디코딩가능한 유닛을 지칭할 수도 있다.
예측 데이터 및 잔류 데이터를 생성하기 위한 인트라-예측 코딩 또는 인터-예측 코딩에 후속하여, 그리고 변환 계수들을 생성하기 위한 임의의 변환들 (이를 테면 H.264/AVC 에서 이용되는 4×4 또는 8×8 정수 변환 또는 이산 코사인 변환 (DCT)) 에 후속하여, 변환 계수들의 양자화가 수행될 수도 있다. 양자화는 일반적으로 변환 계수들이 그 계수들을 나타내는데 이용되는 데이터의 양을 가능하게 저감시키기 위해 양자화되는 프로세스를 지칭한다. 양자화 프로세스는 그 계수들 중 일부 또는 전부와 관련된 비트 심도 (bit depth) 를 저감시킬 수도 있다. 예를 들어, n-비트 값은 양자화 동안 m-비트 값으로 내림 (round down) 될 수도 있으며, 여기서 n 은 m 보다 크다.
양자화에 후속하여, 예를 들어, 컨텐트 적응형 가변 길이 코딩 (content adaptive variable length coding; CAVLC), 콘텍스트 적응형 이진 산술 코딩 (context adaptive binary arithmetic coding; CABAC), 또는 다른 엔트로피 코딩 방법론에 따라, 양자화된 데이터의 엔트로피 코딩이 수행될 수도 있다. 엔트로피 코딩을 위해 구성된 프로세싱 유닛, 또는 다른 프로세싱 유닛이 다른 프로세싱 기능들, 이를 테면 양자화된 계수들의 제로 런 렝스 코딩 (run length coding) 및/또는 CBP 값들, 매크로블록 타입, 코딩 모드, (프레임, 슬라이스, 매크로블록 또는 시퀀스와 같은) 코딩된 유닛에 대한 최대 매크로블록 사이즈 등과 같은 신택스 정보의 생성을 수행할 수도 있다.
본 개시물의 다양한 기술들에 따르면, 비디오 인코더 (20) 는 디지털 비디오 데이터를 인코딩하기 위해 종래의 비디오 인코딩 표준들에 의해 규정된 것보다 큰 매크로블록을 이용할 수도 있다. 일 예에서, 비디오 인코더 (20) 는 비디오 인코더로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 인코딩하고, 블록의 사이즈를 나타내는 블록 타입 신택스 정보를 생성하며, 인코딩된 블록에 대한 CBP 값을 생성할 수도 있으며, 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 나타낸다. 매크로블록 블록 타입 신택스 정보는 큰 매크로블록에 대한 매크로블록 헤더에서 제공될 수도 있다. 매크로블록 블록 타입 신택스 정보는 프레임 또는 슬라이스 내의 매크로블록의 어드레스 또는 포지션, 또는 매크로블록의 포지션, 매크로블록에 적용되는 코딩 모드의 타입, 매크로블록에 대한 양자화 값, 매크로블록에 대한 임의의 모션 벡터 정보 및 매크로블록에 대한 CBP 값을 식별하는 매크로블록 번호를 나타낼 수도 있다.
다른 예에서, 비디오 인코더 (20) 는 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하고 (그 블록을 파티션들로 파티셔닝함), 제 1 인코딩 모드를 이용하여 파티션들 중 하나의 파티션을 인코딩하고, 제 1 인코딩 모드와는 상이한 제 2 인코딩 모드를 이용하여 파티션들 중 다른 파티션을 인코딩하며, 블록의 사이즈를 나타내고 파티션들 및 그 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 블록 타입 신택스 정보를 생성할 수도 있다.
추가적인 예에서, 비디오 인코더 (20) 는 프레임 또는 슬라이스와 같은 비디오 코딩 유닛을 수신하고, 사이즈가 16×16 픽셀들인 제 1 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하기 위한 제 1 레이트-왜곡 메트릭을 결정하고, 사이즈가 16×16 픽셀들보다 큰 제 2 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하기 위한 제 2 레이트-왜곡 메트릭을 결정하고, 제 1 레이트-왜곡 메트릭이 제 2 레이트-왜곡 메트릭보다 작은 경우 제 1 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩하며, 제 2 레이트-왜곡 메트릭이 제 1 레이트-왜곡 메트릭보다 작은 경우 제 2 비디오 블록들을 이용하여 비디오 코딩 유닛을 인코딩할 수도 있다.
일 예에서, 비디오 디코더 (30) 는 사이즈가 16×16 픽셀들보다 큰 인코딩된 비디오 블록을 수신하고, 인코딩된 블록의 사이즈를 나타내는 블록 타입 신택스 정보를 수신하고, 인코딩된 블록에 대한 코딩된 블록 패턴 값을 수신하며 (코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 나타낸다), 블록 타입 신택스 정보 및 인코딩된 블록에 대한 코딩된 블록 패턴 값에 기초하여 인코딩된 블록을 디코딩할 수도 있다.
다른 예에서, 비디오 디코더 (30) 는 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하고 (여기서 그 블록은 파티션들로 파티셔닝되고, 파티션들 중 하나의 파티션은 인터-인코딩되고 파티션들 중 다른 파티션은 인트라-인코딩된다), 블록의 사이즈를 나타내고 파티션들 및 그 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 블록 타입 신택스 정보를 수신하며, 블록 타입 신택스 정보에 기초하여 비디오 블록을 디코딩할 수도 있다.
도 2 는 본 개시물과 일치하는 큰 매크로블록을 이용하기 위한 기술들을 구현할 수도 있는 비디오 인코더 (50) 의 일 예를 예시한 블록도이다. 비디오 인코더 (50) 는 소스 디바이스 (12) 의 비디오 인코더 (20), 또는 상이한 디바이스의 비디오 인코더에 대응할 수도 있다. 비디오 인코더 (50) 는 큰 매크로블록들, 또는 큰 매크로블록들의 파티션들 또는 서브-파티션들을 포함하는, 비디오 프레임들 내의 블록들의 인트라-코딩 및 인터-코딩을 수행할 수도 있다. 인트라-코딩은 공간 예측에 의존하여 소정의 비디오 프레임 내의 비디오에서 공간 리던던시를 저감시키거나 제거한다. 인터-코딩은 시간 예측에 의존하여 비디오 시퀀스의 인접한 프레임들 내의 비디오에서 시간 리던던시를 저감시키거나 제거한다.
인트라-모드 (I-모드) 는 여러 공간 기반 압축 모드들 중 임의의 것을 지칭할 수도 있고, 예측 (P-모드) 또는 양방향 (B-모드) 과 같은 인터-모드들은 여러 시간 기반 압축 모드들 중 임의의 것을 지칭할 수도 있다. 본 개시물의 기술들은 인터-코딩 및 인트라-코딩 양자 동안 적용될 수도 있다. 일부 경우에, 본 개시물의 기술들은 또한 넌-비디오 디지털 픽처들을 인코딩하는 것에 적용될 수도 있다. 즉, 디지털 스틸 픽처 인코더는 비디오 시퀀스 내의 비디오 프레임들에서의 인트라-코딩된 매크로블록들을 인코딩하는 것과 유사한 방식으로 큰 매크로블록들을 이용하여 디지털 스틸 픽처를 인트라-코딩하기 위해 본 개시물의 기술들을 이용할 수도 있다.
도 2 에 도시한 바와 같이, 비디오 인코더 (50) 는 인코딩될 비디오 프레임 내의 현재 비디오 블록을 수신한다. 도 2 의 예에서, 비디오 인코더 (50) 는 모션 보상 유닛 (35), 모션 추정 유닛 (36), 인트라 예측 유닛 (37), 모드 선택 유닛 (39), 기준 프레임 저장장치 (34), 합산기 (48), 변환 유닛 (38), 양자화 유닛 (40) 및 엔트로피 코딩 유닛 (46) 을 포함한다. 비디오 블록 복원을 위해, 비디오 인코더 (50) 는 또한 역양자화 유닛 (42), 역변환 유닛 (44) 및 합산기 (51) 를 포함한다. 복원된 비디오로부터 블록화 아티팩트를 제거하기 위해 블록 경계를 필터링하도록 디블록킹 필터 (도 2 에는 미도시) 가 또한 포함될 수도 있다. 원한다면, 디블록킹 필터는 통상적으로 합산기 (51) 의 출력을 필터링할 것이다.
인코딩 프로세스 동안, 비디오 인코더 (50) 는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 프레임 또는 슬라이스는 큰 매크로블록들을 포함하는 다수의 비디오 블록들로 분할될 수도 있다. 모션 추정 유닛 (36) 및 모션 보상 유닛 (35) 은 시간 압축을 제공하기 위해 하나 이상의 기준 프레임들 내의 하나 이상의 블록들에 대한 수신된 비디오 블록의 인터-예측 코딩을 수행한다. 인트라 예측 유닛 (37) 은 공간 압축을 제공하기 위해 코딩될 블록과 동일한 프레임 또는 슬라이스 내의 하나 이상의 이웃 블록들에 대한 수신된 비디오 블록의 인트라-예측 코딩을 수행한다.
모드 선택 유닛 (39) 은 예를 들어 오차 결과들에 기초하여 코딩 모드들, 인트라 또는 인터 중 하나를 선택하고, 결과의 인트라-코딩되거나 인터-코딩된 블록을 합산기 (48) 에 제공하여 잔류 블록 데이터를 생성하고 결과의 인트라-코딩되거나 인터-코딩된 블록을 합산기 (51) 에 제공하여 기준 프레임으로서 이용하기 위한 인코딩된 블록을 복원할 수도 있다. 본 개시물의 기술들에 따르면, 코딩될 비디오 블록은 종래의 코딩 표준들에 의해 규정된 것보다 큰, 즉 16×16 픽셀 매크로블록보다 큰 매크로블록을 포함할 수도 있다. 예를 들어, 큰 비디오 블록은 64×64 픽셀 매크로블록 또는 32×32 픽셀 매크로블록을 포함할 수도 있다.
모션 추정 유닛 (36) 및 모션 보상 유닛 (35) 은 고도로 통합될 수도 있지만 개념상 개별적으로 예시된다. 모션 추정은 비디오 블록들에 대한 모션을 추정하는 모션 벡터들을 생성하는 프로세스이다. 모션 벡터는 예를 들어 현재 프레임 (또는 다른 코딩된 유닛) 내에서 코딩되는 현재 블록에 대한 예측 기준 프레임 (또는 다른 코딩된 유닛) 내의 예측 블록의 변위 (displacement) 를 나타낼 수도 있다. 예측 블록은 픽셀 차이의 관점에서 코딩될 블록과 밀접하게 매칭하는 것으로 확인되는 블록이며, 픽셀 차이는 SAD (sum of absolute difference), SSD (sum of square difference) 또는 다른 차이 메트릭들에 의해 결정될 수도 있다.
모션 벡터는 또한 큰 매크로블록의 파티션의 변위를 나타낼 수도 있다. 하나의 32×64 파티션 및 2 개의 32×32 파티션들을 가진 64×64 픽셀 매크로블록에 대한 일 예에서, 모두 기준 프레임 내의 대응하는 파티션들에 대하여, 제 1 모션 벡터는 32×64 파티션의 변위를 나타낼 수도 있고, 제 2 모션 벡터는 32×32 파티션들 중 제 1 파티션의 변위를 나타낼 수도 있으며, 제 3 모션 벡터는 32×32 파티션들 중 제 2 파티션의 변위를 나타낼 수도 있다. 이러한 파티션들은 또한 비디오 블록들이란 용어가 본 개시물에서 사용되는 한은 비디오 블록들인 것으로 간주될 수도 있다. 모션 보상은 모션 추정에 의해 결정되는 모션 벡터에 기초하여 예측 블록을 인출 (fetch) 또는 생성하는 것을 수반할 수도 있다. 다시, 모션 추정 유닛 (36) 및 모션 보상 유닛 (35) 은 기능적으로 통합될 수도 있다.
모션 추정 유닛 (36) 은 비디오 블록을 기준 프레임 저장장치 (34) 내의 기준 프레임의 비디오 블록들과 비교함으로써 인터-코딩된 프레임의 비디오 블록에 대한 모션 벡터를 계산한다. 모션 보상 유닛 (35) 은 또한 기준 프레임, 예를 들어, I-프레임 또는 P-프레임의 서브-정수 픽셀들을 보간할 수도 있다. ITU H.264 표준은 기준 프레임들을 "리스트들" 로서 지칭한다. 따라서, 기준 프레임 저장장치 (34) 에 저장된 데이터는 또한 리스트들인 것으로 간주될 수도 있다. 모션 추정 유닛 (36) 은 기준 프레임 저장장치 (34) 로부터의 하나 이상의 기준 프레임들 (또는 리스트들) 의 블록들을 현재 프레임, 예를 들어, P-프레임 또는 B-프레임의 인코딩될 블록과 비교한다. 기준 프레임 저장장치 (34) 내의 기준 프레임들이 서브-정수 픽셀들에 대한 값들을 포함하는 경우, 모션 추정 유닛 (36) 에 의해 계산된 모션 벡터는 기준 프레임의 서브-정수 픽셀 위치를 지칭할 수도 있다. 모션 추정 유닛 (36) 은 계산된 모션 벡터를 엔트로피 코딩 유닛 (46) 및 모션 보상 유닛 (35) 으로 전송한다. 모션 벡터에 의해 식별된 기준 프레임 블록은 예측 블록으로 지칭될 수도 있다. 모션 보상 유닛 (35) 은 기준 프레임의 예측 블록에 대한 오차 값들을 계산한다.
모션 보상 유닛 (35) 은 예측 블록에 기초하여 예측 데이터를 계산할 수도 있다. 비디오 인코더 (50) 는 모션 보상 유닛 (35) 으로부터의 예측 데이터를 코딩되는 원래의 비디오 블록에서 뺌으로써 잔류 비디오 블록을 형성한다. 합산기 (48) 는 이런 뺄셈 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 변환 유닛 (38) 은 잔류 블록에 이산 코사인 변환 (DCT) 또는 개념상 유사한 변환과 같은 변환을 적용하여, 잔류 변환 계수 값들을 포함하는 비디오 블록을 생성한다. 변환 유닛 (38) 은 H.264 표준에 의해 정의된 것과 같은 다른 변환들을 수행할 수도 있으며, 이는 DCT 와 개념상 유사하다. 웨이브릿 변환, 정수 변환, 서브-대역 변환 또는 다른 타입의 변환이 또한 이용될 수 있다. 어느 경우라도, 변환 유닛 (38) 은 잔류 블록에 변환을 적용하여, 잔류 변환 계수들의 블록을 생성한다. 변환은 잔류 정보를 픽셀 값 도메인으로부터 주파수 도메인과 같은 변환 도메인으로 컨버팅할 수도 있다.
양자화 유닛 (40) 은 잔류 변환 계수들을 양자화하여 비트 레이트를 더욱 저감시킨다. 양자화 프로세스는 계수들의 일부 또는 전부와 관련된 비트 심도를 저감시킬 수도 있다. 일 예에서, 양자화 유닛 (40) 은 본 개시물에서 QPY 로 지칭되는 루미넌스 양자화 파라미터에 따라 각각의 64×64 픽셀 매크로블록에 대해 상이한 정도의 양자화를 확립할 수도 있다. 양자화 유닛 (40) 은 또한 본원에 "MB64_delta_QP" 로 지칭되는 양자화 파라미터 수정자 (modifier) 및 이전에 인코딩된 64×64 픽셀 매크로블록에 기초하여 64×64 매크로블록의 양자화 동안 이용되는 루미넌스 양자화 파라미터를 수정할 수도 있다.
각각의 64×64 픽셀의 큰 매크로블록은 -26 과 +25 를 포함하여 그 사이의 범위에 있는 개개의 MB64_delta_QP 값을 포함할 수도 있다. 일반적으로, 비디오 인코더 (50) 는 블록의 인코딩된 버전을 송신하기 위한 원하는 비트레이트에 기초하여 특정 블록에 대해 MB64_delta_QP 값을 확립할 수도 있다. 제 1 64×64 픽셀 매크로블록의 MB64_delta_QP 값은 예를 들어 프레임/슬라이스 헤더 내에 제 1 64×64 픽셀 매크로블록을 포함하는 프레임 또는 슬라이스의 QP 값과 동일할 수도 있다. 현재 64×64 픽셀 매크로블록에 대한 QPY 는 공식 :
Figure 112013039196499-pat00001
에 따라 계산될 수도 있으며, 여기서 QPY , PREV 는 현재 슬라이스/프레임의 디코딩 순서에 있어서 이전의 64×64 픽셀 매크로블록의 QPY 값을 지칭하며, "%" 는 N%52 가 N 을 52 로 나눈 나머지 값에 대응하는, 0 과 51 을 포함하여 그 사이의 결과를 반환하도록 하는 모듈로 연산자 (modulo operator) 를 지칭한다. 프레임/슬라이스 내의 제 1 매크로블록의 경우, QPY , PREV 는 프레임/슬라이스 헤더에서 전송된 프레임/슬라이스 QP 와 동일하게 설정될 수도 있다.
일 예에서, 양자화 유닛 (40) 은 MB64_delta_QP 값이 P_Skip 및 B_Skip 매크로블록 타입들과 같은 "skip" 타입 매크로블록들을 포함하는, 특정 64×64 픽셀 매크로들록들에 대해 정의되지 않는 경우 MB64_delta_QP 값이 0 과 동일하다는 것을 가정한다. 일부 예에서는, 추가적인 delta_QP 값들 (일반적으로 양자화 파라미터 수정 값들로 지칭) 이 64×64 픽셀 매크로블록의 각각의 32×32 픽셀 파티션에 대한 MB32_delta_QP 값들과 같이, 64×64 픽셀 매크로블록 내의 파티션들의 보다 미세한 그레인 (finer grain) 양자화 제어를 위해 정의될 수도 있다. 일부 예에서, 64×64 매크로블록의 각각의 파티션은 개개의 양자화 파라미터를 할당받을 수도 있다. 64×64 매크로블록에 대해 단일의 QP 를 이용하는 대신에, 각각의 파티션에 대해 개별화된 양자화 파라미터를 이용하는 것은, 보다 효율적인 매크로블록의 양자화를 초래하여, 예를 들어, 비동질 (non-homogeneous) 영역에 대한 양자화를 보다 양호하게 조정할 수도 있다. 각각의 양자화 파라미터 수정 값은 대응하는 인코딩된 블록을 가진 신택스 정보로서 포함될 수도 있으며, 디코더는 양자화 파라미터 수정 값에 따라 인코딩된 블록을 역양자화 (dequantizing), 즉 역양자화 (inverse quantizing) 함으로써 인코딩된 블록을 디코딩할 수도 있다.
양자화에 후속하여, 엔트로피 코딩 유닛 (46) 은 양자화된 변환 계수들을 엔트로피 코딩한다. 예를 들어, 엔트로피 코딩 유닛 (46) 은 컨텐트 적응형 가변 길이 코딩 (CAVLC), 콘텍스트 적응형 이진 산술 코딩 (CABAC), 또는 다른 엔트로피 코딩 기술을 수행할 수도 있다. 엔트로피 코딩 유닛 (46) 에 의한 엔트로피 코딩에 후속하여, 인코딩된 비디오는 다른 디바이스로 송신되거나 추후 송신 또는 검색을 위해 아카이브될 수도 있다. 코딩된 비트스트림은 이하 더 상세하게 설명되는 바와 같이, 엔트로피 코딩된 잔류 변환 계수 블록들, 이러한 블록들에 대한 모션 벡터들, 각각의 64×64 픽셀 매크로블록에 대한 MB64_delta_QP 값들, 및 예를 들어, 매크로블록 타입 식별자 값들, 코딩된 유닛 내의 매크로블록들의 최대 사이즈를 나타내는 코딩된 유닛 헤더들, QPY 값들, 코딩된 블록 패턴 (CBP) 값들, 매크로블록 또는 서브-블록의 파티셔닝 방법을 식별하는 값들 및 변환 사이즈 플래그 값들을 포함하는 다른 신택스 엘리먼트들을 포함할 수도 있다. 콘텍스트 적응형 이진 산술 코딩의 경우에, 콘텍스트는 이웃 매크로블록들에 기초할 수도 있다.
일부 경우에, 엔트로피 코딩 유닛 (46) 또는 비디오 인코더 (50) 의 다른 유닛은 엔트로피 코딩에 더하여 다른 코딩 기능들을 수행하도록 구성될 수도 있다. 예를 들어, 엔트로피 코딩 유닛 (46) 은 큰 매크로블록들 및 파티션들에 대한 CBP 값들을 결정하도록 구성될 수도 있다. 엔트로피 코딩 유닛 (46) 은 계층적 CBP 스킴을 적용하여, 매크로블록 내의 임의의 파티션들이 넌-제로 변환 계수 값들을 포함하는지 여부를 나타내는 큰 매크로블록에 대한 CBP 값을 제공하고, 만약 그렇다면, 큰 매크로블록 내의 특정 파티션들이 넌-제로 변환 계수 값들을 갖는지 여부를 나타내기 위해 다른 CBP 값들을 제공할 수도 있다. 또한, 일부 경우에, 엔트로피 코딩 유닛 (46) 은 큰 매크로블록 또는 서브-파티션 내의 계수들의 런 렝스 코딩을 수행할 수도 있다. 특히, 엔트로피 코딩 유닛 (46) 은 지그-재그 스캔 또는 다른 스캔 패턴을 적용하여 매크로블록 또는 파티션 내의 변환 계수들을 스캔하고 추가 압축을 위해 제로들의 런들을 인코딩할 수도 있다. 엔트로피 코딩 유닛 (46) 은 또한 인코딩된 비디오 비트스트림 단위의 송신에 적절한 신택스 엘리먼트들을 가진 헤더 정보를 구성할 수도 있다.
역양자화 유닛 (42) 및 역변환 유닛 (44) 은 각각 역양자화 및 역변환을 적용하여, 예를 들어 기준 블록으로서의 추후 이용을 위해 픽셀 도메인에서의 잔류 블록을 복원한다. 모션 보상 유닛 (35) 은 잔류 블록을 기준 프레임 저장장치 (34) 의 프레임들 중 하나의 예측 블록과 더함으로써 기준 블록을 계산할 수도 있다. 모션 보상 유닛 (35) 은 또한 하나 이상의 보간 필터들을 복원된 잔류 블록에 적용하여 서브-정수 픽셀 값들을 계산할 수도 있다. 합산기 (51) 는 복원된 잔류 블록을 모션 보상 유닛 (35) 에 의해 생성되는 모션 보상된 예측 블록과 더하여 기준 프레임 저장장치 (34) 에의 저장을 위한 복원된 비디오 블록을 생성한다. 복원된 비디오 블록은 후속 비디오 프레임 내의 블록을 인터-코딩하기 위한 기준 블록으로서 모션 추정 유닛 (36) 및 모션 보상 유닛 (35) 에 의해 이용될 수도 있다. 큰 매크로블록은 64×64 픽셀 매크로블록, 32×32 픽셀 매크로블록, 또는 종래의 비디오 코딩 표준들에 의해 규정된 사이즈보다 큰 다른 매크로블록을 포함할 수도 있다.
도 3 은 본 개시물에서 설명되는 방식으로 인코딩되는 비디오 시퀀스를 디코딩하는, 비디오 디코더 (60) 의 일 예를 예시한 블록도이다. 인코딩된 비디오 시퀀스는 종래의 비디오 인코딩 표준들에 의해 규정된 사이즈보다 큰 인코딩된 매크로블록들을 포함할 수도 있다. 예를 들어, 인코딩된 매크로블록들은 32×32 픽셀 또는 64×64 픽셀 매크로블록들일 수도 있다. 도 3 의 예에서, 비디오 디코더 (60) 는 엔트로피 디코딩 유닛 (52), 모션 보상 유닛 (54), 인트라 예측 유닛 (55), 역양자화 유닛 (56), 역변환 유닛 (58), 기준 프레임 저장장치 (62) 및 합산기 (64) 를 포함한다. 비디오 디코더 (60) 는 일부 예에서는 비디오 인코더 (50) (도 2) 에 관하여 설명되는 인코딩 패스와 일반적으로 상호적인 디코딩 패스를 수행할 수도 있다. 모션 보상 유닛 (54) 은 엔트로피 디코딩 유닛 (52) 으로부터 수신되는 모션 벡터들에 기초하여 예측 데이터를 생성할 수도 있다.
엔트로피 디코딩 유닛 (52) 은 양자화된 계수들 및 신택스 엘리먼트들 (예를 들어, 모션 벡터들, CBP 값들, QPY 값들, 변환 사이즈 플래그 값들, MB64_delta_QP 값들) 을 생성하기 위해 수신된 비트스트림을 엔트로피 디코딩한다. 엔트로피 디코딩 유닛 (52) 은 프레임들, 슬라이스들 및/또는 매크로블록 헤더들과 같은 코딩된 유닛 내의 신택스 정보를 식별하기 위해 비트스트림을 파싱할 수도 있다. 복수의 매크로블록들을 포함하는 코딩된 유닛에 대한 신택스 정보는 매크로블록들의 최대 사이즈, 예를 들어 16×16 픽셀들, 32×32 픽셀들, 64×64 픽셀들, 또는 코딩된 유닛 내의 다른 보다 큰 사이즈의 매크로블록들을 나타낼 수도 있다. 블록에 대한 신택스 정보는 엔트로피 코딩 유닛 (52) 으로부터, 예를 들어 블록의 코딩 모드에 따라 모션 보상 유닛 (54) 이나 인트라 예측 유닛 (55) 중 어느 하나로 포워딩된다. 디코더는 코딩된 유닛의 신택스 내의 최대 사이즈 표시자를 이용하여 코딩된 유닛에 대한 신택스 디코더를 선택할 수도 있다. 최대 사이즈에 대해 특정된 신택스 디코더를 이용하면, 디코더는 그 후 코딩된 유닛에 포함된 큰 사이즈의 매크로블록들을 적절히 인터프리팅 및 프로세싱할 수 있다.
모션 보상 유닛 (54) 은 비트스트림에서 수신된 모션 벡터들을 이용하여 기준 프레임 저장장치 (62) 내의 기준 프레임들에서의 예측 블록을 식별할 수도 있다. 인트라 예측 유닛 (55) 은 비트스트림에서 수신된 인트라 예측 모드들을 이용하여 공간적으로 인접한 블록들로부터 예측 블록을 형성할 수도 있다. 역양자화 유닛 (56) 은 비트스트림에서 제공되고 엔트로피 디코딩 유닛 (52) 에 의해 디코딩되는 양자화된 블록 계수들을 역양자화 (inverse quantize) (즉 역양자화 (de-quantize)) 한다. 역양자화 프로세스는 예를 들어, H.264 디코딩 표준에 의해 정의된 바와 같은 종래의 프로세스를 포함할 수도 있다. 역양자화 프로세스는 또한 양자화의 정도, 및 마찬가지로는 적용되어야 하는 역양자화의 정도를 결정하기 위해 각각의 64×64 매크로블록에 대한 인코더 (50) 에 의해 계산되는 양자화 파라미터 QPY 의 이용을 포함할 수도 있다.
역변환 유닛 (58) 은 픽셀 도메인에서의 잔류 블록들을 생성하기 위하여, 변환 계수들에, 역변환, 예를 들어, 역 DCT, 역정수 변환, 또는 개념상 유사한 역변환 프로세스를 적용한다. 모션 보상 유닛 (54) 은 가능하게는 보간 필터들에 기초하여 보간을 수행하여, 모션 보상된 블록들을 생성한다. 서브-픽셀 정밀도로의 모션 추정에 이용될 보간 필터들에 대한 식별자는 신택스 엘리먼트들에 포함될 수도 있다. 모션 보상 유닛 (54) 은 기준 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산하기 위해 비디오 블록의 인코딩 동안 비디오 인코더 (50) 에 의해 이용된 것과 같은 보간 필터들을 이용할 수도 있다. 모션 보상 유닛 (54) 은 수신된 신택스 정보에 따라 비디오 인코더 (50) 에 의해 이용되는 보간 필터들을 결정하고 그 보간 필터들을 이용하여 예측 블록들을 생성할 수도 있다.
모션 보상 유닛 (54) 은 신택스 정보의 일부를 이용하여, 인코딩된 비디오 시퀀스의 프레임(들)을 인코딩하는데 이용되는 매크로블록들의 사이즈들, 인코딩된 비디오 시퀀스의 프레임의 각각의 매크로블록이 파티셔닝되는 방법을 기술하는 파티션 정보, 각각의 파티션이 인코딩되는 방법을 나타내는 모드들, 각각의 인터-인코딩된 매크로블록 또는 파티션에 대한 하나 이상의 기준 프레임들 (또는 리스트들), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보를 결정한다.
합산기 (64) 는 디코딩된 블록들을 형성하기 위해 인트라 예측 유닛 또는 모션 보상 유닛 (54) 에 의해 생성되는 대응하는 예측 블록들과 잔류 블록들을 합산한다. 원한다면, 디블록킹 필터는 또한 블록화 아티팩트를 제거하기 위하여 디코딩된 블록들을 필터링하도록 적용될 수도 있다. 디코딩된 비디오 블록들은 그 후 기준 프레임 저장장치 (62) 에 저장되며, 기준 프레임 저장장치 (62) 는 후속 모션 보상을 위한 기준 블록들을 제공하고 또한 (도 1 의 디바이스 (32) 와 같은) 디스플레이 디바이스 상에의 표현을 위한 디코딩된 비디오를 생성한다. 디코딩된 비디오 블록들은 각각 64×64 픽셀 매크로블록, 32×32 픽셀 매크로블록, 또는 다른 표준보다 큰 매크로블록을 포함할 수도 있다. 일부 매크로블록들은 다양한 상이한 파티션 사이즈들을 가진 파티션들을 포함할 수도 있다.
도 4a 는 큰 매크로블록의 다양한 파티션 레벨들 사이에서 파티셔닝하는 예를 예시한 개념도이다. 각각의 파티션 레벨의 블록들은 특정 레벨에 대응하는 다수의 픽셀들을 포함한다. 4 개의 파티셔닝 패턴들이 또한 각각의 레벨에 대해 도시되며, 여기서 제 1 파티션 패턴은 온전한 블록을 포함하고, 제 2 파티션 패턴은 동일한 사이즈의 2 개의 수평 파티션들을 포함하고, 제 3 파티션 패턴은 동일한 사이즈의 2 개의 수직 파티션들을 포함하며, 제 4 파티션 패턴은 4 개의 동일한 사이즈의 파티션들을 포함한다. 파티셔닝 패턴들 중 하나는 각각의 파티션 레벨에서의 각각의 파티션에 대해 선택될 수도 있다.
도 4a 의 예에서, 레벨 0 은 루마 샘플들 및 관련 크로마 샘플들의 64×64 픽셀 매크로블록 파티션에 대응한다. 레벨 1 은 루마 샘플들 및 관련 크로마 샘플들의 32×32 픽셀 블록에 대응한다. 레벨 2 는 루마 샘플들 및 관련 크로마 샘플들의 16×16 픽셀 블록에 대응하고, 레벨 3 은 루마 샘플들 및 관련 크로마 샘플들의 8×8 픽셀 블록에 대응한다.
다른 예에서는, 추가적인 레벨들이 더 크거나 더 적은 수의 픽셀들을 이용하도록 도입될 수 있다. 예를 들어, 레벨 0 은 128×128 픽셀 매크로블록, 256×256 픽셀 매크로블록, 또는 다른 더 큰 사이즈의 매크로블록으로 시작할 수 있다. 가장 높은 수의 레벨은 일부 예에서는 단일 픽셀, 즉, 1×1 블록 만큼 미세한 그레인일 수 있다. 따라서, 가장 낮은 레벨로부터 가장 높은 레벨까지, 매크로블록이 파티셔닝되고, 파티션들이 더욱 파티셔닝되고, 또한 파티션들이 여전히 더욱 파티셔닝되며 등등이 행해지도록 파티셔닝이 점차 서브-파티셔닝될 수도 있다. 일부 경우에, 레벨 0 아래의 파티션들, 즉 파티션들의 파티션들은 서브-파티션들로 지칭될 수도 있다.
하나의 레벨의 블록이 4 개의 동일한 사이즈의 서브-블록들을 이용하여 파티셔닝되는 경우, 그 서브-블록들 중 임의의 것 또는 전부가 다음 레벨의 파티션 패턴들에 따라 파티셔닝될 수도 있다. 즉, 레벨 x 에서 4 개의 동일한 사이즈의 서브-블록들 (N/2)×(N/2) 로 파티셔닝된 N×N 블록의 경우, (N/2)×(N/2) 서브-블록들 중 임의의 서브-블록은 레벨 x+1 의 파티션 패턴들 중 임의의 파티션 패턴에 따라 더욱 파티셔닝될 수 있다. 따라서, 레벨 0 에서의 64×64 픽셀 매크로블록의 32×32 픽셀 서브-블록은 도 4a 에 도시된 레벨 1 에서의 패턴들, 예를 들어, 32×32, 32×16 및 32×16, 16×32 및 16×32, 또는 16×16, 16×16, 16×16 및 16×16 중 임의의 패턴에 따라 더욱 파티셔닝될 수 있다. 마찬가지로, 4 개의 16×16 픽셀 서브-블록들이 파티셔닝되는 32×32 픽셀 서브-블록으로부터 발생하는 경우, 16×16 픽셀 서브-블록들 각각은 도 4a 에 도시된 레벨 2 에서의 패턴들 중 임의의 패턴에 따라 더욱 파티셔닝될 수 있다. 4 개의 8×8 픽셀 서브-블록들이 파티셔닝되는 16×16 픽셀 서브-블록으로부터 발생하는 경우, 8×8 픽셀 서브-블록들 각각은 도 4a 에 도시된 레벨 3 에서의 패턴들 중 임의의 패턴에 따라 더욱 파티셔닝될 수 있다.
도 4a 에 도시된 파티션들의 4 개의 레벨들의 예를 이용하여, 큰 동질 영역들 및 미세한 산발적 변화가 본 개시물의 프레임워크 및 기술들을 구현하는 인코더에 의해 적응하여 나타내질 수 있다. 예를 들어, 비디오 인코더 (50) 는 예를 들어, 레이트-왜곡 분석에 기초하여, 상이한 매크로블록들에 대한 상이한 파티셔닝 레벨들은 물론 이러한 파티션들에 적용하기 위한 코딩 모드들을 결정할 수도 있다. 또한, 이하 더 상세하게 설명되는 바와 같이, 비디오 인코더 (50) 는 예를 들어 레이트-왜곡 메트릭 결과들 또는 다른 고려사항들에 기초하여, 공간 (P-인코딩 또는 B-인코딩) 또는 시간 (I-인코딩) 예측을 이용하여 최종 파티션들 중 적어도 일부를 다르게 인코딩할 수도 있다.
모든 파티션들이 동일한 인트라-코딩 모드 또는 인터-코딩 모드를 갖도록 큰 매크로블록을 균일하게 코딩하는 대신에, 큰 매크로블록은 일부 파티션들이 상이한 코딩 모드를 갖도록 코딩될 수도 있다. 예를 들어, 일부 (적어도 하나의) 파티션들은 동일한 매크로블록 내의 다른 (적어도 하나의) 파티션들에 대하여 상이한 인트라-코딩 모드들 (예를 들어, I_16×16, I_8×8, I_4×4) 로 코딩될 수도 있다. 또한, 일부 (적어도 하나의) 파티션들은 동일한 매크로블록 내의 다른 (적어도 하나의) 파티션들이 인터-코딩되는 동안 인트라-코딩될 수도 있다.
예를 들어, 비디오 인코더 (50) 는 4 개의 16×16 파티션들을 가진 32×32 블록에 대해, 공간 예측을 이용하여 16×16 파티션들의 일부를, 그리고 시간 예측을 이용하여 다른 16×16 파티션들을 인코딩할 수도 있다. 다른 예로서, 비디오 인코더 (50) 는 4 개의 16×16 파티션들을 가진 32×32 블록에 대해, 제 1 예측 모드 (예를 들어, I_16×16, I_8×8, I_4×4 중 하나) 를 이용하여 16×16 파티션들 중 하나 이상을, 그리고 상이한 공간 예측 모드 (예를 들어, I_16×16, I_8×8, I_4×4 중 하나) 를 이용하여 하나 이상의 다른 16×16 파티션들을 인코딩할 수도 있다.
도 4b 는 상이한 코딩 모드들의 큰 매크로블록의 상이한 파티션들에의 할당을 예시한 개념도이다. 특히, 도 4b 는 I_16×16 인트라-코딩 모드의 큰 32×32 매크로블록의 상부 좌측 16×16 블록에의 할당, I_8×8 인트라-코딩 모드들의 큰 32×32 매크로블록의 상부 우측 및 하부 좌측 16×16 블록들에의 할당, 및 I_4×4 인트라-코딩 모드의 큰 32×32 매크로블록의 하부 우측 16×16 블록에의 할당을 예시한다. 일부 경우에, 도 4b 에 예시된 코딩 모드들은 루마 코딩을 위한 H.264 인트라-코딩 모드들일 수도 있다.
상기 설명된 방식으로, 각각의 파티션은 선택적으로 더욱 파티셔닝될 수 있고, 각각의 최종 파티션은 시간 예측이나 공간 예측 중 어느 하나를 이용하여, 및 선택된 시간 또는 공간 코딩 모드들을 이용하여 선택적으로 코딩될 수 있다. 결과적으로, 매크로블록 내의 일부 파티션들이 인트라-코딩되고 동일한 매크로블록 내의 다른 파티션들이 인터-코딩되도록, 또는 동일한 매크로블록 내의 일부 파티션들이 상이한 인트라-코딩 모드들 또는 상이한 인터-코딩 모드들로 코딩되도록 큰 매크로블록을 혼합된 모드들로 코딩하는 것이 가능하다.
비디오 인코더 (50) 는 또한 매크로블록 타입에 따라 각각의 파티션을 정의할 수도 있다. 매크로블록 타입은 인코딩된 비트스트림 내의 신택스 엘리먼트로서, 예를 들어, 매크로블록 헤더 내의 신택스 엘리먼트로서 포함될 수도 있다. 일반적으로, 매크로블록 타입은 상기 설명한 바와 같이, 매크로블록이 파티셔닝되는 방법, 및 매크로블록의 파티션들 각각을 인코딩하기 위한 각각의 방법들 또는 모드들을 식별하는데 이용될 수도 있다. 파티션들을 인코딩하는 방법들은 인트라-코딩 및 인터-코딩 뿐만 아니라 인트라-코딩 (예를 들어, I_16×16, I_8×8, I_4×4) 또는 인터-코딩 (예를 들어, P_16×16, P_16×8, P_8×16, P_8×8, P_8×4, P_4×8 및 P_4×4 또는 B_16×16, B_16×8, B_8×16, B_8×8, B_8×4, B_4×8 및 B_4×4) 의 특정 모드들을 포함할 수도 있다.
P-블록들에 대해 이하 더 상세화한 표 1 의 예에 대하여, 그리고 이하 B-블록들에 대한 표 2 의 예에 대하여 언급한 바와 같이, 파티션 레벨 0 블록들은 64×64 픽셀들을 가진 매크로블록을 나타내는, MB64_type 신택스 엘리먼트에 따라 정의될 수도 있다. 유사한 타입 정의가 임의의 MB[N]_type 에 대해 형성될 수도 있으며, 여기서 [N] 은 N×N 픽셀들을 가진 블록을 지칭하고, N 은 16 보다 큰 정수일 수도 있는 포지티브 정수이다. 도 4a 상의 마지막 컬럼에 도시한 바와 같이, N×N 블록이 사이즈 (N/2)×(N/2) 의 4 개의 파티션들을 갖는 경우에, 4 개의 파티션들 각각은 그들 자신의 타입의 정의, 예를 들어, MB[N/2]_type 을 수신할 수도 있다. 예를 들어, 4 개의 32×32 픽셀 파티션들을 가진 (타입 MB64_type 의) 64×64 픽셀 블록에 대해, 비디오 인코더 (50) 는 4 개의 32×32 픽셀 파티션들 각각에 대해 MB32_type 을 도입할 수도 있다. 이들 매크로블록 타입 신택스 엘리먼트들은 본 개시물에서 설명한 바와 같이, 디코더 (60) 가 큰 매크로블록들 및 큰 매크로블록들의 다양한 파티션들을 디코딩하게 도울 수도 있다. 각각의 N×N 픽셀 매크로블록 (여기서 N 은 16 보다 크다) 은 일반적으로 고유한 타입 정의에 대응한다. 따라서, 인코더는 특정 매크로블록에 대해 적절한 신택스를 생성하고 프레임, 슬라이스 또는 매크로블록들의 시퀀스와 같은 코딩된 유닛 내의 매크로블록들의 최대 사이즈를 디코더에 나타낼 수도 있다. 이런 식으로, 디코더는 신택스 디코더의 표시를 수신하여 코딩된 유닛의 매크로블록들에 적용할 수도 있다. 이것은 또한 인코더가 매크로블록들에 적용하기 위한 신택스 디코더들의 타입, 예를 들어, 표준 H.264 또는 본 개시물의 기술들에 따라 보다 큰 매크로블록들의 프로세싱을 위해 특정된 것을 나타낼 수도 있다는 점에서 H.264 와 같은 기존의 코딩 표준들과 역호환가능할 수도 있다는 것을 보장한다.
일반적으로, 각각의 MB[N]_type 정의는 대응하는 타입에 대해, 대응하는 타입의 블록 내의 픽셀들의 수 (예를 들어, 64×64), 블록에 대한 기준 프레임 (또는 기준 리스트), 블록에 대한 파티션들의 수, 블록의 각각의 파티션의 사이즈, 각각의 파티션이 인코딩되는 방법 (예를 들어, 인트라 또는 인터 및 특정 모드들), 및 파티션이 인터-코딩되는 경우에 블록의 각각의 파티션에 대한 기준 프레임 (또는 기준 리스트) 을 나타낼 수도 있다. 16×16 및 보다 작은 블록들의 경우, 비디오 인코더 (50) 는 일부 예에서는 H.264 표준에 의해 특정된 타입들과 같은 블록들의 타입들로서 종래의 타입 정의를 이용할 수도 있다. 다른 예에서는, 비디오 인코더 (50) 는 16×16 및 보다 작은 블록들에 대해 새롭게 정의된 블록 타입들을 적용할 수도 있다.
비디오 인코더 (50) 는 통상의 매크로블록 사이즈들 및 파티션들을 이용한 종래의 인터-코딩 또는 인트라-코딩 방법들, 이를 테면 ITU H.264 에 의해 규정된 방법들과 본 개시물에 의해 설명된 보다 큰 매크로블록들 및 파티션들을 이용한 인터-코딩 또는 인트라-코딩 방법들 양자를 평가하고, 각각의 접근법의 레이트-왜곡 특성들을 비교하여 어느 방법이 최상의 레이트-왜곡 성능을 초래하는지를 결정할 수도 있다. 비디오 인코더 (50) 는 그 후 최상의 코딩 접근법을 선택하여, 인터-모드 또는 인트라-모드 매크로블록 사이즈 (큰, 더 큰 또는 통상의 사이즈) 를 포함하는 코딩될 블록에 적용하고, 그 코딩 접근법에 대한 최적 또는 허용가능한 레이트-왜곡 결과들에 기초하여 파티셔닝할 수도 있다. 일 예시로서, 비디오 인코더 (50) 는 64×64 매크로블록들, 32×32 매크로블록들 또는 16×16 매크로블록들의 이용을 선택하여, 비디오 인코더가 이러한 매크로블록 사이즈들을 이용하는 경우에 생성된 레이트-왜곡 결과들에 기초하여 특정 프레임 또는 슬라이스를 인코딩할 수도 있다.
일반적으로, 2 개의 상이한 접근법들이 큰 매크로블록들을 이용하여 인트라 모드들을 설계하는데 이용될 수도 있다. 일 예로서, 인트라-코딩 동안, 공간 예측이 바로 이웃 블록들에 기초하여 블록에 대해 수행될 수도 있다. 본 개시물의 기술들에 따르면, 비디오 인코더 (50) 는 공간 예측 32×32 블록들을 바로 그들의 이웃 픽셀들에 기초하여 생성하고 공간 예측 64×64 블록들을 바로 그들의 이웃 픽셀들에 기초하여 생성할 수도 있다. 이런 식으로, 공간 예측이 16×16 인트라 블록들과 비교하여 더 큰 스케일에서 수행될 수도 있다. 따라서, 이들 기술들은 일부 예에서는 예를 들어 프레임 또는 슬라이스당 더 적은 수의 블록들 또는 파티션들로 약간의 비트 레이트 절약을 초래할 수도 있다.
다른 예로서, 비디오 인코더 (50) 는 4 개의 N×N 블록들을 함께 그룹화하여 (N*2)×(N*2) 블록을 생성한 후 (N*2)×(N*2) 블록을 인코딩할 수도 있다. 기존의 H.264 인트라-코딩 모드들을 이용하면, 비디오 인코더 (50) 는 4 개의 인트라-코딩된 블록들을 함께 그룹화하여, 큰 인트라-코딩된 매크로블록을 형성할 수도 있다. 예를 들어, 각각이 사이즈가 16×16 인 4 개의 인트라-코딩된 블록들은 함께 그룹화되어 큰 32×32 인트라-코딩된 블록을 형성할 수 있다. 비디오 인코더 (50) 는 H.264 에 따라 상이한 인코딩 모드, 예를 들어, I_16×16, I_8×8 또는 I_4×4 를 이용하여 4 개의 대응하는 N×N 블록들 각각을 인코딩할 수도 있다. 이런 식으로, 각각의 16×16 블록은 예를 들어, 바람직한 인코딩 결과들을 촉진시키기 위해, 비디오 인코더 (50) 에 의한 그 자신의 공간 예측 모드를 할당받을 수 있다.
비디오 인코더 (50) 는 상기 설명된 2 개의 상이한 방법들 중 어느 하나에 따라 인트라 모드들을 설계하고, 상이한 방법들을 분석하여 어느 접근법이 더 양호한 인코딩 결과들을 제공하는지를 결정할 수도 있다. 예를 들어, 비디오 인코더 (50) 는 상이한 인트라 모드 접근법들을 적용하고, 그들을 단일의 후보 풀 (condidate pool) 에 배치하여 그들이 최상의 레이트-왜곡 성능을 위해 서로 경쟁하는 것을 허용할 수도 있다. 상이한 접근법들 간의 레이트-왜곡 비교를 이용하면, 비디오 인코더 (50) 는 각각의 파티션 및/또는 매크로블록을 인코딩하는 방법을 결정할 수 있다. 특히, 비디오 인코더 (50) 는 소정의 매크로블록에 대해 최상의 레이트-왜곡 성능을 야기하는 코딩 모드들을 선택하고 그 코딩 모드들을 적용하여 매크로블록을 인코딩할 수도 있다.
도 5 는 큰 매크로블록의 다양한 파티션 레벨들의 계층적 뷰를 예시한 개념도이다. 도 5 는 또한 도 4a 에 관하여 설명한 바와 같은 큰 매크로블록의 다양한 파티션 레벨들 간의 관계를 나타낸다. 도 5 의 예에 예시한 바와 같이 파티션 레벨의 각각의 블록은 대응하는 코딩된 블록 패턴 (CBP) 값을 가질 수도 있다. CBP 값들은 블록 또는 매크로블록을 기술하는 신택스 정보의 일부를 형성한다. 일 예에서, CBP 값들은 각각 변환 및 양자화 연산들을 뒤따르는 소정의 블록에 임의의 넌-제로 변환 계수 값들이 존재하는지 여부를 나타내는 1-비트 신택스 값들이다.
일부 경우에, 예측 블록은 잔류 변환 계수들 모두가 0 으로 양자화되도록 픽셀 컨텐트에 있어서 코딩될 블록에 매우 가까울 수도 있으며, 이 경우에는 코딩된 블록에 대한 변환 계수들을 송신할 필요가 없을 수도 있다. 대신에, 블록에 대한 CBP 값은 코딩된 블록이 어떠한 넌-제로 계수들도 포함하지 않는다는 것을 나타내기 위해 0 으로 설정될 수도 있다. 대안으로, 블록이 적어도 하나의 넌-제로 계수를 포함한다면, CBP 값은 1 로 설정될 수도 있다. 디코더 (60) 는 CBP 값들을 이용하여, 코딩되는, 즉 하나 이상의 넌-제로 변환 계수들을 가진 잔류 블록들 대 코딩되지 않는, 즉 어떠한 넌-제로 변환 계수들도 포함하지 않는 블록들을 식별할 수도 있다.
본 개시물에서 설명된 기술들 중 일부 기술들에 따르면, 인코더는 그들의 파티션들을 포함하는 그 매크로블록들이 적어도 하나의 넌-제로 계수를 갖는지 여부에 기초하여 CBP 값들을 큰 매크로블록들에 계층적으로 할당할 수도 있고, 어느 파티션들이 넌-제로 계수들을 갖는지를 나타내기 위해 CBP 값들을 파티션들에 할당할 수도 있다. 큰 매크로블록들에 대한 계층적 CBP 는 코딩된 큰 매크로블록들과 비코딩된 큰 매크로블록들을 신속히 식별하기 위해 큰 매크로블록들의 프로세싱을 용이하게 하고, 큰 매크로블록에 대한 각각의 파티션 레벨에서의 코딩된 파티션들의 식별을 허용하여 블록들을 디코딩하기 위해 잔류 데이터를 이용할 필요가 있는지 여부를 결정할 수 있다.
일 예에서, 레벨 0 에서의 64×64 픽셀 매크로블록은 CBP64 값, 예를 들어, 1-비트 값을 포함하는 신택스 정보를 포함하여 임의의 파티션들을 포함하는 전체 64×64 픽셀 매크로블록이 넌-제로 계수들을 갖는지 여부를 나타낼 수도 있다. 일 예에서, 비디오 인코더 (50) 는 CBP64 비트를 예를 들어 "1" 의 값으로 "설정" 하여, 64×64 픽셀 매크로블록이 적어도 하나의 넌-제로 계수를 포함한다는 것을 나타낸다. 따라서, CBP64 값이 예를 들어 "1" 의 값으로 설정되는 경우, 64×64 픽셀 매크로블록은 매크로블록의 어딘가에 적어도 하나의 넌-제로 계수를 포함한다. 다른 예에서, 비디오 인코더 (50) 는 CBP64 값을 예를 들어 "0" 의 값으로 "클리어" 하여 64×64 픽셀 매크로블록이 전부 제로 계수들을 갖는다는 것을 나타낸다. 따라서, CBP64 값이 예를 들어 "0" 의 값으로 클리어되는 경우, 64×64 픽셀 매크로블록은 전부 제로 계수들을 갖는 것으로 나타내진다. "0" 의 CBP64 값들을 가진 매크로블록들은 일반적으로 비트스트림에서 잔류 데이터의 송신을 요구하지 않는 반면, "1" 의 CBP64 값들을 가진 매크로블록들은 일반적으로 이러한 매크로블록들을 디코딩하는데 있어서 이용하기 위해 비트스트림에서 잔류 데이터의 송신을 요구한다.
전부 제로 계수들을 갖는 64×64 픽셀 매크로블록은 그의 파티션들 또는 서브-블록들에 대한 CBP 값들을 포함할 필요가 없다. 즉, 64×64 픽셀 매크로블록이 전부 제로 계수들을 갖기 때문에, 파티션들 각각은 또한 반드시 전부 제로 계수들을 갖는다. 그와는 반대로, 적어도 하나의 넌-제로 계수를 포함하는 64×64 픽셀 매크로블록은 다음의 파티션 레벨에서의 파티션들에 대한 CBP 값들을 더 포함할 수도 있다. 예를 들어, 1 의 값을 가진 CBP64 는 64×64 블록의 각각의 32×32 파티션에 대한 1-비트 값 CBP32 의 형태의 추가적인 신택스 정보를 포함할 수도 있다. 즉, 일 예에서, 64×64 픽셀 매크로블록의 각각의 32×32 픽셀 파티션 (이를 테면 도 5 에서의 레벨 1 의 4 개의 파티션 블록들) 은 64×64 픽셀 매크로블록의 신택스 정보의 일부로서 CBP32 값을 할당받는다. CBP64 값의 경우와 마찬가지로, 각각의 CBP32 값은 대응하는 32×32 픽셀 블록이 적어도 하나의 넌-제로 계수를 갖는 경우에 1 의 값으로 설정되고 대응하는 32×32 픽셀 블록이 전부 제로 계수들을 갖는 경우에 0 의 값으로 클리어되는 비트를 포함할 수도 있다. 인코더는 또한, 프레임, 슬라이스 또는 시퀀스와 같은 복수의 매크로블록들을 포함하는 코딩된 유닛의 신택스에서, 각각의 매크로블록의 신택스 정보를 인터프리팅하는 방법, 예를 들어 코딩된 유닛 내의 매크로블록들의 프로세싱을 위해 어느 신택스 디코더를 이용할지를 디코더에 나타내기 위해 코딩된 유닛 내의 매크로블록의 최대 사이즈를 나타낼 수도 있다.
이런 식으로, 전부 제로 계수들을 갖는 64×64 픽셀 매크로블록은 단일 비트를 이용하여 매크로블록이 전부 제로 계수들을 갖는다는 사실을 나타낼 수도 있는 반면, 적어도 하나의 넌-제로 계수를 가진 64×64 픽셀 매크로블록은 적어도 5 개의 비트들, 즉, 64×64 픽셀 매크로블록이 넌-제로 계수를 갖는다는 것을 나타내기 위한 제 1 비트, 및 각각이 매크로블록의 4 개의 32×32 픽셀 파티션들 중 대응하는 하나가 적어도 하나의 넌-제로 계수를 포함하는지 여부를 나타내는, 4 개의 추가적인 비트들을 포함하는 CBP 신택스 정보를 포함할 수도 있다. 일부 예에서, 4 개의 추가적인 비트들 중 처음 3 개가 제로인 경우, 네번째 추가적인 비트가 포함되지 않을 수도 있는데, 디코더는 마지막 파티션이 1 인 것으로 인터프리팅할 수도 있다. 즉, 인코더는 처음 3 개의 비트들이 제로인 경우, 및 더 높은 레벨의 계층구조를 나타내는 비트가 1 의 값을 갖는 경우 마지막 비트가 1 의 값을 갖는다는 것을 결정할 수도 있다. 예를 들어, "10001" 의 CBP64 값의 프리픽스는 제 1 비트가 4 개의 파티션들 중 적어도 하나가 넌-제로 계수들을 갖는다는 것을 나타내고, 다음 3 개의 제로들이 처음 3 개의 파티션들이 전부 제로 계수들을 갖는다는 것을 나타내기 때문에 "1000" 으로 단축될 수도 있다. 따라서, 디코더는 예를 들어, 비트 스트링 "1000" 으로부터, 이 사실을 디코더에 알리는 명시 비트 (explicit bit) 없이, 넌-제로 계수를 포함하는 마지막 파티션이라는 것을 추정할 수도 있다. 즉, 디코더는 CBP64 프리픽스 "1000" 을 "10001" 로서 인터프리팅할 수도 있다.
마찬가지로, 1-비트 CBP32 는 32×32 픽셀 파티션이 적어도 하나의 넌-제로 계수를 포함하는 경우 "1" 의 값으로 설정될 수도 있고, 계수들 전부가 0 의 값을 갖는 경우에 "0" 의 값으로 설정될 수도 있다. 32×32 픽셀 파티션이 1 의 CBP 값을 갖는다면, 다음 파티션 레벨에서의 그 32×32 파티션의 파티션들은 각각의 파티션들이 임의의 넌-제로 계수들을 포함하는지 여부를 나타내기 위해 CBP 값들을 할당받을 수도 있다. 따라서, CBP 값들은 어떠한 추가 파티션 레벨들이 없거나 또는 넌-제로 계수들을 포함하는 어떠한 파티션들도 없을 때까지 각각의 파티션 레벨에서 계층적으로 할당될 수도 있다.
상기 방식으로, 인코더들 및/또는 디코더들은 큰 매크로블록 (예를 들어 64×64 또는 32×32) 및 그의 파티션들이 적어도 하나의 넌-제로 계수를 포함하는지 또는 전부 제로 계수들을 포함하는지를 나타내기 위해 계층적 CBP 값들을 이용할 수도 있다. 따라서, 인코더는 매크로블록 블록이 16×16 픽셀들보다 큰 픽셀들을 포함하도록 디지털 비디오 스트림의 코딩된 유닛의 큰 매크로블록을 인코딩하고, 블록의 사이즈를 식별하는 블록 타입 신택스 정보를 생성하고, CBP 값이 블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 식별하도록 블록에 대한 CBP 값을 생성하며, 적용가능하다면, 블록의 다양한 파티션들 레벨들에 대한 추가적인 CBP 값들을 생성할 수도 있다.
일 예에서, 계층적 CBP 값들은 길이가 프리픽스의 값들에 의존하는 비트들 (예를 들어, 비트 벡터) 의 어레이를 포함할 수도 있다. 그 어레이는 또한 도 5 에 도시한 바와 같이, 트리 구조와 같은 CBP 값들의 계층구조를 나타낼 수도 있다. 어레이는 넓이-우선 (breadth-first) 방식으로 트리의 노드들을 나타낼 수도 있으며, 여기서 각 노드는 어레이에서의 비트에 대응한다. 일 예에서, 트리의 노드가 "1" 로 설정되는 비트를 갖는 경우에, 그 노드는 4 개의 브랜치들 (4 개의 파티션들에 대응) 을 갖고, 비트가 "0" 으로 클리어되는 경우에, 노드는 어떠한 브랜치들도 갖지 않는다.
이 예에서, 특정 노드 X 로부터 브랜치하는 노드들의 값들을 식별하기 위해, 인코더 및/또는 디코더는 :
Figure 112013039196499-pat00002
를 계산함으로써 노드 x 로부터 브랜치하는 노드들을 나타내는 노드 Y 에서 시작하는 4 개의 연속되는 비트들을 결정할 수도 있으며, 여기서 tree[] 는 0 의 시작 인덱스를 가진 비트들의 어레이에 대응하고, i 는 어레이 tree[] 에 대한 정수 인덱스이고, x 는 tree[] 에서의 노드 X 의 인덱스에 대응하며, y 는 노드 X 의 제 1 브랜치-노드인 노드 Y 의 인덱스에 대응한다. 3 개의 후속 어레이 포지션들 (즉, y+1, y+2 및 y+3) 은 노드 X 의 다른 브랜치-노드들에 대응한다.
비디오 인코더 (50) (도 2) 와 같은 인코더는 64×64 픽셀 매크로블록의 신택스의 일부로서, 16×16 블록들에 대한 CBP 값들을 설정하기 위해 ITU H.264 에 의해 규정된 방법들과 같은 기존의 방법들을 이용하여 적어도 하나의 넌-제로 계수를 가진 32×32 픽셀 파티션들의 16×16 픽셀 파티션들에 대해 CBP 값들을 할당할 수도 있다. 인코더는 또한 파티션들의 사이즈, 파티션들에 대응하는 블록의 타입 (예를 들어, 크로마 블록 또는 루마 블록) 또는 파티션들의 다른 특성들에 기초하여 적어도 하나의 넌-제로 계수를 갖는 32×32 픽셀 파티션들의 파티션들에 대한 CBP 값들을 선택할 수도 있다. 32×32 픽셀 파티션의 파티션의 CBP 값을 설정하는 방법 예가 도 8 및 도 9 에 관하여 더욱 상세하게 설명된다.
도 6 내지 도 9 는 본 개시물의 기술들에 따라 다양한 코딩된 블록 패턴 (CBP) 값들을 설정하는 방법 예를 예시한 흐름도들이다. 도 6 내지 도 9 의 방법 예가 64×64 픽셀 매크로블록에 관하여 설명되지만, 매크로블록들의 다른 사이즈들에 대해 계층적 CBP 값들을 할당하기 위해 유사한 기술들이 적용될 수도 있다는 것이 이해되어야 한다. 도 6 내지 도 9 의 예가 비디오 인코더 (50) (도 2) 에 관하여 설명되지만, 다른 인코더들이 CBP 값들을 표준보다 큰 매크로블록들에 할당하기 위해 유사한 방법들을 이용할 수도 있다는 것이 이해되어야 한다. 마찬가지로, 디코더들은 매크로블록에 대한 특정 CBP 값의 의미를 인터프리팅하기 위해 유사하지만 상호간의 방법들을 이용할 수도 있다. 예를 들어, 비트스트림에서 수신된 인터-코딩된 매크로블록이 "0" 의 CBP 값을 갖는다면, 디코더는 매크로블록에 대해 어떠한 잔류 데이터도 수신하지 않을 수도 있으며 디코딩된 매크로블록으로서 모션 벡터에 의해 식별된 예측 블록, 또는 매크로블록의 파티션들에 관하여 모션 벡터들에 의해 식별된 예측 블록들의 그룹을 단순히 생성할 수도 있다.
도 6 은 64×64 픽셀 매크로블록의 일 예의 CBP64 값을 설정하는 방법 예를 예시한 흐름도이다. 64×64 보다 큰 매크로블록들에 대해 유사한 방법들이 적용될 수도 있다. 처음에, 비디오 인코더 (50) 는 64×64 픽셀 매크로블록을 수신한다 (100). 그 후, 모션 추정 유닛 (36) 및 모션 보상 유닛 (35) 이 각각 매크로블록을 인코딩하기 위해 하나 이상의 모션 벡터들 및 하나 이상의 잔류 블록들을 생성할 수도 있다. 변환 유닛 (38) 의 출력은 일반적으로 인터-코딩된 블록의 잔류 블록 또는 인트라-코딩된 블록에 대한 잔류 변환 계수 값들의 어레이를 포함하며, 어레이는 일련의 양자화된 변환 계수들을 생성하기 위해 양자화 유닛 (40) 에 의해 양자화된다.
엔트로피 코딩 유닛 (46) 은 엔트로피 코딩 및 엔트로피 코딩과 별개의 다른 코딩 기능들을 제공할 수도 있다. 예를 들어, CAVLC, CABAC, 또는 다른 엔트로피 코딩 기능들에 더하여, 엔트로피 코딩 유닛 (46) 또는 비디오 인코더 (50) 의 다른 유닛은 큰 매크로블록들 및 파티션들에 대한 CBP 값들을 결정할 수도 있다. 특히, 엔트로피 코딩 유닛 (46) 은 매크로블록이 적어도 하나의 넌-제로의 양자화된 변환 계수를 갖는지 여부를 먼저 결정 (102) 함으로써 64×64 픽셀 매크로블록에 대한 CBP64 값을 결정할 수도 있다. 엔트로피 코딩 유닛 (46) 이 변환 계수들 전부가 0 의 값을 갖는다는 것을 결정한다면 (102 의 "아니오" 브랜치), 엔트로피 코딩 유닛 (46) 은 64×64 매크로블록에 대한 CBP64 값을 클리어하고, 예를 들어, CBP64 값에 대한 비트를 "0" 으로 리셋한다 (104). 엔트로피 코딩 유닛 (46) 이 64×64 매크로블록에 대한 적어도 하나의 넌-제로 계수를 식별하는 경우 (102 의 "예" 브랜치), 엔트로피 코딩 유닛 (46) 은 CBP64 값을 설정, 예를 들어 CBP64 값에 대한 비트를 "1" 로 설정한다 (106).
매크로블록이 전부 제로 계수들을 갖는 경우, 엔트로피 코딩 유닛 (46) 은 매크로블록의 파티션들에 대해 임의의 추가적인 CBP 값들을 확립할 필요가 없으며 이는 오버헤드를 저감시킬 수도 있다. 그러나 일 예에서, 매크로블록이 적어도 하나의 넌-제로 계수를 갖는 경우에, 엔트로피 코딩 유닛 (46) 은 64×64 픽셀 매크로블록의 4 개의 32×32 픽셀 파티션들 각각에 대한 CBP 값들을 계속 결정한다 (108). 엔트로피 코딩 유닛 (46) 은 각각이 64×64 매크로블록의 4 개의 32×32 픽셀 파티션들 중 상이한 파티션에 대응하는 4 개의 CBP 값들을 확립하기 위해, 4 개의 파티션들 각각에 대해 한번 씩 도 7 에 관하여 설명된 방법을 4 회 이용할 수도 있다. 이런 식으로, 매크로블록이 전부 제로 계수들을 갖는 경우에, 엔트로피 코딩 유닛 (46) 은 매크로블록이 전부 제로 계수들을 갖는다는 것을 나타내기 위해 "0" 의 값을 가진 단일 비트를 송신할 수도 있는 반면에, 매크로블록이 적어도 하나의 넌-제로 계수를 갖는 경우에, 엔트로피 코딩 유닛 (46) 은 5 개의 비트들, 즉, 매크로블록에 대한 1 비트, 및 각각이 매크로블록의 4 개의 파티션들 중 하나의 파티션에 대응하는 4 개의 비트들을 송신할 수도 있다. 또한, 파티션이 적어도 하나의 넌-제로 계수를 포함하는 경우, 그 파티션에 대한 잔류 데이터가 인코딩된 비트스트림에서 전송될 수도 있다. 상기 설명된 CBP64 의 예의 경우와 마찬가지로, 4 개의 추가적인 비트들 중 처음 3 개가 제로인 경우에, 네번째 추가적인 비트는, 디코더가 1 의 값을 갖는다는 것을 결정할 수도 있기 때문에 필수적이지 않을 수도 있다. 따라서, 일부 예에서, 인코더는 단지 3 개의 제로들 및 하나의 1, 즉 "0001" 보다는 3 개의 제로들, 즉 "000" 을 전송할 수도 있다.
도 7 은 64×64 픽셀 매크로블록의 32×32 픽셀 파티션의 CBP32 값을 설정하는 방법 예를 예시한 흐름도이다. 처음에, 다음 파티션 레벨에 대해, 엔트로피 코딩 유닛 (46) 은 매크로블록의 32×32 픽셀 파티션, 예를 들어, 도 6 에 관하여 참조된 4 개의 파티션들 중 하나를 수신한다 (110). 그 후, 엔트로피 코딩 유닛 (46) 은 파티션이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 먼저 결정 (112) 함으로써 32×32 픽셀 파티션에 대한 CBP32 값을 결정한다. 엔트로피 코딩 유닛 (46) 이 파티션에 대한 계수들 전부가 제로의 값을 갖는다는 것을 결정하는 경우 (112 의 "아니오" 브랜치), 엔트로피 코딩 유닛 (46) 은 CBP32 값을 클리어, 예를 들어 CBP32 값에 대한 비트를 "0" 으로 리셋한다 (114). 엔트로피 코딩 유닛 (46) 이 파티션의 적어도 하나의 넌-제로 계수를 식별하는 경우 (112 의 "예" 브랜치), 엔트로피 코딩 유닛 (46) 은 CBP32 값을 설정, 예를 들어, CBP32 값에 대한 비트를 "1" 의 값으로 설정한다 (116).
일 예에서, 파티션이 전부 제로 계수들을 갖는 경우에, 엔트로피 코딩 유닛 (46) 은 그 파티션에 대해 임의의 추가적인 CBP 값들을 확립하지 않는다. 그러나, 파티션이 적어도 하나의 넌-제로 계수를 포함하는 경우, 엔트로피 코딩 유닛 (46) 은 매크로블록의 32×32 픽셀 파티션의 4 개의 16×16 픽셀 파티션들 각각에 대한 CBP 값들을 결정한다. 엔트로피 코딩 유닛 (46) 은 4 개의 16×16 픽셀 파티션들 중 하나에 각각 대응하는 4 개의 CBP16 값들을 확립하기 위해 도 8 에 관하여 설명된 방법을 이용할 수도 있다.
이런 식으로, 파티션이 전부 제로 계수들을 갖는 경우에, 엔트로피 코딩 유닛 (46) 은 파티션이 전부 제로 계수들을 갖는다는 것을 나타내기 위해 "0" 의 값으로 비트를 설정할 수도 있는 반면, 파티션이 적어도 하나의 넌-제로 계수를 갖는 경우에, 엔트로피 코딩 유닛 (46) 은 5 개의 비트들, 즉, 파티션에 대한 하나의 비트 및 매크로블록의 파티션의 4 개의 서브-파티션들 중 상이한 파티션에 각각 대응하는 4 개의 비트들을 포함할 수도 있다. 따라서, 각각의 추가적인 파티션 레벨은 이전의 파티션 레벨에서의 파티션이 적어도 하나의 넌-제로 변환 계수 값을 가진 경우에 4 개의 추가적인 CBP 비트들을 제시할 수도 있다. 일 예로서, 64×64 매크로블록이 1 의 CBP 값을 갖고, 4 개의 32×32 파티션들이 각각 1, 0, 1 및 1 의 CBP 값들을 갖는다면, 그 포인트까지의 전체 CBP 값은 11011 이다. 추가적인 CBP 비트들이 32×32 파티션들의 예를 들어 16×16 파티션들로의 추가적인 파티션을 위해 부가될 수도 있다.
도 8 은 64×64 픽셀 매크로블록의 32×32 픽셀 파티션의 16×16 픽셀 파티션의 CBP16 값을 설정하는 방법 예를 예시한 흐름도이다. 소정의 16×16 픽셀 파티션들에 대해, 비디오 인코더 (50) 는 이하 설명한 바와 같이, ITU H.264 와 같은 비디오 코딩 표준에 의해 규정한 바와 같은 CBP 값들을 이용할 수도 있다. 다른 16×16 파티션들에 대해, 비디오 인코더 (50) 는 본 개시물의 다른 기술들에 따라 CBP 값들을 이용할 수도 있다. 처음에, 도 8 에 도시한 바와 같이, 엔트로피 코딩 유닛 (46) 은 16×16 파티션, 예를 들어, 도 7 에 관하여 설명된 32×32 파티션의 16×16 파티션들 중 하나를 수신한다 (120).
엔트로피 코딩 유닛 (46) 은 그 후 16×16 픽셀 파티션에 대한 모션 파티션이 8×8 픽셀 블록보다 큰지 여부를 결정할 수도 있다 (122). 일반적으로, 모션 파티션은 모션이 집중되는 파티션을 기술한다. 예를 들어, 단 하나의 모션 벡터를 가진 16×16 픽셀 파티션이 16×16 모션 파티션인 것으로 간주될 수도 있다. 유사하게, 하나의 모션 벡터를 각각 갖는 2 개의 8×16 파티션들을 가진 16×16 픽셀 파티션의 경우, 2 개의 8×16 파티션들 각각이 8×16 모션 파티션인 것으로 간주될 수도 있다. 어느 경우라도, 모션 파티션이 8×8 픽셀 블록보다 크지 않은 경우에는 (122 의 "아니오" 브랜치), 엔트로피 코딩 유닛 (46) 은 도 8 의 예에서, ITU H.264 에 의해 규정한 것과 동일한 방식으로 CBP 값을 16×16 픽셀 파티션에 할당한다 (124).
8×8 픽셀 블록보다 큰 16×16 픽셀 파티션에 대한 모션 파티션이 존재하는 경우 (122 의 "예" 브랜치), 엔트로피 코딩 유닛 (46) 은 단계 125 의 후속 단계들을 이용하여 LUMACBP_16 값을 구성 및 전송한다 (125). 도 8 의 예에서, LUMACBP_16 값을 구성하기 위해, 엔트로피 코딩 유닛 (46) 은 파티션의 16×16 픽셀 루마 컴포넌트가 적어도 하나의 넌-제로 계수를 갖는지 여부를 결정한다 (126). 16×16 픽셀 루마 컴포넌트가 전부 제로 계수들을 갖는 경우 (126 의 "아니오" 브랜치), 엔트로피 코딩 유닛 (46) 은 도 8 의 예에서, ITU H.264 의 코딩된 블록 패턴 크로마 부분에 따라 CBP16 값을 할당한다 (128).
엔트로피 코딩 유닛 (46) 이 16×16 픽셀 루마 컴포넌트가 적어도 하나의 넌-제로 계수를 갖는다는 것을 결정하는 경우 (126 의 "예" 브랜치), 엔트로피 코딩 유닛 (46) 은 16×16 픽셀 파티션에 대한 변환-사이즈 플래그를 결정한다 (130). 변환-사이즈 플래그는 일반적으로 그 파티션에 대해 이용되는 변환을 나타낸다. 변환-사이즈 플래그에 의해 나타내진 변환은 4×4 변환, 8×8 변환, 16×16 변환, 16×8 변환 또는 8×16 변환 중 하나를 포함할 수도 있다. 변환-사이즈 플래그는 가능한 변환들 중 하나를 식별하는 열거값 (enumerated value) 에 대응하는 정수 값을 포함할 수도 있다. 엔트로피 코딩 유닛 (46) 은 변환-사이즈 플래그가 변환 사이즈가 16×8 (또는 8×16) 이상이라는 것을 나타내는지 여부를 결정할 수도 있다 (132).
변환-사이즈 플래그가 변환 사이즈가 16×8 (또는 8×16) 이상이라는 것을 나타내지 않는 경우 (132 의 "아니오" 브랜치), 엔트로피 코딩 유닛 (46) 은 도 8 의 예에서, ITU H.264 에 따라 값을 CBP16 에 할당한다 (134). 변환-사이즈 플래그가 변환 사이즈가 16×8 (또는 8×16) 이상이라는 것을 나타내는 경우 (132 의 "예" 브랜치), 엔트로피 코딩 유닛 (46) 은 16×16 픽셀 파티션에 대한 타입이 2 개의 16×8 픽셀 파티션들인지 2 개의 8×16 픽셀 파티션들인지를 결정한다 (136).
16×16 픽셀 파티션에 대한 타입이 2 개의 16×8 픽셀 파티션들이 아니고 2 개의 8×16 픽셀 파티션들이 아닌 경우 (138 의 "아니오" 브랜치), 엔트로피 코딩 유닛 (46) 은 도 8 의 예에서, ITU H.264 에 의해 규정된 크로마 코딩된 블록 파티션에 따라 CBP16 값을 할당한다 (140). 16×16 픽셀 파티션에 대한 타입이 2 개의 16×8 픽셀 파티션들 또는 2 개의 8×16 픽셀 파티션들 중 어느 하나인 경우 (138 의 "예" 브랜치), 엔트로피 코딩 유닛 (46) 은 또한 ITU H.264 에 의해 규정된 크로마 코딩된 블록 패턴을 이용하지만, 또한, 예를 들어, 도 9 에 관하여 설명된 방법에 따라, CBP16 값을 2-비트 LUMA16×8_CBP 값에 할당한다 (142).
도 9 는 2-비트 LUMA16×8_CBP 값을 결정하는 방법 예를 예시한 흐름도이다. 엔트로피 코딩 유닛 (46) 은 2 개의 16×8 픽셀 파티션들 또는 2 개의 8×16 픽셀 파티션들로 추가 파티셔닝되는 16×16 픽셀 파티션을 수신한다 (150). 엔트로피 코딩 유닛 (46) 은 일반적으로 16×16 픽셀 파티션의 대응하는 서브-블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부에 따라 LUMA16×8_CBP 의 각각의 비트를 할당한다.
엔트로피 코딩 유닛 (46) 은 16×16 픽셀 파티션의 제 1 서브-블록이 적어도 하나의 넌-제로 계수를 갖는지 여부를 결정하여 제 1 서브-블록이 적어도 하나의 넌-제로 계수를 갖는지 여부를 결정한다 (152). 제 1 서브-블록이 전부 제로 계수들을 갖는 경우 (152 의 "아니오" 브랜치), 엔트로피 코딩 유닛 (46) 은 LUMA16×8_CBP 의 제 1 비트를 클리어하고, 예를 들어, LUMA16×8_CBP[0] 에 "0" 의 값을 할당한다 (154). 제 1 서브-블록이 적어도 하나의 넌-제로 계수를 갖는 경우 (152 의 "예" 브랜치), 엔트로피 코딩 유닛 (46) 은 LUMA16×8_CBP 의 제 1 비트를 설정, 예를 들어, LUMA16×8_CBP[0] 에 "1" 의 값을 할당한다 (156).
엔트로피 코딩 유닛 (46) 은 또한 16×16 픽셀 파티션의 제 2 서브-파티션이 적어도 하나의 넌-제로 계수를 갖는지 여부를 결정한다 (158). 제 2 서브-파티션이 전부 제로 계수들을 갖는 경우 (158 의 "아니오" 브랜치), 엔트로피 코딩 유닛 (46) 은 LUMA16×8_CBP 의 제 2 비트를 클리어, 예를 들어, LUMA16×8_CBP[1] 에 "0" 의 값을 할당한다 (160). 제 2 서브-블록이 적어도 하나의 넌-제로 계수를 갖는 경우 (158 의 "예" 브랜치), 엔트로피 코딩 유닛 (46) 은 LUMA16×8_CBP 의 제 2 비트를 설정, 예를 들어 LUMA16×8_CBP[1] 에 "1" 의 값을 할당한다 (162).
다음의 의사코드는 도 8 및 도 9 에 관하여 설명된 방법들의 하나의 구현 예를 제공한다 :
Figure 112013039196499-pat00003
상기 의사코드에서, "lumacbp16" 은 전체 16×16 루마 블록이 넌-제로 계수들을 갖는지 여부를 나타내는 1-비트 플래그를 첨부하는 연산에 대응한다. "lumacbp16" 이 1 과 같은 경우, 적어도 하나의 넌-제로 계수가 존재한다. 함수 "Transform_size_flag" 는 이용되는 변환, 예를 들어, 4×4 변환, 8×8 변환, (16×16 이상인 모션 파티션의 경우) 16×16 변환, (P_16×8 의 경우) 16×8 변환, 또는 (P_8×16 의 경우) 8×16 변환 중 하나를 나타내는 결과를 가지고 수행된 계산을 지칭한다. TRANSFORM_SIZE_GREATER_THAN_16×8 은 변환 사이즈가 16×8 또는 8×16 이상이라는 것을 나타내는데 이용되는 열거값 (예를 들어, "2") 이다. transfor_size_flag 의 결과는 64×64 픽셀 매크로블록의 신택스 정보에 통합된다.
"luma16×8_cbp" 는 각각의 비트가 P_16×8 또는 P_8×16 의 2 개의 파티션들 중 하나가 넌-제로 계수들을 갖는지 여부를 나타내는 2-비트 수를 생성하는 계산을 지칭한다. luma16×8_cbp 로부터 발생하는 2-비트 수는 64×64 픽셀 매크로블록의 신택스에 통합된다. 값 "chroma_cbp" 는 ITU H.264 에 의해 규정한 바와 같이 CodedBlockPatternChroma 와 동일한 방식으로 계산될 수도 있다. 계산된 chroma_cbp 값은 64×64 픽셀 매크로블록의 신택스 정보에 통합된다. 합수 h264_cbp 는 ITU H.264 에 정의된 CBP 와 동일한 방식으로 계산될 수도 있다. 계산된 H264_cbp 값은 64×64 픽셀 매크로블록의 신택스 정보에 통합된다.
일반적으로, 도 6 내지 도 9 에 따른 방법은 비디오 인코더로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 인코딩하는 단계, 블록의 사이즈를 나타내는 블록 타입 신택스 정보를 생성하는 단계, 및 인코딩된 블록에 대한 코딩된 블록 패턴 값을 생성하는 단계를 포함할 수도 있으며, 여기서 코딩된 블록 패턴 값은 인코딩된 블록이 적어도 하나의 넌-제로 계수를 포함하는지 여부를 나타낸다.
도 10 은 64×64 픽셀 매크로블록의 배열 예를 예시한 블록도이다. 도 10 의 매크로블록은 도 10 에 A, B, C 및 D 로 레이블된 4 개의 32×32 파티션들을 포함한다. 도 4a 에 관하여 설명한 바와 같이, 일 예에서는, 블록이 4 가지 방식들 중 임의의 방식으로 파티셔닝될 수도 있다 : 어떠한 서브-파티션들도 갖지 않는 전체 블록 (64×64), 2 개의 동일 사이즈의 수평 파티션들 (32×64 및 32×64), 2 개의 동일 사이즈의 수직 파티션들 (64×32 및 64×32) 또는 4 개의 동일 사이즈의 정사각형 파티션들 (32×32, 32×32, 32×32 및 32×32).
도 10 의 예에서, 전체 블록 파티션은 블록들 A, B, C 및 D 각각을 포함하며; 2 개의 동일 사이즈의 수평 파티션들 중 제 1 파티션은 A 및 B 를 포함하는 한편, 2 개의 동일 사이즈의 수평 파티션들 중 제 2 파티션은 C 및 D 를 포함하고; 2 개의 동일 사이즈의 수직 파티션들 중 제 1 파티션은 A 및 C 를 포함하는 한편, 2 개의 동일 사이즈의 수직 파티션들 중 제 2 파티션은 B 및 D 를 포함하며; 4 개의 동일 사이즈의 정사각형 파티션들은 A, B, C 및 D 각각 중 하나에 대응한다. 예를 들어, 64×64 픽셀들, 32×32 픽셀들, 16×16 픽셀들, 8×8 픽셀들, 또는 비디오 블록들의 다른 사이즈들보다 큰 임의의 사이즈 블록에 대해 유사한 파티션 스킴들이 이용될 수 있다.
비디오 블록이 인트라-코딩되는 경우, 다양한 방법들이 비디오 블록을 파티셔닝하는데 이용될 수도 있다. 또한, 파티션들 각각은 즉, 상이한 인트라-모드들과 같은 상이한 모드로 상이하게 인트라-코딩될 수도 있다. 예를 들어, 도 10 의 파티션 A 와 같은 32×32 파티션은 사이즈 16×16 픽셀들의 4 개의 동일 사이즈의 블록들로 더욱 파티셔닝될 수도 있다. 일 예로서, ITU H.264 는 16×16 레벨에서의 인트라-코딩, 8×8 레벨에서의 인트라-코딩 및 4×4 레벨에서의 인트라-코딩을 포함하는, 16×16 매크로블록을 인트라-인코딩하기 위한 3 개의 상이한 방법들을 기술한다. 그러나, ITU H.264 는 동일한 인트라-코딩 모드를 이용하여 16×16 매크로블록의 각각의 파티션을 인코딩하는 것을 규정한다. 따라서, ITU H.264 에 따르면, 16×16 매크로블록의 하나의 서브-블록이 4×4 레벨에서 인트라-코딩되는 것이면, 16×16 매크로블록의 모든 서브-블록은 4×4 레벨에서 인트라-코딩되어야 한다.
반면에, 본 개시물의 기술들에 따라 구성된 인코더는 혼합된 모드 접근법을 적용할 수도 있다. 예를 들어, 인트라-코딩의 경우, 큰 매크로블록은 상이한 코딩 모드들로 인코딩된 다양한 파티션들을 가질 수도 있다. 일 예시로서, 32×32 파티션에서, 하나의 16×16 파티션은 예를 들어, 도 4b 에 도시한 바와 같이, 4×4 픽셀 레벨에서 인트라-코딩될 수도 있는 한편, 다른 16×16 파티션들은 8×8 픽셀 레벨에서 인트라-코딩될 수도 있고, 하나의 16×16 파티션은 16×16 레벨에서 인트라-코딩될 수도 있다.
비디오 블록이 인트라-코딩을 위해 4 개의 동일 사이즈의 서브-블록들로 파티셔닝될 경우, 인트라-코딩될 제 1 블록이 상부-좌측 블록일 수도 있고, 다음에는 제 1 블록의 바로 우측 블록, 다음에는 제 1 블록의 바로 아래 블록, 및 마지막으로는 제 1 블록의 우측 아래 블록일 수도 있다. 도 10 의 블록 예를 참조하면, 인트라-코딩의 순서는 A 로부터 B, C 및 마지막으로는 D 로 진행될 것이다. 도 10 이 64×64 픽셀 매크로블록을 도시하지만, 상이한 사이즈의 파티셔닝된 블록의 인트라-코딩이 이 동일한 순서를 따를 수도 있다.
비디오 블록이 P-프레임 또는 P-슬라이스의 일부로서 인터-코딩될 경우, 블록은 각각이 개별적으로 인코딩될 수도 있는 4 개의 상기 설명된 파티션들 중 임의의 파티션들로 파티셔닝될 수도 있다. 즉, 블록의 각각의 파티션은 상이한 인코딩 모드에 따라 인코딩, 즉 단일 기준 프레임/슬라이스/리스트 (P-코딩) 를 참조하여 인트라-인코딩 (I-코딩) 되거나 인터-인코딩되거나 할 수도 있다. 이하 표 1 은 사이즈 N×N 의 블록의 각각의 잠재적 파티션에 대한 인터-인코딩 정보를 요약한다. 표 1 이 "M" 을 나타내는 경우, M = N/2 이다. 이하 표 1 에서, L0 은 "리스트0", 즉 기준 프레임/슬라이스/리스트를 나타낸다. N×N 블록을 최상으로 파티셔닝하는 방법을 결정하는 경우, 비디오 인코더 (50) 와 같은 인코더는 도 11 에 관련하여 더 상세하게 설명한 바와 같이, 라그랑주 승수 (Lagrange multiplier) 에 기초하여 각각의 MB_N_type (즉, 파티션의 각각의 타입) 에 대한 레이트-왜곡 비용 정보를 분석하여, 최저 비용을 최상의 파티션 방법으로서 선택할 수도 있다.
Figure 112013039196499-pat00004
상기 표 1 에서, 컬럼 "MB_N_type" 의 엘리먼트들은 N×N 블록의 파티션의 각각의 타입에 대한 키들이다. 컬럼 "MB_N_type 의 이름" 의 엘리먼트들은 N×N 블록의 상이한 파티셔닝 타입들의 이름들이다. 그 이름에서의 "P" 는 P-코딩을 이용하여, 즉 단일 프레임/슬라이스/리스트를 참조하여 인터-코딩되는 블록을 나타낸다. 그 이름에서의 "L0" 은 P 코딩을 위해 기준 프레임들 또는 슬라이스들로서 이용되는, 기준 프레임/슬라이스/리스트, 예를 들어, "리스트 0" 을 나타낸다. "N×N" 은 전체 블록인 파티션을 나타내고, "N×M" 은 폭 N 과 높이 M 의 2 개의 파티션들인 파티션을 나타내고, "M×N" 은 폭 M 과 높이 N 의 2 개의 파티션들인 파티션을 나타내며, "M×M" 은 각각이 폭 M 과 높이 M 을 가진 4 개의 동일 사이즈의 파티션들인 파티션을 나타낸다.
표 1 에서, PN_Skip 은 예를 들어, 코딩으로부터 발생하는 블록이 전부 제로 계수들을 가졌기 때문에 블록이 "스킵" 되었다는 것을 의미한다. 컬럼 "예측 모드 파트 1" 의 엘리먼트들은 파티션의 서브-파티션 1 에 대한 기준 프레임/슬라이스/리스트를 나타내는 한편, 컬럼 "예측 모드 파트 2" 의 엘리먼트들은 파티션의 서브-파티션 2 에 대한 기준 프레임/슬라이스/리스트를 나타낸다. P_L0_N×N 이 단지 단일 파티션을 갖기 때문에, "예측 모드 파트 2" 의 대응하는 엘리먼트는 제 2 서브-파티션이 없기 때문에 "N/A" 이다. PN_M×M 에 대해서는, 개별적으로 인코딩될 수도 있는 4 개의 파티션 블록들이 존재한다. 따라서, PN_M×M 에 대한 양자의 예측 모드 컬럼들은 "N/A" 이다. P_LO_N×N 의 경우와 마찬가지로, PN_Skip 은 단지 단일 파트를 갖기 때문에, 컬럼 "예측 모드 파트 2" 의 대응하는 엘리먼트는 "N/A" 이다.
이하 표 2 는 표 1 의 것과 유사한 컬럼들 및 엘리먼트들을 포함한다. 그러나, 표 2 는 양방향 예측 (B-인코딩) 을 이용하여 인터-코딩된 블록에 대한 다양한 인코딩 모드들에 대응한다. 따라서, 각각의 파티션은 제 1 프레임/슬라이스/리스트 (L0) 와 제 2 프레임/슬라이스/리스트 (L1) 중 어느 하나 또는 양자에 의해 인코딩될 수도 있다. "BiPred" 는 L0 과 L1 양자로부터 예측되는 대응하는 파티션을 나타낸다. 표 2 에서, 컬럼 레이블들 및 값들은 표 1 에서 이용되는 것과 의미면에서 유사한다.
Figure 112013039196499-pat00005
도 11 은 N×N 픽셀 비디오 블록에 대한 최적의 파티셔닝 및 인코딩 방법들을 계산하는 방법 예를 예시한 흐름도이다. 일반적으로, 도 11 의 방법은 예를 들어, 도 4a 에 도시된 각각의 상이한 파티셔닝 방법에 적용한 각각의 상이한 인코딩 방법 (예를 들어, 다양한 공간 또는 시간 모드들) 에 대한 비용을 계산하는 단계, 및 N×N 픽셀 비디오 블록에 대한 최상의 레이트-왜곡 비용으로 인코딩 모드 및 파티셔닝 방법의 조합을 선택하는 단계를 포함한다. 비용은 일반적으로 레이트-왜곡 비용 = 왜곡 + λ * 레이트 (여기서 왜곡은 원래의 블록과 코딩된 블록 간의 오차를 나타내고, 레이트는 코딩 모드를 지원하기 위해 필요한 비트 레이트를 나타낸다) 가 되도록 레이트 및 왜곡 값들을 가진 라그랑주 승수를 이용하여 계산될 수 있다. 일부 경우에, 레이트 및 왜곡은 매크로블록, 파티션, 슬라이스 또는 프레임 레벨에 따라 결정될 수도 있다.
처음에, 비디오 인코더 (50) 는 인코딩될 N×N 비디오 블록을 수신한다 (170). 예를 들어, 비디오 인코더 (50) 는 64×64 의 큰 매크로블록 또는 그의 파티션, 이를 테면, 예를 들어 32×32 또는 16×16 파티션을 수신할 수도 있는데, 비디오 인코더 (50) 는 64×64 의 큰 매크로블록 또는 그의 파티션에 대한 인코딩 및 파티셔닝 방법을 선택할 것이다. 비디오 인코더 (50) 는 그 후 상이한 인트라-코딩 및 인터-코딩 모드들과 같은 다양한 상이한 코딩 모드들을 이용하여 N×N 블록을 인코딩하기 위한 비용을 계산한다 (172). N×N 블록을 공간적으로 인코딩하기 위한 비용을 계산하기 위해, 비디오 인코더 (50) 는 소정의 코딩 모드를 이용하여 N×N 블록을 인코딩하는데 필요한 왜곡 및 비트레이트를 계산한 후, cost = distortion(Mode, N×N) + λ * rate( Mode , N×N) 를 계산할 수도 있다. 비디오 인코더 (50) 는 특정 코딩 기술을 이용하여 매크로블록을 인코딩하고 결과의 비트 레이트 비용 및 왜곡을 결정할 수도 있다. 왜곡은 코딩된 매크로블록 내의 픽셀들과 원래의 매크로블록 내의 픽셀들 간의 픽셀 차이에 기초하여, 예를 들어, SAD 메트릭, SSD 메트릭 또는 다른 픽셀 차이 메트릭에 기초하여 결정될 수도 있다.
비디오 인코더 (50) 는 그 후 N×N 블록을 2 개의 동일 사이즈의 넌-오버랩핑 수평 N×(N/2) 파티션들로 파티셔닝할 수도 있다. 비디오 인코더 (50) 는 다양한 코딩 모드들을 이용하여 파티션들 각각을 인코딩하기 위한 비용을 계산할 수도 있다 (176). 예를 들어, 제 1 N×(N/2) 파티션을 인코딩하기 위한 비용을 계산하기 위해, 비디오 인코더 (50) 는 제 1 N×(N/2) 파티션을 인코딩하기 위한 왜곡 및 비트레이트를 계산 한 후, cost = distortion( Mode , FIRST PARTITION , N×(N/2)) + λ * rate(Mode, FIRST PARTITION , N×(N/2)) 를 계산할 수도 있다.
비디오 인코더 (50) 는 그 후 N×N 블록을 2 개의 동일 사이즈의 넌-오버랩핑 수직 (N/2)×N 파티션들로 파티셔닝할 수도 있다. 비디오 인코더 (50) 는 다양한 코딩 모드들을 이용하여 파티션들 각각을 인코딩하기 위한 비용을 계산할 수도 있다 (178). 예를 들어, (N/2)×N 파티션들 중 제 1 파티션을 인코딩하기 위한 비용을 계산하기 위해, 비디오 인코더 (50) 는 제 1 (N/2)×N 파티션을 인코딩하기 위한 왜곡 및 비트레이트를 계산한 후, cost = distortion( Mode , FIRST PARTITION , (N/2)×N) + λ * rate( Mode , FIRST PARTITION , (N/2)×N) 를 계산할 수도 있다. 비디오 인코더 (50) 는 (N/2)×N 매크로블록 파티션들 중 제 2 파티션을 인코딩하기 위한 비용에 대해 유사한 계산을 수행할 수도 있다.
비디오 인코더 (50) 는 그 후 N×N 블록을 4 개의 동일 사이즈의 넌-오버랩핑 (N/2)×(N/2) 파티션들로 파티셔닝할 수도 있다. 비디오 인코더 (50) 는 다양한 코딩 모드들을 이용하여 파티션들을 인코딩하기 위한 비용을 계산할 수도 있다 (180). (N/2)×(N/2) 파티션들을 인코딩하기 위한 비용을 계산하기 위해, 비디오 인코더 (50) 는 먼저 상부-좌측 (N/2)×(N/2) 파티션을 인코딩하기 위한 왜곡 및 비트레이트를 계산하고, 그의 비용을 cost( Mode , UPPER - LEFT , (N/2)×(N/2)) = distortion(Mode, UPPER - LEFT , (N/2)×(N/2)) + λ * rate( Mode , UPPER - LEFT , (N/2)×(N/2)) 로서 발견할 수도 있다. 비디오 인코더 (50) 는 (1) 상부-좌측 파티션, (2) 상부-우측 파티션, (3) 저부-좌측 파티션, (4) 저부-우측 파티션의 순서로 각각의 (N/2)×(N/2) 블록의 비용을 유사하게 계산할 수도 있다. 비디오 인코더 (50) 는 일부 예에서는, (N/2)×(N/2) 파티션들 각각을 예를 들어, (N/2)×(N/4) 파티션들, (N/4)×(N/2) 파티션들, 및 (N/4)×(N/4) 파티션들로서 파티셔닝 및 개별적으로 인코딩하는 비용을 계산하기 위해 (N/2)×(N/2) 파티션들 중 하나 이상에 대해 이 방법으로의 재귀 호출 (recursive call) 을 행할 수도 있다.
다음에, 비디오 인코더 (50) 는 파티셔닝과 인코딩 모드의 어느 조합이 레이트 및 왜곡의 관점에서 최상 (best), 즉, 최저 비용을 야기했는지를 결정할 수도 있다 (182). 예를 들어, 비디오 인코더 (50) 는 2 개의 인접한 (N/2)×(N/2) 파티션들을 인코딩하는 최상의 비용을 2 개의 인접한 (N/2)×(N/2) 파티션들을 포함하는 N×(N/2) 파티션을 인코딩하는 최상의 비용과 비교할 수도 있다. 2 개의 인접한 (N/2)×(N/2) 파티션들을 인코딩하는 총 비용이 그들을 포함하는 N×(N/2) 파티션을 인코딩하기 위한 비용을 초과하는 경우, 비디오 인코더 (50) 는 N×(N/2) 파티션을 인코딩하는 보다 낮은 비용 옵션을 선택할 수도 있다. 일반적으로, 비디오 인코더 (50) 는 최저 비용 파티셔닝 및 인코딩 방법을 식별하기 위해 각각의 파티션에 대해 파티셔닝 방법 및 인코딩 모드의 모든 조합을 적용할 수도 있다. 일부 경우에, 비디오 인코더 (50) 는 보다 제한된 세트의 파티셔닝 및 인코딩 모드 조합을 평가하도록 구성될 수도 있다.
최상, 예를 들어, 최저 비용의 파티셔닝 및 인코딩 방법들을 결정하자마자, 비디오 인코더 (50) 는 최상의 비용 결정된 방법을 이용하여 N×N 매크로블록을 인코딩할 수도 있다 (184). 일부 경우에, 결과는 상이한 코딩 모드들을 이용하여 코딩되는 파티션들을 갖는 큰 매크로블록일 수도 있다. 상이한 코딩 모드들이 큰 매크로블록 내의 상이한 파티션들에 적용되도록 혼합된 모드 코딩을 큰 매크로블록에 적용하는 능력은 저감된 비용으로 매크로블록이 코딩되는 것을 허용할 수도 있다.
일부 예에서, 혼합된 모드로 코딩하는 방법은 비디오 인코더 (50) 로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하는 단계, 그 블록을 파티션들로 파티셔닝하는 단계, 제 1 인코딩 모드로 파티션들 중 하나의 파티션을 인코딩하는 단계, 제 1 인코딩 모드와는 상이한 제 2 코딩 모드로 파티션들 중 다른 파티션을 인코딩하는 단계, 및 블록의 사이즈를 나타내고 파티션들 및 그 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 블록 타입 신택스 정보를 생성하는 단계를 포함할 수도 있다.
도 12 는 다양한 파티션들 및 각각의 파티션에 대한 상이한 선택된 인코딩 방법들을 가진 64×64 픽셀의 큰 매크로블록의 일 예를 예시한 블록도이다. 도 12 의 예에서, 각각의 파티션에는 "I", "P" 또는 "B" 중 하나가 레이블된다. "I" 로 레이블된 파티션들은 인코더가 예를 들어, 레이트-왜곡 평가에 기초하여 인트라-코딩을 이용하기 위해 선택한 파티션들이다. "P" 로 레이블된 파티션들은 인코더가 예를 들어, 레이트-왜곡 평가에 기초하여 단일 기준 인터-코딩을 이용하기 위해 선택한 파티션들이다. "B" 로 레이블된 파티션들은 인코더가 예를 들어, 레이트-왜곡 평가에 기초하여 양방향 예측 인터-코딩을 이용하기 위해 선택한 파티션들이다. 도 12 의 예에서, 동일한 큰 매크로블록 내의 상이한 파티션들은 상이한 파티션 또는 서브-파티션 사이즈들 및 상이한 인트라-코딩 또는 인터-코딩 모드들을 포함하는, 상이한 코딩 모드들을 갖는다.
큰 매크로블록은 H.264 코딩 표준의 확장과 같은 소정의 코딩 표준에 대해, 매크로블록 타입, 예를 들어, mb64_type 또는 mb32_type 을 식별하는 매크로블록 신택스 엘리먼트에 의해 식별된 매크로블록이다. 매크로블록 타입 신택스 엘리먼트는 인코딩된 비디오 비트스트림에서의 매크로블록 헤더 신택스 엘리먼트로서 제공될 수도 있다. 도 12 에 예시된 I-코딩, P-코딩 및 B-코딩된 파티션들은 사이즈가 16×16 보다 큰 큰 파티션들에 대해 큰 블록 사이즈 모드들 또는 사이즈가 16×16 이하인 파티션들에 대해 H.264 모드들을 포함하는, 다양한 블록 사이즈들을 가진 상이한 코딩 모드들, 예를 들어, 인트라-예측 또는 인터-예측 모드들에 따라 코딩될 수도 있다.
일 예에서, 비디오 인코더 (50) 와 같은 인코더는 도 11 에 관하여 설명된 방법 예를 이용하여 도 12 의 큰 매크로블록 예의 상이한 파티션들 및 서브-파티션들에 대한 다양한 인코딩 모드들 및 파티션 사이즈들을 선택할 수도 있다. 예를 들어, 비디오 인코더 (50) 는 64×64 매크로블록을 수신하고, 도 11 의 방법을 실행하며, 그 결과로서 다양한 파티션 사이즈들 및 코딩 모드들을 가진 도 12 의 매크로블록 예를 생성할 수도 있다. 그러나, 파티셔닝 및 인코딩 모드들에 대한 선택이 예를 들어 매크로블록이 선택되었던 프레임의 타입에 기초하여, 및 방법이 실행되는 입력 매크로블록에 기초하여 도 11 의 방법의 적용으로부터 발생할 수도 있다는 것이 이해되어야 한다. 예를 들어, 프레임이 I-프레임을 포함하는 경우, 각각의 파티션은 인트라-인코딩될 것이다. 다른 예로서, 프레임이 P-프레임을 포함하는 경우, 각각의 파티션은 단일 기준 프레임 (즉, 양방향 예측 없음) 에 기초하여 인트라-인코딩되거나 인터-코딩되거나 할 수도 있다.
도 12 의 매크로블록 예는 예시를 위해 양방향-예측된 프레임 (B-프레임) 으로부터 선택된 것으로 가정된다. 다른 예에서, 매크로블록이 P-프레임으로부터 선택되는 경우, 비디오 인코더 (50) 는 양방향 예측을 이용하여 파티션을 인코딩하지 않을 것이다. 마찬가지로, 매크로블록이 I-프레임으로부터 선택되는 경우, 비디오 인코더 (50) 는 인터-코딩, P-인코딩이나 B-인코딩 중 어느 하나를 이용하여 파티션을 인코딩하지 않을 것이다. 그러나, 어느 경우라도, 비디오 인코더 (50) 는 매크로블록의 상이한 부분들에 대한 다양한 파티션 사이즈들을 선택하고 임의의 이용가능한 인코딩 모드를 이용하여 각각의 파티션을 인코딩하기로 선택할 수도 있다.
도 12 의 예에서는, 레이트-왜곡 분석에 기초한 파티션과 모드 선택의 조합이 하나의 32×32 B-코딩된 파티션, 하나의 32×32 P-코딩된 파티션, 하나의 16×32 I-코딩된 파티션, 하나의 32×16 B-코딩된 파티션, 하나의 16×16 P-코딩된 파티션, 하나의 16×8 P-코딩된 파티션, 하나의 8×16 P-코딩된 파티션, 하나의 8×8 P-코딩된 파티션, 하나의 8×8 B-코딩된 파티션, 하나의 8×8 I-코딩된 파티션, 및 다양한 코딩 모드들을 갖는 다수의 보다 작은 서브-파티션들을 초래했다는 것이 가정된다. 도 12 의 예는 큰 매크로블록 내의 파티션들의 혼합된 모드 코딩의 개념 예시를 위해 제공되며, 반드시 특정의 큰 64×64 매크로블록에 대한 실제 코딩 결과들을 나타내는 것으로 간주되어서는 안된다.
도 13 은 비디오 시퀀스의 프레임 또는 슬라이스를 인코딩하기 위한 매크로블록의 최적의 사이즈를 결정하는 방법 예를 예시한 흐름도이다. 프레임에 대한 매크로블록의 최적의 사이즈를 선택하는 것에 관하여 설명하고 있지만, 도 13 에 관하여 설명한 것과 유사한 방법이 슬라이스에 대한 매크로블록의 최적의 사이즈를 선택하는데 이용될 수도 있다. 마찬가지로, 도 13 의 방법이 비디오 인코더 (50) 에 관하여 설명되지만, 임의의 인코더가 비디오 시퀀스의 프레임을 인코딩하기 위한 매크로블록의 최적의 (예를 들어, 최소 비용) 사이즈를 결정하기 위해 도 13 의 방법 예를 이용할 수도 있다는 것이 이해되어야 한다. 일반적으로, 도 13 의 방법은 16×16 매크로블록, 32×32 매크로블록 및 64×64 매크로블록 각각에 대해 한번 씩 인코딩 패스를 3 회 수행하는 단계를 포함하며, 비디오 인코더는 어느 매크로블록 사이즈가 최상의 레이트-왜곡을 제공하는지를 결정하기 위해 각각의 패스에 대한 레이트-왜곡 메트릭들을 계산할 수도 있다.
비디오 인코더 (50) 는 먼저 제 1 인코딩 패스 동안 16×16 픽셀 매크로블록들을 이용하여, 예를 들어, 함수 인코드 (프레임, MB16_type) 를 이용하여 프레임을 인코딩 (190) 하여, 인코딩된 프레임 F16 을 생성할 수도 있다. 제 1 인코딩 패스 후에, 비디오 인코더 (50) 는 각각 R16 및 D16 으로서 16×16 픽셀 매크로블록들의 이용에 기초한 비트 레이트 및 왜곡을 계산할 수도 있다 (192). 비디오 인코더 (50) 는 그 후 랑그랑주 승수를 이용하여 16×16 픽셀 매크로블록들 C16 을 이용하는 비용의 형태로 레이트-왜곡 메트릭을 계산할 수도 있다 C16 = D16 + λ * R16 (194). 코딩 모드들 및 파티션 사이즈들이 예를 들어, H.264 표준에 따라 16×16 픽셀 매크로블록들에 대해 선택될 수도 있다.
비디오 인코더 (50) 는 그 후 제 2 인코딩 패스 동안 32×32 픽셀 매크로블록들을 이용하여, 예를 들어, 함수 인코드 (프레임, MB32_type) 를 이용하여 프레임을 인코딩 (196) 하여, 인코딩된 프레임 F32 를 생성할 수도 있다. 제 2 인코딩 패스 후에, 비디오 인코더 (50) 는 각각 R32 및 D32 로서 32×32 픽셀 매크로블록들의 이용에 기초한 비트 레이트 및 왜곡을 계산할 수도 있다 (198). 비디오 인코더 (50) 는 그 후 라그랑주 승수를 이용하여 32×32 픽셀 매크로블록들 C32 를 이용하는 비용의 형태로 레이트-왜곡 메트릭을 계산할 수도 있다 C32 = D32 + λ * R32 (200). 코딩 모드들 및 파티션 사이즈들이 예를 들어 도 11 및 도 12 를 참조하여 설명한 바와 같은 레이트 및 왜곡 평가 기술들을 이용하여, 32×32 픽셀 매크로블록들에 대해 선택될 수도 있다.
비디오 인코더 (50) 는 그 후 제 3 인코딩 패스 동안 64×64 픽셀 매크로블록들을 이용하여, 예를 들어 함수 인코드 (프레임, MB64_type) 를 이용하여 프레임을 인코딩 (202) 하여, 인코딩된 프레임 F64 를 생성할 수도 있다. 제 3 인코딩 패스 후에, 비디오 인코더 (50) 는 각각 R64 및 D64 로서 64×64 픽셀 매크로블록들의 이용에 기초한 비트 레이트 및 왜곡을 계산할 수도 있다 (204). 비디오 인코더 (50) 는 그 후 라그랑주 승수를 이용하여 64×64 픽셀 매크로블록들 C64 를 이용하는 비용의 형태로 레이트-왜곡 메트릭을 계산할 수도 있다 C64 = D64 + λ * R64 (206). 코딩 모드들 및 파티션 사이즈들이 예를 들어 도 11 및 도 12 를 참조하여 설명한 바와 같은 레이트 및 왜곡 평가 기술들을 이용하여 64×64 픽셀 매크로블록들에 대해 선택될 수도 있다.
다음에, 비디오 인코더 (50) 는 메트릭들 C16, C32 및 C64 중 어느 메트릭이 프레임에 대해 최저인지를 결정할 수도 있다 (208). 비디오 인코더 (50) 는 최저 비용을 초래한 매크로블록 사이즈로 인코딩된 프레임을 이용하게 선택할 수도 있다 (210). 따라서, 예를 들어, C16 이 최저인 경우, 비디오 인코더 (50) 는 저장 또는 송신을 위한 비트스트림 내의 인코딩된 프레임으로서 16×16 매크로블록들로 인코딩된 프레임 F16 을 디코더로 포워딩할 수도 있다. C32 가 최저인 경우, 비디오 인코더 (50) 는 32×32 매크로블록들로 인코딩된 F32 를 포워딩할 수도 있다. C64 가 최저인 경우, 비디오 인코더 (50) 는 64×64 매크로블록들로 인코딩된 F64 를 포워딩할 수도 있다.
다른 예에서, 비디오 인코더 (50) 는 인코딩 패스들을 임의의 순서로 수행할 수도 있다. 예를 들어, 비디오 인코더 (50) 는 64×64 매크로블록 인코딩 패스로 시작하고, 32×32 매크로블록 인코딩 패스를 두번 째로 수행하며, 16×16 매크로블록 인코딩 패스로 끝날 수도 있다. 또한, 유사한 방법들이 상이한 사이즈의 매크로블록들을 가진 슬라이스와 같이, 복수의 매크로블록들을 포함하는 다른 코딩된 유닛들을 인코딩하기 위해 이용될 수도 있다. 예를 들어, 비디오 인코더 (50) 는 전체 프레임보다는, 프레임의 슬라이스들을 인코딩하기 위한 최적의 매크로블록 사이즈를 선택하기 위해 도 13 의 것과 유사한 방법을 적용할 수도 있다.
비디오 인코더 (50) 는 또한 디코더에 의한 이용을 위해 코딩된 유닛의 헤더에서 특정 코딩된 유닛 (예를 들어, 프레임 또는 슬라이스) 에 대한 매크로블록들의 사이즈의 식별자를 송신할 수도 있다. 도 13 의 방법에 따르면, 방법은 디지털 비디오 인코더로, 디지털 비디오 스트림의 코딩된 유닛을 수신하는 단계, 각각이 16×16 픽셀들을 포함하는 제 1 복수의 블록들을 이용하여 코딩된 유닛을 인코딩하기 위한 레이트-왜곡에 대응하는 제 1 레이트-왜곡 메트릭을 계산하는 단계, 각각이 16×16 픽셀들보다 큰 제 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) 는 비디오 코덱 (234) 의 기능들, 예를 들어, 비디오 데이터의 인코딩 및/또는 디코딩을 수행하는 비디오 코덱을 포함할 수도 있다.
일 예에서, 비디오 카메라 (232) 는 비디오 소스 (18) (도 1) 에 대응할 수도 있다. 일반적으로, 비디오 카메라 (232) 는 센서들의 어레이에 의해 캡쳐된 비디오 데이터를 레코딩하여 디지털 비디오 데이터를 생성할 수도 있다. 비디오 카메라 (232) 는 원시 레코딩된 디지털 비디오 데이터를 인코딩을 위해 비디오 코덱 (234) 으로 전송한 후, 데이터 저장을 위해 버스 (250) 를 통해 데이터 저장 디바이스 (246) 로 전송할 수도 있다. 프로세서 (240) 는 비디오를 레코딩할 모드, 비디오를 레코딩할 프레임 레이트, 레코딩을 끝내거나 프레임 레이트 모드들을 변경할 시간, 비디오 데이터를 비디오 코덱 (234) 으로 전송할 시간, 또는 다른 모드들 또는 파라미터들을 나타내는 신호들에 관하여 버스 (250) 를 통해 비디오 카메라 (232) 로 신호들을 전송할 수도 있다.
사용자 인터페이스 (242) 는 입력 및 출력 인터페이스들과 같은 하나 이상의 인터페이스들을 포함할 수도 있다. 예를 들어, 사용자 인터페이스 (242) 는 터치 스크린, 키패드, 버튼, 뷰파인더로서 기능할 수도 있는 스크린, 마이크로폰, 스피커, 또는 다른 인터페이스를 포함할 수도 있다. 비디오 카메라 (232) 가 비디오 데이터를 수신함에 따라, 프로세서 (240) 는 비디오 카메라 (232) 에, 비디오 데이터를 뷰파인더 상에 디스플레이될 사용자 인터페이스 (242) 로 전송하라는 신호를 보낼 수도 있다.
비디오 코덱 (234) 은 비디오 카메라 (232) 로부터 비디오 데이터를 인코딩하고 안테나 (248), 트랜시버 (238) 및 모뎀 (236) 을 통해 수신된 비디오 데이터를 디코딩할 수도 있다. 비디오 코덱 (234) 은 추가적으로 또는 대안으로 플레이백을 위해 데이터 저장 디바이스 (246) 로부터 수신되는 이전에 인코딩된 데이터를 디코딩할 수도 있다. 비디오 코덱 (234) 은 종래의 비디오 인코딩 표준들에 의해 규정된 매크로블록들의 사이즈보다 큰 매크로블록들을 이용하여 디지털 비디오 데이터를 인코딩 및/또는 디코딩할 수도 있다. 예를 들어, 비디오 코덱 (234) 은 64×64 픽셀들 또는 32×32 픽셀들을 포함하는 큰 매크로블록을 이용하여 디지털 비디오 데이터를 인코딩 및/또는 디코딩할 수도 있다. 큰 매크로블록은 H.264 표준의 확장과 같은 비디오 표준에 따라 매크로블록 타입 신택스 엘리먼트로 식별될 수도 있다.
비디오 코덱 (234) 은 비디오 인코더 (50) (도 2) 및/또는 비디오 디코더 (60) (도 3) 중 어느 하나 또는 양자의 기능들은 물론, 본 개시물에서 설명한 바와 같은 임의의 다른 인코딩/디코딩 기능들 또는 기술들을 수행할 수도 있다. 예를 들어, 비디오 코덱 (234) 은 큰 매크로블록을 다양한 상이한 사이즈의 더 작은 파티션들로 파티셔닝하고, 선택된 파티션들에 대해, 상이한 코딩 모드들, 예를 들어, 공간 (I) 또는 시간 (P 또는 B) 모드들을 이용할 수도 있다. 파티션 사이즈들 및 코딩 모드들의 선택은 이러한 파티션 사이즈들 및 코딩 모드들에 대한 레이트-왜곡 결과들에 기초할 수도 있다. 비디오 코덱 (234) 은 또한 계층적 코딩된 블록 패턴 (CBP) 값들을 이용하여 큰 매크로블록 내의 넌-제로 계수들을 갖는 코딩된 매크로블록들 및 파티션들을 식별할 수도 있다. 또한, 일부 예에서, 비디오 코덱 (234) 은 큰 매크로블록과 작은 매크로블록에 대한 레이트-왜곡 메트릭들을 비교하여 프레임, 슬라이스 또는 다른 코딩 유닛에 대해 보다 바람직한 결과들을 야기하는 매크로블록 사이즈를 선택할 수도 있다.
사용자는 데이터 저장 디바이스 (246) 내의 레코딩된 비디오 시퀀스를 모뎀 (236), 트랜시버 (238) 및 안테나 (248) 를 통해, 다른 무선 통신 디바이스와 같은 다른 디바이스로 송신하기 위해 사용자 인터페이스 (242) 와 상호작용할 수도 있다. 비디오 시퀀스는 인코딩 표준, 이를 테면, MPEG-2, MPEG-3, MPEG-4, H.263, H.264 또는 본 개시물에서 설명된 확장 또는 변경에 영향을 받은 다른 비디오 인코딩 표준들에 따라 인코딩될 수도 있다. 예를 들어, 비디오 시퀀스는 또한 본 개시물에서 설명한 바와 같이, 표준보다 큰 매크로블록들을 이용하여 인코딩될 수도 있다. 무선 통신 디바이스 (230) 는 또한 인코딩된 비디오 세그먼트를 수신하고 수신된 비디오 시퀀스를 데이터 저장 디바이스 (246) 에 저장할 수도 있다.
수신된, 인코딩된 비디오 시퀀스의 매크로블록들은 종래의 비디오 인코딩 표준들에 의해 특정된 매크로블록들보다 클 수도 있다. 레코딩된 비디오 시퀀스 또는 수신된 비디오 세그먼트와 같은 데이터 저장 디바이스 (246) 내의 인코딩된 비디오 세그먼트를 디스플레이하기 위해, 비디오 코덱 (234) 은 비디오 시퀀스를 디코딩하고 비디오 세그먼트의 디코딩된 프레임들을 사용자 인터페이스 (242) 로 전송할 수도 있다. 비디오 시퀀스가 오디오 데이터를 포함하는 경우, 비디오 코덱 (234) 은 오디오를 디코딩할 수도 있고, 또는 무선 통신 디바이스 (230) 는 오디오 코덱 (미도시) 을 더 포함하여 오디오를 디코딩할 수도 있다. 이런 식으로, 비디오 코덱 (234) 은 인코더의 기능과 디코더의 기능 양자를 수행할 수도 있다.
도 14 의 무선 통신 디바이스 (230) 의 메모리 (244) 는 인코딩된 비디오 데이터를 저장하는 것에 더하여, 프로세서 (240) 및/또는 비디오 코덱 (234) 으로 하여금 다양한 태스크들을 수행하도록 하는 컴퓨터 판독가능 명령들로 인코딩될 수도 있다. 이러한 명령들은 데이터 저장 디바이스 (246) 와 같은 데이터 저장 디바이스로부터 메모리 (244) 로 로드될 수도 있다. 예를 들어, 명령들은 프로세서 (240) 로 하여금 비디오 코덱 (234) 에 관하여 설명된 기능들을 수행하도록 할 수도 있다.
도 15 는 계층적 코딩된 블록 패턴 (CBP) (260) 의 일 예를 예시한 블록도이다. CBP (260) 의 예는 일반적으로 64×64 픽셀 매크로블록에 대한 신택스 정보의 일부에 대응한다. 도 15 의 예에서, CBP (260) 는 CBP64 값 (262), 4 개의 CBP32 값들 (264, 266, 268, 270) 및 4 개의 CBP16 값들 (272, 274, 276, 278) 을 포함한다. CBP (260) 의 각각의 블록은 하나 이상의 비트들을 포함할 수도 있다. 일 예에서, CBP64 값 (262) 이 큰 매크로블록에 적어도 하나의 넌-제로 계수가 있다는 것을 나타내는, "1" 의 값을 가진 비트인 경우, CBP (260) 는 도 15 의 예에 도시한 바와 같이, 큰 64×64 매크로블록의 4 개의 32×32 파티션들에 대한 4 개의 CBP32 값들 (264, 266, 268, 270) 을 포함한다.
다른 예에서, CBP64 값 (262) 이 "0" 의 값을 가진 비트인 경우, CBP (260) 는 "0" 의 값이 CBP (260) 에 대응하는 블록이 전부 제로 값의 계수들을 갖는다는 것을 나타낼 수도 있기 때문에 단지 CBP64 로 이루어질 수도 있다. 따라서, 그 블록의 모든 파티션들은 마찬가지로 전부 제로 값의 계수들을 포함할 것이다. 일 예에서, CBP64 가 "1" 의 값을 가진 비트이고, 특정 32×32 파티션에 대한 CBP32 값들 중 하나가 "1" 의 값을 가진 비트인 경우, 32×32 파티션에 대한 CBP32 값은 예를 들어 CBP32 값 (266) 에 관하여 도시한 바와 같이, CBP16 값들을 나타내는 4 개의 브랜치들을 갖는다. 일 예에서, CBP32 값이 "0" 의 값을 가진 비트인 경우, CBP32 는 어떠한 브랜치들도 갖지 않는다. 도 15 의 예에서, CBP (260) 는 CBP64 값이 "1" 이고, 32×32 파티션들 중 하나가 "1" 의 CBP32 값을 갖는다는 것을 나타내는 "10100" 의 5-비트 프리픽스를 가질 수도 있으며, 후속 비트들은 "1" 의 CBP32 값을 가진 32×32 파티션의 16×16 파티션들에 대응하는 4 개의 CBP16 값들 (272, 274, 276, 278) 에 대응한다. 단지 단일의 CBP32 값이 도 15 의 예에서 "1" 의 값을 갖는 것처럼 도시되지만, 다른 예에서는, 2 개, 3 개 또는 4 개 전부의 32×32 파티션들이 "1" 의 CBP32 값들을 가질 수도 있으며, 그 경우에 대응하는 CBP16 값들을 가진 4 개의 16×16 파티션들의 다수의 인스턴스들이 요구될 것이다.
도 15 의 예에서, 4 개의 16×16 파티션들에 대한 4 개의 CBP16 값들 (272, 274, 276, 278) 은 예를 들어, 도 8 및 도 9 의 방법들에 따른 다양한 방법들에 따라 계산될 수도 있다. CBP16 값들 (272, 274, 276, 278) 중 임의의 값 또는 모든 값이 "lumacbp16" 값, transform_size_flag, 및/또는 luma16×8_cbp 를 포함할 수도 있다. CBP16 값들 (272, 274, 276, 278) 은 또한 도 8 및 도 9 에 관하여 설명한 바와 같이, ITU H.264 에서 정의한 바와 같은 CBP 값에 따라 또는 ITU H.264 에서의 CodedBlockPatternChroma 로서 계산될 수도 있다. 도 15 의 예에서는, CBP16 (278) 이 "1" 의 값을 갖고, 다른 CBP16 값들 (272, 274, 276) 이 "0" 의 값들을 갖는다는 것을 가정하면, 64×64 매크로블록에 대한 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 에 대응할 수도 있다. 트리에서 다른 브랜치를 산출하는 각각의 노드는 "1" 의 각각의 CBP 값에 대응한다. 도 15 및 도 16 의 예에서, CBP64 (282) 및 CPB32 (286) 양자는 "1" 의 값들을 갖고, "1" 의 가능한 CBP 값들을 가진 추가 파티션들 (즉, 다음의 파티션 레벨에서의 적어도 하나의 파티션은 적어도 하나의 넌-제로 변환 계수 값을 포함한다) 을 산출할 수도 있다.
도 17 은 코딩된 유닛의 비디오 블록들에 대한 블록 기반 신택스 인코더들 및 디코더들을 나타내고 선택하기 위해 코딩된 유닛의 신택스 정보를 이용하는 방법의 일 예를 예시한 흐름도이다. 일반적으로, 도 17 의 단계 300 내지 단계 310 은 코딩된 유닛의 복수의 비디오 블록들을 인코딩하는 것에 더하여, 그리고 코딩된 유닛에 대한 복수의 비디오 블록들을 인코딩하는 것과 함께, 비디오 인코더 (20) (도 1) 와 같은 비디오 인코더에 의해 수행될 수도 있다. 코딩된 유닛은 비디오 프레임, 슬라이스 또는 픽처들의 그룹 (또는 "시퀀스" 라고도 지칭) 을 포함할 수도 있다. 도 17 의 단계 312 내지 단계 316 은 코딩된 유닛의 복수의 비디오 블록들을 디코딩하는 것에 더하여 그리고 코딩된 유닛의 복수의 비디오 블록들을 디코딩하는 것과 함께, 비디오 디코더 (30) (도 1) 와 같은 비디오 디코더에 의해 수행될 수도 있다.
처음에, 비디오 인코더 (20) 는 코딩된 유닛, 이를 테면, 프레임, 슬라이스 또는 픽처들의 그룹에 대한 다양한 사이즈의 블록들의 세트를 수신할 수도 있다 (300). 본 개시물의 기술들에 따르면, 블록들의 하나 이상은 16×16 픽셀들보다 큰, 예를 들어, 32×32 픽셀들, 64×64 픽셀들 등을 포함할 수도 있다. 그러나, 블록들은 동일한 수의 픽셀들을 각각 포함할 필요가 없다. 일반적으로, 비디오 인코더 (20) 는 동일한 블록 기반 신택스를 이용하여 블록들 각각을 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 상기 설명한 바와 같이, 계층적 코딩된 블록 패턴을 이용하여 블록들 각각을 인코딩할 수도 있다.
비디오 인코더 (20) 는 코딩된 유닛에 대한 블록들의 세트에서, 가장 큰 블록, 즉, 최대 블록 사이즈에 기초하여 이용할 블록 기반 신택스를 선택할 수도 있다. 최대 블록 사이즈는 코딩된 유닛에 포함되는 가장 큰 매크로블록의 사이즈에 대응할 수도 있다. 따라서, 비디오 인코더 (20) 는 상기 세트에서 가장 큰 사이즈의 블록을 결정할 수도 있다 (302). 도 17 의 예에서, 비디오 인코더 (20) 는 또한 상기 세트에서 가장 작은 사이즈의 블록을 결정할 수도 있다 (304). 상기 설명한 바와 같이, 블록의 계층적 코딩된 블록 패턴은 블록의 파티션들이 넌-제로 양자화 계수를 갖는지 여부에 대응하는 길이를 갖는다. 일부 예에서, 비디오 인코더 (20) 는 코딩된 유닛에 대한 신택스 정보 내에 최소 사이즈 값을 포함한다. 일부 예에서, 최소 사이즈 값은 코딩된 유닛 내의 최소 파티션 사이즈를 나타낸다. 최소 파티션 사이즈, 예를 들어, 코딩된 유닛에서의 최소 블록은 이런 식으로 계층적 코딩된 블록 패턴에 대한 최대 길이를 결정하는데 이용될 수도 있다.
비디오 인코더 (20) 는 그 후 가장 큰 블록에 대응하는 신택스에 따라 코딩된 유닛에 대한 세트의 각각의 블록을 인코딩할 수도 있다 (306). 예를 들어, 가장 큰 블록이 64×64 픽셀 블록을 포함한다는 것을 가정하면, 비디오 인코더 (20) 는 MB64_type 에 대해 상기 정의한 것과 같은 신택스를 이용할 수도 있다. 다른 예로서, 가장 큰 블록이 32×32 픽셀 블록을 포함한다는 것을 가정하면, 비디오 인코더 (20) 는 MB32_type 에 대해 상기 정의한 것과 같은 신택스를 이용할 수도 있다.
비디오 인코더 (20) 는 또한 코딩된 유닛에서 가장 큰 블록 및 코딩된 유닛에서 가장 작은 블록에 대응하는 값들을 포함하는, 코딩된 유닛 신택스 정보를 생성한다 (308). 비디오 인코더 (20) 는 그 후 코딩된 유닛을, 코딩된 유닛 및 코딩된 유닛의 블록들 각각에 대한 신택스 정보를 포함하여, 비디오 디코더 (30) 로 송신할 수도 있다.
비디오 디코더 (30) 는 비디오 인코더 (20) 로부터 코딩된 유닛 및 그 코딩된 유닛에 대한 신택스 정보를 수신할 수도 있다 (312). 비디오 디코더 (30) 는 코딩된 유닛에서 가장 큰 블록의 코딩된 유닛 신택스 정보 내의 표시에 기초하여 블록 기반 신택스 디코더를 선택할 수도 있다 (314). 예를 들어, 코딩된 유닛 신택스 정보가 코딩된 유닛에서의 가장 큰 블록이 64×64 픽셀들로 구성된다는 것을 나타냈다는 것을 가정하면, 비디오 디코더 (30) 는 MB64_type 블록들에 대한 신택스 디코더를 선택할 수도 있다. 비디오 디코더 (30) 는 그 후 선택된 신택스 디코더를 코딩된 유닛의 블록들에 적용하여 코딩된 유닛의 블록들을 디코딩할 수도 있다 (316). 비디오 디코더 (30) 는 또한 가장 작은 인코딩된 파티션의 코딩된 유닛 신택스 정보 내의 표시에 기초하여 블록이 별개로 인코딩된 서브-파티션들을 더 갖지 않은 때를 결정할 수도 있다. 예를 들어, 가장 큰 블록이 64×64 픽셀들이고 가장 작은 블록이 또한 64×64 픽셀들이면, 64×64 블록들이 64×64 사이즈보다 작은 서브-파티션들로 분할되지 않는 것으로 결정될 수 있다. 다른 예로서, 가장 큰 블록이 64×64 픽셀들이고 가장 작은 블록이 32×32 픽셀들이면, 64×64 블록들이 32×32 이상의 서브-파티션들로 분할되는 것으로 결정될 수 있다.
이런 식으로, 비디오 디코더 (30) 는 H.264 와 같은 기존의 코딩 표준들과 계속 역호환가능할 수도 있다. 예를 들어, 코딩된 유닛에서의 가장 큰 블록이 16×16 픽셀들을 포함하는 경우, 비디오 인코더 (20) 는 코딩된 유닛 신택스 정보에서 이것을 나타낼 수도 있으며, 비디오 디코더 (30) 는 표준 H.264 블록 기반 신택스 디코더들을 적용할 수도 있다. 그러나, 코딩된 유닛에서의 가장 큰 블록이 16×16 픽셀들보다 큰 픽셀들을 포함하는 경우, 비디오 인코더 (20) 는 코딩된 유닛 신택스 정보에서 이것을 나타낼 수도 있으며, 비디오 디코더 (30) 는 코딩된 유닛의 블록들을 디코딩하기 위한 본 개시물의 기술들에 따라 블록 기반 신택스 디코더를 선택적으로 적용할 수도 있다.
하나 이상의 예에서, 상기 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합에 구현될 수도 있다. 소프트웨어에 구현한 경우, 상기 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장 또는 송신될 수도 있다. 컴퓨터 판독가능 매체는 일 장소로부터 타 장소로의 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체와 컴퓨터 저장 매체 양자를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수도 있다. 제한이 아닌 일 예로, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 디바이스, 자기 디스크 저장 디바이스 또는 다른 자기 저장 디바이스, 또는 명령들 또는 데이터 구조의 형태의 원하는 프로그램 코드를 운반 또는 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 문맥이 적절히 컴퓨터 판독가능 매체라 불린다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선 (DSL), 또는 적외선, 무선 및 마이크로파와 같은 무선 테크놀로지를 이용하여 웹사이트, 서버 또는 다른 원격 소스로부터 송신된다면, 매체의 정의에는, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 무선 및 마이크로파와 같은 무선 테크놀로지가 포함된다. 디스크 (disk) 및 디스크 (disc) 는 본원에 사용한 바와 같이, 콤팩트 디스크 (compact disc; CD), 레이저 디스크 (laser disc), 광학 디스크 (optical disc), 디지털 다기능 디스크 (digital versatile disc; DVD), 플로피 디스크 (floppy disk) 및 블루-레이 디스크 (blu-ray disc) 를 포함하며, 여기서 디스크 (disk) 는 보통 데이터를 자기적으로 재생시키는 한편, 디스크 (disc) 는 레이저를 이용하여 데이터를 광학적으로 재생시킨다. 상기의 조합이 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
다양한 예들이 설명되었다. 이들 및 다른 예들이 다음의 특허청구의 범위 내에 존재한다.

Claims (56)

  1. 비디오 인코더로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하는 단계;
    상기 비디오 블록을 파티션들로 파티셔닝하는 단계;
    상기 파티션들 중 하나의 파티션을 제 1 인코딩 모드를 이용하여 인코딩하는 단계로서, 상기 제 1 인코딩 모드는 인트라-예측 인코딩 모드 (I-모드), 단-방향 인터-예측 인코딩 모드 (P-모드) 및 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하는, 상기 인코딩하는 단계;
    상기 파티션들 중 다른 파티션들을 제 2 인코딩 모드를 이용하여 인코딩하는 단계로서, 상기 제 2 인코딩 모드는 I-모드, P-모드 및 B-모드 중 하나를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인코딩 모드와 상이한, 상기 인코딩하는 단계; 및
    상기 비디오 블록의 사이즈를 나타내고, 상기 비디오 블록의 상기 파티션들 및 상기 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 상기 비디오 블록에 대한 블록 타입 신택스 정보를 생성하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 비디오 블록에 대한 코딩된 데이터 및 상기 블록 타입 신택스 정보를 포함하는 인코딩된 비디오 비트스트림을 생성하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 파티션들을 인코딩하는데 이용되는 상기 인코딩 모드들을 인코딩 비용 분석에 기초하여 선택하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  4. 제 3 항에 있어서,
    상기 인코딩 비용 분석에 기초하여 상기 비디오 블록의 상기 파티셔닝을 선택하는 단계를 더 포함하며,
    상기 인코딩 비용 분석은, 상기 인코딩 모드들 및 상기 파티션들에 대한 비트 레이트 및 왜곡의 분석을 포함하는, 비디오 데이터를 인코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 제 1 인코딩 모드는 상기 인트라-예측 인코딩 모드 (I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 단-방향 인터-예측 인코딩 모드 (P-모드) 및 상기 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하는, 비디오 데이터를 인코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 와는 상이한 제 2 인트라-예측 인코딩 모드 (제 2 I-모드) 를 포함하는, 비디오 데이터를 인코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인터-예측 인코딩 모드를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인터-예측 인코딩 모드와는 상이한 제 2 인터-예측 인코딩 모드를 포함하는, 비디오 데이터를 인코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 비디오 블록은 적어도 64×64 픽셀들의 사이즈를 갖는, 비디오 데이터를 인코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 파티션들의 각각의 파티션들에 대응하는 양자화 파라미터 수정 값들을 생성하는 단계; 및
    상기 파티션들의 인코딩 동안 상기 양자화 파라미터 수정 값들의 각각의 양자화 파라미터 수정 값들에 따라 상기 파티션들을 양자화하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  10. 비디오 인코더를 포함하는, 비디오 데이터를 인코딩하는 장치로서,
    상기 비디오 인코더는,
    사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하고,
    상기 비디오 블록을 파티션들로 파티셔닝하고;
    상기 파티션들 중 하나의 파티션을 제 1 인코딩 모드를 이용하여 인코딩하고, 상기 제 1 인코딩 모드는 인트라-예측 인코딩 모드 (I-모드), 단-방향 인터-예측 인코딩 모드 (P-모드) 및 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하고;
    상기 파티션들 중 다른 파티션을 제 2 인코딩 모드를 이용하여 인코딩하며, 상기 제 2 인코딩 모드는 I-모드, P-모드 및 B-모드 중 하나를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인코딩 모드와 상이하고;
    상기 비디오 블록의 사이즈를 나타내고, 상기 비디오 블록의 상기 파티션들 및 상기 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 상기 비디오 블록에 대한 블록 타입 신택스 정보를 생성하도록 구성되는, 비디오 데이터를 인코딩하는 장치.
  11. 제 10 항에 있어서,
    상기 비디오 인코더는, 상기 비디오 블록에 대한 코딩된 데이터 및 상기 블록 타입 신택스 정보를 포함하는 인코딩된 비디오 비트스트림을 생성하도록 구성되는, 비디오 데이터를 인코딩하는 장치.
  12. 제 10 항에 있어서,
    상기 비디오 인코더는, 상기 파티션들을 인코딩하는데 이용되는 상기 인코딩 모드들을 인코딩 비용 분석에 기초하여 선택하도록 구성되는, 비디오 데이터를 인코딩하는 장치.
  13. 제 12 항에 있어서,
    상기 비디오 인코더는, 상기 인코딩 비용 분석에 기초하여 상기 비디오 블록의 상기 파티셔닝을 선택하도록 구성되며,
    상기 인코딩 비용 분석은, 상기 인코딩 모드들 및 상기 파티션들에 대한 비트 레이트 및 왜곡의 분석을 포함하는, 비디오 데이터를 인코딩하는 장치.
  14. 제 10 항에 있어서,
    상기 제 1 인코딩 모드는 상기 인트라-예측 인코딩 모드 (I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 단-방향 인터-예측 인코딩 모드 (P-모드) 및 상기 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하는, 비디오 데이터를 인코딩하는 장치.
  15. 제 10 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 와는 상이한 제 2 인트라-예측 인코딩 모드 (제 2 I-모드) 를 포함하는, 비디오 데이터를 인코딩하는 장치.
  16. 제 10 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인터-예측 인코딩 모드를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인터-예측 인코딩 모드와는 상이한 제 2 인터-예측 인코딩 모드를 포함하는, 비디오 데이터를 인코딩하는 장치.
  17. 제 10 항에 있어서,
    상기 비디오 블록은 적어도 64×64 픽셀들의 사이즈를 갖는, 비디오 데이터를 인코딩하는 장치.
  18. 제 10 항에 있어서,
    상기 장치는 무선 통신 디바이스를 포함하는, 비디오 데이터를 인코딩하는 장치.
  19. 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하는 수단;
    상기 비디오 블록을 파티션들로 파티셔닝하는 수단;
    상기 파티션들 중 하나의 파티션을 제 1 인코딩 모드를 이용하여 인코딩하는 수단으로서, 상기 제 1 인코딩 모드는 인트라-예측 인코딩 모드 (I-모드), 단-방향 인터-예측 인코딩 모드 (P-모드) 및 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하는, 상기 인코딩하는 수단;
    상기 파티션들 중 다른 파티션을 제 2 인코딩 모드를 이용하여 인코딩하는 수단으로서, 상기 제 2 인코딩 모드는 I-모드, P-모드 및 B-모드 중 하나를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인코딩 모드와 상이한, 상기 인코딩하는 수단; 및
    상기 비디오 블록의 사이즈를 나타내고, 상기 비디오 블록의 상기 파티션들 및 상기 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 상기 비디오 블록에 대한 블록 타입 신택스 정보를 생성하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  20. 제 19 항에 있어서,
    상기 비디오 블록에 대한 코딩된 데이터 및 상기 블록 타입 신택스 정보를 포함하는 인코딩된 비디오 비트스트림을 생성하는 수단을 더 포함하는, 비디오 데이터를 인코딩하는 장치.
  21. 제 19 항에 있어서,
    상기 파티션들을 인코딩하는데 이용되는 상기 인코딩 모드들을 인코딩 비용 분석에 기초하여 선택하는 수단을 더 포함하는, 비디오 데이터를 인코딩하는 장치.
  22. 제 21 항에 있어서,
    상기 인코딩 비용 분석에 기초하여 상기 비디오 블록의 상기 파티셔닝을 선택하는 수단을 더 포함하며,
    상기 인코딩 비용 분석은, 상기 파티션들의 인트라-인코딩 및 인터-인코딩에 대한 비트 레이트 및 왜곡의 분석을 포함하는, 비디오 데이터를 인코딩하는 장치.
  23. 제 19 항에 있어서,
    상기 제 1 인코딩 모드는 상기 인트라-예측 인코딩 모드 (I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 단-방향 인터-예측 인코딩 모드 (P-모드) 및 상기 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하는, 비디오 데이터를 인코딩하는 장치.
  24. 제 19 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 와는 상이한 제 2 인트라-예측 인코딩 모드 (제 2 I-모드) 를 포함하는, 비디오 데이터를 인코딩하는 장치.
  25. 제 19 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인터-예측 인코딩 모드를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인터-예측 인코딩 모드와는 상이한 제 2 인터-예측 인코딩 모드를 포함하는, 비디오 데이터를 인코딩하는 장치.
  26. 제 19 항에 있어서,
    상기 비디오 블록은 적어도 64×64 픽셀들의 사이즈를 갖는, 비디오 데이터를 인코딩하는 장치.
  27. 명령들로 인코딩된 비-일시적인 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 비디오 인코더로 하여금,
    사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하게 하고;
    상기 비디오 블록을 파티션들로 파티셔닝하게 하고;
    상기 파티션들 중 하나의 파티션을 제 1 인코딩 모드를 이용하여 인코딩하게 하고, 상기 제 1 인코딩 모드는 인트라-예측 인코딩 모드 (I-모드), 단-방향 인터-예측 인코딩 모드 (P-모드) 및 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하고;
    상기 파티션들 중 다른 파티션을 제 2 인코딩 모드를 이용하여 인코딩하게 하며, 상기 제 2 인코딩 모드는 I-모드, P-모드 및 B-모드 중 하나를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인코딩 모드와 상이하고;
    상기 비디오 블록의 사이즈를 나타내고, 상기 비디오 블록의 상기 파티션들 및 상기 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 상기 비디오 블록에 대한 블록 타입 신택스 정보를 생성하게 하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  28. 제 27 항에 있어서,
    상기 비디오 인코더로 하여금, 상기 비디오 블록에 대한 코딩된 데이터 및 상기 블록 타입 신택스 정보를 포함하는 인코딩된 비디오 비트스트림을 생성하게 하는 명령들을 더 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  29. 제 27 항에 있어서,
    상기 비디오 인코더로 하여금, 상기 파티션들을 인코딩하는데 이용되는 상기 인코딩 모드들을 인코딩 비용 분석에 기초하여 선택하게 하는 명령들을 더 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  30. 제 29 항에 있어서,
    상기 비디오 인코더로 하여금, 상기 인코딩 비용 분석에 기초하여 상기 비디오 블록의 상기 파티셔닝을 선택하게 하는 명령들을 더 포함하며,
    상기 인코딩 비용 분석은, 상기 파티션들의 인트라-인코딩 및 인터-인코딩에 대한 비트 레이트 및 왜곡의 분석을 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  31. 제 27 항에 있어서,
    상기 제 1 인코딩 모드는 상기 인트라-예측 인코딩 모드 (I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 단-방향 인터-예측 인코딩 모드 (P-모드) 및 상기 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  32. 제 27 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 와는 상이한 제 2 인트라-예측 인코딩 모드 (제 2 I-모드) 를 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  33. 제 27 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인터-예측 인코딩 모드를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인터-예측 인코딩 모드와는 상이한 제 2 인터-예측 인코딩 모드를 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  34. 제 27 항에 있어서,
    상기 비디오 블록은 적어도 64×64 픽셀들의 사이즈를 갖는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  35. 비디오 디코더로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하는 단계로서, 상기 비디오 블록은 파티션들로 파티셔닝되고, 상기 파티션들 중 하나의 파티션은 제 1 인코딩 모드로 인코딩되며, 상기 제 1 인코딩 모드는 인트라-예측 인코딩 모드 (I-모드), 단-방향 인터-예측 인코딩 모드 (P-모드) 및 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하고, 상기 파티션들 중 다른 파티션은 제 2 인코딩 모드로 인코딩되고, 상기 제 2 인코딩 모드는 I-모드, P-모드 및 B-모드 중 하나를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인코딩 모드와 상이한, 상기 비디오 블록을 수신하는 단계;
    상기 비디오 블록의 사이즈를 나타내고, 상기 비디오 블록의 상기 파티션들 및 상기 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 상기 비디오 블록에 대한 블록 타입 신택스 정보를 수신하는 단계; 및
    상기 블록 타입 신택스 정보에 기초하여 상기 비디오 블록을 디코딩하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  36. 제 35 항에 있어서,
    상기 제 1 인코딩 모드는 상기 인트라-예측 인코딩 모드 (I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 단-방향 인터-예측 인코딩 모드 (P-모드) 및 상기 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하는, 비디오 데이터를 디코딩하는 방법.
  37. 제 35 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 와는 상이한 제 2 인트라-예측 인코딩 모드 (제 2 I-모드) 를 포함하는, 비디오 데이터를 디코딩하는 방법.
  38. 제 35 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인터-예측 인코딩 모드를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인터-예측 인코딩 모드와는 상이한 제 2 인터-예측 인코딩 모드를 포함하는, 비디오 데이터를 디코딩하는 방법.
  39. 제 35 항에 있어서,
    상기 비디오 블록은 적어도 64×64 픽셀들의 사이즈를 갖는, 비디오 데이터를 디코딩하는 방법.
  40. 제 35 항에 있어서,
    상기 파티션들 각각에 대한 양자화 파라미터 수정 값들을 수신하는 단계를 더 포함하며,
    상기 비디오 블록을 디코딩하는 단계는, 상기 양자화 파라미터 수정 값들에 따라 상기 파티션들을 역양자화 (dequantizing) 하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  41. 비디오 디코더를 포함하는 장치로서,
    상기 비디오 디코더는,
    사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하되, 상기 비디오 블록은 파티션들로 파티셔닝되고, 상기 파티션들 중 하나의 파티션은 제 1 인코딩 모드로 인코딩되며, 상기 제 1 인코딩 모드는 인트라-예측 인코딩 모드 (I-모드), 단-방향 인터-예측 인코딩 모드 (P-모드) 및 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하고, 상기 파티션들 중 다른 파티션은 제 2 인코딩 모드로 인코딩되고, 상기 제 2 인코딩 모드는 I-모드, P-모드 및 B-모드 중 하나를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인코딩 모드와 상이하며;
    상기 비디오 블록의 사이즈를 나타내고, 상기 비디오 블록의 상기 파티션들 및 상기 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 상기 비디오 블록에 대한 블록 타입 신택스 정보를 수신하며;
    상기 블록 타입 신택스 정보에 기초하여 상기 비디오 블록을 디코딩하도록 구성되는, 장치.
  42. 제 41 항에 있어서,
    상기 제 1 인코딩 모드는 상기 인트라-예측 인코딩 모드 (I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 단-방향 인터-예측 인코딩 모드 (P-모드) 및 상기 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하는, 장치.
  43. 제 41 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 와는 상이한 제 2 인트라-예측 인코딩 모드 (제 2 I-모드) 를 포함하는, 장치.
  44. 제 41 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인터-예측 인코딩 모드를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인터-예측 인코딩 모드와는 상이한 제 2 인터-예측 인코딩 모드를 포함하는, 장치.
  45. 제 41 항에 있어서,
    상기 비디오 블록은 적어도 64×64 픽셀들의 사이즈를 갖는, 장치.
  46. 제 41 항에 있어서,
    상기 장치는 무선 통신 디바이스를 포함하는, 장치.
  47. 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하는 수단으로서, 상기 비디오 블록은 파티션들로 파티셔닝되고, 상기 파티션들 중 하나의 파티션은 제 1 인코딩 모드로 인코딩되며, 상기 제 1 인코딩 모드는 인트라-예측 인코딩 모드 (I-모드), 단-방향 인터-예측 인코딩 모드 (P-모드) 및 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하고, 상기 파티션들 중 다른 파티션은 제 2 인코딩 모드로 인코딩되고, 상기 제 2 인코딩 모드는 I-모드, P-모드 및 B-모드 중 하나를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인코딩 모드와 상이한, 상기 비디오 블록을 수신하는 수단;
    상기 비디오 블록의 사이즈를 나타내고, 상기 비디오 블록의 상기 파티션들 및 상기 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 상기 비디오 블록에 대한 블록 타입 신택스 정보를 수신하는 수단; 및
    상기 블록 타입 신택스 정보에 기초하여 상기 비디오 블록을 디코딩하는 수단을 포함하는, 비디오 데이터를 디코딩하는 장치.
  48. 제 47 항에 있어서,
    상기 제 1 인코딩 모드는 상기 인트라-예측 인코딩 모드 (I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 단-방향 인터-예측 인코딩 모드 (P-모드) 및 상기 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하는, 비디오 데이터를 디코딩하는 장치.
  49. 제 47 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 와는 상이한 제 2 인트라-예측 인코딩 모드 (제 2 I-모드) 를 포함하는, 비디오 데이터를 디코딩하는 장치.
  50. 제 47 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인터-예측 인코딩 모드를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인터-예측 인코딩 모드와는 상이한 제 2 인터-예측 인코딩 모드를 포함하는, 비디오 데이터를 디코딩하는 장치.
  51. 제 47 항에 있어서,
    상기 비디오 블록은 적어도 64×64 픽셀들의 사이즈를 갖는, 비디오 데이터를 디코딩하는 장치.
  52. 명령들로 인코딩된 비-일시적인 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 비디오 디코더로 하여금,
    비디오 디코더로, 사이즈가 16×16 픽셀들보다 큰 비디오 블록을 수신하게 하되, 상기 비디오 블록은 파티션들로 파티셔닝되고, 상기 파티션들 중 하나의 파티션은 제 1 인코딩 모드로 인코딩되며, 상기 제 1 인코딩 모드는 인트라-예측 인코딩 모드 (I-모드), 단-방향 인터-예측 인코딩 모드 (P-모드) 및 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하고, 상기 파티션들 중 다른 파티션은 제 2 인코딩 모드로 인코딩되고, 상기 제 2 인코딩 모드는 I-모드, P-모드 및 B-모드 중 하나를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인코딩 모드와 상이하며;
    상기 비디오 블록의 사이즈를 나타내고, 상기 비디오 블록의 상기 파티션들 및 상기 파티션들을 인코딩하는데 이용되는 인코딩 모드들을 식별하는 상기 비디오 블록에 대한 블록 타입 신택스 정보를 수신하게 하며;
    상기 블록 타입 신택스 정보에 기초하여 상기 비디오 블록을 디코딩하게 하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  53. 제 52 항에 있어서,
    상기 제 1 인코딩 모드는 상기 인트라-예측 인코딩 모드 (I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 단-방향 인터-예측 인코딩 모드 (P-모드) 및 상기 양-방향 인터-예측 인코딩 모드 (B-모드) 중 하나를 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  54. 제 52 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인트라-예측 인코딩 모드 (제 1 I-모드) 와는 상이한 제 2 인트라-예측 인코딩 모드 (제 2 I-모드) 를 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  55. 제 52 항에 있어서,
    상기 제 1 인코딩 모드는 제 1 인터-예측 인코딩 모드를 포함하고, 상기 제 2 인코딩 모드는 상기 제 1 인터-예측 인코딩 모드와는 상이한 제 2 인터-예측 인코딩 모드를 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  56. 제 52 항에 있어서,
    상기 비디오 블록은 적어도 64×64 픽셀들의 사이즈를 갖는, 비-일시적인 컴퓨터 판독가능 저장 매체.
KR1020137011532A 2008-10-03 2009-09-29 큰 매크로블록들을 이용한 비디오 코딩 KR101375891B1 (ko)

Applications Claiming Priority (9)

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

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020117010122A Division KR20110063859A (ko) 2008-10-03 2009-09-29 큰 매크로블록들을 이용한 비디오 코딩

Publications (2)

Publication Number Publication Date
KR20130054461A KR20130054461A (ko) 2013-05-24
KR101375891B1 true KR101375891B1 (ko) 2014-04-10

Family

ID=42060949

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137011532A KR101375891B1 (ko) 2008-10-03 2009-09-29 큰 매크로블록들을 이용한 비디오 코딩
KR1020117010122A KR20110063859A (ko) 2008-10-03 2009-09-29 큰 매크로블록들을 이용한 비디오 코딩

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020117010122A KR20110063859A (ko) 2008-10-03 2009-09-29 큰 매크로블록들을 이용한 비디오 코딩

Country Status (15)

Country Link
US (1) US8619856B2 (ko)
EP (2) EP2347592B1 (ko)
JP (5) JP5547199B2 (ko)
KR (2) KR101375891B1 (ko)
CN (1) CN102172023B (ko)
AU (1) AU2009298646B2 (ko)
BR (1) BRPI0920722A2 (ko)
CA (1) CA2738504C (ko)
HK (1) HK1161465A1 (ko)
IL (1) IL211789A (ko)
MY (1) MY152695A (ko)
RU (1) RU2533196C2 (ko)
TW (1) TWI488506B (ko)
WO (1) WO2010039731A2 (ko)
ZA (1) ZA201103130B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017188784A3 (ko) * 2016-04-29 2018-08-02 세종대학교 산학협력단 영상 신호 부호화/복호화 방법 및 장치
WO2023055126A1 (ko) * 2021-10-01 2023-04-06 엘지전자 주식회사 Gpm 기반 영상 코딩 방법 및 장치
WO2023055032A1 (ko) * 2021-09-28 2023-04-06 엘지전자 주식회사 Gpm(geometric partitioning mode) 기반 영상 코딩 방법 및 장치

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8634456B2 (en) * 2008-10-03 2014-01-21 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
US8503527B2 (en) 2008-10-03 2013-08-06 Qualcomm Incorporated Video coding with large macroblocks
KR101712351B1 (ko) * 2009-06-26 2017-03-06 에스케이 텔레콤주식회사 다차원 정수 변환을 이용한 영상 부호화/복호화 장치 및 방법
KR101527085B1 (ko) * 2009-06-30 2015-06-10 한국전자통신연구원 인트라 부호화/복호화 방법 및 장치
CN104796717B (zh) * 2009-07-01 2018-11-06 汤姆森特许公司 用于视频编码器和解码器的方法和装置
KR101474756B1 (ko) 2009-08-13 2014-12-19 삼성전자주식회사 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치
KR101487686B1 (ko) 2009-08-14 2015-01-30 삼성전자주식회사 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
KR101624649B1 (ko) 2009-08-14 2016-05-26 삼성전자주식회사 계층적인 부호화 블록 패턴 정보를 이용한 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
US9549190B2 (en) * 2009-10-01 2017-01-17 Sk Telecom Co., Ltd. Method and apparatus for encoding/decoding image using variable-size macroblocks
JP5562346B2 (ja) * 2009-10-20 2014-07-30 シャープ株式会社 動画像符号化装置、動画像復号装置、動画像符号化方法および動画像復号方法
KR101457894B1 (ko) 2009-10-28 2014-11-05 삼성전자주식회사 영상 부호화 방법 및 장치, 복호화 방법 및 장치
US20110274162A1 (en) * 2010-05-04 2011-11-10 Minhua Zhou Coding Unit Quantization Parameters in Video Coding
KR101703327B1 (ko) * 2010-01-14 2017-02-06 삼성전자 주식회사 계층적 데이터 단위의 패턴 정보를 이용하는 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
AU2015203385B2 (en) * 2010-01-14 2016-06-23 Samsung Electronics Co., Ltd. Method and apparatus for encoding video and method and apparatus for decoding video by considering skip and split order
KR101675118B1 (ko) 2010-01-14 2016-11-10 삼성전자 주식회사 스킵 및 분할 순서를 고려한 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
CN102884570B (zh) 2010-04-09 2015-06-17 杜比国际公司 基于mdct的复数预测立体声编码
KR101540899B1 (ko) * 2010-04-09 2015-07-30 미쓰비시덴키 가부시키가이샤 화상 부호화 장치
US8665959B2 (en) 2010-04-12 2014-03-04 Qualcomm Incorporated Block and partition signaling techniques for video coding
PT3301648T (pt) 2010-04-13 2020-04-20 Ge Video Compression Llc Herança em matriz de amostras em subdivisão multitree
DK2559246T3 (en) 2010-04-13 2016-09-19 Ge Video Compression Llc Fusion of sample areas
AU2011241283B2 (en) 2010-04-13 2015-02-05 Samsung Electronics Co., Ltd. Video-encoding method and video-encoding apparatus based on encoding units determined in accordance with a tree structure, and video-decoding method and video-decoding apparatus based on encoding units determined in accordance with a tree structure
JP5856143B2 (ja) 2010-04-13 2016-02-09 ジーイー ビデオ コンプレッション エルエルシー 細分割を使用した2次元情報信号の空間的なサンプリングの符号化
KR101447796B1 (ko) 2010-04-13 2014-10-07 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 평면 간 예측
KR101813189B1 (ko) * 2010-04-16 2018-01-31 에스케이 텔레콤주식회사 영상 부호화/복호화 장치 및 방법
KR101791078B1 (ko) 2010-04-16 2017-10-30 에스케이텔레콤 주식회사 영상 부호화/복호화 장치 및 방법
EP4290860A3 (en) * 2010-06-04 2024-02-14 Sony Group Corporation Image processing apparatus and method
KR101387467B1 (ko) * 2010-06-07 2014-04-22 (주)휴맥스 고해상도 영상의 부호화/복호화 방법 및 이를 수행하는 장치
US8837577B2 (en) * 2010-07-15 2014-09-16 Sharp Laboratories Of America, Inc. Method of parallel video coding based upon prediction type
US8855188B2 (en) * 2010-07-15 2014-10-07 Sharp Laboratories Of America, Inc. Method of parallel video coding based on mapping
US8873617B2 (en) * 2010-07-15 2014-10-28 Sharp Laboratories Of America, Inc. Method of parallel video coding based on same sized blocks
SG10201506682SA (en) * 2010-09-30 2015-10-29 Mitsubishi Electric Corp Moving image encoding device, moving image decoding device, moving image coding method, and moving image decoding method
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
US10244239B2 (en) 2010-12-28 2019-03-26 Dolby Laboratories Licensing Corporation Parameter set for picture segmentation
CN104811706B (zh) * 2011-01-06 2017-10-27 三星电子株式会社 视频的编码方法和装置及视频的解码方法和装置
US9826238B2 (en) * 2011-06-30 2017-11-21 Qualcomm Incorporated Signaling syntax elements for transform coefficients for sub-sets of a leaf-level coding unit
US11245912B2 (en) * 2011-07-12 2022-02-08 Texas Instruments Incorporated Fast motion estimation for hierarchical coding structures
US9699456B2 (en) * 2011-07-20 2017-07-04 Qualcomm Incorporated Buffering prediction data in video coding
ES2773691T3 (es) * 2011-09-14 2020-07-14 Samsung Electronics Co Ltd Procedimiento y dispositivo de codificación de una unidad de predicción (PU) según su tamaño y dispositivo de decodificación correspondiente
US8964849B2 (en) 2011-11-01 2015-02-24 Blackberry Limited Multi-level significance maps for encoding and decoding
CN107277511A (zh) 2011-11-08 2017-10-20 株式会社东芝 图像解码方法和图像解码装置
US20130136180A1 (en) * 2011-11-29 2013-05-30 Futurewei Technologies, Inc. Unified Partitioning Structures and Signaling Methods for High Efficiency Video Coding
BR122020007529B1 (pt) * 2012-01-20 2021-09-21 Ge Video Compression, Llc Conceito de codificação que permite o processamento paralelo, desmultiplexador de transporte e fluxo de bites de vídeo
DK3361734T3 (da) * 2012-07-02 2020-01-02 Samsung Electronics Co Ltd Entropikodning af en video og entropiafkodning af en video
TWI470616B (zh) * 2012-07-26 2015-01-21 Benq Corp 影像輔助顯示裝置
US20140029670A1 (en) * 2012-07-27 2014-01-30 Motorola Mobility Llc Devices and methods for processing of partition mode in high efficiency video coding
WO2014134308A1 (en) 2013-03-01 2014-09-04 Amgen Inc. Substituted 7-oxo-pyrido [2, 3-d] pyrimidines and their use for the treatment of egfr / erbb2 related disorders
CN103533330B (zh) * 2013-10-15 2016-01-06 华侨大学 一种基于数据重用的多视点多描述视频编码方法
RU2622875C2 (ru) * 2015-05-18 2017-06-20 федеральное государственное автономное образовательное учреждение высшего образования "Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики (Университет ИТМО) Способ префиксной дедупликации цифровых данных
US10972731B2 (en) 2015-11-10 2021-04-06 Interdigital Madison Patent Holdings, Sas Systems and methods for coding in super-block based video coding framework
JP6566864B2 (ja) * 2015-12-28 2019-08-28 Kddi株式会社 ビットストリーム変換装置、ビットストリーム変換方法、配信システム及びコンピュータ可読記録媒体
US10805607B2 (en) 2016-04-29 2020-10-13 Industry Academy Cooperation Foundation Of Sejong University Video signal encoding/decoding method and apparatus
US11496747B2 (en) * 2017-03-22 2022-11-08 Qualcomm Incorporated Intra-prediction mode propagation
US11412220B2 (en) * 2017-12-14 2022-08-09 Interdigital Vc Holdings, Inc. Texture-based partitioning decisions for video compression
US11695967B2 (en) * 2018-06-22 2023-07-04 Op Solutions, Llc Block level geometric partitioning
WO2022114752A1 (ko) * 2020-11-24 2022-06-02 현대자동차주식회사 효율적인 예측 및 변환을 위한 블록 분할 구조 및 이를 이용한 비디오 부호화 및 복호화를 위한 방법 및 장치
WO2023055172A1 (ko) * 2021-10-01 2023-04-06 엘지전자 주식회사 Ciip 기반 예측 방법 및 장치

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH082106B2 (ja) 1986-11-10 1996-01-10 国際電信電話株式会社 動画像信号のハイブリツド符号化方式
US6084908A (en) * 1995-10-25 2000-07-04 Sarnoff Corporation Apparatus and method for quadtree based variable block size motion estimation
EP0850540B1 (en) 1996-07-11 2004-11-10 Koninklijke Philips Electronics N.V. Transmission and reception of encoded video pictures
US6633611B2 (en) * 1997-04-24 2003-10-14 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for region-based moving image encoding and decoding
DE10022331A1 (de) 2000-05-10 2001-11-15 Bosch Gmbh Robert Verfahren zur Transformationscodierung von Bewegtbildsequenzen
JP4163618B2 (ja) * 2001-08-28 2008-10-08 株式会社エヌ・ティ・ティ・ドコモ 動画像符号化伝送システム、動画像符号化伝送方法、これらに用いて好適な符号化装置、復号化装置、符号化方法、復号化方法及びプログラム
US6980596B2 (en) 2001-11-27 2005-12-27 General Instrument Corporation Macroblock level adaptive frame/field coding for digital video content
JP2005519543A (ja) 2002-03-05 2005-06-30 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ レイヤ映像符合化のための方法及びシステム
US6795584B2 (en) * 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
JP2006517364A (ja) * 2003-01-07 2006-07-20 トムソン ライセンシング マクロブロック・パーティションのインター/イントラ混在ビデオ符号化
US9210441B2 (en) 2003-06-25 2015-12-08 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
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
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
US8116374B2 (en) 2004-05-07 2012-02-14 Broadcom Corporation Method and system for generating a transform size syntax element for video decoding
WO2006028088A1 (ja) 2004-09-08 2006-03-16 Matsushita Electric Industrial Co., Ltd. 動画像符号化方法および動画像復号化方法
US20060133495A1 (en) 2004-12-22 2006-06-22 Yan Ye Temporal error concealment for video communications
US20060203905A1 (en) 2005-03-14 2006-09-14 Shih-Chang Hsia Video coding system
JP2006304107A (ja) 2005-04-22 2006-11-02 Ntt Electornics Corp 符号化装置、及び、この符号化装置に適用されるプログラム
US7881384B2 (en) 2005-08-05 2011-02-01 Lsi Corporation Method and apparatus for H.264 to MPEG-2 video transcoding
EP2720466A1 (en) * 2005-09-26 2014-04-16 Mitsubishi Electric Corporation Moving image coding method
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
BRPI0715770B1 (pt) 2006-08-25 2020-03-10 Interdigital Vc Holdings, Inc. Método, aparelho e mídia de armazenamento para particionamento com menor resolução
US8923393B2 (en) 2006-11-02 2014-12-30 Qualcomm Incorporated Apparatus and method of reduced reference frame search in video encoding
CN101888555B (zh) 2006-11-17 2013-04-03 Lg电子株式会社 用于解码/编码视频信号的方法及装置
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
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
US8428133B2 (en) 2007-06-15 2013-04-23 Qualcomm Incorporated Adaptive coding of video block prediction mode
CN101822064A (zh) * 2007-10-16 2010-09-01 汤姆逊许可公司 用于几何分割超级块的视频编码和解码的方法和设备
KR20090129926A (ko) * 2008-06-13 2009-12-17 삼성전자주식회사 영상 부호화 방법 및 그 장치, 영상 복호화 방법 및 그 장치
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

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Atul Puri et al., "Video coding using the H.264/MPEG-4 AVC compression standard", Signal Processing: Image Communication, Vol.19, No.9, 2004, pp.793 - 849 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017188784A3 (ko) * 2016-04-29 2018-08-02 세종대학교 산학협력단 영상 신호 부호화/복호화 방법 및 장치
WO2023055032A1 (ko) * 2021-09-28 2023-04-06 엘지전자 주식회사 Gpm(geometric partitioning mode) 기반 영상 코딩 방법 및 장치
WO2023055126A1 (ko) * 2021-10-01 2023-04-06 엘지전자 주식회사 Gpm 기반 영상 코딩 방법 및 장치

Also Published As

Publication number Publication date
US8619856B2 (en) 2013-12-31
WO2010039731A2 (en) 2010-04-08
AU2009298646B2 (en) 2014-03-27
BRPI0920722A2 (pt) 2015-12-29
WO2010039731A3 (en) 2010-06-17
IL211789A0 (en) 2011-06-30
MY152695A (en) 2014-11-28
JP6896903B2 (ja) 2021-06-30
KR20110063859A (ko) 2011-06-14
JP6203662B2 (ja) 2017-09-27
CA2738504C (en) 2014-10-28
EP2347592B1 (en) 2020-04-01
KR20130054461A (ko) 2013-05-24
EP3745724A1 (en) 2020-12-02
JP2012504909A (ja) 2012-02-23
RU2011117578A (ru) 2012-11-10
TW201031217A (en) 2010-08-16
US20100086030A1 (en) 2010-04-08
AU2009298646A1 (en) 2010-04-08
CN102172023B (zh) 2013-08-28
EP2347592A2 (en) 2011-07-27
EP3745724A3 (en) 2021-04-14
IL211789A (en) 2015-10-29
JP6672226B2 (ja) 2020-03-25
JP2020109982A (ja) 2020-07-16
JP2018014726A (ja) 2018-01-25
JP5547199B2 (ja) 2014-07-09
TWI488506B (zh) 2015-06-11
JP6193432B2 (ja) 2017-09-06
CN102172023A (zh) 2011-08-31
RU2533196C2 (ru) 2014-11-20
HK1161465A1 (en) 2012-08-24
JP2014143691A (ja) 2014-08-07
ZA201103130B (en) 2012-04-18
CA2738504A1 (en) 2010-04-08
JP2016167830A (ja) 2016-09-15

Similar Documents

Publication Publication Date Title
US11039171B2 (en) Device and method for video decoding video blocks
JP6672226B2 (ja) 大型マクロ・ブロックを用いたビデオ・コーディング
KR101344115B1 (ko) 큰 매크로블록들을 이용한 비디오 코딩
US20100086031A1 (en) Video coding with large macroblocks

Legal Events

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

Payment date: 20161229

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190312

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200303

Year of fee payment: 7