KR20170042292A - 다중-파티션 변환을 위해 변환 구조를 재사용하는 시스템 및 방법 - Google Patents

다중-파티션 변환을 위해 변환 구조를 재사용하는 시스템 및 방법 Download PDF

Info

Publication number
KR20170042292A
KR20170042292A KR1020177003316A KR20177003316A KR20170042292A KR 20170042292 A KR20170042292 A KR 20170042292A KR 1020177003316 A KR1020177003316 A KR 1020177003316A KR 20177003316 A KR20177003316 A KR 20177003316A KR 20170042292 A KR20170042292 A KR 20170042292A
Authority
KR
South Korea
Prior art keywords
transform
block
partition type
inverse transform
video data
Prior art date
Application number
KR1020177003316A
Other languages
English (en)
Inventor
안토니오 리날디
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20170042292A publication Critical patent/KR20170042292A/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/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
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/145Square transforms, e.g. Hadamard, Walsh, Haar, Hough, Slant transforms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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/18Methods 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 a set of transform coefficients
    • 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/182Methods 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 a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter

Abstract

코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하도록 구성된 장치는 메모리 및 그 메모리와 통신하는 프로세서를 포함한다. 메모리는 코딩된 비트스트림에서의 비디오 데이터의 블록과 연관된 데이터를 저장하도록 구성된다. 프로세서는: 블록의 변환 파티션 타입을 결정하는 것으로서, 블록은 블록과 연관된 복수의 화소 값들에 대해 하나 이상의 변환 함수들을 적용하는 것을 통해 결정된 변환 계수들과 연관되는, 상기 변환 파티션 타입을 결정하고; 변환 파티션 타입에 기초하여, 변환 계수들이 하나 이상의 변환 함수들에 대응하는 역 변환 함수로 입력되어야 하는 순서를 결정하며; 결정된 순서로 역 변환 함수들로 변환 계수들을 입력하는 것을 통해 출력 값들을 획득하고; 및 그 출력 값들에 기초하여 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하도록 구성된다.

Description

다중-파티션 변환을 위해 변환 구조를 재사용하는 시스템 및 방법{SYSTEM AND METHOD FOR REUSING TRANSFORM STRUCTURE FOR MULTI-PARTITION TRANSFORM}
본 개시는 비디오 코딩 및 압축의 분야에 관한 것으로서, 특히 디스플레이 링크 비디오 압축과 같은 디스플레이 링크들을 통한 송신을 위한 비디오 압축에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 개인용 휴대정보단말들 (personal digital assistants, PDAs), 랩톱 컴퓨터들, 데스크톱 모니터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 비디오 원격회의 디바이스들 등을 포함한 넓은 범위의 디바이스들에 통합될 수 있다. 디스플레이 링크들은 적절한 소스 디바이스들에 디스플레이들을 연결하기 위해 사용된다. 디스플레이 링크들의 대역폭 요건들은 디스플레이들의 해상도에 비례하고, 따라서, 고해상도 디스플레이들은 큰 대역폭 디스플레이 링크들을 요구한다. 일부 디스플레이 링크들은 고 해상도 디스플레이를 지원하기 위한 대역폭을 갖지 않는다. 비디오 압축은 더 낮은 대역폭 디스플레이 링크들이 고 해상도 디스플레이들에 디지털 비디오를 제공하기 위해 사용될 수 있도록 대역폭 요건들을 감소시키기 위해 사용될 수 있다.
다른 것들은 화소 데이터에 대한 이미지 압축을 이용하기를 시도했다. 그러나, 그러한 스킴들은 때때로 시각적으로 무손실이 아니거나, 종래의 디스플레이 디바이스들에서 구현하기에 어렵고 비용이 많이 들 수 있다.
VESA (Video Electronics Standards Association) 는 디스플레이 링크 비디오 압축을 위한 표준으로서 디스플레이 스트림 압축 (Display Stream Compression: DSC) 를 개발했다. DSC 와 같은 디스플레이 링크 비디오 압축 기법은, 무엇보다도, 시각적으로 무손실인 화상 품질 (즉, 사용자들이 압축이 활성이라는 것을 분간할 수 없도록 하는 품질 레벨을 갖는 화상들) 을 제공해야 한다. 디스플레이 링크 비디오 압축 기법은 또한 종래의 하드웨어로 실시간으로 구현하기에 쉽고 저가인 스킴을 제공해야 한다.
본 개시의 시스템들, 방법들, 및 디바이스들 각각은 수개의 혁신적인 양태들을 가지며, 이들 중 단 하나도 여기에 개시된 바람직한 속성들에 대해 유일하게 책임이 있지는 않다.
하나의 양태에서, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법은: 블록과 연관된 변환 파티션 타입을 결정하는 단계로서, 블록은 블록과 연관된 복수의 화소 값들에 대해 하나 이상의 변환 함수들을 적용하는 것을 통해 적어도 부분적으로 결정된 복수의 변환 계수들과 연관되는, 상기 변환 파티션 타입을 결정하는 단계; 변환 파티션 타입에 기초하여, 복수의 변환 계수들이 하나 이상의 변환 함수들에 대응하는 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하는 단계; 결정된 순서로 하나 이상의 역 변환 함수들로 복수의 변환 계수들을 입력하는 것을 통해 적어도 부분적으로 복수의 출력 값들을 획득하는 단계; 및 복수의 출력 값들에 적어도 부분적으로 기초하여 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 단계를 포함한다.
다른 양태에서, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치는 메모리 및 메모리와 통신하는 프로세서를 포함한다. 메모리는 코딩된 비트스트림에서의 비디오 데이터의 블록과 연관된 데이터를 저장하도록 구성된다. 프로세서는: 블록과 연관된 변환 파티션 타입을 결정하는 것으로서, 블록은 블록과 연관된 복수의 화소 값들에 대해 하나 이상의 변환 함수들을 적용하는 것을 통해 적어도 부분적으로 결정된 복수의 변환 계수들과 연관되는, 상기 변환 파티션 타입을 결정하고; 변환 파티션 타입에 기초하여, 복수의 변환 계수들이 하나 이상의 변환 함수들에 대응하는 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하며; 결정된 순서로 하나 이상의 역 변환 함수들로 복수의 변환 계수들을 입력하는 것을 통해 적어도 부분적으로 복수의 출력 값들을 획득하고; 및 복수의 출력 값들에 적어도 부분적으로 기초하여 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하도록 구성된다.
다른 양태에서, 비일시적 컴퓨터 판독가능 매체는 코드를 포함하며, 그 코드는 실행될 때 장치로 하여금: 코딩된 비트스트림에서의 비디오 데이터의 블록과 연관된 데이터를 저장하게 하고; 블록과 연관된 변환 파티션 타입을 결정하게 하는 것으로서, 블록은 블록과 연관된 복수의 화소 값들에 대해 하나 이상의 변환 함수들을 적용하는 것을 통해 적어도 부분적으로 결정된 복수의 변환 계수들과 연관되는, 상기 변환 파티션 타입을 결정하게 하며; 변환 파티션 타입에 기초하여, 복수의 변환 계수들이 하나 이상의 변환 함수들에 대응하는 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하게 하고; 결정된 순서로 하나 이상의 역 변환 함수들로 복수의 변환 계수들을 입력하는 것을 통해 적어도 부분적으로 복수의 출력 값들을 획득하게 하며; 및 복수의 출력 값들에 적어도 부분적으로 기초하여 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하게 한다.
다른 양태에서, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하도록 구성된 비디오 코딩 디바이스는: 코딩된 비트스트림에서의 비디오 데이터의 블록과 연관된 데이터를 저장하는 수단; 블록과 연관된 변환 파티션 타입을 결정하는 수단으로서, 블록은 블록과 연관된 복수의 화소 값들에 대해 하나 이상의 변환 함수들을 적용하는 것을 통해 적어도 부분적으로 결정된 복수의 변환 계수들과 연관되는, 상기 변환 파티션 타입을 결정하는 수단; 변환 파티션 타입에 기초하여, 복수의 변환 계수들이 하나 이상의 변환 함수들에 대응하는 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하는 수단; 결정된 순서로 하나 이상의 역 변환 함수들로 복수의 변환 계수들을 입력하는 것을 통해 적어도 부분적으로 복수의 출력 값들을 획득하는 수단; 및 복수의 출력 값들에 적어도 부분적으로 기초하여 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 수단을 포함한다.
도 1a 는 본 개시에서 기술된 양태들에 따른 기법들을 이용할 수도 있는 예시의 비디오 인코딩 및 디코딩 시스템을 도시하는 블록도이다.
도 1b 는 본 개시에서 기술된 양태들에 따른 기법들을 수행할 수도 있는 다른 예시의 비디오 인코딩 및 디코딩 시스템을 도시하는 블록도이다.
도 2a 는 본 개시에서 기술된 양태들에 따른 기법들을 구현할 수도 있는 비디오 인코더의 예를 도시하는 블록도이다.
도 2b 는 본 개시에서 기술된 양태들에 따른 기법들을 구현할 수도 있는 비디오 디코더의 예를 도시하는 블록도이다.
도 3 은 인코더측상의 변환 파티셔닝의 예이다.
도 4 은 디코더측상의 변환 파티셔닝의 예이다.
도 5a 내지 도 5d 는 여러 파티션 타입들에서 사용되는 예시의 화소 파티션들을 도시한다.
도 6a 내지 도 6d 는 단일의 역 변환의 변환 구조를 사용하는 여러 파티션 타입들의 예시의 구현들을 도시한다.
도 7 은 본 개시에서 기술된 양태들에 따른 다중-파티션 변환들을 위한 변환 구조를 재사용하기 위해 디코더에 의해 수행되는 방법을 도시하는 블록도이다.
도 8 은 본 개시에서 기술된 양태들에 따라 디코더측상의 변환 파티셔닝의 예이다.
일반적으로, 본 개시는 예를 들어 디스플레이 링크 비디오 압축에서 이용되는 것들과 같은 비디오 압축 기법들을 개선하는 방법들에 관련된다. 더 구체적으로는, 본 개시는 단일의 변환 구조를 사용하는 다중-길이 변환 변환 함수들을 구현하는 시스템들 및 방법들에 관련된다.
소정의 실시형태들이 디스플레이 링크 비디오 압축 기법의 예인 디스플레이 스트림 압축 (DSC) 표준의 콘텍스트에서 여기에 기술되지만, 본 기술분야에서 통상의 기술자는 여기에 개시된 시스템들 및 방법들이 임의의 적합한 비디오 코딩 표준에 적용가능할 수도 있다는 것을 인정할 것이다. 예를 들어, 여기에 개시된 실시형태들은 다음의 표준들의 하나 이상에 적용가능할 수도 있다: 국제 전기통신 연합 (ITU) 전기통신 표준화 섹터 (ITU-T) H.261, 표준화를 위한 국제 기구/국제 전기기술 위원회 (ISO/IEC) 동화상 전문가 그룹-1 (MPEG-1) 비쥬얼, ITU-T H.262 또는 ISO/IEC MPEG-2 비쥬얼, ITU-T H.263, ISO/IEC MPEG-4 비쥬얼, ITU-T H.264 (ISO/IEC MPEG-4 AVC 로서도 알려짐), 고효율 비디오 코딩 (HEVC), 및 그러한 표준들에 대한 임의의 확장들. 또한, 본 개시에 기술된 기법들은 미래에 개발되는 표준들의 부분이 될 수도 있다. 즉, 본 개시에 기술된 기법들은 이전에 개발된 비디오 코딩 표준들, 현재 개발 중에 있는 비디오 코딩 표준들, 및 앞으로 올 비디오 코딩 표준들에 적용가능할 수도 있다. 또한, 본 개시에 기술된 기법들은 변환-기반 이미지/비디오 압축을 수반하는 임의의 코딩 스킴에 적용가능할 수도 있다.
비디오 인코더들은 추가적인 압축을 달성하기 위해 코딩될 화소 값들 또는 레지듀얼 값들에 대해 하나 이상의 변환들을 적용할 수도 있다. 예를 들어, 인코더는 비디오 데이터 (예를 들어, 화소 값들 또는 레지듀얼 값들) 의 블록에 대해 하나 이상의 변환들을 적용하고 변환 계수 블록 (예를 들어, 비디오 데이터의 블록에 대응하는 변환 계수들의 블록) 을 획득할 수도 있다. 일부 구현들에서, 인코더는 상이한 사이즈들의 다수의 변환들 (예를 들어, 4 개의 상이한 세트들의 변환들) 을 수행하고 이미지 또는 비디오 데이터의 특정의 블록 또는 부분에 대한 (예를 들어, 원하는 레이트-왜곡 성능에 가장 가까운) 최선의 성능을 산출하는 변환을 선택한다. 인코더는 디코더에게 그 선택된 변환을 표시하기 위해 비트스트림에서 변환 선택 신호를 시그널링할 수도 있다.
기존의 디코더 하드웨어 구현들에서, 별개의 역 변환 블록이 각각의 변환 파티션 타입에 대해 사용된다. 예를 들어, 인코더가 4 개의 상이한 파티션 타입들로부터 선택하도록 구성되는 경우, 인코더에 의해 생성된 비트스트림들을 디코딩하도록 구성되는 대응하는 디코더는 또한 각각 4 개의 상이한 파티션 타입들에 대응하는 4 개의 세트들의 하드웨어 (예를 들어, 서로들 사이에 공유되지 않는 레지스터들, 가산기들, 감산기들 등) 를 포함한다. 하드웨어의 각각의 세트는 예를 들어 멀티플렉서 (MUX) 로 피딩되는 출력 값들의 세트를 생성하고, 디코더는 파티션 선택 신호에 기초하여 출력 값들의 적절한 세트를 선택한다.
그러나, 인커밍 파티셔닝된 비트스트림을 디코딩하기 위해 다수의 역 변환 블록들을 사용하는 것은, 하드웨어 구현이 디코더측상의 칩 면적 및/또는 구현 코스트에 특별히 민감하기 때문에, 디코더의 코스트-효과성에 악영향을 미친다. 따라서, 더 코스트-효과적인 방식으로 사이징하는 다수의 변환 파티션을 수반하는 변환-코딩된 비트스트림들을 디코딩하는 개선된 방법이 바람직하다.
본 개시에서, 다수의 변환 파티션 사이징을 수반하는 변환-코딩된 비트스트림들을 디코딩하는 개선된 방법이 기술된다. 예를 들어, 16-포인트 변환의 예시의 구현은 가산기들 및/또는 감산기들과 같은 하드웨어를 포함할 수도 있다. 이들 가산기들 및/또는 감산기들은 16-포인트 변환을 구현하기 위해 사용되는 하드웨어와는 별개이고 독립된 그러한 8-포인트 및 4-포인트 변환들을 구현하기 위해 필요한 풀 (full) 변환 구조를 추가할 필요 없이 8-포인트 및 4-포인트 변환들과 같은 다른 변환들을 수행하기 위해 이용될 수도 있다. 즉, 인코더 및/또는 디코더가 수행할 필요가 있을 수도 있는 여러 변환들을 구현하기 위해 사용된 하드웨어의 소정의 부분들을 재사용함으로써, 그러한 변환들을 구현하기 위한 하드웨어 요건들이 감소될 수 있다.
비디오 코딩 표준들
디지털 이미지, 예컨대 비디오 이미지, TV 이미지, 스틸 이미지 또는 비디오 레코더 또는 컴퓨터에 의해 생성된 이미지는, 수평 및 수직 라인들에 배열된 화소들 또는 샘플들을 포함할 수도 있다. 단일 이미지에서의 화소들의 개수는 통상적으로 수만개이다. 각각의 화소는 통상적으로 루미넌스 (luminance) 및 크로미넌스 (chrominance) 정보를 포함한다. 압축 없이, 이미지 인코더로부터 이미지 디코더로 전달될 정보의 순수한 양은 실시간 이미지 송신을 비현실적이게 할 것이다. 송신될 정보의 양을 감소시키기 위해, 다수의 상이한 압축 방법들, 예컨대 JPEG, MPEG 및 H.263 표준들이 개발되었다.
비디오 코딩 표준들은 ITU-T H.261, ISO/IEC MPEG-1 비주얼, ITU-T H.262 또는 ISO/IEC MPEG-2 비주얼, ITU-T H.263, ISO/IEC MPEG-4 비주얼, ITU-T H.264 (또한 ISO/IEC MPEG-4 AVC 라고도 알려짐), 및 HEVC 를, 그러한 표준들의 확장들을 포함하여, 포함한다.
또한, 비디오 코딩 표준, 즉, DSC 가 VESA 에 의해 개발되었다. DSC 표준은 디스플레이 링크들을 통한 송신을 위해 비디오를 압축할 수 있는 비디오 압축 표준이다. 디스플레이들의 해상도가 증가함에 따라, 디스플레이들을 구동하기 위해 요구되는 비디오 데이터의 대역폭은 대응적으로 증가한다. 일부 디스플레이 링크들은 그러한 해상도들을 위해 디스플레이로 비디오 데이터의 모두를 송신하기 위한 대역폭을 갖지 않을 수도 있다. 이에 따라, DSC 표준은 디스플레이 링크들을 통한 상호 운용적 (interoperable), 시각적 무손실 압축을 위한 압축 표준을 특정한다.
DSC 표준은 H.264 및 HEVC 와 같은 다른 비디오 코딩 표준들과는 상이하다. DSC 는 인트라-프레임 압축을 포함하지만, 인터-프레임 압축을 포함하지 않으며, 이는 비디오 데이터를 코딩함에 있어서 DSC 표준에 의해 시간적 정보가 사용되지 않을 수도 있다는 것을 의미한다. 대조적으로, 다른 비디오 코딩 표준들은 그들의 비디오 코딩 기법들에서 인터-프레임 압축을 채용할 수도 있다.
비디오 코딩 시스템
신규한 시스템들, 장치들, 및 방법들의 다양한 양태들이 첨부 도면들을 참조하여 이하 더 완전히 설명된다. 그러나, 본 개시물은 많은 상이한 형태들로 구현될 수도 있고 본 개시물 전반에 걸쳐 제시된 임의의 특정 구조 또는 기능으로 제한되는 것으로서 해석되어서는 안된다. 오히려, 이들 양태들이 제공되어 본 개시물이 철저하고 완전해지도록 하고, 당업자들에게 본 개시물의 범위를 충분히 전달하도록 한다. 본 명세서에서의 교시들에 기초하여, 당업자는 본 개시물의 범위가 본 명세서에 개시된 신규한 시스템들, 장치들, 및 방법들의 임의의 양태를, 본 개시물의 임의의 다른 양태와는 독립적으로 구현되든지 또는 그 임의의 다른 양태와 조합되든지 간에 커버하도록 의도된다는 것을 인식해야 한다. 예를 들어, 본 명세서에서 제시된 임의의 개수의 양태들을 이용하여 장치가 구현될 수도 있거나 또는 방법이 실시될 수도 있다. 또한, 본 개시물의 범위는 본 명세서에 제시된 본 개시물의 다양한 양태들에 부가적으로 또는 그 이외에 다른 구조, 기능성, 또는 구조 및 기능성을 이용하여 실시되는 장치 또는 방법을 커버하도록 의도된다. 본 명세서에 개시된 임의의 양태는 청구항의 하나 이상의 엘리먼트들에 의해 구현될 수도 있다는 것이 이해되어야 한다.
특정 양태들이 본 명세서에서 설명되지만, 이들 양태들의 많은 변형들 및 치환들은 본 개시물의 범위 내에 있다. 선호되는 양태들의 일부 이익들 및 이점들이 언급되지만, 본 개시물의 범위는 특정 이익들, 용도들 또는 목적들로 제한되는 것으로 의도되지 않는다. 오히려, 본 개시물의 양태들은 도면들에서 그리고 선호되는 양태들의 다음 설명에서 일부가 예로서 예시되는 상이한 무선 기술들, 시스템 구성들, 네트워크들, 및 송신 프로토콜들에 폭넓게 적용가능하도록 의도된다. 상세한 설명 및 도면들은 본 개시물을 제한하기보다는 단순히 예시할 뿐이고, 본 개시물의 범위는 첨부된 청구항들 및 그의 동등물들에 의해 정의된다.
첨부된 도면들은 예들을 예시한다. 첨부된 도면들에서 참조 부호들에 의해 나타낸 엘리먼트들은 다음 설명에서 유사한 참조 부호들에 의해 나타낸 엘리먼트들에 대응한다. 본 개시물에서, 서수 단어들 (예를 들어, "제 1", "제 2", "제 3" 등) 로 시작하는 명칭들을 갖는 엘리먼트들은 반드시 그 엘리먼트들이 특정 순서를 갖는다는 것을 의미하지는 않는다. 오히려, 그러한 서수 단어들은 동일한 또는 유사한 타입의 상이한 엘리먼트들을 지칭하기 위해 단순히 사용된다.
도 1a 는 본 개시물에서 설명되는 양태들에 따른 기법들을 활용할 수도 있는 예시적인 비디오 코딩 시스템 (10) 을 예시하는 블록도이다. 본 명세서에서 설명에 사용되는 바와 같이, "비디오 코더" 또는 "코더" 라는 용어는 비디오 인코더들 및 비디오 디코더들 양쪽 모두를 일반적으로 지칭한다. 본 개시물에서, "비디오 코딩" 또는 "코딩" 이라는 용어들은 비디오 인코딩 및 비디오 디코딩을 일반적으로 지칭할 수도 있다. 비디오 인코더들 및 비디오 디코더들에 부가적으로, 본 출원에서 설명되는 양태들은 트랜스코더들 (예를 들어, 비트스트림을 디코딩하고 다른 비트스트림을 재인코딩할 수 있는 디바이스들) 및 미들박스들 (예를 들어, 비트스트림을 변경, 변환, 및/또는 그렇지 않으면 조작할 수 있는 디바이스들) 과 같은 다른 관련된 디바이스들로 확장될 수도 있다.
도 1a 에 도시된 바와 같이, 비디오 코딩 시스템 (10) 은 목적지 디바이스 (14) (즉, "비디오 코딩 디바이스 (14)" 또는 "코딩 디바이스 (14)") 에 의해 추후에 디코딩될 인코딩된 비디오 데이터를 생성하는 소스 디바이스 (12) (즉, "비디오 코딩 디바이스 (12)" 또는 "코딩 디바이스 (12)") 를 포함한다. 도 1a 의 예에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 별개의 디바이스들을 구성한다. 그러나, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 도 1b 의 예에 도시된 바와 같이, 동일한 디바이스 상에 있거나 또는 동일한 디바이스의 부분일 수도 있다는 것에 주목한다.
도 1a 를 다시 한번 참조하면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 각각, 데스크톱 컴퓨터들, 노트북 (예를 들어, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 소위 "스마트" 폰들과 같은 전화 핸드셋들, 소위 "스마트" 패드들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함하는, (비디오 코딩 디바이스들로서도 지칭되는) 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 여러 실시형태들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 구비될 (즉, 무선 통신을 통해 통신하도록 구성될) 수도 있다.
비디오 코딩 시스템 (10) 의 비디오 코딩 디바이스들 (12, 14) 은 무선 광역 네트워크 (WWAN) (예를 들어, 셀룰러) 및/또는 무선 로컬 영역 네트워크 (WLAN) 캐리어들과 같은 무선 네트워크들 및 무선 기술들을 통해 통신하도록 구성될 수도 있다. 용어들 "네트워크" 및 "시스템" 은 종종 교환가능하게 사용된다. 비디오 코딩 디바이스들 (12, 14) 각각은 사용자 장비 (UE), 무선 디바이스, 단말기, 이동국, 가입자 유닛 등일 수도 있다.
WWAN 캐리어들은 예를 들어 코드 분할 다중 액세스 (CDMA), 시분할 다중 액세스 (TDMA), 주파수 분할 다중 액세스 (FDMA), 직교 FDMA (OFDMA), 단일-캐리어 FDMA (SC-FDMA) 및 다른 네트워크들과 같은 무선 통신 네트워크들을 포함할 수도 있다. CDMA 네트워크는 UTRA (Universal Terrestrial Radio Access), CDMA2000 등과 같은 무선 기술을 구현할 수도 있다. UTRA 는 광대역 CDMA (WCDMA) 및 CDMA 의 다른 변형들을 포함한다. CDMA2000 은 IS-2000, IS-95 및 IS-856 표준들을 커버한다. TDMA 네트워크는 GSM (Global System for Mobile Communications) 과 같은 무선 기술을 구현할 수도 있다. OFDMA 네트워크는 진화된 UTRA (E-UTRA), UMB (Ultra Mobile Broadband), IEEE 802.11 (Wi-Fi), IEEE 802.16 (WiMAX), IEEE 802.20, 플래시-OFDMA 등과 같은 무선 기술을 구현할 수도 있다. UTRA 및 E-UTRA 는 UMTS (Universal Mobile Telecommunication System) 의 부분이다. 3GPP 롱 텀 에볼루션 (LTE) 및 LTE-Advanced (LTE-A) 는 E-UTRA 를 사용하는 UMTS 의 새로운 릴리스들이다. UTRA, E-UTRA, UMTS, LTE, LTE-A 및 GSM 은 "제 3 세대 파트너쉽 프로젝트" 로 명명된 기구로부터의 문서들에 기술된다. CDMA2000 및 UMB 는 "제 3 세대 파트너쉽 프로젝트 2" (3GPP2) 로 명명된 기구로부터의 문서들에 기술된다.
비디오 코딩 시스템 (10) 의 비디오 코딩 디바이스들 (12, 14) 은 또한 예를 들어 이들 보정들: 802.11a-1999 (통상 "802.11a" 로 불림), 802.11b-1999 (통상 "802.11b" 로 불림), 802.11g-2003 (통상 "802.11g" 로 불림) 등을 포함하는 IEEE 802.11 표준과 같은 하나 이상의 표준들에 따라 WLAN 기지국을 통해 서로와 통신할 수도 있다.
목적지 디바이스 (14) 는, 링크 (16) 를 통해, 디코딩될 인코딩된 비디오 데이터를 수신할 수도 있다. 링크 (16) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시키는 것이 가능한 임의의 타입의 매체 또는 디바이스를 포함할 수도 있다. 도 1a 의 예에서, 링크 (16) 는 소스 디바이스 (12) 로 하여금 인코딩된 비디오 데이터를 목적지 디바이스 (14) 에 실시간으로 송신할 수 있게 하는 통신 매체를 포함할 수도 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되고, 목적지 디바이스 (14) 에 송신될 수도 있다. 통신 매체는 임의의 무선 또는 유선 통신 매체, 예컨대, 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 통신 매체는 패킷 기반 네트워크, 예컨대 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 부분을 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
도 1a 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), (간단히 인코더 (20) 로서도 지칭되는) 비디오 인코더 (20) 및 출력 인터페이스 (22) 를 포함한다. 일부 경우들에서, 출력 인터페이스 (22) 는 변조기/복조기 (모뎀) 및/또는 송신기를 포함할 수도 있다. 소스 디바이스 (12) 에서, 비디오 소스 (18) 는 소스 예컨대 비디오 캡처 디바이스, 예를 들어, 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 비디오를 비디오 콘텐츠 제공자로부터 수신하기 위한 비디오 피드 인터페이스, 및/또는 소스 비디오로서 컴퓨터 그래픽 데이터를 생성하기 위한 컴퓨터 그래픽 시스템, 또는 이러한 소스들의 조합을 포함할 수도 있다. 하나의 예로서, 비디오 소스 (18) 가 비디오 카메라인 경우, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 도 1b 의 예에 예시된 바와 같이, 소위 "카메라 폰들" 또는 "비디오 폰들" 을 형성할 수도 있다. 그러나, 본 개시물에서 설명되는 기법들은 일반적으로 비디오 코딩에 적용가능할 수도 있고, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다.
캡처된, 미리 캡처된, 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 데이터는 소스 디바이스 (12) 의 출력 인터페이스 (22) 를 통해 목적지 디바이스 (14) 에 직접 송신될 수도 있다. 인코딩된 비디오 데이터는 또한 (또는 대안적으로) 디코딩 및/또는 재생을 위해 목적지 디바이스 (14) 또는 다른 디바이스들에 의한 추후 액세스를 위해 저장 디바이스 (31) 상에 저장될 수도 있다. 도 1a 및 도 1b 에 예시된 비디오 인코더 (20) 는 도 2a 에 예시된 비디오 인코더 (20) 또는 본 명세서에서 설명되는 임의의 다른 비디오 인코더를 포함할 수도 있다.
도 1a 의 예에서, 목적지 디바이스 (14) 는 입력 인터페이스 (28), (간단히 디코더 (30) 로서도 지칭되는) 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 일부 경우들에서, 입력 인터페이스 (28) 는 수신기 및/또는 모뎀을 포함할 수도 있다. 목적지 디바이스 (14) 의 입력 인터페이스 (28) 는 링크 (16) 를 통해 및/또는 저장 디바이스 (31) 로부터 인코딩된 비디오 데이터를 수신할 수도 있다. 링크 (16) 를 통해 통신된, 또는 저장 디바이스 (31) 상에 제공된, 인코딩된 비디오 데이터는, 비디오 데이터를 디코딩함에 있어서, 비디오 디코더 (30) 와 같은 비디오 디코더에 의한 이용을 위해 비디오 인코더 (20) 에 의해 생성된 다양한 신택스 엘리먼트들을 포함할 수도 있다. 이러한 신택스 엘리먼트들은, 통신 매체 상에 송신되거나, 저장 매체 상에 저장되거나, 또는 파일 서버 상에 저장되는 인코딩된 비디오 데이터에 포함될 수도 있다. 도 1a 및 도 1b 에 예시된 비디오 디코더 (30) 는 도 2b 에 예시된 비디오 디코더 (30) 또는 본 명세서에서 설명되는 임의의 다른 비디오 디코더를 포함할 수도 있다.
디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합되거나, 또는 그 외부에 있을 수도 있다. 일부 예들에서, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함할 수도 있고 또한 외부 디스플레이 디바이스와 인터페이싱하도록 구성될 수도 있다. 다른 예들에서, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 다양한 디스플레이 디바이스들, 예컨대, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스 중 임의의 것을 포함할 수도 있다.
관련된 양태들에서, 도 1b 는 소스 디바이스 (12) 및 목적지 디바이스 (14) 가 디바이스 (11) 상에 있거나 또는 그 디바이스의 부분인 예시적인 비디오 코딩 시스템 (10') 을 도시한다. 디바이스 (11) 는 전화기 핸드셋, 예컨대 "스마트" 폰 등일 수도 있다. 디바이스 (11) 는 소스 디바이스 (12) 및 목적지 디바이스 (14) 와 동작가능하게 통신하는 (선택적으로 존재하는) 프로세서/제어기 디바이스 (13) 를 포함할 수도 있다. 도 1b 의 비디오 코딩 시스템 (10'), 및 그의 컴포넌트들은, 그 외에는 도 1a 의 비디오 코딩 시스템 (10) 및 그의 컴포넌트들과 유사하다.
비디오 인코더 (20) 와 비디오 디코더 (30) 는 비디오 압축 표준, 예컨대 DSC 에 따라 동작할 수도 있다. 대안적으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, MPEG4, Part 10, AVC, HEVC 라고 대안적으로 지칭되는 ITU-T H.264 표준과 같은 다른 사유 (proprietary) 또는 산업 표준들, 또는 이러한 표준들의 확장들에 따라 동작할 수도 있다. 그러나, 본 개시물의 기법들은 임의의 특정 코딩 표준으로 제한되지 않는다. 비디오 압축 표준들의 다른 예들은 MPEG-2 및 ITU-T H.263 을 포함한다.
도 1a 및 도 1b 의 예들에 도시되지 않았지만, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 오디오 인코더 및 디코더와 각각 통합될 수도 있으며, 공통 데이터 스트림 또는 별개의 데이터 스트림들에서 오디오와 비디오 양쪽의 인코딩을 핸들링하기에 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용가능하다면, 일부 예들에서, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 다른 프로토콜들, 예컨대, 사용자 데이터그램 프로토콜 (UDP) 을 준수할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은, 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 집적 회로 (ASIC) 들, 필드 프로그래밍가능 게이트 어레이 (FPGA) 들, 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 다양한 적합한 인코더 회로부 중 임의의 것으로서 구현될 수도 있다. 이 기법들이 부분적으로 소프트웨어로 구현되면, 디바이스는 그 소프트웨어에 대한 명령들을 적합한 비일시적 컴퓨터 판독가능 매체에 저장할 수도 있고 그 명령들을 하드웨어로 하나 이상의 프로세서들을 이용하여 실행함으로써 본 개시물의 기법들을 수행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있고, 이들 중 어느 하나는 조합된 인코더/디코더의 부분으로서 각각의 디바이스에 통합될 수도 있다.
비디오 코딩 프로세스
위에서 간략히 언급된 바와 같이, 비디오 인코더 (20) 는 비디오 데이터를 인코딩한다. 비디오 데이터는 하나 이상의 화상들을 포함할 수도 있다. 화상들 각각은 비디오의 부분을 형성하는 스틸 이미지이다. 일부 경우들에서, 화상은 비디오 "프레임" 이라고 지칭될 수도 있다. 비디오 인코더 (20) 가 비디오 데이터 (예를 들어, 비디오 코딩 계층 (VCL) 데이터 및/또는 비-VCL 데이터) 를 인코딩할 때, 비디오 인코더 (20) 는 비트스트림을 생성할 수도 있다. 비트스트림은 비디오 데이터의 코딩된 표현을 형성하는 비트들의 시퀀스를 포함할 수도 있다. 비트스트림은 코딩된 화상들 및 연관된 데이터를 포함할 수도 있다. 코딩된 화상은 화상의 코딩된 표현이다. VCL 데이터는 코딩된 화상 데이터 (즉, 코딩된 화상(들) 의 샘플들과 연관된 정보) 를 포함할 수도 있고, 비-VCL 데이터는 하나 이상의 코디된 화상들과 연관된 제어 정보 (예를 들어, 파라미터 세트들 및/또는 보충 강화 정보) 를 포함할 수도 있다.
비트스트림을 생성하기 위해, 비디오 인코더 (20) 는 비디오 데이터에서의 각각의 화상에 대해 인코딩 동작들을 수행할 수도 있다. 비디오 인코더 (20) 가 화상들에 대해 인코딩 동작들을 수행할 때, 비디오 인코더 (20) 는 일련의 코딩된 화상들 및 연관된 데이터를 생성할 수도 있다.
연관된 데이터는 양자화 파라미터 (QP) 와 같은 코딩 파라미터들의 세트를 포함할 수도 있다. 코딩된 화상을 생성하기 위해, 비디오 인코더 (20) 는 화상을 동일하게 사이징된 비디오 블록들로 파티셔닝할 수도 있다. 비디오 블록은 샘플들의 2 차원 어레이일 수도 있다. 코딩 파라미터들은 비디오 데이터의 모든 블록에 대해 코딩 옵션 (예를 들어, 코딩 모드) 을 정의할 수도 있다. 코딩 옵션은 원하는 레이트-왜곡 성능을 달성하기 위해 선택될 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 화상을 복수의 슬라이스들로 파티셔닝할 수도 있다. 슬라이스들 각각은 이미지 또는 프레임 내의 영역들의 나머지로부터의 정보 없이 독립적으로 디코딩될 수 있는 이미지 (예를 들어, 프레임) 내의 공간적으로 구별된 영역을 포함할 수도 있다. 각각의 이미지 또는 비디오 프레임은 단일의 슬라이스에서 인코딩될 수도 있거나 각각의 이미지 또는 비디오 프레임은 수개의 슬라이스들에서 인코딩될 수도 있다. DSC 에서, 각각의 슬라이스를 인코딩하기 위해 할당된 비트들의 수는 실질적으로 일정할 수도 있다. 화상에 대해 인코딩 동작을 수행하는 것의 부분으로서, 비디오 인코더 (20) 는 화상의 각각의 슬라이스에 대해 인코딩 동작들을 수행할 수도 있다. 비디오 인코더 (20) 가 슬라이스에 대해 인코딩 동작을 수행할 때, 비디오 인코더 (20) 는 그 슬라이스와 연관된 인코딩된 데이터를 생성할 수도 있다. 슬라이스와 연관된 인코딩된 데이터는 "코딩된 슬라이스" 라고 지칭될 수도 있다.
DSC 비디오 인코더
도 2a 는 본 개시에서 기술된 양태들에 따른 기법들을 구현할 수도 있는 비디오 인코더 (20) 의 예를 도시하는 블록도이다. 비디오 인코더 (20) 는 본 개시의 기법들의 일부 또는 전부를 수행하도록 구성될 수도 있다. 일부 예들에서, 본 개시에 기술된 기법들은 비디오 인코더 (20) 의 여러 컴포넌트들 사이에 공유될 수도 있다. 일부 예들에서, 추가적으로 또는 대안적으로, 프로세서 (도시하지 않음) 는 본 개시에 기술된 기법들의 일부 또는 전부를 수행하도록 구성될 수도 있다.
설명의 목적으로, 본 개시는 DSC 코딩의 콘텍스트에서 비디오 인코더 (20) 를 기술한다. 그러나, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 2a 의 예에서, 비디오 인코더 (20) 는 복수의 기능적 컴포넌트들을 포함한다. 비디오 인코더 (20) 의 기능적 컴포넌트들은 컬러-공간 변환기 (105), 버퍼 (110), 평탄도 검출기 (115), 레이트 제어기 (120), 예측기, 양자화기, 및 재구성기 컴포넌트 (125), 라인 버퍼 (130), 인덱싱된 컬러 이력 (135), 엔트로피 인코더 (140), 서브스트림 멀티플렉서 (145), 및 레이트 버퍼 (150) 를 포함한다. 다른 예들에서, 비디오 인코더 (20) 는 더 많거나, 더 적거나, 또는 상이한 기능적 컴포넌트들을 포함할 수도 있다.
컬러-공간 변환기 (105) 는 입력 컬러-공간을 코딩 구현에서 사용되는 컬러-공간으로 변환할 수도 있다. 예를 들어, 하나의 예시적인 실시형태에서, 입력 비디오 데이터의 컬러-공간은 적색, 녹색, 및 청색 (RGB) 컬러-공간 내에 있고, 코딩은 루미넌스 Y, 크로미넌스 그린 Cg, 및 크로미넌스 오랜지 Co (YCgCo) 컬러-공간에서 구현된다. 컬러-공간 변환은 비디오 데이터에 대한 시프트들 및 추가들을 포함하는 방법(들) 에 의해 수행될 수도 있다. 다른 컬러-공간들에서의 입력 비디오 데이터가 프로세싱될 수도 있고, 다른 컬러-공간들로의 변환들이 또한 수행될 수도 있다.
관련된 양태들에서, 비디오 인코더 (20) 는 버퍼 (110), 라인 버퍼 (130), 및/또는 레이트 버퍼 (150) 를 포함할 수도 있다. 예를 들어, 버퍼 (110) 는 비디오 인코더 (20) 의 다른 부분들에 의한 그것의 사용 이전에 컬러-공간 변환된 비디오 데이터를 유지 (예를 들어, 저장) 할 수도 있다. 다른 예에서, 컬러-공간 변환된 데이터가 더 많은 비트들을 요구할 수도 있기 때문에, 비디오 데이터는 RGB 컬러-공간에서 저장될 수도 있고, 컬러-공간 변환은 필요에 따라 수행될 수도 있다.
레이트 버퍼 (150) 는 레이트 제어기 (120) 와 관련하여 이하에 더 상세히 기술될, 비디오 인코더 (20) 에서의 레이트 제어 메커니즘의 부분으로서 기능할 수도 있다. 각 블록을 인코딩하는데 소비되는 비트들의 수는 그 블록의 특성에 기초하여 매우 실질적으로 변할 수 있다. 레이트 버퍼 (150) 는 압축된 비디오에서의 레이트 변동들을 평활화할 수 있다. 일부 실시형태들에서, 레이트 버퍼 (예를 들어, 레이트 버퍼 (150)) 에 저장된 비트들이 고정 비트 레이트로 레이트 버퍼로부터 제거되는 고정 비트 레이트 (CBR) 버퍼 모델이 채용된다. CBR 버퍼 모델에서, 비디오 인코더 (20) 가 너무 많은 비트들을 비트스트림에 추가하는 경우, 레이트 버퍼 (150) 는 오버플로우할 수도 있다. 한편, 비디오 인코더 (20) 는 레이트 버퍼 (150) 의 언더플로우를 방지하기 위해 충분한 비트들을 추가할 필요가 있을 수도 있다.
비디오 디코더측에서, 비트들은 고정 비트 레이트에서 비디오 디코더 (30) (이하에 더 상세히 기술되는 도 2b 를 참조) 의 레이트 버퍼 (155) 에 추가될 수도 있고, 비디오 디코더 (30) 는 각 블록에 대한 변화가능한 수들의 비트들을 제거할 수도 있다. 적절한 디코딩을 보장하기 위해, 비디오 디코더 (30) 의 레이트 버퍼 (155) 는 압축된 비트 스트림의 디코딩 동안 "언더플로우" 또는 "오버플로우" 하지 않아야 한다.
일부 실시형태들에서, 버퍼 충만도 (buffer fullness: BF) 는 버퍼에서 현재 비트들의 수를 나타내는 BufferCurrentSize 및 레이트 버퍼 (150) 의 사이즈, 즉 임의의 시점에서 레이트 버퍼 (150) 에 저장될 수 있는 비트들의 최대 수를 나타내는 BufferMaxSize 의 값들에 기초하여 정의될 수 있다. BF 는 다음과 같이 계산될 수도 있다:
BF = ((BufferCurrentSize * 100)/BufferMaxSize)
평탄도 검출기 (115) 는 비디오 데이터에서의 복잡한 (즉, 비평탄한) 영역들로부터 비디오 데이터에서의 평탄한 (즉, 간단한 또는 균일한) 영역들로의 변화들을 검출할 수 있다. 용어들 "복잡한" 및 "평탄한" 은 비디오 인코더 (20) 가 비디오 데이터의 각각의 영역들을 인코딩하는데 곤란성을 일반적으로 지칭하기 위해 여기에서 사용될 것이다. 따라서, 여기에 사용된 바와 같은 용어 복잡한은 일반적으로 비디오 데이터의 소정 영역을 비디오 인코더 (20) 가 인코딩하는데 복잡한 것으로서 기술하고, 예를 들어 텍스쳐드 (textured) 비디오 데이터, 높은 공간 주파수, 및/또는 인코딩하기에 복잡한 다른 특징들을 포함할 수도 있다. 여기에 사용된 바와 같은 용어 평탄한은 일반적으로 비디오 데이터의 소정 영역을 비디오 인코더 (20) 가 인코딩하는데 간단한 것으로서 기술하고, 예를 들어 비디오 데이터에서의 평활한 그레디언트, 낮은 공간 주파수, 및/또는 인코딩하기에 간단한 다른 특징들을 포함할 수도 있다. 복잡한 및 평탄한 영역들 사이의 천이들은 인코딩된 비디오 데이터에서의 양자화 아티팩트들을 감소시키기 위해 비디오 인코더 (20) 에 의해 사용될 수도 있다. 구체적으로는, 레이트 제어기 (120) 및 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는 복잡한 영역으로부터 평탄한 영역으로의 천이들이 식별되는 경우 그러한 양자화 아티팩트들을 감소시킬 수 있다.
레이트 제어기 (120) 는 코딩 파라미터들의 세트, 예를 들어, QP 를 결정한다. QP 는 레이트 버퍼 (150) 가 오버플로우 또는 언더플로우하지 않는 것을 보장하는 목표 비트레이트에 대한 화상 품질을 최대화하기 위해 레이트 버퍼 (150) 의 버퍼 충만도 및 비디오 데이터에서의 이미지 활동성에 기초하여 레이트 제어기 (120) 에 의해 조정될 수도 있다. 레이트 제어기 (120) 는 또한 최적의 레이터-왜곡 성능을 달성하기 위해 비디오 데이터의 각 블록에 대한 특정의 코딩 옵션 (예를 들어, 특정의 모드) 을 선택한다. 레이트 제어기 (120) 는 레이트 제어기 (120) 가 비트-레이트 제약을 만족시키도록, 즉 전체 실제 코딩 레이트가 목표 비트 레이트 내에 피팅하도록 재구성된 이미지들의 왜곡을 최소화한다.
예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는 비디오 인코더 (20) 의 적어도 3 개의 인코딩 동작들을 수행할 수도 있다. 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는 다수의 상이한 모드들에서 예측을 수행할 수도 있다. 하나의 예시의 예측 모드는 중간값-적응적 예측의 변경된 버전이다. 중간값-적응적 예측은 무손실 JPEG 표준 (JPEG-LS) 에 의해 구현될 수도 있다. 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 에 의해 수행될 수도 있는 중간값-적응적 예측의 변경된 버전은 3 개의 연속적인 샘플 값들의 병렬 예측을 허용할 수도 있다. 다른 예시의 예측 모드는 블록 예측이다. 블록 예측에서, 샘플들은 상측 라인에서의 또는 동일 라인에서 좌측의 이전에 재구성된 화소들로부터 예측된다. 일부 실시형태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 양자 모두는 블록 예측 사용들을 결정하기 위해 재구성된 화소들에 대한 동일한 검색을 수행할 수도 있고, 블록 예측 모드에서 어떠한 비트들도 전송될 필요가 없다. 다른 실시형태들에서, 비디오 인코더 (20) 는, 비디오 디코더 (30) 가 별도의 검색을 수행할 필요가 없도록, 검색을 수행하고 비트스트림에서 블록 예측 벡터들을 시그널링할 수도 있다. 샘플들이 컴포넌트 범위의 중간점을 사용하여 예측되는 중간점 예측 모드가 또한 구현될 수도 있다. 중간점 예측 모드는 최악의-케이스 샘플에서 조차 압축된 비디오에 대해 요구되는 비트들의 수의 바운딩 (bounding) 을 가능하게 할 수도 있다. 도 7 을 참조하여 이하에 더 논의되는 바와 같이, 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는 도 7 에 도시된 방법들을 수행함으로써 비디오 데이터의 블록 (또는 예측의 임의의 다른 유닛) 을 코딩 (예를 들어, 인코딩 또는 디코딩) 하도록 구성될 수도 있다.
예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는 또한 양자화를 수행한다. 예를 들어, 양자화는 시프터를 사용하여 구현될 수도 있는 파워-오브-2 (power-of-2) 양자화기를 통해 수행될 수도 있다. 다른 양자화 기법들이 파워-오브-2 양자화기 대신에 구현될 수도 있다. 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 에 의해 수행되는 양자화는 레이트 제어기 (120) 에 의해 결정된 QP 에 기초할 수도 있다. 마지막으로, 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는 또한 예측된 값에 역 양자화된 레지듀얼을 가산하는 것 및 그 결과가 샘플 값들의 유효한 범위의 밖에 있지 않는 것을 보장하는 것을 포함하는 재구성을 수행한다.
예측기, 양자화기, 및 재구성기 컴포넌트 (125) 에 의해 수행되는 예측, 양자화, 및 재구성에 대한 상술된 예시의 접근법들은 단순히 예시적이며, 다른 접근법들이 구현될 수도 있다. 또한, 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는 예측, 양자화, 및/또는 재구성을 수행하는 서브컴포넌트(들) 를 포함할 수도 있다. 또한, 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 대신에 수개의 별개의 인코더 컴포넌트들에 의해 수행될 수도 있다.
라인 버퍼 (130) 는 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 및 인덱싱된 컬러 이력 (135) 이 버퍼링된 비디오 데이터를 사용할 수 있도록 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 로부터의 출력을 유지 (예를 들어, 저장) 한다. 인덱싱된 컬러 이력 (135) 은 최근에 사용된 화소 값들을 저장한다. 이들 최근에 사용된 화소 값들은 전용 신택스를 통해 비디오 인코더 (20) 에 의해 직접 참조될 수 있다.
엔트로피 인코더 (140) 는 인덱싱된 컬러 이력 (135) 및 평탄도 검출기 (115) 에 의해 식별된 평탄도 천이들에 기초하여 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 로부터 수신된 예측 레지듀얼들 및 임의의 다른 데이터 (예를 들어, 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 에 의해 식별된 인덱스들) 를 인코딩한다. 일부 예들에서, 엔트로피 인코더 (140) 는 서브스트림 인코더당 클록당 3 개의 샘플들을 인코딩할 수도 있다. 서브스트림 멀티플렉서 (145) 는 헤더리스 (headerless) 패킷 멀티플렉싱 스킴에 기초하여 비트스트림을 멀티플렉싱할 수도 있다. 이것은 비디오 디코더 (30) 가 병렬로 3 개의 엔트로피 디코더들을 실행하는 것을 허용하여, 클록당 3 개의 화소들의 디코딩을 용이하게 한다. 서브스트림 멀티플렉서 (145) 는 패킷들이 비디오 디코더 (30) 에 의해 효율적으로 디코딩될 수 있도록 패킷 순서를 최적화할 수도 있다. 클록당 파워-오브-2 화소들 (예를 들어, 2 화소들/클록 또는 4 화소들/클록) 의 디코딩을 용이하게 할 수도 있는 엔트로피 코딩에 대한 상이한 접근법들이 구현될 수도 있다.
DSC 비디오 디코더
도 2b 는 본 개시에서 기술된 양태들에 따른 기법들을 구현할 수도 있는 비디오 디코더 (30) 의 예를 도시하는 블록도이다. 비디오 디코더 (30) 는 본 개시의 기법들의 일부 또는 전부를 수행하도록 구성될 수도 있다. 일부 예들에서, 본 개시에 기술된 기법들은 비디오 디코더 (30) 의 여러 컴포넌트들 사이에 공유될 수도 있다. 일부 예들에서, 추가적으로 또는 대안적으로, 프로세서 (도시하지 않음) 는 본 개시에 기술된 기법들의 일부 또는 전부를 수행하도록 구성될 수도 있다.
설명의 목적으로, 본 개시는 DSC 코딩의 콘텍스트에서 비디오 디코더 (30) 를 기술한다. 그러나, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 2b 의 예에서, 비디오 디코더 (30) 는 복수의 기능적 컴포넌트들을 포함한다. 비디오 디코더 (30) 의 기능적 컴포넌트들은 레이트 버퍼 (155), 서브스트림 디멀티플렉서 (160), 엔트로피 디코더 (165), 레이트 제어기 (170), 예측기, 양자화기, 및 재구성기 컴포넌트 (175), 인덱싱된 컬러 이력 (180), 라인 버퍼 (185), 및 컬러-공간 변환기 (190) 를 포함한다. 비디오 디코더 (30) 의 도시된 컴포넌트들은 도 2a 에서의 비디오 인코더 (20) 와 관련하여 위에서 기술된 대응하는 컴포넌트들과 유사하다. 이와 같이, 비디오 디코더 (30) 의 컴포넌트들 각각은 상술된 바와 같이 비디오 인코더 (20) 의 대응하는 컴포넌트들과 유사한 방식으로 동작할 수도 있다.
변환 코딩
본 개시의 일부 실시형태들에서, 비디오 인코더들 (예를 들어, 비디오 인코더 (20)) 은 추가적인 압축을 달성하기 위해 화소 값들 또는 레지듀얼 값들에 대해 하나 이상의 변환들을 적용할 수도 있다. 예를 들어, 인코더 (예를 들어, 비디오 인코더 (20)) 는 비디오 데이터 (예를 들어, 화소 값들 또는 레지듀얼 값들) 의 블록에 대해 하나 이상의 변환들을 적용하고 변환 계수 블록 (예를 들어, 비디오 데이터의 블록에 대응하는 변환 계수들의 블록) 을 획득할 수도 있다. 상술된 바와 같이, 변환 계수 블록을 생성한 후, 인코더는 그 변환 계수 블록에 대해 양자화 프로세스를 수행할 수도 있고, 여기서 변환 계수들은 가능하게는 그 변환 계수들을 나타내기 위해 사용되는 데이터의 양을 감소시키기 위해 양자화되어, 추가의 압축을 제공한다.
유사하게, 비디오 디코더 (예를 들어, 비디오 디코더 (30)) 는 인코더에 의해 생성된 비트스트림을 수신할 수도 있으며, 여기서 비트스트림은 인코더에 의해 인코딩된 비디오 데이터의 코딩된 표현을 포함한다. 디코더가 비트스트림을 수신하는 경우, 디코더는 비트스트림을 파싱하고 비트스트림으로부터 신택스 엘리먼트들을 추출하며, 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 비디오 데이터의 화상들을 재구성할 수도 있다. 신택스 엘리먼트들에 기초하여 비디오 데이터를 재구성하는 프로세스는 일반적으로 신택스 엘리먼트들을 생성하기 위해 인코더에 의해 수행된 프로세스에 대해 역일 수도 있다. 예를 들어, 디코더는 비트스트림에서의 변환 계수 블록들을 역 양자화하고 변환 계수 블록들에 대해 역 변환들을 수행하여 비트스트림에서 코딩된 비디오 데이터의 블록들을 재구성할 수도 있다.
본 개시의 일부 구현들에서, 인코더 (예를 들어, 비디오 인코더 (20)) 는 상이한 사이즈들의 다수의 변환들 (예를 들어, 4 개의 상이한 세트들의 변환들) 을 수행하고 이미지 또는 비디오 데이터의 특정의 블록 또는 부분에 대한 (예를 들어, 원하는 레이트-왜곡 성능에 가장 가까운) 최선의 성능을 산출하는 변환을 선택한다. 예를 들어, 인코더는 (i) 단일의 16-포인트 변환, (ii) 2 개의 8-포인트 변환들, (iii) 하나의 8-포인트 변환 및 2 개의 4-포인트 변환들, 또는 (iv) 4 개의 4-포인트 변환들을 수행할 수도 있고, 여기서 각 옵션은 동일한 수의 입력들 (예를 들어, 화소 데이터) 을 이용한다. 따라서, 16 화소들의 각 블록은 변환 모드를 이용하여 인코딩될 수 있고, 변환 코딩될 16 개의 화소들은 변환 함수들에 입력되기 전에 더 작은 블록 사이즈들 (예를 들어, 4 화소들, 8 화소들, 또는 임의의 다른 사이즈의 파티션들) 로 더욱 파티셔닝될 수 있다. 16-화소 블록들의 예에서, 16-화소 블록은 (i) 비트스트림에서 코딩된 화상에서의 16 개의 화소들의 단일의 행, (ii) 비트스트림에서 코딩된 화상에서의 8 개의 화소들의 2 개의 행들, (iii) 비트스트림에서 코딩된 화상에서의 4 개의 화소들의 4 개의 행들, 또는 (iv) 비트스트림에서 코딩된 화상에서의 16 개의 화소들의 임의의 다른 배열을 나타낼 수도 있다. 도 5a 내지 도 5d 는 2 개 이상의 변환이 화소 데이터에 대해 수행되어야 하는 경우 화소 데이터가 다수의 파티션들로 분할될 수 있는 방법을 도시한다.
여러 세트들의 변환들을 수행한 후, 인코더는 각 옵션과 연관된 왜곡 및 비트 레이트를 분석하고 원하는 성능에 기초하여 옵션들 중 하나를 선택할 수도 있다. 인코더는 코딩된 비트스트림에서 플래그 또는 신택스 엘리먼트를 시그널링함으로써 디코더에 선택된 옵션을 나타낼 수도 있다.
파티션 포맷
일부 실시형태들에서, 인코더 (예를 들어, 비디오 인코더 (20)) 는 변환-기반 이미지 압축을 수행하기 위해 더 작은 파티션들 (예를 들어, 16-화소 블록들) 로 코딩될 화상들 또는 프레임들에서의 화소들을 분할한다. 예를 들어, 주어진 코딩 스킴에서 사용되는 (변환 파티션 타입으로도 여기에서 지징되는) 파티션 포맷은 도 3 에 도시된 바와 같이 (i) 하나의 16-화소 블록, (ii) 2 개의 8-화소 블록들, (iii) 하나의 8-화소 블록 및 2 개의 4-화소 블록들의 혼합, 및 (iv) 4 개의 4-화소 블록들로 이루어질 수도 있다. 도 3 의 예에서, 16 개의 화소들을 포함하는 블록 (302) 은 변환들의 상이한 조합들에 대응하는 변환 블록들 (304, 306, 308, 및 310) 로 입력된다. 인코더 (예를 들어, 비디오 인코더 (20)) 는 그 후 변환 블록들 (304, 306, 308, 및 310) 과 연관된 변환들 각각에 대응하는 왜곡 코스트 (312) 를 계산한다. 도 3 에서, 변환 블록들 (304, 306, 308, 및 310) 각각은 상이한 변환 파티션 타입을 나타낸다. 예를 들어, 변환 블록 (304) 은 단일의 16-포인트 변환에 대응하고, 변환 블록 (306) 은 2 개의 8-포인트 변환들에 대응하며, 변환 블록 (308) 은 하나의 8-포인트 변환 및 2 개의 4-포인트 변환들의 혼합에 대응하고, 변환 블록 (310) 은 4 개의 4-포인트 변환들에 대응한다. 또, 변환 블록들 (304, 306, 308, 및 310) 각각에 대응하는 변환 계수들은 비트스트림 인코드 블록 (314) 에서 비트스트림으로 코딩되고, 변환 블록들 (304, 306, 308, 및 310) 각각에 대응하는 비트스트림 코스트 (316) 가 계산된다. 변환 블록들 (304, 306, 308, 및 310) 각각에 대응하는 왜곡 코스트 (312) 및 비트스트림 코스트 (316) 에 기초하여, 인코더의 선택 로직 (318) 은 파티션 선택 플래그 또는 신택스 엘리먼트 (320) 에 의해 표시되는, 변환 블록들 (304, 306, 308, 및 310) 중 하나와 연관된 변환 파티션 타입을 선택한다. 따라서, 일부 실시형태들에서, 선택 로직 (318) 은 최저 비트스트림 코스트를 갖는 최저 인코드 화소 왜곡을 산출하는 변환 파티션 타입을 선택한다. 예를 들어, 주어진 화상을 코딩할 때, 인코더는 주어진 화상의 하나의 부분 (예를 들어, 주어진 화상 내의 16-화소 블록) 은 2 개의 8-화소 블록들 (예를 들어, 8-포인트 변환들) 이 사용되는 경우 최선으로 코딩될 수 있고, 주어진 화상의 다른 부분은 4 개의 4-화소 블록들 (예를 들어, 4-포인트 변환들) 이 사용되는 경우 최선으로 코딩될 수 있다고 결정할 수도 있다. 파티션 선택 플래그 또는 신택스 엘리먼트 (320) 의 값에 기초하여, MUX (322) 는 디코더로 전송될 비트스트림 (324) 을 출력한다.
도 4 에 도시된 바와 같은 디코더측에서, 디코더 (예를 들어, 비디오 디코더 (30)) 또는 그것의 컴포넌트 (예를 들어, 비트스트림 디코드 (404)) 는 압축된 화소 데이터를 디코딩함에 있어서 사용될 하나 이상의 역 변환들 (예를 들어, 인코더 (20) 에 의해 선택된 변환 블록들 (304, 306, 308, 또는 310) 과 연관된 변환들의 역) 을 선택하기 위해 입력 비트스트림 (402) 에 포함된 변환 파티션 정보 (예를 들어, 파티션 선택 플래그 또는 신택스 엘리먼트 (320) 에 의해 표시된 변환 파티션 타입) 를 사용한다. 예를 들어, 디코더는 입력 비트스트림 (402) 으로부터 변환 계수들 및 파티션 선택 신호 (414) 를 추출한다. 변환 계수들은 모든 4 개의 역 변환 블록들 (406, 408, 410, 및 412) 로 전달되고, 파티션 선택 신호 (414) 는 원하는 역 변환(들) 을 선택하기 위해 사용된다.
디코더의 일부 기존의 하드웨어 구현들에서, 별개의 역 변환 블록이 각각의 파티션 타입에 대해 사용된다. 예를 들어, 인코더가 도 3 에 도시된 바와 같은 4 개의 상이한 파티션 타입들로부터 선택하도록 구성되는 경우, 인코더에 의해 생성된 비트스트림들 (예를 들어, 입력 비트스트림 (402)) 을 디코딩하도록 구성되는 대응하는 디코더는 또한 각각 도 4 에 도시된 바와 같은 변환들 (406, 408, 410, 및 412) 에 대응하는 4 개의 세트들의 하드웨어 (예를 들어, 서로들 사이에 공유되지 않는 레지스터들, 가산기들, 감산기들 등) 를 포함한다. 각각의 역 변환은 MUX (416) 에 피딩되는 출력 값들의 세트를 생성하고, 디코더는 파티션 선택 신호 (414) (또는 주어진 블록을 인코딩하기 위해 사용되는 파티션 타입을 나타내는 다른 플래그 또는 신택스 엘리먼트) 에 기초하여 그것들 중 하나를 선택하고 16-화소 블록 (418) 의 화소 값들을 획득한다.
도 4 에 도시된 하드웨어 구현은 4 개의 파티션 구조들을 디코딩하기 위해 7 개의 독립적인 역 변환 블록들을 요구할 것이다 (예를 들어, 하나의 16-화소 블록, 2 개의 8-화소 블록들, 및 4 개의 4-화소 블록들). 디코더측상의 구현 코스트 (예를 들어, 디코더를 구현하기 위해 사용되는 칩 면적) 를 감소시키기 위해, 역 변환 함수들은 4 개의 역 변환 타입들 (예를 들어, 16, 8+8, 8+4+4, 및 4+4+4+4) 중에서 소정의 산술 동작들을 재조직화하고 재사용함으로써 구현될 수도 있다.
하드웨어 구현
상술된 바와 같이, 기존의 접근법들은 다수의 파티션 사이즈들을 포함하는 변환-코딩된 비트스트림들을 디코딩하기 위해 독립적인 변환 함수들 (예를 들어, 도 4 의 예에서의 7 개의 독립적인 변환 함수들) 을 이용한다. 그러나, 인커밍 파티션된 비트스트림을 디코딩하기 위해 다수의 역 변환 블록들을 사용하는 것은 하드웨어 구현이 디코더측상에서 칩 면적 및/또는 구현 코스트에 특히 민감하기 때문에 디코더의 코스트-효과성에 악영향을 미친다. 따라서, 더 코스트-효과적인 방식으로 사이징하는 다수의 변환 파티션을 수반하는 변환-코딩된 비트스트림들을 디코딩하는 개선된 방법이 바람직하다.
예를 들어, 16-포인트 변환의 예시의 구현은 가산기들 및 감산기들을 포함할 수도 있다. 이들 가산기들 및 감산기들은 모두 16-포인트 변환 (또는 역 변환) 을 수행하기 위해 필요로 될 수도 있지만, 동일한 가산기들 및 감산기들 (또는 16-포인트 변환의 다른 하드웨어) 은 또한 16-포인트 변환을 구현하기 위해 사용되는 하드웨어와는 별개이고 독립적인 그러한 8-포인트 및 4-포인트 변환들을 구현하기 위해 필요한 풀 변환 구조를 추가할 필요 없이 8-포인트 및 4-포인트 변환들과 같은 다른 변환들을 수행하기 위해 이용될 수도 있다. 즉, 인코더 및/또는 디코더가 수행할 필요가 있을 수도 있는 여러 변환들을 구현하기 위해 사용되는 하드웨어의 소정의 부분들을 재사용함으로써, 그러한 변환들을 구현하기 위한 하드웨어 요건들이 감소될 수 있다.
선택적 바이패싱 , 재라우팅, 또는 재순서화
본 개시의 일부 실시형태들에서, 16-포인트 변환은 16-포인트 변환의 소정의 부분들을 선택적으로 셧다운하거나 바이패싱하고 및/또는 16-포인트 변환에서의 입력들, 출력들, 또는 다른 중간 노드들을 재라우팅 또는 재순서화함으로써 다른 타입들의 변환들을 구현하기 위해 사용될 수 있다. 예를 들어, 하나 이상의 MUX 들은 하드웨어의 하나의 부분이 4-포인트 변환들에 대해 바이패싱되고 하드웨어의 다른 부분이 8-포인트 변환들에 대해 바이패싱되도록 16-포인트 변환에 추가될 수도 있다. 그러한 MUX 들을 추가하는 것이 코스트/칩 면적을 증가시키더라도, 그러한 MUX 들에 의해 추가되는 코스트 및/또는 칩 면적은 여전히 각 변환 파티션 타입에 대해 완전히 구현된 하드웨어 변환들을 갖는 것보다 훨씬 작을 것이다.
하드웨어 구조 재사용
인코딩을 위해 사용되는 파티션 타입은 명시적으로 시그널링되고 (예를 들어, 도 4 의 파티션 선택 신호 (414)), 디코더측상에서, 단일의 파티션 타입만의 역 변환은 16 개의 입력 계수들의 각 변환 블록에 대해 수행될 필요가 있기 때문에, 파티셔닝된 변환에 대한 디코더 구현 코스트는 최대 변환 타입의 하드웨어의 소정의 부분들을 재사용 및 공유함으로써 감소될 수 있다. 예를 들어, 일부 구현들에서, 하나의 16-포인트 역 하다마드 (Hadamard) 변환은 4 개의 변환 파티션 타입들 (예를 들어, 16, 8+8, 8+4+4, 및 4+4+4+4) 을 생성하기 위해 사용된다. 일부 실시형태들에서, 어떠한 추가적인 가산기들 또는 감산기들도 16-포인트 변환 이외의 역 변환들을 구현하기 위해 사용되지 않는다. 따라서, 디코더와의 구현 코스트 및/또는 칩 면적 연관은 감소될 수 있다.
본 개시의 일부 실시형태들에서, 각각의 변환 파티션 타입의 경우, 최대 변환 타입에서의 산술 항들이 그 변환 파티션 타입을 구현하기 위해 재사용된다. 이것은 특히 면적/코스트가 더 중대한 디코더측에서 낮은 구현 면적/코스트를 유지하면서 모든 요구된 변환 타입들의 구현을 허용한다. 본 개시의 소정의 양태들은 디코더측에 대해 기술되지만, 본 개시에서 기술된 기법들은 (예를 들어, 다른 변환 타입들을 구현하기 위해 최대 변환 타입의 산술 함수들을 재사용 및 공유함으로써) 마찬가지로 인코더측에 적용가능할 수도 있다.
각각의 변환 파티션 타입의 경우, 풀 (full) 16-포인트 역 하다마드 변환은 다음의 역 변환들을 수행하기 위해 공통 수학 연산들을 이용하도록 재구성된다: (i) 하나의 16-포인트 역 변환, (ii) 2 개의 8-포인트 역 변환들, (iii) 하나의 8-포인트 역 변환 및 2 개의 4-포인트 역 변환들, 및 (iv) 4 개의 4-포인트 역 변환들. 그러한 변환들의 예시의 구현들은 각각 도 6a 내지 도 6d 에 도시된다.
각각의 파티션 타입의 경우, 입력-대-입력' 및 출력-대-출력' 스테이지들은 각각의 변환 모드들에 대해 입력 및 출력 데이터를 재순서화하기 위해 사용된다. 또한, 풀 16-포인트 역 변환 함수의 일부 내부 하드웨어 스테이지들을 바이패싱함으로써, 그 역 변환 블록은 상술된 바와 같이 4 개의 파티션 타입들을 제공하도록 재구성된다.
예시의 구현: 8+8
변환 파티션 타입 [8,8] 의 경우, 도 6b 에 도시된 바와 같이, 입력 데이터는 2 개의 연쇄된 8-포인트 샘플들로서 16-포인트 입력 홀딩 버퍼에 배치된다. 입력 데이터는 (예를 들어, 변환 계수 값들을 유지하는 레지스터들 또는 버퍼들일 수도 있는) 중간 입력' 스테이지에서 재순서화되고 배치된다. 스테이지 a-대-b 사이의 수학 연산들은 (일부 재순서화를 갖는) 바이패스들이고, 최종 출력-대-출력' 스테이지는 2 개의 8-포인트 연쇄된 데이터 구조로 최종 출력을 다시 재순서화하도록 구성된다.
예시의 구현: 8+4+4
혼합된 변환 파티션 타입 [8,4,4] 의 경우, 도 6c 에 도시된 바와 같이, 입력 데이터는 2 개의 4-포인트 데이터에 의해 후속되는 제 1 의 8 개의 로케이션들에서의 8-포인트 샘플들의 데이터를 갖는 입력 버퍼에 배치된다. 다른 파티션 타입들에서 진술된 바와 같이, 입력입력' 스테이지는 데이터를 재순서화하기 위해 사용되고, 스테이지 a-대-b 는 바이패스들 및 재순서화를 포함하며, 단지 8 개의 비트들만이 스테이지 c-대-출력'에서 4-포인트 역 변환을 위해 바이패싱된다. 최종 출력' 데이터는 [8,4,4] 의 데이터 구조를 생성하기 위해 재순서화된다.
예시의 구현: 4+4+4+4
파티션 타입 [4+4+4+4] 의 경우, 도 6d 에 도시된 바와 같이, 4개의 입력 데이터는 4 개의 연쇄된 4-포인트 샘플들로서 입력 홀딩 버퍼에 배치된다. 입력 데이터는 중간 입력' 스테이지에서 재순서화되고 배치된다. a -대-b 및 c-대-출력' 스테이지 사이의 수학 연산은 바이패싱되고, 출력-대-출력' 스테이지는 4 개의 4-포인트 데이터 구조로 출력' 데이터를 다시 재구성하도록 구성된다.
변환 하드웨어 구조를 재사용하는 예시의 플로우챠트
도 7을 참조하여, 다중-파티션 변환들을 위한 변환 구조를 재사용하는 예시의 절차가 기술될 것이다. 도 7 에 도시된 단계들은 비디오 디코더 (예를 들어, 도 2b 에서의 비디오 디코더 (30)) 또는 그것의 컴포넌트(들) 에 의해 수행될 수도 있다. 편의를 위해, 방법 (700) 은 비디오 디코더 (30) 또는 다른 컴포넌트일 수도 있는 (간단히 코더로서도 지칭되는) 디코더에 의해 수행되는 것으로서 기술된다. 방법 (700) 은 비디오 디코더의 콘텍스트에서 기술되지만, (예를 들어, 다중-파티션 변환들을 위해 변환 구조를 재사용하는) 여기에 기술된 기법들은 비디오 인코더들로 확장될 수도 있다.
방법 (700) 은 블록 (701) 에서 시작한다. 블록 (705) 에서, 디코더는 코딩된 비트스트림에서의 비디오 데이터의 블록과 연관된 변환 파티션 타입을 결정한다. 그 블록은 그 블록과 연관된 복수의 화소 값들에 대해 하나 이상의 변환 함수들을 적용하는 것을 통해 적어도 부분적으로 결정된 복수의 변환 계수들과 연관된다. 일부 실시형태들에서, 비디오 데이터의 블록과 연관된 변환 파티션 타입은 복수의 변환 계수들을 획득하기 위해 수행되는 변환 (예를 들어, 하나 이상의 함수들) 을 나타낸다. 예를 들어, 변환 파티션 타입은 단일의 16-포인트 변환이 16 개의 화소들을 포함하는 비디오 데이터의 블록에 대해 수행된다는 것을 나타낼 수도 있다. 다른 예에서, 변환 파티션 타입은 2 개의 8-포인트 변환들이 블록 내의 제 1 및 제 2 세트들의 8 개의 화소들에 대해 수행된다는 것을 나타낼 수도 있다. 또 다른 예에서, 변환 파티션 타입은 단일의 8-포인트 변환이 블록 내의 16 개의 화소들 중 8 개에 대해 수행되고 2 개의 4-포인트 변환들이 블록 내의 나머지 8 개의 화소들의 각각의 4 개의 화소들에 대해 수행된다는 것을 나타낼 수도 있다. 또 다른 예에서, 변환 파티션 타입은 4 개의 4-포인트 변환들이 블록 내의 제 1, 제 2, 제 3, 및 제 4 세트들의 4 개의 화소들에 대해 수행된다는 것을 나타낼 수도 있다. 일부 실시형태들에서, 변환 파티션 타입은 비트스트림에서의 플래그 또는 신택스 엘리먼트로서 시그널링될 수도 있다. 예를 들어, 값들 "00", "01", "10", 및 "11" 은 16 개의 값들을 포함하는 비디오 데이터의 블록을 위해 사용되는 변환이 각각 (i) 단일의 16-포인트 변환, (ii) 2 개의 8-포인트 변환들, (iii) 하나의 8-포인트 변환 및 2 개의 4-포인트 변환들, 및 (iv) 4 개의 4-포인트 변환들인 것을 나타낼 수도 있다.
블록 (710) 에서, 디코더는 변환 파티션 타입에 기초하여, 복수의 변환 계수들이 하나 이상의 변환 함수들에 대응하는 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정한다. 하나 이상의 역 변환 함수들은 각각 가산기들, 감산기들, 및/또는 멀티플렉서들을 포함하는 하나 이상의 하드웨어 스테이지들을 포함할 수도 있다. 일부 실시형태들에서, 순서를 결정하는 것은 (예를 들어, 변환 계수들이 비트스트림에서 나타나는 순서로부터 다른 순서로) 변환 파티션 타입에 기초하여 변환 계수들을 재배열하는 것을 포함할 수도 있다. 일부 실시형태들에서, 변환 계수들의 전부는 아니고, 소정의 서브세트만이 변환 파티션 타입에 기초하여 재배열된다.
하나의 실시형태에서, 변환 계수들이 하나 이상의 역 변환 함수들로 입력되어야 하는 순서는 변환 계수들이 비트스트림에서 시그널링 또는 수신되는 순서와 동일하다. 예를 들어, 도 6a 에 도시된 바와 같이, 변환 파티션 타입이 단일의 16-포인트 변환에 대응한다는 결정에 기초하여, 디코더는 변환 계수들이 하나 이상의 역 변환 함수들 (예를 들어, "입력'") 로 입력되어야 하는 순서는 변환 계수들이 비트스트림 (예를 들어, "입력") 에서 시그널링 또는 수신되는 순서와 동일하다고 결정할 수도 있다. 다른 예에서, 도 6b 에 도시된 바와 같이, 변환 파티션 타입이 2 개의 8-포인트 변환들에 대응한다는 결정에 기초하여, 디코더는 도 6b 에 도시된 바와 같이 비트스트림 (예를 들어, "입력") 에서 시그널링 또는 수신되는 변환 계수들을 재배열함으로써 변환 계수들이 하나 이상의 역 변환 함수들 (예를 들어, "입력'") 로 입력되어야 하는 순서를 결정할 수도 있다. 이러한 예에서, 제 1 의 4 개의 계수들은 변하지 않고 유지되지만, 다음의 4 개의 계수들은 역전되고 16-계수 블록의 끝에 배치되며, 마지막 8 개의 계수들은 각각 16-계수 블록에서 4 개의 스폿들 만큼 위로 이동된다.
또 다른 예에서, 도 6c 에 도시된 바와 같이, 변환 파티션 타입이 하나의 8-포인트 변환 및 2 개의 4-포인트 변환들에 대응한다는 결정에 기초하여, 디코더는 도 6c 에 도시된 바와 같이 비트스트림 (예를 들어, "입력") 에서 시그널링 또는 수신되는 변환 계수들을 재배열함으로써 변환 계수들이 하나 이상의 역 변환 함수들 (예를 들어, "입력'") 로 입력되어야 하는 순서를 결정할 수도 있다. 이러한 예에서, 16-계수 블록 ("입력") 의 계수들 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 및 15 는 계수들 0, 1, 2, 3, 8, 9, 12, 13, 11, 10, 15, 14, 7, 6, 5 및 4 ("입력'") 을 야기하도록 재배열된다. 또 다른 예에서, 도 6d에 도시된 바와 같이, 변환 파티션 타입이 4개의 4-포인트 변환들에 대응한다는 결정에 기초하여, 디코더는 도 6d 에 도시된 바와 같이 비트스트림 (예를 들어, "입력") 에서 시그널링 또는 수신되는 변환 계수들을 재배열함으로써 변환 계수들이 하나 이상의 역 변환 함수들 (예를 들어, "입력'") 로 입력되어야 하는 순서를 결정할 수도 있다. 이러한 예에서, 16-계수 블록 ("입력") 의 계수들 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 및 15 는 계수들 0, 1, 4, 5, 8, 9, 12, 13, 10, 112, 3, 8, 9, 12, 13, 11, 10, 15, 14, 7, 6, 5 및 4 ("입력'") 을 야기하도록 재배열된다.
블록 (715) 에서, 디코더는 결정된 순서로 하나 이상의 역 변환 함수들로 복수의 변환 계수들을 입력하는 것을 통해 적어도 부분적으로 복수의 출력 값들을 획득한다. 일부 실시형태들에서, 하나 이상의 역 변환 함수들은 하나 이상의 스테이지들의 산술 동작들 및/또는 재배열 동작들을 포함한다. 예를 들어, 도 6a 에 도시된 바와 같이, "입력'" 와 "a" 사이의 스테이지는 16-계수 블록 "입력'" 에서의 각 변환 계수에 대해, (2 개의 실선들에 의해 표시된) 가산 또는 (하나의 실선 및 하나의 점선에 의해 표시된) 감산을 포함한다. 도 6a 에 도시된 바와 같이, "a" 와 "b" 사이, "b" 와 "c" 사이, 및 "c" 와 "출력'" 사이의 추가적인 스테이지들 각각은 복수의 산술 동작들 (예를 들어, 각각 16 개의 별개의 동작들) 을 포함한다. 변환 파티션 타입에 기초하여, 스테이지들 중 일부는 도 6b 에 도시된 바와 같이 바이패싱될 수도 있다. 예를 들어, "입력'" 와 "a" 사이, "b" 와 "c" 사이, 및 "c" 와 "출력'" 사이의 스테이지들은 (예를 들어, 도 6a 에 도시된) 16-포인트 역 변환의 산술 동작들의 일부 또는 전부를 재사용하지만, "a" 와 "b" 사이의 스테이지는 산술 동작들을 바이패싱하고, (예를 들어, 변환 파티션 타입에 기초하여) 주어진 순서에서 변수들을 재배열한다. 일부 실시형태들에서, 하나 이상의 스테이지들은 16 개의 계수들/변수들의 전부가 아닌, 역 변환에서 사용되는 16 개의 계수들/변수들의 일부을 바이패싱할 수도 있다. 예를 들어, 도 6c 에 도시된 바와 같이, "c" 로부터 "출력'" 로의 스테이지는 처음 4 개의 변수들 (e0, e1, f1, 및 f0) 및 마지막 4 개의 변수들 (e2, e3, f3, 및 f2) 에 대한 (예를 들어, 도 6a 에 도시된) 16-포인트 역 변환의 산술 동작들을 재사용하지만, 중간의 8 개의 변수들 (0, 0, 3, 3, 2, 2, 1, 및 1) 에 대해 산술 동작들을 바이패싱한다.
결정된 순서로 하나 이상의 역 변환 함수들로 변환 계수들을 입력하는 것으로부터 야기된 출력 값들은 변환 파티션 타입에 기초하여 더욱 재배열될 수도 있다. 도 6a 내지 도 6d 에 도시된 바와 같이, (예를 들어, "출력'" 로부터 "출력" 으로 가는) 출력 값들은 변환 파티션 타입에 기초하여 상이한 방식들로 재배열될 수도 있다.
블록 (720) 에서, 디코더는 복수의 출력 값들에 적어도 부분적으로 기초하여 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩한다. 예를 들어, 출력 값들은 미가공 (raw) 화소 값들일 수도 있다. 다른 예에서, 출력 값들은 레지듀얼 값들일 수도 있고, 추가의 모션 보상이 대응하는 화소 값들을 획득하기 위해 수행될 필요가 있을 수도 있다.
방법 (700) 에서, 도 7 에 도시된 블록들 중 하나 이상은 제거될 수도 있고 (예를 들어, 수행되지 않을 수도 있고), 및/또는 방법이 수행되는 순서는 스위칭될 수도 있다. 일부 실시형태들에서, 추가적인 블록들은 방법 (700) 에 추가될 수도 있다. 예를 들어, 디코더는 또한 역 변환에서 스테이지들 중 하나, 일부, 또는 전부를 선택적으로 바이패싱할 수도 있다. 일부 실시형태들에서, 변환 함수의 단일의 스테이지는 변환 함수로 입력된 각 변환 계수에 대한 수학적 연산을 포함한다. 다른 예에서, 출력 값들은 비디오 데이터의 블록을 디코딩하기 위해 사용되기 전에 재배열될 수도 있다. 본 개시의 실시형태들은 도 7 에 도시된 예에 또는 그 예에 의해 제한되지 않고, 다른 변형들이 본 개시의 사상으로부터 일탈하지 않고 구현될 수도 있다.
도 8 은 본 개시에서 기술된 양태들에 따른 디코더측에서의 변환 파티셔닝의 예를 도시한다. 비트스트림 (802) 을 수신한 때에, 블록 (804) 에서, 디코더는 변환 계수들 및 파티션 선택 신호 (806) 를 디코딩한다. 변환 계수들은 여러 역 변환들을 수행하도록 구성된 변환 (808) 으로 입력된다. 변환 (808) 은 수신된 파티션 선택 신호 (806) 에 기초하여 적절한 역 변환을 수행하고 16-화소 블록 (810) 을 출력한다.
다른 고려들
본 명세서에 개시된 정보 및 신호들은 다양한 상이한 기술들 및 기법들 중 임의의 것을 이용하여 표현될 수도 있다. 예를 들어, 위의 설명의 전반에 걸쳐 언급될 수도 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩 (chip) 들은 전압들, 전류들, 전자기파들, 자기 장들 또는 입자들, 광학 장들 또는 입자들, 또는 이들의 임의의 조합으로 표현될 수도 있다.
본 명세서에 개시된 실시형태들과 관련되어 설명된 다양한 예시적인 논리 블록들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 양쪽의 조합들로서 구현될 수도 있다. 하드웨어와 소프트웨어의 이러한 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 및 단계들은 이들의 기능성의 관점에서 일반적으로 상술되었다. 이러한 기능성이 하드웨어로서 또는 소프트웨어로서 구현되는지 여부는 전체 시스템에 부과되는 설계 제약들 및 특정 애플리케이션에 좌우된다. 당업자들은 각각의 특정 애플리케이션에 대한 다양한 방법들로 설명된 기능성을 구현할 수도 있지만, 이러한 구현 판정들은 본 개시의 범위로부터의 벗어남을 야기시키는 것으로 해석되어서는 안된다.
본 명세서에서 설명되는 기법들은, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 이러한 기법들은 범용 컴퓨터들, 무선 통신 디바이스 핸드셋들, 또는 무선 통신 디바이스 핸드셋들 및 다른 디바이스들에서의 애플리케이션을 포함하는 다수의 용도들을 가진 집적 회로 디바이스들과 같은 다양한 디바이스들 중 임의의 디바이스에서 구현될 수도 있다. 디바이스들 또는 컴포넌트들로서 설명되는 임의의 피처들은 통합 로직 디바이스에서 함께, 또는 별개의 그러나 상호동작가능한 로직 디바이스들로서 개별적으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 이 기법들은, 실행될 때, 상술된 방법들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터 판독가능 데이터 저장 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능 데이터 저장 매체는 패키징 재료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 부분을 형성할 수도 있다. 컴퓨터 판독가능 매체는 메모리 또는 데이터 저장 매체들, 예컨대 동기식 동적 랜덤 액세스 메모리 (SDRAM) 와 같은 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리 (EEPROM), 플래시 메모리, 자기 또는 광학 데이터 저장 매체들 등을 포함할 수도 있다. 이 기법들은 부가적으로, 또는 대안적으로, 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 반송하거나 또는 통신하고 컴퓨터에 의해 액세스되거나, 판독되거나, 및/또는 실행될 수 있는, 전파된 신호들 또는 파들과 같은, 컴퓨터 판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다.
프로그램 코드는 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 반도체들 (ASICs), 필드 프로그래머블 로직 어레이들 (FPGAs), 또는 다른 등가의 집적 또는 이산 로직 회로부와 같은 하나 이상의 프로세서들을 포함하는 프로세서에 의해 실행될 수도 있다. 이러한 프로세서는 본 개시물에서 설명되는 기법들 중 임의의 기법을 수행하도록 구성될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있다; 그러나 대안적으로, 그 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 또한, 프로세서는 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 협력하는 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로도 구현될 수도 있다. 이에 따라, 본 명세서에 사용된 바와 같은 용어 "프로세서" 는 전술한 구조 중 임의의 구조, 전술한 구조의 임의의 조합, 또는 본 명세서에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 또는 장치를 지칭할 수도 있다. 또한, 일부 양태들에서, 본 명세서에서 설명되는 기능성은 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 또는 하드웨어 내에 제공되거나, 또는 조합된 비디오 인코더-디코더 (코덱) 에 포함될 수도 있다. 또한, 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들어, 칩셋) 를 포함하는 광범위한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 상술된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 조합될 수도 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상술된 하나 이상의 프로세서들을 포함하는 상호동작하는 하드웨어 유닛들의 콜렉션에 의해 제공될 수도 있다.
상술한 것은 여러 상이한 실시형태들과 관련하여 기술되었지만, 하나의 실시형태로부터의 특징들 또는 엘리먼트들은 본 개시의 교시들로부터 일탈하지 않고 다른 실시형태들과 결합될 수도 있다. 그러나, 각각의 실시형태들 사이의 특징들의 조합들은 반드시 그것에 제한되는 것은 아니다. 본 개시의 다양한 실시형태들이 설명되었다. 이러한 그리고 다른 실시형태들은 다음의 청구항들의 범위 내에 있다.

Claims (30)

  1. 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법으로서,
    상기 블록과 연관된 변환 파티션 타입을 결정하는 단계로서, 상기 블록은 상기 블록과 연관된 복수의 화소 값들에 대해 하나 이상의 변환 함수들을 적용하는 것을 통해 적어도 부분적으로 결정된 복수의 변환 계수들과 연관되는, 상기 변환 파티션 타입을 결정하는 단계;
    상기 변환 파티션 타입에 기초하여, 상기 복수의 변환 계수들이 상기 하나 이상의 변환 함수들에 대응하는 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하는 단계;
    결정된 상기 순서로 상기 하나 이상의 역 변환 함수들로 상기 복수의 변환 계수들을 입력하는 것을 통해 적어도 부분적으로 복수의 출력 값들을 획득하는 단계; 및
    상기 복수의 출력 값들에 적어도 부분적으로 기초하여 상기 코딩된 비트스트림에서의 상기 비디오 데이터의 블록을 디코딩하는 단계를 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 복수의 변환 계수들이 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하는 단계는 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 복수의 변환 계수들을 재배열하는 단계를 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 복수의 변환 계수들이 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하는 단계는 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 복수의 변환 계수들의 전부는 아니고, 일부를 재배열하는 단계를 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 비디오 데이터의 블록과 연관된 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 하나 이상의 역 변환 함수들의 하나 이상의 산술 동작 스테이지들을 선택적으로 바이패싱하는 단계를 더 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 비디오 데이터의 블록과 연관된 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 하나 이상의 역 변환 함수들의 단일의 스테이지의 산술 동작들의 전부는 아니고, 일부를 선택적으로 바이패싱하는 단계를 더 포함하고,
    상기 단일의 스테이지는 상기 하나 이상의 역 변환 함수들로 입력된 각 변환 계수에 대한 하나의 산술 동작을 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 하나 이상의 역 변환 함수들은 16-포인트 하다마드 역 변환 함수, 8-포인트 하다마드 역 변환 함수, 또는 4-포인트 하다마드 역 변환 함수 중 하나 이상을 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 하나 이상의 역 변환 함수들의 상기 복수의 출력 값들을 재배열하는 단계를 더 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 비디오 데이터의 블록은 (i) 상기 비트스트림에서 코딩된 화상에서의 16 개의 화소들의 단일의 행, (ii) 상기 비트스트림에서 코딩된 화상에서의 8 개의 화소들의 2 개의 행들, 또는 (iii) 상기 비트스트림에서 코딩된 화상에서의 4 개의 화소들의 4 개의 행들 중 하나에 대응하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 하나 이상의 역 변환 함수들은 하나 이상의 산술 동작 스테이지들을 포함하고, 각각의 산술 동작 스테이지는 가산 동작들 또는 감산 동작들 중 하나 이상을 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  10. 제 1 항에 있어서,
    상기 변환 파티션 타입은 16-포인트 변환 이외의 것이고,
    상기 하나 이상의 역 변환 함수들은 16-포인트 역 변환 함수를 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  11. 제 1 항에 있어서,
    상기 변환 파티션 타입은 (i) 2 개의 8-포인트 변환들, (ii) 하나의 8-포인트 변환 및 2 개의 4-포인트 변환들, 또는 (iii) 4 개의 4-포인트 변환들 중 하나를 포함하고,
    상기 하나 이상의 역 변환 함수들은 하나의 16-포인트 역 변환 함수를 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 방법.
  12. 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치로서,
    상기 코딩된 비트스트림에서의 상기 비디오 데이터의 블록과 연관된 데이터를 저장하도록 구성된 메모리; 및
    상기 메모리와 통신하는 프로세서를 포함하고,
    상기 프로세서는:
    상기 블록과 연관된 변환 파티션 타입을 결정하는 것으로서, 상기 블록은 상기 블록과 연관된 복수의 화소 값들에 대해 하나 이상의 변환 함수들을 적용하는 것을 통해 적어도 부분적으로 결정된 복수의 변환 계수들과 연관되는, 상기 변환 파티션 타입을 결정하고;
    상기 변환 파티션 타입에 기초하여, 상기 복수의 변환 계수들이 상기 하나 이상의 변환 함수들에 대응하는 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하며;
    결정된 상기 순서로 상기 하나 이상의 역 변환 함수들로 상기 복수의 변환 계수들을 입력하는 것을 통해 적어도 부분적으로 복수의 출력 값들을 획득하고; 및
    상기 복수의 출력 값들에 적어도 부분적으로 기초하여 상기 코딩된 비트스트림에서의 상기 비디오 데이터의 블록을 디코딩하도록 구성된, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  13. 제 12 항에 있어서,
    상기 프로세서는 또한 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 복수의 변환 계수들을 재배열하는 것을 통해 적어도 부분적으로 상기 복수의 변환 계수들이 상기 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하도록 구성되는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  14. 제 12 항에 있어서,
    상기 프로세서는 또한 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 복수의 변환 계수들의 전부는 아니고, 일부를 재배열하는 것을 통해 적어도 부분적으로 상기 복수의 변환 계수들이 상기 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하도록 구성되는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  15. 제 12 항에 있어서,
    상기 프로세서는 또한 상기 비디오 데이터의 블록과 연관된 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 하나 이상의 역 변환 함수들의 하나 이상의 산술 동작 스테이지들을 선택적으로 바이패싱하도록 구성되는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  16. 제 12 항에 있어서,
    상기 프로세서는 또한 상기 비디오 데이터의 블록과 연관된 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 하나 이상의 역 변환 함수들의 단일의 스테이지의 산술 동작들의 전부는 아니고, 일부를 선택적으로 바이패싱하도록 구성되고,
    상기 단일의 스테이지는 상기 하나 이상의 역 변환 함수들로 입력된 각 변환 계수에 대한 하나의 산술 동작을 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  17. 제 12 항에 있어서,
    상기 하나 이상의 역 변환 함수들은 16-포인트 하다마드 역 변환 함수, 8-포인트 하다마드 역 변환 함수, 또는 4-포인트 하다마드 역 변환 함수 중 하나 이상을 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  18. 제 12 항에 있어서,
    상기 프로세서는 또한 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 하나 이상의 역 변환 함수들의 상기 복수의 출력 값들을 재배열하도록 구성되는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  19. 제 12 항에 있어서,
    상기 비디오 데이터의 블록은 (i) 상기 비트스트림에서 코딩된 화상에서의 16 개의 화소들의 단일의 행, (ii) 상기 비트스트림에서 코딩된 화상에서의 8 개의 화소들의 2 개의 행들, 또는 (iii) 상기 비트스트림에서 코딩된 화상에서의 4 개의 화소들의 4 개의 행들 중 하나에 대응하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  20. 제 12 항에 있어서,
    상기 하나 이상의 역 변환 함수들은 하나 이상의 산술 동작 스테이지들을 포함하고, 각각의 산술 동작 스테이지는 가산 동작들 또는 감산 동작들 중 하나 이상을 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  21. 제 12 항에 있어서,
    상기 변환 파티션 타입은 16-포인트 변환 이외의 것이고,
    상기 하나 이상의 역 변환 함수들은 16-포인트 역 변환 함수를 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  22. 제 12 항에 있어서,
    상기 변환 파티션 타입은 (i) 2 개의 8-포인트 변환들, (ii) 하나의 8-포인트 변환 및 2 개의 4-포인트 변환들, 또는 (iii) 4 개의 4-포인트 변환들 중 하나를 포함하고,
    상기 하나 이상의 역 변환 함수들은 하나의 16-포인트 역 변환 함수를 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하는 장치.
  23. 코드를 포함하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 코드는 실행될 때 장치로 하여금:
    코딩된 비트스트림에서의 비디오 데이터의 블록과 연관된 데이터를 저장하게 하고;
    상기 블록과 연관된 변환 파티션 타입을 결정하게 하는 것으로서, 상기 블록은 상기 블록과 연관된 복수의 화소 값들에 대해 하나 이상의 변환 함수들을 적용하는 것을 통해 적어도 부분적으로 결정된 복수의 변환 계수들과 연관되는, 상기 변환 파티션 타입을 결정하게 하며;
    상기 변환 파티션 타입에 기초하여, 상기 복수의 변환 계수들이 상기 하나 이상의 변환 함수들에 대응하는 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하게 하고;
    결정된 상기 순서로 상기 하나 이상의 역 변환 함수들로 상기 복수의 변환 계수들을 입력하는 것을 통해 적어도 부분적으로 복수의 출력 값들을 획득하게 하며; 및
    상기 복수의 출력 값들에 적어도 부분적으로 기초하여 상기 코딩된 비트스트림에서의 상기 비디오 데이터의 블록을 디코딩하게 하는, 비일시적 컴퓨터 판독가능 매체.
  24. 제 23 항에 있어서,
    상기 코드는 상기 장치로 하여금 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 복수의 변환 계수들을 재배열하는 것을 통해 적어도 부분적으로 상기 복수의 변환 계수들이 상기 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하게 하는, 비일시적 컴퓨터 판독가능 매체.
  25. 제 23 항에 있어서,
    상기 코드는 또한 상기 장치로 하여금 상기 비디오 데이터의 블록과 연관된 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 하나 이상의 역 변환 함수들의 하나 이상의 산술 동작 스테이지들을 선택적으로 바이패싱하게 하는, 비일시적 컴퓨터 판독가능 매체.
  26. 제 23 항에 있어서,
    상기 변환 파티션 타입은 (i) 2 개의 8-포인트 변환들, (ii) 하나의 8-포인트 변환 및 2 개의 4-포인트 변환들, 또는 (iii) 4 개의 4-포인트 변환들 중 하나를 포함하고,
    상기 하나 이상의 역 변환 함수들은 하나의 16-포인트 역 변환 함수를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  27. 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하도록 구성된 비디오 코딩 디바이스로서,
    코딩된 비트스트림에서의 비디오 데이터의 블록과 연관된 데이터를 저장하는 수단;
    상기 블록과 연관된 변환 파티션 타입을 결정하는 수단으로서, 상기 블록은 상기 블록과 연관된 복수의 화소 값들에 대해 하나 이상의 변환 함수들을 적용하는 것을 통해 적어도 부분적으로 결정된 복수의 변환 계수들과 연관되는, 상기 변환 파티션 타입을 결정하는 수단;
    상기 변환 파티션 타입에 기초하여, 상기 복수의 변환 계수들이 상기 하나 이상의 변환 함수들에 대응하는 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하는 수단;
    결정된 상기 순서로 상기 하나 이상의 역 변환 함수들로 상기 복수의 변환 계수들을 입력하는 것을 통해 적어도 부분적으로 복수의 출력 값들을 획득하는 수단; 및
    상기 복수의 출력 값들에 적어도 부분적으로 기초하여 상기 코딩된 비트스트림에서의 상기 비디오 데이터의 블록을 디코딩하는 수단을 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하도록 구성된 비디오 코딩 디바이스.
  28. 제 27 항에 있어서,
    상기 복수의 변환 계수들이 하나 이상의 역 변환 함수들로 입력되어야 하는 순서를 결정하는 것은 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 복수의 변환 계수들을 재배열하는 것을 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하도록 구성된 비디오 코딩 디바이스.
  29. 제 27 항에 있어서,
    상기 비디오 데이터의 블록과 연관된 상기 변환 파티션 타입에 적어도 부분적으로 기초하여 상기 하나 이상의 역 변환 함수들의 하나 이상의 산술 동작 스테이지들을 선택적으로 바이패싱하는 수단을 더 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하도록 구성된 비디오 코딩 디바이스.
  30. 제 27 항에 있어서,
    상기 변환 파티션 타입은 (i) 2 개의 8-포인트 변환들, (ii) 하나의 8-포인트 변환 및 2 개의 4-포인트 변환들, 또는 (iii) 4 개의 4-포인트 변환들 중 하나를 포함하고,
    상기 하나 이상의 역 변환 함수들은 하나의 16-포인트 역 변환 함수를 포함하는, 코딩된 비트스트림에서의 비디오 데이터의 블록을 디코딩하도록 구성된 비디오 코딩 디바이스.
KR1020177003316A 2014-08-08 2015-08-06 다중-파티션 변환을 위해 변환 구조를 재사용하는 시스템 및 방법 KR20170042292A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462035299P 2014-08-08 2014-08-08
US62/035,299 2014-08-08
US14/819,329 2015-08-05
US14/819,329 US20160044314A1 (en) 2014-08-08 2015-08-05 System and method for reusing transform structure for multi-partition transform
PCT/US2015/044054 WO2016022828A1 (en) 2014-08-08 2015-08-06 System and method for reusing transform structure for multi-partition transform

Publications (1)

Publication Number Publication Date
KR20170042292A true KR20170042292A (ko) 2017-04-18

Family

ID=53901145

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177003316A KR20170042292A (ko) 2014-08-08 2015-08-06 다중-파티션 변환을 위해 변환 구조를 재사용하는 시스템 및 방법

Country Status (6)

Country Link
US (1) US20160044314A1 (ko)
EP (1) EP3178015A1 (ko)
JP (1) JP2017531355A (ko)
KR (1) KR20170042292A (ko)
CN (1) CN106663085A (ko)
WO (1) WO2016022828A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11601660B2 (en) 2018-03-30 2023-03-07 Hulu, LLC Reuse of block tree pattern in video compression
CN108965877A (zh) * 2018-07-04 2018-12-07 武汉精测电子集团股份有限公司 基于dsc压缩算法实现视频实时显示的装置及方法
CN114928745B (zh) * 2018-09-02 2024-04-19 Lg电子株式会社 信号编解码方法、计算机可读存储介质和数据传输方法
KR20240017119A (ko) * 2018-09-05 2024-02-06 엘지전자 주식회사 비디오 신호의 부호화/복호화 방법 및 이를 위한 장치
EP3891984A1 (en) * 2018-12-03 2021-10-13 InterDigital VC Holdings, Inc. Method and device for picture encoding and decoding
CN113365049B (zh) * 2019-03-09 2023-02-28 杭州海康威视数字技术股份有限公司 进行编码和解码的方法、解码端、编码端和系统
KR20220090887A (ko) * 2020-12-23 2022-06-30 삼성전자주식회사 이미지 처리 장치 및 이미지 처리 장치의 동작 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293330A (en) * 1991-11-08 1994-03-08 Communications Satellite Corporation Pipeline processor for mixed-size FFTs
KR20010023031A (ko) * 1997-08-25 2001-03-26 밀러 럿셀 비 가변 블록 사이즈의 2-차원 역 이산 코사인 변환 엔진
US9106913B2 (en) * 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
US9143802B2 (en) * 2011-10-31 2015-09-22 Qualcomm Incorporated Fragmented parameter set for video coding
US9877048B2 (en) * 2014-06-09 2018-01-23 Qualcomm Incorporated Entropy coding techniques for display stream compression (DSC)

Also Published As

Publication number Publication date
JP2017531355A (ja) 2017-10-19
US20160044314A1 (en) 2016-02-11
EP3178015A1 (en) 2017-06-14
CN106663085A (zh) 2017-05-10
WO2016022828A1 (en) 2016-02-11

Similar Documents

Publication Publication Date Title
EP3350991B1 (en) Variable partition size for block prediction mode for display stream compression (dsc)
KR102229045B1 (ko) 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
US10362310B2 (en) Entropy coding techniques for display stream compression (DSC) of non-4:4:4 chroma sub-sampling
KR20170042292A (ko) 다중-파티션 변환을 위해 변환 구조를 재사용하는 시스템 및 방법
US10631005B2 (en) System and method for coding in block prediction mode for display stream compression (DSC)
KR102102066B1 (ko) 디스플레이 스트림 압축 (dsc) 을 위한 블록 예측 모드에 대한 멀티-영역 검색 범위
EP3178230B1 (en) Method for video coding with spatial prediction mode for multi-mode video coding
US9979970B2 (en) System and method for determining buffer fullness for display stream compression
KR20180102565A (ko) 디스플레이 스트림 압축 (dsc) 에서의 왜곡을 계산하기 위한 시스템 및 방법들
US20160044339A1 (en) System and method for reordering of prefixes and suffixes in variable length coding to increase throughput