KR20170051540A - 미디어 데이터 코딩을 위한 32-포인트 변환 - Google Patents

미디어 데이터 코딩을 위한 32-포인트 변환 Download PDF

Info

Publication number
KR20170051540A
KR20170051540A KR1020177012024A KR20177012024A KR20170051540A KR 20170051540 A KR20170051540 A KR 20170051540A KR 1020177012024 A KR1020177012024 A KR 1020177012024A KR 20177012024 A KR20177012024 A KR 20177012024A KR 20170051540 A KR20170051540 A KR 20170051540A
Authority
KR
South Korea
Prior art keywords
dct
unit
point
scaled
transform
Prior art date
Application number
KR1020177012024A
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 KR20170051540A publication Critical patent/KR20170051540A/ko

Links

Images

Classifications

    • 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/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • 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
    • 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
    • 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/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • Signal Processing (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

일반적으로, 상이한 사이즈들의 다중 DCT들을 적용할 수 있는 32-포인트 이산 코사인 변환 (DCT) 을 구현하기 위한 기법들이 설명된다. 예를 들어, 타입 II 유닛의 32-포인트 이산 코사인 변환 (DCT-II) 유닛을 포함하는 장치가 본 개시물의 기법들을 구현할 수도 있다. 32-포인트 DCT-II 유닛은 이러한 상이한 사이즈들의 DCT-II들을 수행하여 데이터를 공간으로부터 주파수 도메인으로 변환한다. 32-포인트 DCT-II 유닛은 사이즈 16 의 DCT-II들 중 하나를 수행하는 16-포인트 DCT-II 유닛 및 사이즈 8 의 DCT-II들 중 하나를 수행하는 적어도 하나의 8-포인트 DCT-II 유닛을 포함한다. 16-포인트 DCT-II 유닛은 다른 8-포인트 DCT-II 유닛을 포함한다. 16-포인트 DCT-II 유닛은 또한 적어도 하나의 4-포인트 DCT-II들 유닛을 포함한다. 이러한 DCT-II들 유닛들 중 두 개 이상은 상이한 사이즈들의 DCT-II들을 콘텐츠 데이터의 다양한 부분들로 동시에 수행할 수도 있다.

Description

미디어 데이터 코딩을 위한 32-포인트 변환{32-POINT TRANSFORM FOR MEDIA DATA CODING}
본 출원은 2011 년 1 월 10 일에 출원된 미국 가출원 번호 제 61/431,343호, 2011 년 1 월 14 일에 출원된 미국 가출원 번호 제 61/433,015호, 2011 년 1 월 17 일에 출원된 미국 가출원 번호 제 61/433,351호, 2011 년 2 월 25 일에 출원된 미국 가출원 번호 제 61/446,834호, 및 2011 년 7 월 1 일에 출원된 미국 가출원 번호 제 61/504,146호에 대한 우선권을 주장하는데, 이러한 미국 가출원들 각각의 전체 콘텐츠들은 참조로써 본 명세서에 통합된다.
본 개시물은 데이터 압축에 관련하고, 좀 더 자세하게 설명하면 변환들을 수반하는 데이터 압축에 관련한다.
데이터 압축은 다양한 애플리케이션들에서 광범위하게 사용되어 데이터 스토리지 공간의 소모, 송신 대역폭, 또는 이들 모두를 감소시킨다. 데이터 압축의 예시적인 애플리케이션들은 가시 또는 가청 미디어 데이터 코딩, 예컨대 디지털 비디오, 이미지, 스피치, 및 오디오 코딩을 포함한다. 예를 들어 디지털 비디오 코딩은, 디지털 텔레비전들, 디지털 다이렉트 브로드캐스트 시스템들, 무선 통신 디바이스들, 개인휴대 정보 단말들 (personal digital assistants; PDAs), 랩톱 또는 데스크톱 컴퓨터들, 태블릿 컴퓨터들, 디지털 카메라들, 디지털 녹화 디바이스들, 비디오 게이밍 디바이스들, 셀룰러 또는 위성 무선 전화기들 또는 기타 등등을 포함하는 광범위한 디바이스들 내에서 사용된다. 디지털 비디오 디바이스들은 표준들, 예컨대 MPEG-2 표준, MPEG-4 표준, H.264/MPEG-4 진보된 비디오 코딩 (AVC) 표준, 또는 대두되는 고 효율 비디오 코딩 (HEVC) 표준 (이것은 가끔 대두되는 H.265 표준이라고 지칭된다) 에 따르는 비디오 압축 기법들을 구현하여 디지털 비디오를 더 효율적으로 송신하고 수신한다.
비디오 압축 기법들은 공간적 예측, 모션 추정 및 모션 보상을 수행하여 비디오 데이터 내에 내재된 리던던시 (redundancy) 를 감소시키거나 제거할 수도 있다. 특히 인트라-코딩은 공간 예측에 의존하여, 주어진 비디오 프레임 내의 비디오에서의 공간적 리던던시를 감소시키거나 제거한다. 인터-코딩은 시간적 예측에 의존하여, 인접 프레임들 내의 비디오에서의 시간적 리던던시를 감소시키거나 제거한다. 인터-코딩을 위하여, 비디오 인코더는 모션 추정을 수행하여 두 개 이상의 인접한 프레임들 간의 (다양한 비디오 코딩 표준들, 예컨대 H.264/MPEG-4 AVC 표준에서 블록들이라고 지칭될 수도 있는) 매칭 유닛들의 이동을 추적한다. 모션 추정은 모션 벡터들을 생성하는데, 이것은 현재 프레임의 유닛들의 하나 이상의 참조 프레임들 내의 대응하는 유닛들에 대한 변위를 표시한다. 모션 보상은 모션 벡터를 사용하여 참조 프레임으로부터 예측 데이터를 생성한다. 모션 보상 이후에, 예측 데이터를 원래의 유닛으로부터 감산함으로써 잔차 데이터가 형성된다.
그러면, 비디오 인코더는 양자화 및 무손실 통계적 코딩 처리들에 의하여 후속되는 변환을 적용하여 비디오 코딩 처리에 의하여 생성되는 잔차 데이터의 비트 레이트를 더욱 감소시킨다. 몇 가지 실례들에서는, 적용된 변환은 이산 코사인 변환 (DCT) 을 포함한다. 통상적으로, DCT는 그 사이즈가 2 의 멱인 코딩 유닛들, 예컨대 (통상 "16x16 유닛" 이라고 지칭되는) 높이가 16 픽셀들이고 너비가 16 픽셀들인 코딩 유닛에 적용된다. 이러한 DCT들은, 그러므로, 이러한 DCT들이 16x16 유닛들에 적용되어 DCT 계수들의 16-포인트 어레이를 생성한다는 점에서 16-포인트 DCT들이라고 지칭될 수도 있다. 그러면, 16-포인트 DCT를 잔차 데이터에 적용함으로써 생성된 DCT 계수들의 16-포인트 어레이는 (통상 "엔트로피 코딩" 처리들이라고 공지된) 양자화 및 무손실 통계적 코딩 처리들을 겪어서 비트스트림을 생성한다. 통계적 코딩 처리들의 예들은 콘텍스트-적응적 가변 길이 코딩 (context-adaptive variable length coding; CAVLC) 또는 콘텍스트-적응적 이진 산술 코딩 (context-adaptive binary arithmetic coding; CABAC) 을 포함한다. 비디오 디코더는 인코딩된 비트스트림을 수신하고 그리고 무손실 디코딩을 수행하여 DCT 계수들을 압축해제하는데, 그러면 비디오 디코더가 이것들을 하나 이상의 16-포인트 역 DCT들 (IDCT) 의 적용을 통하여 공간 도메인으로 되돌려 변환하여 유닛들의 각각에 대한 잔차 데이터를 형성한다. 잔차 데이터 및 모션 정보를 사용하면서, 비디오 디코더는 인코딩된 비디오를 복원한다.
일반적으로, 본 개시물은 데이터, 예컨대 미디어 데이터를 32-포인트 DCT 뿐만이 아니라 상이한 사이즈들의 다중의 상이한 DCT들을 수행할 수 있는 32-포인트 이산 코사인 변환 (DCT) 의 일 구현형태를 사용하여 코딩하는 기법들에 직결된다. 일 예로서, 본 개시물의 기법들에 따라서 구성된 32-포인트 DCT 구현형태는 사이즈 32 의 DCT를 수행하고 그리고 사이즈 16 의 DCT를 수행하는 스케일링된 16-포인트 DCT 구현형태 및 사이즈 8 의 DCT를 수행하는 적어도 하나의 DCT 구현형태를 포함한다. 다른 예에서는, 본 개시물의 기법들에 따라서 구성된 32-포인트 DCT 구현형태는 사이즈 32 의 선형 DCT를 수행하고 그리고 사이즈 16 의 DCT를 수행하는 16-포인트 DCT를 포함하는데, 여기에서 이러한 16-포인트 DCT는 더 나아가 역시 사이즈 8 의 선형 DCT를 수행하는 적어도 하나의 8-포인트 DCT 구현형태 및 각각이 사이즈 4 의 선형 DCT를 수행하는 적어도 두 개의 4-포인트 DCT 구현형태들을 수행하며, 이것들은 서로 동시에 동작할 수도 있다. 더욱이, 8-포인트 DCT 구현형태는 사이즈 4 의 다른 선형 DCT를 수행하는 또 다른 4-포인트 DCT 구현형태를 포함할 수도 있는데, 이것은 적어도 두 개의 4-포인트 DCT 구현형태들에 의하여 수행되는 4-포인트 DCT들과 동시에 동작할 수도 있다. 이러한 32-포인트 DCT는 또한 사이즈 8 의 두 개의 DCT들을 동시에 수행할 수 있는 두 개의 8-포인트 DCT들을 포함할 수도 있다. 결과적으로, 본 개시물의 기법들에 따라서 구성된 32-포인트 DCT 구현형태는 변동하는 사이즈들의 다수 개의 상이한 DCT 구현형태들을 통합할 수도 있는데, 이것들은 개별적으로 구현될 경우 이러한 DCT들 각각에 의하여 통상적으로 소모되는 칩-영역과 비교할 때 상당히 더 적은 칩-영역을 소모할 수도 있다.
이러한 DCT들은 우선 이러한 DCT들 중 하나를 유닛을 따라 한 방향으로, 예컨대 수평 축을 따라 적용하고, 이제 유닛을 따라 반대 방향으로, 예컨대 수직 축을 따라 적용함으로써 임의의 주어진 사이즈의 비디오 유닛에 적용될 수도 있다. 이러한 DCT들을 이러한 방식으로 적용함으로써, 변동하는 사이즈들의 DCT들이 적용될 수도 있다. 예를 들어, 32x16 또는 16x32 DCT를 하부 유닛의 사이즈에 의존하여 효과적으로 적용하기 위하여, 32-포인트 DCT가 하나의 방향으로 적용될 수도 있고 그리고 16-포인트 DCT가 다른 방향으로 적용될 수도 있다. 이러한 방식으로, DCT들은 사이즈 32x32, 32x16, 16x32, 16x16, 16x8, 8x16, 8x8, 8x4, 4x8, 4x4 의 DCT들 또는 앞선 선형 사이징된 DCT들의 임의의 다른 조합을 수행하도록 적용될 수도 있다.
일 양태에서는, 콘텐츠 데이터를 공간 도메인으로부터 주파수 도메인으로 변환하는 방법이 개시되는데, 이 방법은, 스케일링된 32-포인트 변환 유닛에 의해 상이한 사이즈들의 다중 스케일링된 변환들 중 하나 이상을 수행하여 콘텐츠 데이터를 공간 도메인으로부터 주파수 도메인으로 변환하는 단계를 포함하는데, 여기에서 상기 스케일링된 32-포인트 변환 유닛은 사이즈 32 의 복수의 스케일링된 변환들 중 첫 번째 변환을 수행한다. 상기 스케일링된 32-포인트 변환 유닛은, 32-포인트 변환 유닛의 짝수 절반에 위치되며 복수의 스케일링된 변환들 중 두 번째 변환을 수행하는 스케일링된 16-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 두 번째 변환은 16 의 변환 사이즈를 정의하는, 상기 스케일링된 16-포인트 변환 유닛, 및 32-포인트 변환 유닛의 홀수 절반에 위치되며 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 적어도 하나의 스케일링된 8-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 세 번째 변환은 8 의 변환 사이즈를 정의하는, 상기 적어도 하나의 스케일링된 8-포인트 변환 유닛을 포함한다.
다른 양태에서는, 장치는 상이한 사이즈들의 복수의 스케일링된 변환들을 수행하여 콘텐츠 데이터를 공간 도메인으로부터 주파수 도메인으로 변환하는 수단을 포함하는데, 여기에서 상기 상이한 사이즈들의 복수의 스케일링된 변환들을 수행하는 수단은 상기 복수의 스케일링된 변환들 중 첫 번째 변환을 수행하고, 상기 복수의 스케일링된 변환들 중 첫 번째 변환은 32 의 변환 사이즈를 정의한다. 상기 상이한 사이즈들의 복수의 스케일링된 변환들을 수행하는 수단은, 상기 복수의 스케일링된 변환들을 수행하는 수단의 짝수 절반에 위치되며 복수의 스케일링된 변환들 중 두 번째 변환을 수행하는 수단으로서, 상기 복수의 스케일링된 변환들 중 두 번째 변환은 16 의 변환 사이즈를 정의하는, 상기 복수의 스케일링된 변환들 중 두 번째 변환을 수행하는 수단, 및 상기 복수의 스케일링된 변환들을 수행하는 수단의 홀수 절반에 위치되며 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 수단으로서, 상기 복수의 스케일링된 변환들 중 세 번째 변환은 8 의 변환 사이즈를 정의하는, 상기 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 수단을 포함한다.
다른 양태에서는, 장치는 상이한 사이즈들의 복수의 스케일링된 변환들을 수행하여 콘텐츠 데이터를 공간 도메인으로부터 주파수 도메인으로 변환하는 스케일링된 32-포인트 변환 유닛을 포함하는데, 여기에서 상기 스케일링된 32-포인트 변환 유닛은 상기 복수의 스케일링된 변환들 중 첫 번째 변환을 수행하고, 상기 복수의 스케일링된 변환들 중 첫 번째 변환은 32 의 변환 사이즈를 정의한다. 상기 32-포인트 변환 유닛은, 32-포인트 변환 유닛의 짝수 절반에 위치되며 복수의 스케일링된 변환들 중 두 번째 변환을 수행하는 스케일링된 16-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 두 번째 변환은 16 의 변환 사이즈를 정의하는, 상기 스케일링된 16-포인트 변환 유닛, 및 32-포인트 변환 유닛의 홀수 절반에 위치되며 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 적어도 하나의 스케일링된 8-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 세 번째 변환은 8 의 변환 사이즈를 정의하는, 상기 적어도 하나의 스케일링된 8-포인트 변환 유닛을 포함한다.
다른 양태에서는, 명령들을 포함하는 비-일시적 컴퓨터-판독가능 매체가 개시되는데, 상기 명령들은 실행시, 하나 이상의 프로세서로 하여금, 상이한 사이즈들의 다중 스케일링된 변환들 중 하나 이상을 수행하여 콘텐츠 데이터를 공간 도메인으로부터 주파수 도메인으로 변환하는 스케일링된 32-포인트 변환 유닛을 구현하도록 하고, 상기 스케일링된 32-포인트 변환 유닛은 사이즈 32 의 복수의 스케일링된 변환들 중 첫 번째 변환을 수행한다. 상기 스케일링된 32-포인트 변환 유닛은, 32-포인트 변환 유닛의 짝수 절반에 위치되며 복수의 스케일링된 변환들 중 두 번째 변환을 수행하는 스케일링된 16-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 두 번째 변환은 16 의 변환 사이즈를 정의하는, 상기 스케일링된 16-포인트 변환 유닛, 및 32-포인트 변환 유닛의 홀수 절반에 위치되며 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 적어도 하나의 스케일링된 8-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 세 번째 변환은 8 의 변환 사이즈를 정의하는, 상기 적어도 하나의 스케일링된 8-포인트 변환 유닛을 포함한다.
다른 양태에서는, 변환된 콘텐츠 데이터를 주파수 도메인으로부터 공간 도메인으로 변환하는 방법이 개시되는데, 이 방법은 스케일링된 32-포인트 변환 유닛에 의해 상이한 사이즈들의 다중 스케일링된 변환들 중 하나 이상을 수행하여 상기 변환된 콘텐츠 데이터를 주파수 도메인으로부터 공간 도메인으로 변환하는 단계를 포함하며, 상기 스케일링된 32-포인트 변환 유닛은 사이즈 32 의 복수의 스케일링된 변환들 중 첫 번째 변환을 수행한다. 상기 스케일링된 32-포인트 변환 유닛은, 32-포인트 변환 유닛의 짝수 절반에 위치되며 복수의 스케일링된 변환들 중 두 번째 변환을 수행하는 스케일링된 16-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 두 번째 변환은 16 의 변환 사이즈를 정의하는, 상기 스케일링된 16-포인트 변환 유닛, 및 32-포인트 변환 유닛의 홀수 절반에 위치되며 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 적어도 하나의 스케일링된 8-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 세 번째 변환은 8 의 변환 사이즈를 정의하는, 상기 적어도 하나의 스케일링된 8-포인트 변환 유닛을 포함한다.
다른 양태에서는, 장치는 상이한 사이즈들의 복수의 스케일링된 변환들을 수행하여 콘텐츠 데이터를 주파수 도메인으로부터 공간 도메인으로 변환하는 수단을 포함하는데, 여기에서 상기 상이한 사이즈들의 복수의 스케일링된 변환들을 수행하는 수단은 상기 복수의 스케일링된 변환들 중 첫 번째 변환을 수행하고, 상기 복수의 스케일링된 변환들 중 첫 번째 변환은 32 의 변환 사이즈를 정의한다. 상기 상이한 사이즈들의 복수의 스케일링된 변환들을 수행하는 수단은, 상기 복수의 스케일링된 변환들을 수행하는 수단의 짝수 절반에 위치되며 복수의 스케일링된 변환들 중 두 번째 변환을 수행하는 수단으로서, 상기 복수의 스케일링된 변환들 중 두 번째 변환은 16 의 변환 사이즈를 정의하는, 상기 복수의 스케일링된 변환들 중 두 번째 변환을 수행하는 수단, 및 상기 복수의 스케일링된 변환들을 수행하는 수단의 홀수 절반에 위치되며 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 수단으로서, 상기 복수의 스케일링된 변환들 중 세 번째 변환은 8 의 변환 사이즈를 정의하는, 상기 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 수단을 포함한다.
다른 양태에서는, 장치는 상이한 사이즈들의 복수의 스케일링된 변환들을 수행하여 콘텐츠 데이터를 주파수 도메인으로부터 공간 도메인으로 변환하는 스케일링된 32-포인트 변환 유닛을 포함하는데, 여기에서 상기 스케일링된 32-포인트 변환 유닛은 상기 복수의 스케일링된 변환들 중 첫 번째 변환을 수행하고, 상기 복수의 스케일링된 변환들 중 첫 번째 변환은 32 의 변환 사이즈를 정의한다. 상기 스케일링된 32-포인트 변환 유닛은, 32-포인트 변환 유닛의 짝수 절반에 위치되며 복수의 스케일링된 변환들 중 두 번째 변환을 수행하는 스케일링된 16-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 두 번째 변환은 16 의 변환 사이즈를 정의하는, 상기 스케일링된 16-포인트 변환 유닛, 및 32-포인트 변환 유닛의 홀수 절반에 위치되며 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 적어도 하나의 스케일링된 8-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 세 번째 변환은 8 의 변환 사이즈를 정의하는, 상기 적어도 하나의 스케일링된 8-포인트 변환 유닛을 포함한다.
다른 양태에서는, 비-일시적 컴퓨터-판독가능 매체는 명령들을 포함하는데, 상기 명령들은 실행시, 하나 이상의 프로세서로 하여금, 상이한 사이즈들의 다중 스케일링된 변환들 중 하나 이상을 수행하여 콘텐츠 데이터를 주파수 도메인으로부터 공간 도메인으로 변환하는 스케일링된 32-포인트 변환 유닛을 구현하도록 하고, 여기에서 상기 스케일링된 32-포인트 변환 유닛은 사이즈 32 의 복수의 스케일링된 변환들 중 첫 번째 변환을 수행한다. 상기 스케일링된 32-포인트 변환 유닛은, 32-포인트 변환 유닛의 짝수 절반에 위치되며 복수의 스케일링된 변환들 중 두 번째 변환을 수행하는 스케일링된 16-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 두 번째 변환은 16 의 변환 사이즈를 정의하는, 상기 스케일링된 16-포인트 변환 유닛, 및 32-포인트 변환 유닛의 홀수 절반에 위치되며 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 적어도 하나의 스케일링된 8-포인트 변환 유닛으로서, 상기 복수의 스케일링된 변환들 중 세 번째 변환은 8 의 변환 사이즈를 정의하는, 상기 적어도 하나의 스케일링된 8-포인트 변환 유닛을 포함한다.
본 기법들의 하나 이상의 양태들의 세부사항들은 첨부 도면들 및 아래의 설명에서 언급된다. 본 개시물에서 설명된 기법들의 다른 피쳐들, 목적들, 및 이점들은 발명을 실시하기 위한 구체적인 내용 및 도면들로부터, 그리고 청구항들로부터 명확하게 될 것이다.
도 1 본 개시물의 기법들을 구현할 수도 있는 비디오 인코딩 및 디코딩 시스템을 도시하는 블록도이다.
도 2 는 도 1 의 비디오 인코더를 좀 더 상세하게 도시하는 블록도이다.
도 3 은 도 1 의 비디오 디코더를 좀 더 상세하게 도시하는 블록도이다.
도 4a 내지 도 4e 는 도 2 의 32-포인트 DCT-II 유닛의 다양한 양태들을 좀 더 상세하게 도시하는 도면들이다.
도 5 는 본 개시물의 기법들에 따라서 구성된 32-포인트 DCT 구현형태를 적용할 때의 코딩 디바이스의 예시적인 동작을 도시하는 흐름도이다.
도 6 은 본 개시물의 기법들에 따라서 구성된 32-포인트 DCT-III을 적용할 때의 코딩 디바이스의 예시적인 동작을 도시하는 흐름도이다.
도 7a 내지 도 7e 는 도 2 에서 도시되는 32-포인트 DCT-II 유닛의 다른 예시적인 구현형태의 다양한 양태들을 도시하는 도면들이다.
일반적으로, 본 개시물은 상이한 사이즈들의 다수 개의 상이한 DCT들을 수행할 수 있는 다수 개의 상이한 DCT들 구현형태들을 포함하는 32-포인트 이산 코사인 변환들 (DCTs) 구현형태를 사용하여 데이터를 코딩하기 위한 기법들로 직결된다. 기법들은, 가시 미디어 데이터 또는 가청 미디어 데이터, 예컨대 디지털 비디오 데이터, 이미지 데이터, 스피치 데이터, 및/또는 오디오 데이터를 포함하는 다양한 데이터를 압축하여, 이를 통하여 더 효율적 처리, 송신 또는 전기 신호들의 획득을 위하여 이러한 데이터를 나타내는 이러한 전기 신호들을 압축된 신호들로 변환하는 것에 적용될 수도 있다. 그러므로, 본 개시물의 기법들에 따라서 구성된 32-포인트 DCT 구현형태는 다중 사이즈들의 DCT들을 수행할 수 있다. 다중 사이즈들의 DCT들을 수행함으로써, 32-포인트 DCT 구현형태는 잠재적으로 유사한 사이즈들의 DCT들을 수행하기 위한 별개의 DCT 구현형태들을 제거한다. 결과적으로, 설명된 기법들은, 본 개시물의 기법들에 따라서 구성된 32-포인트 DCT 구현형태가 상이한 사이즈들의, 예컨대 16, 8 및 4 의 DCT 구현형태들을 내장, 네스팅, 또는 그렇지 않으면 임베딩할 때, 별개의 32-포인트, 16-포인트, 8-포인트 및 4-포인트 DCT 구현형태들의 총 사이즈와 비교할 때 32-포인트 구현형태의 사이즈를 실질적으로 증가시키지 않으면서 소위 "보드 공간"의 감소된 소모를 촉진할 수도 있다. 더 적은 보드 공간을 소모하는 것은 일반적으로 전력 소모의 감소로 이어지며, 결과적으로 본 개시물의 기법들은 더 에너지 효율적인 DCT 구현형태들을 촉진할 수도 있다.
위에서 지시된 사이즈들, 즉, 32, 16, 8 및 4 는 이산 데이터 유닛들의 관점에서 표현된다. 예시하기 위하여, 비디오 데이터는, 특히 비디오 압축에 대하여 유닛 (예컨대 HEVC 표준에서 설명되는 코딩 유닛들 (CUs)) 의 관점에서 통상 설명된다. 유닛은 일반적으로 비디오 프레임의 임의의 사이징된 부분을 지칭하는데, 여기에서 비디오 프레임은 일련의 픽쳐들 또는 이미지들 내의 한 픽쳐 또는 이미지를 지칭한다. 각각의 유닛은 통상적으로 컬러 컴포넌트들, 예를 들어, 적색, 청색 및 녹색, (소위 "색도 (chromaticity)" 또는 "크로마" 컴포넌트들) 또는 휘도 성분들 (소위 "루마" 컴포넌트들) 중 하나를 표시하는 복수의 별개의 픽셀 데이터를 포함한다. 픽셀 데이터의 각각의 세트는 유닛 내의 단일 픽셀을 포함하고 그리고 코딩 유닛에 대하여 별개의 데이터 유닛으로서 간주될 수도 있다. 따라서, 8x8 코딩 유닛은, 예를 들어 각 행 내에 픽셀 데이터의 8 개의 별개의 세트들이 있는 8 개의 행들을 포함한다. n-비트 값이 각각의 픽셀로 지정되어 컬러 또는 휘도 값을 특정할 수도 있다.
DCT들은 통상 오디오, 스피치, 이미지 또는 비디오 데이터인, 그 DCT가 처리할 수 있는 데이터의 블록의 사이즈의 관점에서 설명된다. 예를 들어, 만일 DCT가 데이터의 32 엘리먼트 어레이를 처리할 수 있으면, DCT는 선형 32-포인트 DCT라고 지칭될 수도 있다. 동일한 또는 상이한 사이즈들의 선형 DCT들이 32x32, 32x16, 16x32, 16x8, 8x16, 8x8, 8x4, 4x8, 4x4 또는 사이즈들의 임의의 다른 조합의 상이한 사이징된 코딩 유닛들로의 변환을 효과적으로 수행하도록 적용될 수도 있다. 더욱이, DCT들은 특정 타입으로서 표시될 수도 있다. DCT들의 8 개의 상이한 타입들 중 DCT의 가장 통상 채용되는 타입은 타입-II의 DCT인데, 이것은 "DCT-II"으로서 표시될 수도 있다. 일반적으로 DCT를 지칭할 때는, 통상 이러한 참조는 타입-II의 DCT 또는 DCT-II를 지칭한다. DCT-II의 역은 타입-III의 DCT로서 지칭되는데, 이것은 이와 유사하게 "DCT-III"로서 또는, DCT가 DCT-II를 지칭한다는 공통적인 이해와 함께 "IDCT"로서 표시될 수도 있는데, 여기에서 "IDCT" 내의 "I"는 역을 표시한다. 아래의 DCT들에 대한 참조는 이러한 명명법에 따르는데, 여기에서 DCT들에 대한 일반적 참조는 다르게 규정되지 않으면 DCT-II를 지칭한다. 그러나, 혼동을 회피하기 위하여, DCT-II들을 포함하는 DCT들은 아래에서 표시된 대응하는 타입 (II, III, 등) 과 함께 지칭된다.
본 개시물에서 설명된 기법들은 32-포인트 DCT-II들 및/또는 32-포인트 DCT-III들의 하나 이상의 구현형태들을 채용하여 데이터의 압축 및/또는 압축해제를 용이화하는 인코더 및/또는 디코더에서 구현될 수도 있다. 다시 말하건대, 이러한 32-포인트 DCT-II 구현형태들을 적용하여 달성된 압축 및 압축해제는 데이터를 나타내는 전기 신호들의 물리적 변환을 허용함으로써, 신호들이 물리적 컴퓨팅 하드웨어, 물리적 송신 미디어 (예를 들어, 구리, 광학적 섬유, 무선, 또는 다른 미디어), 및/또는 스토리지 하드웨어 (예를 들어, 자기적 또는 광학적 디스크 또는 테이프, 또는 다양한 고상 미디어 중 임의의 것) 을 사용하여 더 효율적으로 처리되고, 송신되며, 그리고/또는 저장되도록 할 수 있다. 구현형태들은 오직 하드웨어로만 구성될 수도 있으며 또는 하드웨어 및 소프트웨어의 조합에서 구성될 수도 있다.
32-포인트 DCT-II들의 구현형태들은 스케일링될 수도 있는데, 여기에서 용어 "스케일링된"은 스케일링된 DCT 계수들을 생성하는 DCT 구현형태를 지칭한다. 스케일링된 DCT 계수들은 대응하는 스케일 인자들에 의하여 승산되면, 소위 "풀(full)" DCT 계수들을 생성한다. 스케일링된 DCT 구현형태는 그 구현형태로부터 제거된 특정 인자들을 가지는 DCT 구현형태를 나타낸다. 일반적으로, 이러한 인자들은 주어진 코딩 디바이스 또는 시스템의 다른 엘리먼트, 모듈, 또는 유닛 내로 통합된다. 예를 들어, 비디오 인코더는 본 개시물의 기법들에 따라서 구성된 스케일링된 16-포인트 DCT 구현형태를 포함할 수도 있다. 비디오 인코더는 제거된 인자들을 양자화 유닛으로 통합하는데, 이것은 스케일링된 32-포인트 DCT 구현형태에 의하여 출력된 스케일링된 DCT 계수들을 양자화한다. 이러한 인자들을 적용하는 풀 DCT 구현형태가 그 인자들을 적용하는 다른 모듈 또는 유닛, 예컨대 양자화 유닛과 조합된 스케일링된 DCT 구현형태보다 일반적으로 더 복잡한 반면에, 이러한 양자화 유닛은 일반적으로 이러한 인자들을 양자화 유닛의 복잡성을 실질적으로 증가시키지 않고 적용할 수도 있다. 결과적으로, 스케일링된 DCT 구현형태들은 어떤 콘텍스트들에서는 동일한 코딩 이득을 제공하면서 감소된 구현형태 복잡성을 제공할 수도 있다. 스케일링된 DCT 구현형태들에 대하여 본 개시물에서는 설명되는 반면에, 이 기법들은 비-스케일링된 또는 소위 "풀" DCT 구현형태들에 적용될 수도 있다.
도시하기 위하여, 장치는 본 개시물의 기법들에 따라서 32-포인트 DCT 변환 유닛의 형태로 구성된 32-포인트 DCT 구현형태를 포함할 수도 있다. 32-포인트 DCT 변환 유닛은 상이한 사이즈들의 다수 개의 스케일링된 DCT 변환들을 수행하여 콘텐츠 데이터를 공간 도메인으로부터 주파수 도메인으로 변환할 수도 있다. 스케일링된 32-포인트 DCT 유닛은 사이즈 16 의 다수 개의 스케일링된 DCT 변환들 중 첫 번째 변환을 수행하는 적어도 하나의 스케일링된 16-포인트 DCT 유닛을 포함할 수도 있다. 16-포인트 DCT 유닛은 또한 사이즈 8 의 다수 개의 스케일링된 DCT 변환들 중 적어도 두 번째 변환을 수행하는 적어도 하나의 스케일링된 8-포인트 변환 유닛 및 사이즈 4 의 다수 개의 스케일링된 DCT 변환들 중 적어도 세 번째 변환을 수행하는 적어도 하나의 스케일링된 4-포인트 변환 유닛을 포함할 수도 있다. 스케일링된 32-포인트 DCT 유닛은 사이즈 8 의 다수 개의 스케일링된 DCT 변환들 중 적어도 네 번째 변환을 수행하는 적어도 하나의 8-포인트 변환 유닛을 포함할 수도 있다.
이런 점에서는, 본 개시물의 기법들에 따라서 구성된 32-포인트 DCT 구현형태는, 적어도 몇 가지 양태들에서 다중 사이즈들의 DCT들을 수행할 수도 있으며, 이를 통하여 잠재적으로 다중 사이즈들의 DCT들을 수행하기 위한 별개의 DCT 구현형태들을 제거한다. 결과적으로, 본 개시물의 기법들은, 이 기법들에 따라서 구성된 32-포인트 DCT 구현형태가 상이한 사이즈들의, 예컨대 16, 8 및 4 의 DCT 구현형태들을 내장, 네스팅, 또는 그렇지 않으면 임베딩할 때, 32-포인트 구현형태의 사이즈를 실질적으로 증가시키지 않으면서 소위 "보드 공간"의 감소된 소모를 촉진할 수도 있다. 별개의 32-포인트, 16-포인트, 8-포인트 및 4-포인트 DCT 구현형태들의 총 사이즈와 비교하여, 본 개시물의 32-포인트 DCT-II 구현형태는 소모되는 물리적 보드 공간의 관점에서 실질적으로 더 작은데, 여기에서 용어 "보드 공간"은 상이한 컴포넌트들 간의 상호접속들을 제공하는 실리콘 또는 다른 물리적 보드 상에서 소모되는 공간의 양을 지칭한다. 더 적은 보드 공간을 소모하는 것은 일반적으로 전력 소모의 감소로 이어지며, 결과적으로 본 개시물의 기법들은 더 에너지 효율적인 DCT 구현형태들을 촉진할 수도 있다.
도 1 은 본 개시물의 기법들을 구현할 수도 있는 비디오 인코딩 및 디코딩 시스템 (10) 을 도시하는 블록도이다. 도 1 의 예에서 도시된 바와 같이, 시스템 (10) 은 목적지 디바이스 (14) 에 의한 디코딩을 위한 인코딩된 비디오를 생성하는 발신지 디바이스 (12) 를 포함한다. 발신지 디바이스 (12) 는 인코딩된 비디오를 목적지 디바이스 (14) 로 통신 채널 (16) 을 경유하여 송신할 수도 있으며 또는 인코딩된 비디오를 스토리지 매체 (34) 또는 파일 서버 (36) 상에 저장함으로써, 인코딩된 비디오가 원할 때에 목적지 디바이스 (14) 에 의하여 액세스될 수도 있게 할 수도 있다. 발신지 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크탑 컴퓨터들, 노트북 (즉, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋-톱 박스들, (셀룰러 전화기들 또는 핸드셋들 또는 소위 스마트폰들을 포함하는) 전화기 핸드셋들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 또는 기타 등등을 포함하는 매우 다양한 디바이스들 중 임의의 것을 포함할 수도 있다.
많은 경우들에서는, 이러한 디바이스들은 무선 통신을 위하여 탑재될 수도 있다. 그러므로, 통신 채널 (16) 은 무선 채널을 포함할 수도 있다. 대안적으로는, 통신 채널 (16) 은 유선 채널, 무선 및 유선 채널들의 조합 또는 인코딩된 비디오 데이터, 예컨대 무선 주파수 (RF) 스펙트럼의 송신에 적합한 통신 채널 또는 통신 채널들의 조합 중 임의의 다른 타입 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 몇 가지 예들에서는, 통신 채널 (16) 은 패킷 기반 네트워크, 예컨대 로컬 영역 네트워크 (LAN), 광역 네트워크 (WAN), 또는 인터넷과 같은 글로벌 네트워크의 일부를 형성할 수도 있다. 그러므로, 통신 채널 (16) 은, 유선 또는 무선 미디어의 임의의 적합한 조합을 포함하는, 발신지 디바이스 (12) 로부터 목적지 디바이스 (14) 로 비디오 데이터를 송신하기 위한 임의의 적합한 통신 매체, 또는 상이한 통신 미디어의 컬렉션을 일반적으로 나타낸다. 통신 채널 (16) 은 라우터들, 스위치들, 기지국들, 또는 발신지 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이화하기 위하여 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
도 1 의 예에서 더 도시되는 바와 같이, 발신지 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (22) ("모뎀 (22)") 및 송신기 (24) 를 포함한다. 발신지 디바이스 (12) 에서, 비디오 소스 (18) 는 소스, 예컨대 비디오 캡쳐 디바이스를 포함할 수도 있다. 예로써, 비디오 캡쳐 디바이스는 비디오 카메라, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 비디오를 비디오 콘텐츠 제공자로부터 수신하기 위한 비디오 피드 인터페이스, 및/또는 컴퓨터 그래픽 데이터를 소스 비디오로서 생성하기 위한 컴퓨터 그래픽 시스템 중 하나 이상을 포함할 수도 있다. 일 예로서, 비디오 소스 (18) 가 비디오 카메라라면, 발신지 디바이스 (12) 와 목적지 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 그러나, 본 개시물에서 설명된 기법들은 무선 애플리케이션들 또는 셋팅들로 제한되지 않으며, 비디오 인코딩 및/또는 디코딩 성능들을 포함하는 비-무선 디바이스들에 적용될 수도 있다. 그러므로, 발신지 디바이스 (12) 및 목적지 디바이스 (16) 는 단순히 본 명세서에서 설명된 기법들을 지지할 수 있는 코딩 디바이스들의 예들일 뿐이다.
비디오 인코더 (20) 는 캡쳐된, 선-캡쳐된, 또는 컴퓨터-생성된 비디오를 인코딩할 수도 있다. 인코딩된 되면, 비디오 인코더 (20) 는 이러한 인코딩된 비디오를 모뎀 (22) 으로 출력할 수도 있다. 그러면, 모뎀 (22) 은 인코딩된 비디오를 통신 표준, 예컨대 무선 통신 프로토콜에 따라서 변조할 수도 있는데, 이러한 표준에 따라 송신기 (24) 는 변조된 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수도 있다. 모뎀 (22) 은 다양한 믹서들, 필터들, 증폭기들 또는 신호 변조를 위하여 설계된 다른 컴포넌트들을 포함할 수도 있다. 송신기 (24) 는 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함하는, 데이터를 송신하기 위하여 디자인된 회로들을 포함할 수도 있다.
비디오 인코더 (20) 에 의하여 인코딩된 캡쳐된, 선-캡쳐된, 또는 컴퓨터-생성된 비디오는 또한 추후 취출, 디코딩 및 소모를 위하여 스토리지 매체 (34) 또는 파일 서버 (36) 상에 저장될 수도 있다. 스토리지 매체 (34) 는 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 또는 인코딩된 비디오를 저장하기 위한 임의의 다른 적합한 디지털 스토리지 미디어를 포함할 수도 있다. 목적지 디바이스 (14) 는 스토리지 매체 (34) 또는 파일 서버 (36) 에 저장된 인코딩된 비디오를 액세스하고, 이러한 인코딩된 비디오를 디코딩하여 디코딩된 비디오를 생성하며 그리고 이러한 디코딩된 비디오를 재생할 수도 있다.
파일 서버 (36) 는 인코딩된 비디오를 저장하고 그리고 그 인코딩된 비디오를 목적지 디바이스 (14) 로 송신할 수 있는 서버의 임의의 타입일 수도 있다. 예시적인 파일 서버들은 (예를 들어, 웹사이트를 위한) 웹 서버, FTP 서버, 네트워크 부착된 스토리지 (network attached storage; NAS) 디바이스들, 로컬 디스크 드라이브, 또는 인코딩된 비디오 데이터를 저장하고 그리고 이것을 목적지 디바이스로 송신할 수 있는 디바이스의 임의의 다른 타입을 포함한다. 인코딩된 비디오 데이터의 파일 서버 (36) 로부터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들 모두의 조합일 수도 있다. 목적지 디바이스 (14) 는 인터넷 접속을 포함하는 임의의 표준 데이터 접속에 따라서 파일 서버 (36) 에 액세스할 수도 있다. 이러한 접속은 무선 채널 (예를 들어, Wi-Fi 접속 또는 무선 셀룰러 데이터 접속), 유선 접속 (예를 들어, DSL, 케이블 모뎀, 등), 유선 및 무선 채널들 모두의 조합 또는 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하기에 적합한 통신 채널의 임의의 다른 타입을 포함할 수도 있다.
도 1 의 예에서 목적지 디바이스 (14) 는 수신기 (26), 모뎀 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (29) 를 포함한다. 목적지 디바이스 (14) 의 수신기 (26) 는 정보를 채널 (16) 상에서 수신하고, 모뎀 (28) 은 정보를 복조하여 비디오 디코더 (30) 에 대한 복조된 비트스트림을 생성한다. 채널 (16) 상에서 통신된 정보는 연관된 인코딩된 비디오 데이터를 디코딩할 때 비디오 디코더 (30) 에 의하여 사용되기 위한, 비디오 인코더 (20) 에 의하여 생성된 다양한 신택스 정보를 포함할 수도 있다. 또한, 이러한 신택스는 스토리지 매체 (34) 또는 파일 서버 (36) 상에 저장된 인코딩된 비디오 데이터와 함께 포함될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 비디오 데이터를 인코딩 또는 디코딩할 수 있는 개별적인 인코더-디코더 (CODEC) 의 일부를 형성할 수도 있다.
목적지 디바이스 (14) 의 디스플레이 디바이스 (29) 는 비디오 데이터를 시청자에 의한 소모를 위하여 제공할 수 있는 디스플레이의 임의의 타입을 나타낸다. 비록 목적지 디바이스 (14) 와 함께 통합되는 것으로 도시되지만, 디스플레이 디바이스 (29) 는 목적지 디바이스 (14) 와 함께 통합되거나, 또는 그 외부에 존재할 수도 있다. 몇 가지 예들에서는, 목적지 디바이스 (14) 는 통합형 디스플레이 디바이스를 포함할 수도 있고 그리고 또한 외부 디스플레이 디바이스와 인터페이스하도록 구성될 수도 있다. 다른 예들에서는, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (29) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 다양한 디스플레이 디바이스들, 예컨대 액정 디스플레이 (liquid crystal display; LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (organic light emitting diode; OLED) 디스플레이, 또는 디스플레이 디바이스의 다른 타입 중 임의의 것을 포함할 수도 있다.
본 개시물은 일반적으로 신택스 정보를 다른 디바이스, 예컨대 비디오 디코더 (30) 로 "시그널링"하는 비디오 인코더 (20) 를 지칭할 수도 있다. 그러나, 비디오 인코더 (20) 가 신택스 엘리먼트들을 비디오 데이터의 다양한 인코딩된 부분들과 연관시킴으로써 정보를 시그널링할 수도 있다는 것이 이해되어야 한다. 즉, 비디오 인코더 (20) 는 어떤 신택스 엘리먼트들을 비디오 데이터의 다양한 인코딩된 부분들의 헤더들로 저장함으로써 데이터를 "시그널링"할 수도 있다. 몇 가지 경우들에서는, 이러한 신택스 엘리먼트들은 비디오 디코더 (30) 에 의하여 수신되고 디코딩되기 이전에 인코딩되고 그리고 저장될 수도 있다 (예를 들어, 스토리지 매체 (34) 또는 파일 서버 (36) 로 저장된다). 따라서, 용어 "시그널링"은 일반적으로 신택스 또는 압축된 비디오 데이터를 디코딩하기 위하여 사용되는 다른 데이터의 통신을 지칭할 수도 있는데, 이러한 통신은 실시간으로 또는 거의 실-시간으로 또는 시간의 일정 기간 동안 발생하던지와 무관하게 이것은 신택스 엘리먼트들을 인코딩 시에 매체로 저장할 때 발생할 수도 있고, 이것은 그러면 디코딩 디바이스에 의하여 이러한 매체로 저장된 이후에 디코딩 디바이스에 의하여 취출될 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 압축 표준, 예컨대 현재 개발중인 고효율 비디오 코딩 (High Efficiency Video Coding; HEVC) 표준에 따라서 동작할 수도 있고, HEVC 테스트 모델 (HM) 을 준수할 수도 있다. 대안적으로는, 비디오 인코더 (20) 와 비디오 디코더 (30) 는, 다른 독점적 또는 산업적 표준들, 예컨대 다르게는 MPEG4, 파트 10, 고급 비디오 코딩 (AVC) 이라고 지칭되는 ITU-T H.264 표준, 또는 이러한 표준들의 확장들에 따라 동작할 수도 있다. 그러나, 본 개시물의 기법들은 임의의 특정한 코딩 표준에 한정되지 않는다. 다른 예들은 MPEG-2 및 ITU-T H.263 을 포함한다.
HM은 비디오 데이터의 블록을 코딩 유닛 (coding unit; CU) 이라고 지칭한다. 일반적으로, CU가 H.264 의 매크로블록들과 연관된 사이즈 구분 (size distinction) 을 가지지 않는다는 점을 제외하면, CU는 H.264 표준에 따라서 코딩된 매크로블록과 유사한 목적을 가진다. 따라서, CU는 서브-CU들로 분할될 수도 있다. 일반적으로, 본 개시물에서의 CU에 대한 언급들은 한 픽쳐의 최대 코딩 유닛 (largest coding unit; LCU) 또는 LCU의 서브-CU를 지칭할 수도 있다. 예를 들어, 비트스트림 내의 신택스 데이터는 픽셀들의 개수의 측면에서 가장 큰 코딩 유닛인 LCU를 정의할 수도 있다. LCU는 서브-CU들로 분할될 수도 있고, 각각의 서브-CU는 서브-CU들로 더 분할될 수도 있다. 비트스트림에 대한 신택스 데이터는 최대 CU 깊이라고 지칭되는, LCU가 분할될 수도 있는 최대 횟수를 정의할 수도 있다. 따라서, 비트스트림은 또한 최소 코딩 유닛 (smallest coding unit; SCU) 을 정의할 수도 있다.
LCU 는 계층적 쿼드트리 데이터 구조와 연관될 수도 있다. 일반적으로, 쿼드트리 데이터 구조는 CU 당 하나의 노드를 포함하는데, 여기에서 루트 노드 (root node) 가 LCU 에 대응한다. 만일 한 CU 가 4 개의 서브-CU들로 분할된다면, 그 CU에 대응하는 노드는 서브-CU들에 대응하는 4 개의 노드들 각각에 대한 참조를 포함한다. 쿼드트리 데이터 구조의 각각의 노드는 대응하는 CU에 대한 신택스 데이터를 제공할 수도 있다. 예를 들어 쿼드트리 내의 노드는 그 노드에 대응하는 CU가 서브-CU들로 분할되는지 여부를 표시하는 분할 플래그를 포함할 수도 있다. CU에 대한 신택스 엘리먼트들은 재귀적으로 정의될 수도 있고, 그 CU가 서브-CU들로 분할되는지 여부에 의존할 수도 있다.
분할되지 않은 CU는 하나 이상의 예측 유닛들 (prediction units; PUs) 을 포함할 수도 있다. 일반적으로, PU는 대응하는 CU의 전부 또는 부분을 나타내고, 그 PU에 대한 참조 샘플을 취출하기 위한 데이터를 포함한다. 예를 들어 PU가 인트라-모드 인코딩되는 경우, PU는 그 PU에 대한 인트라-예측 모드를 설명하는 데이터를 포함할 수도 있다. 다른 예로서, PU가 인터-모드 인코딩되는 경우, PU는 그 PU에 대한 하나 이상의 모션 벡터들을 정의하는 데이터를 포함할 수도 있다. 모션 벡터는 일반적으로 하나 이상의 참조 프레임들 내에서 병위된 (co-located) CU를 식별하는데, 여기에서 용어 "참조 프레임"은 PU가 위치된 프레임보다 시간적으로 이전에 또는 이후에 발생하는 프레임을 지칭한다. 모션 벡터를 정의하는 데이터는, 예를 들어 모션 벡터의 수평 성분, 모션 벡터의 수직 성분, 모션 벡터에 대한 분해능 (예를 들어, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 포인팅하는 참조 프레임, 식별된 참조 프레임이 현재 프레임보다 이전인지 이후인지를 식별하는 예측 방향 및/또는 그 모션 벡터에 대한 참조 목록 (예를 들어, 목록 0 또는 목록 1) 을 설명할 수도 있다. PU(들)를 정의하는 CU에 대한 데이터는 또한, 예를 들어 하나 이상의 PU들로의 CU의 파티셔닝을 설명할 수도 있다. 파티셔닝 모드들은 CU가 코딩되지 않는지 (uncoded), 인트라-예측 모드 인코딩되는지, 또는 인터-예측 모드 인코딩되는지 여부 간에서 상이할 수도 있다.
하나 이상의 모션 벡터들을 정의하는 하나 이상의 PU들에 추가하여, CU는 하나 이상의 변환 유닛들 (TUs) 을 포함할 수도 있다. PU를 이용한 예측에 후속하여, 비디오 인코더는 그 PU에 대응하는 CU의 부분에 대한 잔차 값들을 계산할 수도 있다. 잔차 값은 변환되고, 양자화되며, 스캐닝될 수도 있다. TU는 PU의 사이즈로 반드시 제한되지는 않는다. 따라서, TU들은 동일한 CU에 대한 대응하는 PU들보다 더 크거나 더 작을 수도 있다. 일부 예들에서는, TU의 최대 사이즈는 대응하는 CU의 사이즈일 수도 있다. 본 개시물은 또한 CU, PU, 및/또는 TU 중의 임의의 하나 또는 이들의 조합을 지칭하기 위하여 용어 "블록"을 사용한다.
일반적으로, 인코딩된 비디오 데이터는 예측 데이터 및 잔차 데이터를 포함할 수도 있다. 비디오 인코더 (20) 는 인트라-예측 모드 또는 인터-예측 모드 도중에 예측 데이터를 생성할 수도 있다. 인트라-예측은 일반적으로 픽쳐의 블록 내의 픽셀 값들을 동일한 픽쳐의 이웃하는, 이전에 코딩된 블록들 내의 참조 샘플들에 상대적으로 예측하는 것을 수반한다. 인터-예측은 일반적으로 픽쳐의 블록 내의 픽셀 값들을 이전에 코딩된 픽쳐의 데이터에 상대적으로 예측하는 것을 수반한다.
인트라- 또는 인터-예측에 후속하여, 비디오 인코더 (20) 는 그 블록에 대한 잔차 픽셀 값들을 계산할 수도 있다. 잔차 값들은 일반적으로 그 블록에 대한 예측된 픽셀 값 데이터 및 그 블록의 참 픽셀 값 데이터 간의 차분들에 대응한다. 예를 들어 잔차 값들은 코딩된 픽셀들 및 예측성 픽셀들 간의 차분들을 표시하는 픽셀 차분 값들을 포함할 수도 있다. 몇 가지 예들에서는, 코딩된 픽셀들은 코딩될 픽셀들의 블록과 연관될 수도 있고, 예측성 픽셀들은 코딩된 블록을 예측하기 위하여 사용되는 픽셀들의 하나 이상의 블록들과 연관될 수도 있다.
블록의 잔차 값을 더욱 압축하기 위하여, 잔차 값은 가능한 한 많은 데이터 (또한 "에너지"로서 지칭됨) 를 가능한 한 적은 계수들 내에 채워넣는 변환 계수들의 세트로 변환될 수도 있다. 변환 기법들은 이산 코사인 변환 (DCT) 처리 또는 개념적으로 유사한 처리, 정수 변환들, 웨이브릿 변환들, 또는 변환들의 다른 타입들을 포함할 수도 있다. 변환은 픽셀들의 잔차 값들을 공간 도메인으로부터 변환 도메인으로 변환한다. 변환 계수들은 보통으로는 원래의 블록과 동일한 사이즈인 계수들의 2-차원의 행렬에 대응한다. 다르게 말하면, 원래의 블록 내에는 정확하게 픽셀들만큼 많은 변환 계수들이 존재한다. 그러나, 변환에 기인하여, 변환 계수들 중 많은 것들이 제로와 동일한 값들을 가질 수도 있다.
그러면, 비디오 인코더 (20) 는 변환 계수들을 양자화하여 비디오 데이터를 더욱 압축할 수도 있다. 양자화는 일반적으로 상대적으로 큰 범위 내의 매핑 값들을 상대적으로 작은 범위 내의 값들로 매핑함으로써, 따라서 양자화된 변환 계수들을 나타내기 위하여 필요한 데이터의 양을 감소시키는 것을 수반한다. 좀 더 구체적으로는, 양자화는 양자화 파라미터 (QP) 에 적용될 수도 있는데, 이것은 LCU 레벨에서 정의될 수도 있다. 이에 상응하여, 동일한 양자화 레벨이 LCU 내의 CU들의 상이한 PU들과 연관된 TU들 내의 모든 변환 계수들에 적용될 수도 있다. 그러나, QP 자체를 시그널링하는 것 보다는, QP 내의 변화 (즉, 델타) 가 LCU 와 함께 시그널링될 수도 있다. 델타 QP는 LCU에 대한 양자화 파라미터 내의 몇몇 참조 QP, 예컨대 이전에 통신된 LCU의 QP에 대한 변화를 정의한다.
양자화에 후속하여, 비디오 인코더 (20) 는 변환 계수들을 스캔하여, 1-차원의 벡터를 양자화된 변환 계수들을 포함하는 2-차원의 행렬로부터 생성할 수도 있다. 그러면, 비디오 인코더 (20) 는 (통상 부적절한 명칭인 "엔트로피 인코딩"에 의하여 지칭되는) 통계적 무손실 인코딩을 수행하여 결과적인 어레이를 인코딩하고 데이터를 더욱 압축할 수도 있다. 일반적으로, 엔트로피 코딩은 양자화된 변환 계수들의 압축 시퀀스 및/또는 다른 신택스 정보 모두를 총괄하여 압축하는 하나 이상의 처리들을 포함한다. 예를 들어, 신택스 엘리먼트들, 예컨대 델타 QP들, 예측 벡터들, 코딩 모드들, 필터들, 오프셋들, 또는 다른 정보가 또한 엔트로피 코딩된 비트스트림 내에 포함될 수도 있다. 그러면, 스캐닝된 계수들은 임의의 신택스 정보와 함께, 예를 들어, 콘텐츠 적응 가변 길이 코딩 (CAVLC), 콘텍스트 적응 이진 산술 코딩 (CABAC), 또는 임의의 다른 통계적 무손실 코딩 처리를 통하여 엔트로피 코딩된다.
위에서 언급된 바와 같이, 도 1 의 예에서 도시된 시스템 (10) 의 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 32-포인트 DCT-II의 구현형태 및 그것의 역 (예를 들어, 32-포인트 DCT-III) 을 각각 포함하도록 구성될 수도 있는데, 여기에서 32-포인트 DCT-II 구현형태는 본 개시물에서 설명된 기법들에 따라서 구성된다. ITU-T H.264 표준은 다양한 블록 사이즈들, 예컨대 루마 컴포넌트들에 대하여 16x16, 8x8, 4x4 및 크로마 컴포넌트들에 대하여 8x8 에서의 인트라 예측을 지원하는 반면에, 이러한 표준들에 대한 코딩 효율을 개선하기 위한 개정들은 현재 진행 중이다. MPEG 및 ITU-T 간의 협력인 조인트 협력 팀-비디오 코딩 (Joint Collaborative Team-Video Coding; JCT-VC) 에 의하여 제안되는 하나의 개정된 표준은 고 효율 비디오 코딩 (High Efficiency Video Coding; HEVC) 이라고 지칭될 수도 있다. 몇 가지 실례들에서는, 본 개시물의 기법들에 따라서 구성된 타입-II의 32-포인트 DCT들 ("DCT-II들") 구현형태들은 구현형태 사이즈들을 감소시키는 것도 하면서 코딩 효율을 보존하여, 이를 통하여 더 적은 물리적 보드 공간을 소모할 수 있고 그리고 전력 효율을 촉진할 수 있다. 결과적으로, HEVC 및 다른 진화하는 표준들 또는 사양들은 본 개시물에서 설명된 기법들에 따르는 DCT-II들 및 DCT-III들 구현형태들을 고려할 수도 있다.
본 개시물에서 설명된 기법들에 따르면, 32-포인트 DCT-II들의 구현형태들은 상이한 사이즈들의 복수의 DCT-II들을 제공한다. 비디오 인코더 (20) 는 이러한 32-포인트 DCT-II 구현형태를 나타내는 (예시의 목적들의 용이성을 위하여 도 1 에는 미도시된) 32-포인트 DCT-II 유닛을 포함할 수도 있다. 32-포인트 DCT-II 유닛은 일반적으로 상이한 사이즈들의 복수의 또는 다수 개의 스케일링된 DCT 변환들을 수행하여 콘텐츠 데이터를 공간 도메인으로부터 주파수 도메인으로 변환할 수도 있다. 일 예로서, 32-포인트 DCT-II 유닛은 스케일링된 변환들 중 하나를 수행하는 32-포인트 변환 유닛의 짝수 절반에 위치된 스케일링된 16-포인트 변환 유닛을 포함할 수도 있는데, 여기에서 복수의 스케일링된 변환들 중 두 번째 변환은 16 의 사이즈를 정의한다. 32-포인트 DCT-II 유닛은 또한 복수의 스케일링된 변환들 중 세 번째 변환을 수행하는 32-포인트 변환 유닛의 홀수 절반에 위치된 적어도 하나의 스케일링된 8-포인트 변환 유닛을 포함할 수도 있는데, 여기에서 스케일링된 변환들 중 이러한 것은 8 의 사이즈를 정의한다.
이런 점에서는, 본 개시물의 기법들에 따라서 구성된 단일 32-포인트 DCT-II 구현형태는, 적어도 몇 가지 양태들에서 다중 사이즈들의 DCT들을 수행할 수도 있으며, 이를 통하여 잠재적으로 유사한 사이즈들의 DCT들을 수행하기 위한 별개의 DCT 구현형태들을 제거한다. 이에 상응하여, 본 개시물의 기법들은, 이 기법들에 따라서 구성된 32-포인트 DCT 구현형태가 상이한 사이즈들의, 예컨대 16 및 8 의 DCT 구현형태들을 내장, 네스팅, 또는 그렇지 않으면 임베딩할 때, 32-포인트 구현형태의 사이즈를 실질적으로 증가시키지 않으면서, 실리콘 보드 상에서 소모되는 물리적 공간의 면적을 지칭하는 소위 "보드 공간"의 감소된 소모를 촉진할 수도 있다. 개별 32-, 16- 및 8-포인트 DCT 구현형태들의 총 사이즈와 비교하여, 32-포인트 DCT-II 구현형태는 소모되는 물리적 보드 공간의 관점에서 실질적으로 더 작을 수도 있다. 더 적은 보드 공간을 소모하는 것은 일반적으로 전력 소모의 감소로 이어지며, 결과적으로 본 개시물의 기법들은 더 에너지 효율적인 DCT 구현형태들을 촉진할 수도 있다.
본 개시물의 기법들에 따라서 구성된 32-포인트 DCT-II들의 구현형태들은 스케일링될 수도 있는데, 여기에서 용어 "스케일링된"은 소위 "풀" DCT 계수들이 아니라 스케일링된 DCT 계수들을 생성하는 DCT 구현형태를 지칭한다. 스케일링된 DCT 구현형태는 그 구현형태로부터 제거된 특정 인자들을 가지는 DCT 구현형태를 나타낸다. 일반적으로, 이러한 제거된 인자들은 주어진 코딩 디바이스 또는 시스템의 다른 엘리먼트, 모듈, 또는 유닛 내로 통합된다. 예를 들어, 비디오 인코더는 본 개시물의 기법들에 따라서 구성된 스케일링된 32-포인트 DCT 구현형태를 포함할 수도 있다. 비디오 인코더는 제거된 인자들을 양자화 유닛으로 통합하는데, 이것은 스케일링된 32-포인트 DCT 구현형태에 의하여 출력된 스케일링된 DCT 계수들을 양자화한다. 이러한 인자들을 적용하는 풀 DCT 구현형태가 그 인자들을 적용하는 다른 유닛, 예컨대 양자화 유닛과 조합된 스케일링된 DCT 구현형태보다 일반적으로 더 복잡한 반면에, 이러한 양자화 유닛은 일반적으로 이러한 인자들을 양자화 유닛의 복잡성을 실질적으로 증가시키지 않고 적용할 수도 있다. 결과적으로, 스케일링된 DCT 구현형태들은 어떤 콘텍스트들에서는 동일한 코딩 이득을 제공하면서 감소된 구현형태 복잡성을 제공할 수도 있다. 스케일링된 DCT 구현형태들에 대하여 본 개시물에서는 설명되는 반면에, 이 기법들은 비-스케일링된 또는 소위 "풀" DCT 구현형태들에 적용될 수도 있다.
도 2 는 도 1 의 비디오 인코더 (20) 를 좀 더 상세하게 도시하는 블록도이다. 비디오 인코더 (20) 는 적어도 부분적으로 하나 이상의 집적 회로 디바이스들로서 형성될 수도 있는데, 이것은 총괄하여 집적 회로 디바이스로서 지칭될 수도 있다. 몇 가지 양태들에서는, 비디오 인코더 (20) 는 무선 통신 디바이스 핸드셋 또는 브로드캐스트 서버의 부분을 형성할 수도 있다. 비디오 인코더 (20) 는 비디오 프레임들 내의 블록들의 인트라- 및 인터-코딩을 수행할 수도 있다. 인트라-코딩은 공간 예측에 의존하여, 주어진 비디오 프레임 내의 비디오에서의 공간적 리던던시를 감소시키거나 제거한다. 인터-코딩은 시간적 예측에 의존하여, 비디오 시퀀스의 인접한 프레임들 내의 비디오에서의 시간적 리던던시를 감소시키거나 제거한다. 인터-코딩을 위하여, 비디오 인코더 (20) 는 모션 추정을 수행하여 인접한 프레임들 간의 매칭 코딩 유닛들의 이동을 추적한다.
도 2 에서 도시된 바와 같이, 비디오 인코더 (20) 는 인코딩될 비디오 프레임 내의 현재 코딩 유닛 (31) 을 수신한다. 도 2 의 예에서, 비디오 인코더 (20) 는 모션 추정 유닛 (32), 메모리 (34), 모션 보상 유닛 (36), 변환 유닛 (38), 양자화 유닛 (40), 역 양자화 유닛 (42), 역 변환 유닛 (44), 및 엔트로피 코딩 유닛 (46) 을 포함한다. 인-루프 (in-loop) 또는 후 루프 (post loop) 디블로킹 필터 (deblocking filter; 미도시) 가 블록들을 필터링하기 위하여 적용되어 블록화 아티팩트들을 제거할 수도 있다. 비디오 인코더 (20) 는 또한 합산기 (48) 및 합산기 (50) 를 포함한다. 도 2 는 코딩 유닛들의 인터-코딩을 위한 비디오 인코더 (20) 의 시간적 예측 컴포넌트들 도시한다. 예시의 용이성을 위하여 비록 도 2 에는 도시되지 않지만, 비디오 인코더 (20) 는 또한 몇몇 코딩 유닛들의 인트라-코딩을 위한 공간적 예측 컴포넌트들을 포함할 수도 있다.
모션 추정 유닛 (32) 은 코딩 유닛 (31) 을 하나 이상의 인접한 비디오 프레임들 내의 CU들과 비교하여 하나 이상의 모션 벡터들을 생성하는데, 이것들이 위에서 언급된 바와 같이 PU들로 저장된다. 인접한 프레임 또는 프레임들은 메모리 (34) 로부터 취출될 수도 있는데, 이것은 이전에 인코딩된 블록들로부터 복원된 코딩 유닛들을 저장하기 위한 메모리 또는 데이터 스토리지 디바이스의 임의의 타입을 포함할 수도 있다. 모션 추정이 가변 사이즈들, 예를 들어, 32x32, 32x16, 16x32, 16x16, 16x8, 8x16, 8x8 또는 더 작은 CU 사이즈들의 CU들에 대하여 수행될 수도 있다. 모션 추정 유닛 (32) 은 인접한 프레임들 내의, 현재 코딩 유닛 (31) 과 거의 근접하게 매칭하는 하나 이상의 CU들을, 예를 들어 레이트 왜곡 모델에 기초하여 식별하며, 인접한 프레임들 내의 CU들 및 현재 코딩 유닛 (31) 간의 변위를 결정한다. 이러한 기초에서, 모션 추정 유닛 (32) 은 현재 코딩 유닛 (31) 과, 현재 코딩 유닛 (31) 을 코딩하기 위하여 사용되는 참조 프레임들로부터의 하나 이상의 매칭 CU들 사이의 변위의 크기 및 궤적을 표시하는 하나 이상의 모션 벡터들 (MVs) 을 생성한다. 매칭 CU 또는 CU들은 저장된 모션 벡터들을 결정하기 위한, 코딩 유닛 (31) 과 연관된 PU들로의 참조로서의 역할을 할 것이다. 모션 추정 유닛 (32) 은 도 2 의 예에서 도시된 바와 같이, 이러한 PU들을 엔트로피 코딩 유닛 (46) 으로 출력할 수도 있다.
모션 벡터들은 절반- 또는 4 분의 1-픽셀 정밀도, 또는 더 정밀한 정밀도를 가짐으로써, 비디오 인코더 (20) 가 정수 픽셀 위치들보다 더 높은 정밀도로 모션을 추적하고 더 양호한 예측 블록을 획득하도록 허용할 수도 있다. 분수 픽셀 값들을 가지는 모션 벡터들이 사용되는 경우, 보간 동작들이 모션 보상 유닛 (36) 에서 수행된다. 모션 추정 유닛 (32) 은 최선의 코딩 유닛 파티션들을 결정하며 그리고 모션 벡터 또는 모션 벡터들을 생성하여 CU를 어떤 기준들, 예컨대 레이트-왜곡 모델을 사용하여 식별한다. 예를 들어, 양방향성 예측의 경우에는 두 개 이상의 모션 벡터가 존재할 수도 있다. 결과적인 CU 및 모션 벡터들을 사용하면서, 모션 보상 유닛 (36) 은 예측된 비디오 데이터를 형성한다.
비디오 인코더 (20) 는 합산기 (48) 에서 모션 보상 유닛 (36) 에 의하여 생성된 예측된 비디오 데이터를 현재 코딩 유닛 (31) 으로 저장된 원래의 비디오 데이터로부터 감산함으로써 잔차 데이터를 결정한다. 변환 유닛 (38) 은 변환을 적용하여 잔차 변환 블록 계수들을 생성한다. 도 2 에 도시된 바와 같이, 변환 유닛 (38) 은 본 개시물에서 설명된 기법들에 따라서 구성된 32-포인트 DCT-II를 구현하는 32-포인트 DCT-II 유닛 (52) 을 포함한다. 32-포인트 DCT-II 유닛 (52) 은 하드웨어 유닛을 나타내는데, 이것은 몇 가지 실례들에서는 본 개시물에서 설명된 바와 같은 32-포인트 DCT-II, 16-포인트 DCT-II, 8-포인트 DCT-II 및 4-포인트 DCT-II 중 두 개 이상을 수행할 수 있는 32-포인트 DCT-II를 구현하는 소프트웨어 (예컨대 디지털 신호 프로세서 또는 DSP 실행 소프트웨어 코딩 또는 명령들) 를 실행한다. 32-포인트 DCT-II 유닛 (52) 은 본 개시물에서 설명된 기법들을 구현하기 위한 기법들을 수행하는 집적 회로 및/또는 명령들 (또는 컴퓨터-프로그램 제품의 형태인 소프트웨어) 를 실행하는 하나 이상의 프로세서들을 포함할 수도 있다. 32-포인트 DCT-II 유닛 (52) 은 사이즈 32, 16, 8 및 4 의 이러한 DCT-II들 중 하나 이상을 잔차 데이터에 적용하여 대응하는 사이즈 16, 8 및/또는 4 의 잔차 변환 계수들의 블록을 생성한다. 32-포인트 DCT-II 유닛 (52) 은 일반적으로 잔차 픽셀 데이터로서 표현되는 잔차 데이터를 공간 도메인으로부터 주파수 도메인으로 변환하는데, 이것은 DCT 계수들로서 표현된다. 변환 계수들은 적어도 하나의 DC 계수 및 하나 이상의 AC 계수들을 포함하는 DCT 계수들을 포함할 수도 있다.
(HEVC에 대한 다양한 동작 드래프트들 중 하나를 지칭할 수도 있는) 대두되는 HEVC 표준에서, 변환들은 이전의 비디오 코딩 표준인 H.264 에서 최대 블록 사이즈였던 16x16 보다 더 큰 블록 사이즈들에 적용될 수도 있다. 더욱이, CU의 사이즈와는 상이한 사이즈들의 변환들이 비디오 코딩 처리의 이러한 스테이지에서는 CU로 저장된 잔차 데이터에 적용될 수도 있다. 변환들이 잔차 비디오 데이터 또는 블록의 사이즈와는 상이한 사이즈들에 대하여 적용될 수 있다는 것이 주어지면, 변환 유닛 (38) 은 위에서 지적된 변환 유닛 (TU) 을 생성할 수도 있는데, 이것은 잔차 비디오 데이터에 적용되는 다양한 변환들과 관련한 정보를 저장한다. 변환 유닛 (38) 은 TU들을 도 2 의 예에서 도시된 바와 같이 엔트로피 코딩 유닛 (46) 으로 출력할 수도 있다.
양자화 유닛(40) 은 잔차 변환 블록 계수들을 양자화 (라운딩) 하여 비트 레이트를 더욱 감소시킨다. 위에서 언급된 바와 같이, 양자화 유닛 (40) 은 인수화 (factorization) 도중에 제거된 내부 인자들을 통합함으로써 스케일링된 32-포인트 DCT-II 유닛 (52) 의 스케일링된 성질을 설명한다. 양자화가 통상적으로 승산을 수반하기 때문에, 이러한 인자들을 양자화 유닛 (40) 내로 통합하는 것은 양자화 유닛 (40) 의 구현형태 복잡성을 증가시키지 않을 수도 있다. 이런 점에서는, 인자들을 스케일링된 32-포인트 DCT-II 유닛 (52) 으로부터 제거하는 것은 양자화 유닛 (40) 의 구현형태 복잡성을 증가시키지 않으면서 DCT-II 유닛 (52) 의 구현형태 복잡성을 감소시키는데, 결과적인 비디오 인코더 (20) 에 대한 구현형태 복잡성의 순수한 감소를 초래한다.
엔트로피 코딩 유닛 (46) 은 양자화된 계수들을 엔트로피 코딩하여 비트 레이트를 더욱 감소시킨다. 엔트로피 코딩 유닛 (46) 은 몇 가지 실례들에서는 엔트로피 코딩이라고 지칭되는 통계적 무손실 코딩을 수행할 수도 있다. 엔트로피 코딩 유닛 (46) 은 양자화된 DCT 계수들의 확률 분포를 모델링하며 그리고 코드북 (예를 들어, CAVLC 또는 CABAC) 을 모델링된 확률 분포에 기초하여 선택한다. 이러한 코드북을 사용하면서, 엔트로피 코딩 유닛 (46) 은 각각의 양자화된 DCT 계수에 대한 코드들을 양자화된 DCT 계수들을 압축하는 방식으로 선택한다. 예시하기 위하여, 엔트로피 코딩 유닛 (46) 은 빈번하게 발생하는 양자화된 DCT 계수들에 대하여 (비트들의 관점에서) 짧은 코드워드를 그리고 덜 빈번하게 발생하는 양자화된 DCT 계수들에 대하여 (비트들의 관점에서) 더 긴 코드워드를 선택할 수도 있다. 짧은 코드워드가 평균적으로 양자화된 DCT 계수들보다 더 적은 비트들을 사용하는 한, 엔트로피 코딩 유닛 (46) 은 양자화된 DCT 계수들을 압축한다. 엔트로피 코딩 유닛 (46) 은 엔트로피 코딩된 계수들을 비디오 디코더 (26) 로 전송되는 비트스트림으로서 출력한다. 엔트로피 코딩 유닛 (46) 은 또한 각각 모션 추정 유닛 (32) 및 변환 유닛 (38) 으로부터 수신된 PU들 및 TU들에 대한 무손실 통계적 코딩을 수행할 수도 있다. CU들이 양자화된 잔차 비디오 데이터의 블록과 연관되는 PU 및 CU 모두를 포함한다는 것을 고려하면, 엔트로피 코딩 유닛 (46) 은 무손실 통계적으로 코딩된 CU를 비트스트림 내로 삽입하면서 효과적으로 CU에 대한 통계적 무손실 인코딩을 수행할 수도 있다. 일반적으로, 비디오 디코더 (26) 는 도 3 의 예를 참조하여 설명될 바와 같이, 인코딩된 비디오를 비트스트림 으로부터 디코딩하고 복원하기 위한 역 동작들을 수행한다.
복원 유닛 (42) 및 역 변환 유닛 (44) 은 양자화된 계수들을 복원하며 그리고 역 변환을 각각 적용하여 잔차 데이터를 복원한다. 역 변환 유닛 (44) 은 역 DCT (IDCT) 를 포함하는데, 이것은 통상 아래에서 도 3 에 대하여 설명되는 32-포인트 DCT-III 유닛 (68) 과 유사한, 32-포인트 DCT-II 유닛 (52) 의 역 동작들을 수행하는 타입 III의 DCT 로서 지칭된다. 이러한 역 32-포인트 DCT-II는 32-포인트 DCT-III 유닛 (53) 으로서 도시되는데, 이것은 다시 말하건대 도 3 의 예에서 도시된 32-포인트 DCT-III 유닛 (68) 과 실질적으로 유사할 수도 있다. 32-포인트 DCT-III 유닛 (68) 은 본 개시물에서 설명된 기법들을 구현하기 위한 기법들을 수행하는 집적 회로 및/또는 명령들 (또는 컴퓨터-프로그램 제품의 형태인 소프트웨어) 를 실행하는 하나 이상의 프로세서들을 포함할 수도 있다. 합산 유닛 (50) 은 재구성된 잔차 데이터를 모션 보상 유닛 (36) 에 의하여 생성된 모션 보상된 예측 블록에 가산하여, 메모리 (34) 내의 저장을 위한 재구성된 코딩 유닛을 생성한다. 재구성된 코딩 유닛은 모션 추정 유닛 (32) 및 모션 보상 유닛 (36) 에 의하여 사용되어 후속 비디오 프레임 내의 블록을 인코딩한다.
도 3 은 도 1 의 비디오 디코더 (26) 의 일 예를 좀 더 상세하게 도시하는 블록도이다. 비디오 디코더 (26) 는 적어도 부분적으로 하나 이상의 집적 회로 디바이스들로서 형성될 수도 있는데, 이것은 총괄하여 집적 회로 디바이스로서 지칭될 수도 있다. 몇 가지 양태들에서는, 비디오 디코더 (26) 는 무선 통신 디바이스 핸드셋의 부분을 형성할 수도 있다. 비디오 디코더 (26) 는 비디오 프레임들 내의 블록들의 인트라- 및 인터-디코딩을 수행할 수도 있다. 도 3 에 도시된 바와 같이, 비디오 디코더 (26) 는 비디오 인코더, 예컨대 도 1 및 도 2 의 예들 내에 도시된 비디오 인코더 (20) 에 의하여 인코딩된 바 있는 인코딩된 비디오 비트스트림을 수신한다.
도 3 의 예에서, 비디오 디코더 (26) 는 엔트로피 디코딩 유닛 (54), 모션 보상 유닛 (56), 복원 유닛 (58), 역 변환 유닛 (60), 및 메모리 (62) 를 포함한다. 엔트로피 디코딩 유닛 (64) 은 메모리 (64) 내에 저장된 하나 이상의 데이터 구조들에 액세스하여 코딩 시에 유용한 데이터를 획득할 수도 있다. 비디오 디코더 (26) 는 또한 합산기 (66) 의 출력을 필터링하는 인-루프 또는 후 루프 디블로킹 필터 (미도시) 를 포함할 수도 있다. 비디오 디코더 (26) 는 또한 합산기 (66) 를 포함한다. 도 3 은 코딩 유닛들의 인터-디코딩을 위한 비디오 디코더 (26) 의 시간적 예측 컴포넌트들 도시한다. 비록 도 3 에는 도시되지 않지만, 비디오 디코더 (26) 는 또한 몇몇 코딩 유닛들의 인트라-디코딩을 위한 공간적 예측 컴포넌트들을 포함할 수도 있다.
엔트로피 디코딩 유닛 (54) 은 인코딩된 비디오 비트스트림을 수신하며 그리고 (통상 부적절한 명칭인 "엔트로피 디코딩"에 의하여 지칭되는) 무손실 통계적 디코딩을 수행하여 양자화된 잔차 계수들 및 양자화된 파라미터들, 및 다른 정보, 예컨대 모션 벡터들 및 블록 파티션들을 포함할 수도 있는 코딩 모드들 및 모션 정보를 비트스트림으로부터 디코딩한다. 대두되는 HEVC 표준에서, 엔트로피 디코딩 유닛 (54) 은 무손실 통계적 디코딩을 수행하여 CU의 다양한 부분, 예컨대 잔차 비디오 데이터, 코딩된 PU 및 코딩된 TU를 나타내는 엔트로피 인코딩된 양자화된 DCT 계수들을 디코딩할 수도 있다. 엔트로피 디코딩 유닛 (54) 은 디코딩된 양자화된 잔차 데이터 및 디코딩된 PU를 모션 보상 유닛 (56) 으로 출력한다. 모션 보상 유닛 (56) 은 모션 벡터들을 저장하는 디코딩된 PU를 수신하며 그리고 메모리 (62) 로 저장된 하나 이상의 복원된 참조 프레임들에 대하여 모션 보상을 수행하여 예측된 비디오 데이터를 출력한다.
복원 유닛 (58) 은 양자화된 블록 계수들을 역 양자화, 즉, 양자화-해제한다. 역 변환 유닛 (60) 은 역 변환, 예를 들어, 역 DCT를 계수들에 적용하여 잔차 데이터를 생성한다. 좀 더 구체적으로는, 역 변환 유닛 (60) 은 32-포인트 DCT-III 유닛 (68) 을 포함하는데, 이러한 역 변환 유닛 (60) 은 계수들에 적용하여 잔차 데이터를 생성한다. 도 2 의 예에서 도시된 32-포인트 DCT-II 유닛 (52) 의 역인 32-포인트 DCT-III 유닛 (68) 은 계수들을 주파수 도메인으로부터 공간 도메인으로 변환하여 잔차 데이터를 생성할 수도 있다. 위의 양자화 유닛 (40) 과 유사하게, 복원 유닛 (58) 은 인수화 도중에 제거된 외부 인자들을 구현형태 복잡성에서의 증가가 있다고 하더라도 거의 없게 하면서 복원 처리로 통합함으로써 32-포인트 DCT-III 유닛 (68) 의 스케일링된 성질을 설명한다. 인자들을 스케일링된 32-포인트 DCT-III 유닛 (68) 으로부터 제거하는 것은 구현형태 복잡성을 감소시키며, 이를 통하여 비디오 디코더 (26) 에 대한 복잡성의 순수 감소를 초래할 수도 있다.
그러면, 예측 유닛들은 합산기 (66) 에 의하여 잔차 데이터와 합산되어 디코딩된 블록들을 형성한다. (예시 목적들의 용이성을 위하여 도 3 의 예에서는 미도시인) 디블로킹 필터가 디코딩된 블록들을 필터링하기 위하여 적용되어 블록화 아티팩트들을 제거할 수도 있다. 그러면, 필터링된 블록들은 메모리 (62) 내에 배치되는데, 이것은 후속 비디오 프레임들의 디코딩을 위한 참조 프레임을 제공하며 그리고 또한 디스플레이 디바이스 (28) (도 1) 를 구동할 디코딩된 비디오를 생성한다. 몇 가지 실례들에서는, 후 루프 디블로킹 필터가 프레임들이 메모리 (62) 로 저장된 이후에 그것들을 필터링하기 위하여 적용되어 아티팩트들을 제거할 수도 있다.
도 4a 내지 도 4e 는 32-포인트 DCT-II 유닛 (52) 의 다양한 양태들을 좀 더 상세하게 도시하는 도면들이다. 도 4a 의 예에서는, 32-포인트 DCT-II 유닛 (52) 은 기븐스 회전 행렬 (Givens rotation matrix) (70), 16-포인트 DCT-II 유닛 (73), 제 1 의 8-포인트 DCT-II 유닛 (74A), 제 2 의 8-포인트 DCT-II 유닛 (74B) 및 선형 조합 (LC) 유닛 (71) 을 포함하는데, 이것들은 각각 수학적으로 아래에서 식 4 에 대하여 설명된다. 16-포인트 DCT-II 유닛 (73) 은 8-포인트 DCT-II 유닛 (72) 및 두 개의 4-포인트 DCT-II 유닛들 (76B, 76C) 을 포함한다. 32-포인트 DCT-II 유닛 (52) 의 (통상 DCT의 "짝수 절반" 또는 "짝수 부분"이라고 지칭되는) 상단 절반내의 8-포인트 DCT-II 유닛 (72) 은 또한 4-포인트 DCT-II 유닛 (76A) 을 포함한다. 32-포인트 DCT-II 유닛 (52) 의 하부-절반 또는 하단-절반 (통상 "홀수 절반" 또는 "홀수 부분"이라고 지칭되는) 은 (버터플라이의 적용 이후의) 입력들 x16 내지 x31을 정수 값들 A 내지 P에 의하여 승산하는 소위 기븐스 회전 행렬 (70) 에 의하여 선행되는 두 개의 8-포인트 DCT-II 유닛들 (74A, 74B) 을 포함한다. 32-포인트 DCT-II 유닛 (52) 은 또한 8-POINT DCT-II 유닛들 (74A, 74B) 의 출력들을 교차 가산하는 교차-가산 유닛 (72) 을 포함한다. 도 4a 의 예에서는 도시되지 않는 반면에, 8-포인트 DCT-II 유닛들 (74A, 74B) 은 16-포인트 DCT-IV 를 구현할 수 있는 16-포인트 DCT-IV 유닛을 형성하거나 그렇지 않으면 그 안에 포함될 수도 있는데, 이것은 형태에서 8-포인트 DCT-IV 유닛 (74) 을 닮을 수도 있다 (하지만 이것보다는 두 배 크기일 수도 있다).
32-포인트 DCT-II 유닛 (52) 은 입력들 x 0 내지 x 31 을 수신하며 그리고 출력들 X 0 내지 X 31 을 생성한다. 버터플라이 유닛 (70) 은 짝수 입력들에 대하여 교차-가산들을 그리고 홀수 입력들에 대하여 교차-감산들을 역시 수행하면서, 입력들 x 0 내지 x 31 을 짝수 입력들 x 0 , x 2 , x 4 , x 6 , x 8 , x 10 , x 12 , x 14 , x 16 , x 18 , x 20 , x 22 , x 24 , x 26 , x 28 , 및 x 30 및 홀수 입력들 x 1 , x 3 , x 5 , x 7 , x 9 , x 11 , x 13 , x 15 , x 17 , x 19 , x 21 , x 23 , x 25 , x 27 , x 29 , 및 x 31 로 재정렬한다. 버터플라이 유닛 (70) 은 교차-가산된 짝수 입력들을 16-포인트 DCT-II 유닛 (73) 으로 그리고 교차-감산된 홀수 입력들을 8-포인트 DCT-II 유닛 (74A, 74B) 으로 출력한다. 이러한 예에서는, 32-포인트 DCT-II 유닛 (56) 은 후속하는 사이징된 DCT들: 32-포인트 DCT, 16-포인트 DCT, 8-포인트 DCT 및 4-포인트 DCT 중 임의의 하나를 수행하며 그리고 동시에 두 개 또는 3 개의 8-포인트 DCT들, 하나, 두 개 또는 3 개의 4-포인트 DCT들 및 하나 또는 두 개의 8-포인트 DCT들, 또는 16-포인트 DCT 및 하나 또는 두 개의 8-포인트 DCT들을 수행할 수도 있다.
기븐스 회전 행렬 (70) 에 대하여 도시된 문자들 A 32 내지 P 32 는 내부 인자들을 지칭한다. 도 4a 의 예에서는 아래첨자 번호 32 로 표시되지 않지만, 번호에 의하여 추종되는 문자의 명명법은 다양한 DCT들 중 어느 것에 각각의 문자가 대응하는지를 표시한다. 따라서, A 32 는 32-포인트 DCT의 A 스케일링 인자를 표시한다. 출력들인 X1 내지 X31 은 인수화 처리에 기인한 스케일링 파라미터들 및 다른 파라미터에 의하여 스케일링되는데, 여기에서 이러한 인자들은 예시의 목적들의 용이성을 위하여 도 1 의 예에서는 도시되지 않는다. 스케일링 인자들 및/또는 다른 파라미터는 변수들 "ξ" 및 "η" 중 하나 이상으로서 표시될 수도 있다. 이러한 인자들은 전체 비디오 코딩 처리의 복잡성을 크게 증가시키지 않으면서 후속 양자화 처리로 통합될 수도 있다. 이러한 방식으로, 본 개시물에서 설명된 기법들은, 칩 풋프린트를 감소시키고 (또는, 다르게 말하면, 소위 보드 공간을 감소시키고) 그리고 더 효율적 전력 소모를 촉진하면서 활용성을 증가시킬 수도 있다.
도 4b 는 16-포인트 DCT-II 유닛 (73) 의 일 예를 도시하는 도면이다. 도 4b 의 예에서는, 16-포인트 DCT-II 유닛 (73) 은 버터플라이 유닛 (77), 8-포인트 DCT-II 유닛 (72) 및 8-포인트 DCT-IV 유닛 (74) 을 포함한다. 8-포인트 DCT-II 유닛 (72) 은 4-포인트 DCT-II 유닛 (76A) 을 포함하는 반면에, 8-포인트 DCT-IV 유닛 (74) 은 4-포인트 DCT-II 유닛 (76B) 및 4-포인트 DCT-II 유닛 (76C) 을 포함한다. 8-포인트 DCT-IV 유닛 (74) 은 또한 인자 승산 유닛 (78) 및 교차-가산 유닛 (80) 을 포함하는데, 이것들은 도 4e 의 예에 대하여 더욱 상세하게 아래에서 설명된다. 16-포인트 DCT-II 유닛 (73) 은 입력들 x 0 내지 x 15 을 수신하며 그리고 출력들 X 0 내지 X 15 을 생성한다. 버터플라이 유닛 (70) 은 짝수 입력들에 대하여 교차-가산들을 그리고 홀수 입력들에 대하여 교차-감산들을 역시 수행하면서, 입력들 x 0 내지 x 15 을 짝수 입력들 x 0 , x 2 , x 4 , x 6 , x 8 , x 10 , x 12 , 및 x 14 및 홀수 입력들 x 1 , x 3 , x 5 , x 7 , x 9 , x 11 , x 13 , 및 x 15 로 재정렬한다. 버터플라이 유닛 (70) 은 교차-가산된 짝수 입력들을 8-포인트 DCT-II 유닛 (72) 으로 그리고 교차-감산된 홀수 입력들을 8-포인트 DCT-IV 유닛 (74) 으로 출력한다.
도 4c 는 4-포인트 DCT-II 유닛 (76A-76C) 중 임의의 하나의 일 예를 좀 더 상세하게 도시하는 도면이다. 도 4b 의 예에서 도시된 4-포인트 DCT-II 유닛이 4-포인트 DCT-II 유닛들 (76A-76C) 중 임의의 하나를 나타낼 수도 있다는 것을 반영하기 위하여, 도 4b 의 예에서 도시된 4-포인트 DCT-II 유닛은 일반적으로 4-포인트 DCT-II 유닛 (76) 으로서 지칭된다. 4-포인트 DCT-II 유닛 (76) 은 기능성들의 관점에서 버터플라이 유닛들 (69) 또는 (77) 과 실질적으로 유사하지만 버터플라이 유닛 (82) 이 32 개 또는 16 개 대신에 오직 4 개의 입력들만을 수신하기 때문에 척도의 관점에서는 상이한 버터플라이 유닛 (82) 을 포함한다. 버터플라이 유닛 (82) 은 두 개의 상부 출력들에 대한 '0' 및 '2' 명명법 및 두 개의 하부 출력들에 대한 '1' 및 '3' 명명법에 의하여 표시되는 바와 같이, 입력들을 짝수 및 홀수 입력들로 재정렬한다. 홀수 입력들 상에서 동작하는 4-포인트 DCT-II 유닛 (76) 의 부분은 홀수 부분으로서 지칭될 수도 있는 반면에 짝수 입력들 상에서 동작하는 부분은 짝수 부분으로서 지칭될 수도 있다.
홀수 부분에서는, AB로 표시된 두 개의 인자들은 홀수 입력들에 적용되는 것으로 도시된다 (여기에서 이러한 인자들은 도 4c 의 콘텍스트의 외부를 지칭하는 경우에는 A4 및 B4 로서도 표시될 수도 있다). 이러한 인자들의 값을 결정할 때, 설계자는 다수 개의 관심 사항들의 균형을 맞출 수도 있다. 통상, 2 의 멱에 의한 승산이 이진 시스템 내에서 오직 우측 천이 (shift) 만을 수반한다는 것을 고려하면 2 의 멱인 인자들이 용이하게 수행될 수 있다. 결과적으로, 비록 2 의 멱인 인자들이 상당한 코딩 이득 또는 압축 효율을 제공하기에 충분한 정밀도로 적절하게 DCT 계수들을 반영하지 않을 수도 있지만, 이러한 인자들이 선호된다. 대안적으로는, 2 의 멱이 아닌 인자들이 더 높은 정밀도를 제공할 수도 있지만 용이하게 구현될 수 없을 수도 있으며, 이를 통하여 구현형태 복잡성을 증가시킨다. 더욱이, 더 작은 인자들이 더 적은 스토리지 공간을 소모하지만 더 적은 코딩 이득을 제공할 수도 있는 반면에, 더 큰 인자들은 일반적으로 더 많은 코딩 이득을 제공하지만 상당히 많은 스토리지 공간을 요구한다. 어떠한 경우에서도, 다수 개의 트레이드오프들이 임의의 주어진 DCT 구현형태, 예컨대 4-포인트 DCT-II 유닛 (76) 에 의하여 표현된 DCT 구현형태에 대한 인자들을 선택하는 것에 수반된다. 이러한 다양한 트레이드오프들을 좀 더 상세하게 예시하는 인자들의 다양한 조합들이 아래에서 설명된다.
도 4d 는 8-포인트 DCT-II 유닛 (72) 을 좀 더 상세하게 도시하는 블록도이다. 도 4c 의 예에서는, 8-포인트 DCT-II 유닛 (72) 은 기능성에서 버터플라이 유닛들 (69, 77 및 82) 와 실질적으로 유사하지만 버터플라이 유닛 (69, 77 및 82) 에 의하여 각각 수신되는 32 개, 16 개 및 4 개의 입력들과 비교하여 버터플라이 유닛 (84) 이 오직 8 개의 입력들만을 수신한다는 것을 고려하면 척도에서는 상이한 버터플라이 유닛 (84) 을 포함한다. 어떠한 경우에서도, 버터플라이 유닛 (84) 은 짝수 입력들을 생성하기 위한 교차-가산들 및 홀수 입력들을 생성하기 위한 교차-감산들을 역시 수행하면서 자신의 입력들을 짝수 및 홀수 입력들로 재정렬한다. 짝수 입력들 상에서 동작하는 8-포인트 DCT-II 유닛 (72) 의 부분은 짝수 부분으로서 지칭될 수도 있는 반면에 홀수 입력들 상에서 동작하는 부분은 홀수 부분으로서 지칭될 수도 있다. 이러한 실례에서 짝수 부분은 네스팅된 4-포인트 DCT-II 유닛 (76A) 을 포함하는데, 이것은 위에서 도 4c 의 예에 대하여 설명된 4-포인트 DCT-II 유닛 (76) 과 실질적으로 유사하다.
8-포인트 DCT-II 유닛 (72) 의 홀수 부분은 다양한 수학적 연산들을 각각 수행하는 다수 개의 유닛들 (86-90) 을 포함한다. 인자 승산 유닛 (86) 은 홀수 입력들의 교차 가산들을 이러한 입력들의 인자들 A, B, C, 및 D에 의한 승산 이후에 수행한다 (여기에서 이러한 인자들은 도 4d 의 콘텍스트 외부를 지칭할 경우에는 또한 A8, B8, C8 and D8 로서 표시될 수도 있다). 인자들 A, B, C, 및 D는 위에서 설명된 방식에서 수정되어 다양한 이점들을 촉진할 수 있는 변수들을 나타낸다. 교차-가산 유닛 (88) 은 교차 가산을 도 4c 의 예에 대하여 도시된 방식으로 수행하는 반면에 교차-가산 유닛 (90) 은 외부 가산 입력들의 교차-가산을 수행하여 7 및 1 로 표시된 홀수 출력들을 생성한다. 다시 말하건대, 이러한 다양한 트레이드오프들을 좀 더 상세하게 예시하는 인자들의 다양한 조합들이 아래에서 설명된다.
도 4e 는 8-포인트 DCT-IV 유닛 (74) 을 좀 더 상세하게 도시하는 블록도이다. 도 4e 의 예에서, 8-포인트 DCT-IV 유닛 (74) 은, 위에서 언급된 바와 같이, 두 개의 4-포인트 DCT-II 유닛들 (76B, 76C) 을 포함하는데, 이들 각각은 도 4c 의 예에 대하여 위에서 설명된 4-포인트 DCT-II 유닛 (76) 과 실질적으로 유사할 수도 있다. 또한, 8-포인트 DCT-IV 유닛 (74) 은, 역시 위에서 언급된 바와 같이, 인자 승산 유닛 (78) 및 교차-가산 유닛 (80) 을 포함한다. 인자 승산 유닛 (78) 은 8-포인트 DCT-IV 유닛 (74) 으로의 입력들을 인자들 H, I, J, K, L, M, 및 N에 의하여 승산하며, 인자들에 의하여 승산되기만 하면, 상부 4 개의 입력들을 하부 4 개의 입력들과 교차-가산하고 그리고 상부 4 개의 입력들을 하부 4 개의 입력들로부터 교차-감산한다. 그러면, 상부 4 개의 입력들은 4-포인트 DCT-II 유닛 (76B) 에 의하여 처리되고, 반면에 하부 4 개의 입력들은 4-포인트 DCT-II 유닛 (76C) 에 의하여 처리된다. 그러면, 교차-가산 유닛 (80) 은 하부 7 개의 입력들을 교차 가산/감산한다 (여기에서 감산은 가산의 다른 형태로서 간주된다). 인자들 M, N, K, L, I, J, G, 및 H 는 본 명세서의 다른 부분들에서는 A16, B16, C16, D16, E16, F16, G16, 및 H16 에 대응한다.
일반적으로, 위에서 설명된 DCT-II 또는 DCT-IV 유닛들 (72, 74 및 76A-76C) 각각은 위에서 언급된 인자들A4, B4, A8-D8, A16-H16 및 A32-P32 에 대한 무-승산기 (multiplier-less) 구현형태로서 표현될 수도 있다. 다시 말하건대, 위에서 언급된 바와 같이, A4 및 B4 는 4-포인트 DCT 타입 II 변환의 홀수 (하부) 부분 내의 버터플라이 인자들을 지칭한다. A8 내지D8 은 8-포인트 DCT 타입 II 변환의 홀수 (하부) 부분 내의 버터플라이 인자들을 지칭한다. A16 내지H16 은 16-포인트 DCT 타입 II 변환의 홀수 (하부) 부분 내의 버터플라이 인자들을 지칭한다. 마지막으로, (또한 A32 내지 P32로서도 표현될 수도 있는) A32-P32 는 16-포인트 DCT 타입 II 변환의 홀수 (하부) 부분 내의 버터플라이 인자들을 지칭한다.
32-포인트 DCT-II 유닛 (52) 은 스케일링된 변환을 포함할 수도 있는데 여기에서 각각의 출력 계수는 스케일 인자에 의하여 정규화될 필요가 있을 수도 있다. 추가적으로,
Figure pat00001
의 다른 스케일 인자가 존재할 수도 있는데, 여기에서 N은 1-차원의 (1-D) DCT의 사이즈이다. 추가적 스케일 인자가 32-포인트 DCT-II 유닛 (52) 을 정규직교적 (orthonormal) 으로 만들기 위하여 필요할 수도 있다. 2-차원의 변환들에 대하여, 추가적 스케일 인자는 2/N이다. JCT-VC 테스트 모델에 대하여, 4, 8, 16, 및 32 의 변환 사이즈들이 사용된다. 그 경우에서는, 이러한 특정한 스케일 인자는 비트-천이들로서 양자화기 스텝-사이즈들로 흡수될 수 있다. 이것은 추후에 자세하게 설명될 것이다. 이제 32-포인트 DCT-II 변환 (52) 의 디자인이 더 자세하게 설명될 것이다. 우선 DCT 계수들의 행렬이 후속하는 식 1 에 의하여 표현될 수도 있다고 간주한다. 이러한 논의에서, DCT를 정규직교적으로 만들기 위하여 필요한 스케일링 인자가 설명의 목적들을 위하여 무시될 수도 있다:
Figure pat00002
(1)
이것은 후속하는 식 2 에 따라서 절반-사이징된 DCT-II 및 DCT-IV 블록들로 인수화될 수 있다:
Figure pat00003
(2)
식 2 에서 IN/2 및 JN/2는 N/2 x N/2 아이덴티티 및 순서 반전 행렬들을 상응하여 표시하며,
Figure pat00004
는 후속하는 식 3 에 따라서 정의된 DCT-IV 변환의 행렬을 표시한다:
Figure pat00005
(3)
차례대로, DCT-IV는 후속하는 식 4 에 따라서 분할될 수 있다:
Figure pat00006
(4)
식 4 에서:
P N 은 후속하는 식 5 에 따른 재정렬을 생성하는 치환 행렬이다:
Figure pat00007
(5)
E N/2 은 아래의 식 6 에 따라서 정의된 대각 부호-변경 행렬이다:
Figure pat00008
(6)
R N 은 아래에 후속하는 식 7 에 의하여 수학적으로 정의되는 바와 같은 기븐스 회전 행렬이다:
Figure pat00009
(7)
그리고
Figure pat00010
은 잔여 절반-사이징된 DCT-II 변환들의 행렬들을 표시한다.
그러므로, N=32-포인트 변환을 계산하기 위하여, 이러한 인수화가 효과적으로: 1) 변환의 짝수 부분에서 상주하는 16-포인트 DCT-II, 2) 변환의 홀수 부분 내의 두 개의 8-포인트 DCT-II 및 3) 기븐스 회전 행렬 R 16 에 의하여 암시되는 하나의 16-포인트 버터플라이로 분할될 것이다.
32-포인트 DCT-II 변환 고정 소수점 구현형태들에서 근사화하기 위하여, 기븐스 회전 행렬 R 16 내의 사인 및 코사인 항들이 정수들 또는 2 가 유리수들 (dyadic rationals) 에 의하여 근사화될 수도 있다. 이러한 근사화는 상수들 A32 내지 P32 를 상수들의 각각의 쌍 (예컨대 A32, B32 또는 C32, D32) 이 사인 및 코사인 항들의 쌍을 근사화하도록 선택함으로써 달성될 수도 있다. 이러한 방식으로, 2 가 유리수는 분모가 2 의 멱인 유리수로서 정의될 수도 있다. 일 예로서, A32 및 B32 는
Figure pat00011
Figure pat00012
이 되도록 선택될 수도 있다.
이와 유사하게, C32 및 D32 는
Figure pat00013
Figure pat00014
이 되도록 선택될 수도 있고 기타 등등이다.
스케일 인자 Z32 는 아래의 식 8 에 따라서 선택될 수도 있다:
Figure pat00015
(8)
대안적으로는, Z32 에 대한 값들은 아래의 식 9 에 따라서 선택될 수도 있다:
Figure pat00016
(9)
이러한 인자들을 선택함으로써, 결과적인 구현형태는 균형을 이룬 더 열악한 경우의 근사화 에러들을 생성할 수도 있다. (식 8 에서 특정되는 바와 같은)Z32 에 대한 제 1 조건은 직교 32-포인트 DCT-II 변환 디자인을 생성하는데, 반면에 (식 9 에서 특정되는 바와 같은) 두 번째 조건은 비-직교 디자인을 생성한다. 이러한 디자인을 구현할 때, 스케일 인자 Z32 는 도 4a 내의 우측으로 가로질러 이동될 수도 있다. 따라서, 기븐스 회전 행렬 R 16 내의 사인 및 코사인 항들을 근사화함으로써, 32-포인트 DCT-II의 스케일링된 근사화가 획득될 수도 있다. 이러한 32-포인트 스케일링된 DCT-II 변환 (52) 은 내부 인자들 A32 내지 P32 및 스케일링된 16-포인트 DCT-II (73) 를 위에서 언급된 방식으로 결정함으로써 특정될 수도 있다. 도 4b 에 도시된 바와 같은 스케일링된 16-포인트 DCT-II (73) 는 파라미터들 A4, B4, A8 내지 D8, 및 A16 내지 H16 을 특정함으로써 특정될 수 있다.
일 예에서는, A16 H16 은 16-포인트 DCT-II를 나타내기 위하여 기븐스 회전 행렬 R 8 내의 사인 및 코사인 항들을 근사화한다. 이러한 예에서는, 대응하는 스케일 인자는 Z16 이다. 이와 유사하게, A8 내지 H8 은 8-포인트 DCT-II를 나타내기 위하여 기븐스 회전 행렬 R 4 내의 사인 및 코사인 항들을 근사화한다. 대응하는 스케일 인자는 Z8 이다. 추가적으로, A4 및 B4 는 4-포인트 DCT-II를 나타내기 위하여 기븐스 회전 행렬 R 2 내의 사인 및 코사인 항들을 근사화한다. 대응하는 스케일 인자는 Z4 이다. 파라미터들 A4, B4, A8 내지 D8, 및 A16 내지 H16 은 아래의 식 10 에 의하여 특정된 관련성들을 만족시킬 수도 있다:
Figure pat00017
(10)
아래 도시된 표 1 은 32-포인트 DCT-II 변환에 대한 이러한 스케일 인자들의 예시적인 값들을 제공한다. 이러한 스케일 인자들은 32-포인트 DCT-II 유닛 (73) 내에 포함되지 않을 수도 있으며 하지만 그 대신에 제거되고 양자화 유닛 (40) 으로 통합될 수도 있다. 정규화 인자들이라고도 지칭되는 이러한 스케일 인자들은 승산들 또는 산술 연산들의 개수를 감소시킴으로써 구현형태 복잡성을 개선할 수도 있다. 만일 이러한 스케일 인자들이 제거되면, 32-포인트 DCT-II 유닛 (72) 이 정확하게 DCT 계수들을 나타내는 풀, 비-스케일링된 출력들을 적합하게 생성하기 위하여 스케일 인자들에 의한 승산을 요구하는 스케일링된 출력들을 출력한다는 것을 고려하면, 32-포인트 DCT-II 유닛 (72) 은 스케일링된 32-포인트 DCT-II 유닛 (72) 으로서 지칭된다. 만일 32-포인트 DCT-II 유닛 (72) 이 이러한 외부 인자들을 보유한다면, 32-포인트 DCT-II 유닛 (72) 은 풀 32-포인트 DCT-II 유닛 (72) 으로서 지칭된다. 콘텍스트에 의존하여, 풀 또는 스케일링된 유닛이 32-포인트 DCT-II 유닛 (72) 에 대하여 채용될 수도 있으며, 본 개시물의 기법들은 풀 또는 스케일링된 구현형태 중 임의의 타입으로 제한되어서는 안된다. 더욱이 이전에 언급된 바와 같이, 2/N의 추가적 스케일 인자가 N-포인트 DCT II 변환이 이것을 정규직교적으로 만들기 위하여 필요하다.
Figure pat00018
어떠한 경우에서도, 위의 것들은, 다양한 이점들을 제공하는 32-포인트 DCT-II 유닛 (52) 을 생성하기 위한 위의 내부 및 정규화 인자들에 대해서 선택될 수도 있는 몇몇 예시적인 구현형태 특이적 값들이다. 일반적인 주의 사항으로서, 내부 인자들 및 스케일 인자들에 대한 위의 값들은, 결과적인 DCT 행렬들이 직교성 (orthogonality) 성질을 보유하도록 선택되는데, 이것은 후속하는 식 11 에 의하여 정의된다:
Figure pat00019
(11)
여기에서 C는 풀 비-스케일링된 변환 행렬을 나타내며 그리고 C T 는 행렬 C,의 전치 행렬을 나타내고 I 는 단위 행렬이고 그리고 a는 스칼라 상수이다. 만일 상수 a가 1 의 값을 취하면, 행렬은 정규직교적이다. 일반적으로, DCT-II 구현형태들에 대하여 직교성이 소망되는데 하지만 비-직교 디자인을 선택하는 것이 유사한 근사화 에러에 대한 내부 인자들의 크기를 감소시킬 수도 있다.
내부 인자들 A4 내지 B4, A8 내지 D8, A16 내지 H16 및 A32 내지 P32 에 대한 다양한 값들의 조사는 이러한 값들을 선택하는 것에 수반된 트레이드오프들에 대한 몇몇 표시를 제공한다. 4-포인트 DCT-II 유닛들 (76) 및 내부 인자들 A4 및 B4로써 시작하여, 이러한 인자들의 값들의 분석이 후속하는 표 2 에서 설명된다.
Figure pat00020
표 2 를 참조하면, 내부 인자들 A4 및 B4 에 대한 값들은 근사화 에러들 및 내부 인자들 A4 및 B4 를 저장하기 위하여 요구되는 비트들의 개수에 대하여 도시된다. 일반적으로, 내부 인자들 A4 및 B4 에 대한 값들이 사이즈에 있어서 증가함에 따라서, 근사화 에러는 감소하고 그리고 이들을 저장하기 위하여 요구되는 비트들의 개수는 증가한다.
8-포인트 DCT-II 유닛 (72) 및 내부 인자들 A8 내지 D8에 대한 조사를 계속하면서, 이러한 인자들에 대한 값들의 분석이 다음 표 3 에서 설명된다.
Figure pat00021
위의 표 2 에서 설명된 분석과 유사하게, 내부 인자들 A8 내지 D8 에 대한 값들이 사이즈에 있어서 증가할 때, 근사화 에러는 감소하며 그리고 이러한 더 큰 값들을 저장하기 위하여 요구되는 비트들의 개수는 증가한다.
16-포인트 DCT-II 유닛 (73) 의 내부 인자들 A16 내지 H16 에 대한 분석이 다음 표 4 에서 설명된다.
Figure pat00022
위의 표 2 및 표 3 에서 설명된 분석과 유사하게, 내부 인자들 A16 내지 H16 에 대한 값들이 사이즈에 있어서 증가할 때, 최대 근사화 에러는 감소하며 그리고 이러한 더 큰 값들을 저장하기 위하여 요구되는 비트들의 개수는 증가한다. 표 4 에서 설명된 분석에 대하여, 최대 근사화 에러는 내부 인자들의 처음 5 개의 조합들에 대하여 상당히 커서 내부 인자들 A16 내지 H16 에 대한 값들의 선택은 6-, 7- 및 8-비트 근사화들 사이에 있다.
32-포인트 DCT-II 유닛 (52) 의 기븐스 회전 행렬 R16 (70) 의 내부 인자들 A32 내지 P32 에 대한 분석은 직교 디자인의 경우에 대하여 다음 표 5 에서 설명된다.
Figure pat00023
다음 표 6 은 직교 디자인이 요구되지 않을 수도 있는 경우의 기븐스 회전 행렬 R16 (70) 의 내부 인자들 A32 내지 P32 의 분석을 제공한다:
Figure pat00024
표 2 내지 표 6 에 도시된 인수화들의 목록은 단지 예시적인 것일 뿐이며 망라적인 것으로 간주되어서는 안 된다는 것에 주의해야 한다. 식 8 (또는 식 9) 및 식 10 에서 규정된 바와 같은 내부 인자들 및 스케일 인자들 Z4, Z8, Z16, 및 Z32 간의 관련성들이 만족되는 한, 내부 인자들 A4, B4, A8 내지 D8, A16 내지 H16, A32 내지 P32 에 대한 다른 선택들이 가능하다. 위의 조사 분석이 완료되면, 내부 인자들 A4, B4, A8 내지 D8, A16 내지 H16, A32 내지 P32 에 대한 값들의 위의 표 2 내지 표 6 으로부터 다양한 선택들을 통하여 다수 개의 구현형태들 또는 설계들이 결과적으로 얻어질 수도 있다.
표 4 및 표 5 에서 도시된 다수 개의 행렬 계수들은 이러한 큰 값들에 의한 승산들을 수행하기 위하여 요구되는 연산들의 관점에서 구현형태 복잡성을 증가시킬 수도 있는 큰 값들이다. 또한, 도 4a 에서, 계산들이 좌측으로부터 우측으로 진행함에 따라, 비트깊이 (bitdepth) 가 증가할 수도 있다. 이것은 스토리지 버퍼들 및 산술 연산들 (가산들, 승산들) 을 수행하는 비용의 관점에서 고비용일 수도 있다. 이러한 큰 값들을 제거하고 및 변환 전체의 동적 범위의 균형을 맞추기 위하여, 내부 인자들에 의한 승산들 이후에 또는 등가적으로 버터플라이 스테이지들 이후에 우측 천이들이 구현형태로 도입될 수도 있다. 이것은 내부 인자들 A4, B4, A8 내지 D8, A16 내지 H16, A32 내지 P32 에 대하여 정수들 대신에 2 가 유리수들을 선택하는 것과 등가일 수도 있다. 내부 인자들에 대한 하나의 이러한 선택이 위의 표 7 에 도시된다. 우측 천이들이 임의의 양의 정수에 의한 것일 수도 있다는 것에 주의해야 한다. 몇 가지 실례들에서는, 우측 천이들의 정도를 특정하는 유일한 제한 사항은 파라미터들 A4B4 에 대한 우측 천이들이 동일하다는 것이다. 이와 유사하게, 몇 가지 실례들에서는, A8 내지 D8 에 대한 우측 천이들은 각각 동일해야 한다. 더욱이, (다시 말하건대, 몇 가지 실례들에서) A16 내지 H16 에 대한 우측 천이들은 동일할 수도 있다. 추가적으로, A32 내지 P32 에 대한 우측 천이들은 몇 가지 실례들에서 동일할 수도 있다. 32-포인트, 16-포인트, 8-포인트 및 4-포인트 변환들의 홀수 부분들에서의 우측 천이들은 독립적으로 선택될 수도 있다. 우측 천이들은 이러한 정수 파라미터들을 2 가 유리수들로 변환한다. 다시 말하건대, 2 가 유리수는 분모가 2 의 멱인 유리수를 지칭한다.
Figure pat00025
(버터플라이 내의 양 인자들이 동일한 우측 천이들을 공유하기 때문에) 2 가 유리수 내부 인자들의 경우에서는, 우측 천이들이 버터플라이의 끝에서 수행될 수도 있다. 이러한 실례들에서는, 정수 및 2 가 유리수 인자들이 동일한 방식을 처리될 수도 있다. 그러면, 버터플라이 내의 승산들은 천이들 및 가산들로 변환될 수도 있다. 표 8 은 이것을 표 7 에서 나열된 내부 인자들의 예시적인 값들에 대하여 보여준다.
Figure pat00026
Figure pat00027
만일 32-포인트 DCT-II가 승산들 및 가산들에 의해 구현된다면, 116 개의 승산들 및 194 개의 가산들이 요구될 수도 있다. 내부 인자들의 상이한 세트가 표 7 로부터의 것들 대신에 선택되는 경우 이러한 개수는 통상적으로 우수로서 동일하게 유지된다. 그러나, 구현형태가 무승산기 방식이라면, 내부 인자의 (예를 들어, 비트깊이의 관점에서 측정된 바와 같은) 더 높은 크기는 더 많은 가산들 및 천이들을 암시한다. 표 7 에서 도시된 바와 같은 내부 인자들에 대한 예시적인 값들은 32-포인트 DCT-II (52) 를 구현하기 위하여 348 개의 가산들 및 156 개의 천이들을 요구할 수도 있다. 내부 인자들의 선택은 이것들이 채용되는 콘텍스트에 의존할 수도 있다. 이 변환을 구현하기 위하여 사용되는 하드웨어 또는 소프트웨어 아키텍처, 32-포인트 DCT-II로의 근접성의 관점에서의 이 변환의 원하는 정확도, 및 전력 소모 요구 사항들이 내부 인자들의 선택 시에 고려될 수도 있는 인자들 중 몇 가지이다.
H.264 및 HEVC 테스트 모델 (HM) 에서는, 양자화 유닛 (40) 은 양자화 동작을 양자화 행렬 내의 엔트리에 의한 승산 이후의 우측 천이로서 구현한다. 양자화 행렬내의 엔트리 및 우측 천이는 함께, 이러한 두 개의 동작들이 실제 양자화기 스텝-사이즈에 의한 제산을 근사화하도록 선택된다. 이와 유사하게, 디코더 측에 대응하는 양자화해제 행렬 및 우측 천이가 존재한다. 인코더 및 디코더 상의 우측 천이들이 각각 Q_BITS 및 DQ_BITS에 의하여 표시된다고 한다. 스케일링된 변환들의 경우에, 스케일링 인자들은 위에서 언급된 방식으로 양자화 및 양자화해제 행렬들 내로 흡수된다.
H.264 및 HEVC 테스트 모델에 대하여, 양자화기 스텝-사이즈는 QP의 매 6 개의 값들마다 두 배가 된다. 따라서 32 x 32 변환에 대하여, 양자화 및 양자화해제 행렬은 각각, 통상적으로 요구들 32 x 32 x 6=6144 개의 엔트리들을 요구한다. 이에 반해, 정규직교적 변환은 저장될 오직 6 개의 엔트리들만을 필요로 할 것이다. 그러나, 통상적으로 정규직교적 변환을 구현하기 위해서, 더 많은 승산들이 필요하며, 이것은 계산적으로 고가일 수 있다. 본 개시물에서 설명된 기법들은 위에서 설명된 인수화의 계산적 복잡성 장점을 유지하면서 스토리지의 양을 감소시킬 수도 있다.
따라서, 32-포인트 DCT-II 유닛 (52) 에 대하여, 스케일 인자들은 위의 표 1 에서 설명된 그러한 것들을 포함할 수도 있다. 표 1 을 분석하면, 32-포인트 변환에 대하여 12 개의 별개의 스케일링 인자들만이 존재한다. QP가 양자화기 스텝-사이즈 파라미터를 표시한다고 하고, 다음 식 12 를 고려한다:
Figure pat00028
(12)
위의 식 12 에서, 모듈로 연산자는 퍼센티지 부호 (%) 에 의하여 표현된다. 통상적으로, 각각의
Figure pat00029
에 대하여, 32x32 행렬이 일반적으로 저장되어야 할 것이다. 그러나,
Figure pat00030
의 각각에 대하여 오직 12 개의 별개의 엔트리들이 존재하기 때문에, 오직 12x12 행렬이 저장될 것이 요구될 수도 있다. 추가적으로, 사이즈 12 의 룩업 테이블이 포지션 인덱스를 정규화 표 내의 인덱스로 변환하도록 요구될 수도 있다. 수평 및 수직 방향들은 동일한 룩업 테이블을 사용한다. Q_BITS 및 DQ_BITS는, 양자화 행렬 엔트리들이 16 개의 비트들을 필요로 하는 반면에 양자화해제 행렬 엔트리들은 오직 8 개의 비트들을 필요로 하도록 선택될 수도 있다. 따라서, 양자화 행렬, 양자화해제 행렬 및 룩업 테이블에 대한 총 스토리지는 잠재적으로 오직 12 x 12 x 6 x 3 + 12 = 2604 개의 바이트들이다.
비록 16, 8 및 4-포인트 변환들이 이미 32-포인트 DCT-II 변환의 우수-인덱싱된 엔트리들 내에 제공될 수도 있지만, 스케일 인자들은
Figure pat00031
의 추가적 스케일 인자에 기인하여 상이할 수도 있다. 32, 16, 8 및 4-포인트 변환들에 대하여 상이한 양자화 행렬들에 대한 필요성을 잠재적으로 제거하기 위하여, 양자화 행렬들의 정밀도를 나타내는 Q_BITS 및 DQ_BITS가 변경될 수도 있다. 예를 들어, 만일 Q_BITS 및 DQ_BITS가 4x4 변환에 대하여 10 및 8 이라면, 이들은 8x8 변환에 대하여 각각 11 및 9 가 되도록 선택될 수도 있다. 이러한 방식으로, (2-D 변환에 대한) 2/N의 추가적 스케일링 인자에 대한 추가적 스케일링 인자에 대한 보상이 달성될 수도 있다. 예컨대 16x16 및 32x32 와 같은 더 높은 매 블록 사이즈에 대하여, Q_BITS 및 DQ_BITS는 1 만큼 증분될 수도 있다. 이것은 32x32 DCT-II 변환의 양자화기 및 역양자화기 행렬들이 더 낮은 블록 사이즈들 (4x4, 8x8, 및 16x16) 의 의 모든 행렬들을 포함할 수도 있는 효과를 가진다. 결과적으로, 사이즈 16, 8 및 4 의 추가적 룩업 테이블들 (LUTs) 이 필요할 수도 있다.
몇 가지 실례들에서는, 위에서 설명된 구현형태는 양자화를 위한 스토리지의 방대한 양들을 요구할 수도 있다. 요구되는 스토리지의 양을 감소시키기 위하여, 이 기법들은 직교성 성질에 엄격하게 집착하지 않는 구현형태를 제공할 수도 있다. 예시를 위하여, 식 8 및 식 10 을 사용하여 인수화를 위한 내부 파라미터들을 사용하는 대신에, 사인 및 코사인 항들이 256 의 분모를 가지는 가장 가까운 2 가 유리수들에 의하여 근사화될 수도 있다. (표 20 내의 그러한 것들과 유사한) 32-포인트 DCT 타입 II의 홀수 부분 내의 기븐스 회전 행렬 R 16 에 의하여 암시되는 16 포인트 버터플라이에 대하여, 인자들은 13, 38, 62, 86, 109, 132, 152, 172, 190, 206, 220, 231, 241, 248, 253, 255 이다. 16-포인트 DCT 타입 II의 홀수 부분 내의 기븐스 회전 행렬 R 8 에 의하여 암시되는 8-포인트 버터플라이에 대하여, 인자들은 25, 74, 121, 162, 198, 226, 245, 및 255 이다. 8-포인트 DCT 타입 II의 홀수 부분 내의 기븐스 회전 행렬 R4에 의하여 암시되는 4-포인트 버터플라이에 대하여, 인자들은 50, 142, 213, 및 251 이다. 타입 II의 4-포인트 DCT의 홀수 부분에 대하여, 인자들은 98 및 236 이다. 256 의 분모에 대하여 설명된 반면에, 2 의 멱인 다른 분모들이 선택될 수 있다. 그 경우에서는, 분자들 상수들이 다시 유사하게 유도되어 위에서 설명된 바와 같이 사인들 및 코사인들을 근사화할 수 있다. 만일 2 의 더 높은 멱이 분모로서 사용된다면, 사인 및 코사인 항들로의 근사화는 더 정확해질 수도 있는데, 이것은 순서대로 이 디자인이 무제한 정밀도 32-포인트 DCT-II 구현형태에 더 근접할 수도 있다는 것을 의미한다. 이전에 논의된 바와 같이, 2 의 상이한 멱들이 R16, R8, R4, 및 R2 에 대한 상이한 멱들로서 선택될 수도 있다. 내부 인자들의 이러한 디자인이 사용되는 경우, 스케일 인자들은 아래의 표 9 내의 그것들에 의하여 근사화될 수 있다. 이것은 (sinθ)2+(cosθ)2=1 이고 그리고 선택된 2 가 유리수들이 사인 및 코사인 항들의 근접한 근사화들이기 때문에 가능하다.
Figure pat00032
표 9 로부터, 1-차원의 변환에 대하여 오직 두 개의 별개의 스케일 인자들인, 1.0 및
Figure pat00033
만이 존재한다는 것을 알 수 있다. 따라서, 이러한 스케일 인자들이 2-차원의 경우에 양자화 및 양자화해제 행렬들 내로 흡수되는 경우, 양자화 및 양자화해제 행렬 내에는 오직 4 개의 별개의 숫자들만이 존재할 수도 있다. 따라서, 두 개의 별개의 정규화 인자들 중 어느 것이 특정한 변환 계수의 그 방향 (수평/수직) 에서의 정규화를 위하여 사용될 것인지를 특정하기 위해서는, 사이즈 32 의 1-비트 룩업 테이블 (LUT) 을 저장하는 것이 일반적으로 충분하다. 동일한 LUT가 사용되어 반대 방향에서의 정규화 인자들을 특정할 수 있다. 따라서, QP 에서의 각각의 증분에 대하여, 4 개의 별개의 값들이 양자화 행렬 및 양자화해제 행렬에 대하여 저장될 필요가 있을 수도 있다. 따라서, 양자화 행렬 사이즈는 2x2x6 = 24 개의 엔트리들 및 양자화해제 행렬에 대하여 이와 유사하다.
직교 디자인에 대하여 12 개의 별개의 스케일 인자들이 존재할 수도 있는데, 반면에 우리는 1-차원의 변환에 대하여 오직 두 개의 별개의 스케일 인자들을 가지는 디자인을 설명한 바 있다. 가능한 2 및 12 간에 다수 개의 별개의 스케일 인자들을 가지는 것이 가능하다. 예를 들어, 만일 직교 디자인이 4 및 8-포인트 DCT-II 변환들에 대하여 보류되지만 R8 및 R16 에 대응하는 내부 인자들이 위의 방법에 따라서 선택된다면, 5 개의 별개의 스케일 인자들이 존재한다. 이들은
Figure pat00034
Figure pat00035
이다. 이것은 스토리지의 양, 직교성 및 내부 인자들을 저장하기 위한 비트깊이 간의 절충을 나타낸다. 내부 인자들의 이러한 선택이 아래의 표 10 에서 보인다. 이러한 경우에서는 양자화 및 양자화해제 행렬은 5x5x6 = 150 개의 엔트리들을 포함할 수도 있다. 이와 유사하게, 만일 직교 디자인이 4, 8 및 16-포인트 DCT-II 변환들에 대하여 보류되지만 R16 에 대응하는 내부 인자들이 위의 방법에 따라서 선택된다면, 오직 7 개의 별개의 스케일 인자들이 존재한다. 이러한 경우에서는 양자화 및 양자화해제 행렬은 7x7x6 = 294 개의 엔트리들을 포함할 수도 있다. 따라서 직교 디자인이 유지되는 대상인 블록 사이즈들의 개수를 선택함으로써, 양자화 및 양자화해제 행렬들에 대한 스토리지의 양은 변경될 수 있다.
Figure pat00036
어떻게 이러한 LUT가 채용될 수도 있는지 예시하기 위하여, 후속하는 단계들을 고려한다. 제 1 단계에서, 양자화 유닛 (40) 은 수평 인덱스 상의 1-비트 LUT를 사용하여 Hor_Bit (0 또는 1) 를 유도한다. 제로는 1.0 의 정규화 인자에 대응하고 그리고 1 은
Figure pat00037
의 정규화 인자에 대응한다. 두 번째 단계에서, 양자화 유닛 (40) 은 수직 인덱스 상의 1-비트 LUT를 사용하여 Ver_Bit (0 또는 1) 를 유도한다. 그러면, 양자화 유닛 (40) 은 Hor_Bit 및 Ver_Bit 및 QP 값을 사용하여 적합한 엔트리를 양자화 및 양자화해제 행렬에서 룩업한다. 이러한 방식으로, 기법들은 증가 스토리지 요구 사항들 (및 연관된 비용들) 을 크게 증가시키지 않고 유사한 에러 레벨들을 제공하는 다른 디자인들 또는 구현형태들과 비교하여 상대적인 계산 복잡성을 유지할 수도 있다.
도 4 의 예에서는 DCT-II 유닛에 대하여 설명된 반면에, 이러한 DCT-II 유닛은 또한 본 개시물의 기법들에 따라서 구성된 IDCT를 나타낼 수도 있다. 역 DCT를 도 4 의 예에서 도시된 구현형태로부터 형성하는 것은 입력들 및 출력들을 반전하여, 입력들이 구현형태에 의하여 도 4 의 우측에서 수신되고 출력들이 구현형태의 좌측에서 출력되도록 하는 것을 수반한다. 다르게 말하면, 구현형태를 수직 축 주위에서 반전함으로써 이제 입력들이 출력들이 되도록 하고 그리고 출력들이 입력들이 되도록 하는 것이 일반적으로 IDCT 구현형태를 생성할 것이다. 예시의 목적들의 용이성을 위하여 그리고 IDCT를 DCT로부터 형성하는 것이 당업계에서 주지된다는 것을 고려하여, 이러한 추가적 IDCT 구현형태들은 별개의 도면들에서 도시되지 않는다.
도 5 는 본 개시물의 기법들에 따라서 구성된 32-포인트 DCT 구현형태를 적용할 때의 코딩 디바이스, 예컨대 도 2 의 비디오 인코더 (20) 의 예시적인 동작을 도시하는 흐름도이다. 처음에, 비디오 인코더 (20) 는 인코딩될 비디오 프레임 내의 현재 코딩 유닛 (31) 을 수신한다 (단계 90). 모션 추정 유닛 (32) 은 모션 추정을 수행함으로써 코딩 유닛 (31) 을 하나 이상의 인접한 비디오 프레임들 내의 블록들과 비교하여 하나 이상의 모션 벡터들을 생성한다 (단계 92). 인접한 프레임 또는 프레임들은 메모리 (34) 로부터 취출될 수도 있다. 모션 추정이 가변 사이즈들, 예를 들어 64x64, 32x32, 16x16, 16x8, 8x16, 8x8, 4x4 또는 더 작은 블록 사이즈들의 블록들에 대하여 수행될 수도 있다. 모션 추정 유닛 (32) 은 인접한 프레임들 내의, 현재 코딩 유닛 (31) 과 거의 근접하게 매칭하는 하나 이상의 블록들을, 예를 들어 레이트 왜곡 모델에 기초하여 식별하며, 인접한 프레임들 내의 블록들 및 현재 코딩 유닛 간의 변위를 결정한다. 이러한 기초에서, 모션 추정 유닛 (32) 은 현재 코딩 유닛 (31) 및 현재 코딩 유닛 (31) 을 코딩하기 위하여 사용되는 참조 프레임들로부터의 하나 이상의 매칭 블록들 간의 변위의 크기 및 궤적을 표시하는 하나 이상의 모션 벡터들 (MV) 을 생성한다. 매칭 블록 또는 블록들은 코딩될 블록의 인터-코딩을 위한 예측성 (또는 예측) 블록들로서 역할을 할 것이다.
모션 벡터들은 하프- 또는 4 분의 1-픽셀 정밀도, 또는 더 정밀한 정밀도를 가짐으로써, 비디오 인코더 (20) 가 정수 픽셀 위치들보다 더 높은 정밀도로 모션을 추적하고 더 양호한 예측 블록을 획득하도록 허용할 수도 있다. 분수 픽셀 값들을 가지는 모션 벡터들이 사용되는 경우, 보간 동작들이 모션 보상 유닛 (36) 에서 수행된다. 모션 추정 유닛 (32) 은 최선의 블록 파티션들 및 코딩 유닛에 대한 모션 벡터 또는 모션 벡터들을 어떤 기준들, 예컨대 레이트-왜곡 모델을 사용하여 식별한다. 예를 들어, 양방향성 예측의 경우에는 두 개 이상의 모션 벡터가 존재할 수도 있다. 결과적인 블록 파티션들 및 모션 벡터들을 사용하면서, 모션 보상 유닛 (36) 은 예측 유닛을 형성한다 (단계 94).
비디오 인코더 (20) 는 모션 보상 유닛 (36) 에 의하여 생성된 예측 유닛을 원래의 현재 코딩 유닛 (31) 으로부터 합산기 (48) 에서 감산함으로써 잔차 코딩 유닛을 형성한다 (단계 96). 변환 유닛 (38) 은 변환을 적용하여 잔차 변환 블록 계수들을 생성한다. 변환 유닛 (38) 은 본 개시물에서 설명된 기법들에 따라서 구성된 32-포인트 DCT-II 유닛 (52) 을 포함한다. 변환 유닛 (38) 은 스케일링된 32-포인트 DCT-II 유닛 (52) 에게, 주어진 사이즈의 하나 이상의 DCT-II들을 잔차 데이터에 적용하여 위에서 설명된 방식으로 잔차 변환 계수들의 대응하도록 사이징된 블록들을 생성하도록 호출한다. 도 4a 내지 도 4e 의 예를 참조하면, 32-포인트 DCT-II 유닛 (52) 은 16-포인트 DCT-II 유닛 (73) 및 8-포인트 DCT-II 유닛들 (74A, 74B) 중 하나 이상을 호출하여 동시에 하나 이상의 16-포인트 DCT-II 및 8-포인트 DCT-II들을 적용할 수도 있다. 대안적으로는, 32-포인트 DCT-II 유닛 (52) 은 8-포인트 DCT-II 유닛 (73) 및 4-포인트 DCT-II 유닛들 (76B, 76C) 및 8-포인트 DCT-II 유닛들 (74A, 74B) 중 하나 이상을 호출하여 동시에 하나 이상의 8-포인트 DCT들 및 4-포인트 DCT-II들을 적용할 수도 있다. 또 다른 대안적인 예에서는, 32-포인트 DCT-II 유닛 (52) 은 유닛들 (73, 74A, 및 74B) 을 호출하여 32-포인트 DCT-II를 적용할 수도 있다. 다른 대안적인 예에서는, 32-포인트 DCT-II 유닛 (52) 은 4-포인트 DCT-II 유닛 (76A-76C) 및 8-포인트 DCT-II 유닛들 (74A, 74B) 을 중 하나 이상을 호출하여 4-포인트 DCT-II들 및 8-포인트 DCT-II들 중 하나 이상을 적용할 수도 있다. 32-포인트 DCT-II 유닛 (52) 은 일반적으로 잔차 픽셀 데이터로서 표현되는 잔차 데이터를 공간 도메인으로부터 주파수 도메인으로 변환하는데, 이것은 DCT 계수들로서 표현된다. 이러한 방식으로, 32-포인트 DCT-II 유닛 (52) 은 하나 이상의 대응하도록 사이징된 DCT-II들을 잔차 데이터에 적용하여 DCT 계수들 (98) 을 결정한다. 변환 계수들은 적어도 하나의 DC 계수 및 하나 이상의 AC 계수들을 포함하는 DCT 계수들을 포함할 수도 있다.
양자화 유닛(40) 은 잔차 변환 블록 계수들을 양자화 (라운딩) 하여 비트 레이트를 더욱 감소시킨다 (단계 100). 위에서 언급된 바와 같이, 양자화 유닛 (40) 은 인수화 도중에 제거된 인자들을 통합함으로써 스케일링된 32-포인트 DCT-II 유닛 (52) 의 스케일링된 성질을 설명한다. 양자화가 통상적으로 승산을 수반하기 때문에, 이러한 인자들을 양자화 유닛 (40) 내로 통합하는 것은 양자화 유닛 (40) 의 구현형태 복잡성을 증가시키지 않을 수도 있다. 이런 점에서는, 인자들을 스케일링된 32-포인트 DCT-II 유닛 (52) 으로부터 제거하는 것은, 위에서 보여진 방식으로 양자화 유닛 (40) 의 구현형태 복잡성을 증가시키지 않으면서, DCT-II 유닛 (52) 의 구현형태 복잡성을 감소시킬 수도 있는데, 결과적으로 비디오 인코더 (20) 에 대한 구현형태 복잡성의 순수한 감소를 초래한다.
엔트로피 코딩 유닛 (46) 은 양자화된 계수들을 엔트로피 코딩하여 비트 레이트를 더욱 감소시킨다. 엔트로피 코딩 유닛 (46) 은 몇 가지 실례들에서는 엔트로피 코딩이라고 지칭되는 통계적 무손실 코딩을 수행하여 코딩된 비트스트림을 생성한다 (단계 102). 엔트로피 코딩 유닛 (46) 은 양자화된 DCT 계수들의 확률 분포를 모델링하며 그리고 코드북을 모델링된 확률 분포에 기초하여 선택한다. 이러한 코드북을 사용하면서, 엔트로피 코딩 유닛 (46) 은 각각의 양자화된 DCT 계수에 대한 코드들을 양자화된 DCT 계수들을 압축하는 방식으로 선택한다. 엔트로피 코딩 유닛 (46) 은, 메모리 또는 스토리지 디바이스로 저장된/되거나 비디오 디코더 (26) 로 전송된 코딩된 비트-스트림으로서 엔트로피 코딩된 계수들을 출력한다 (단계 104).
복원 유닛 (42) 및 역 변환 유닛 (44) 은 양자화된 계수들을 복원하며 그리고 역 변환을 각각 적용하여 잔차 데이터를 복원한다. 다시 말하건대, 역 변환 유닛 (44) 은 역 DCT (IDCT) 를 포함할 수도 있는데, 이것은 통상 아래에서 도3 에 대하여 설명되는 32-포인트 DCT-III 유닛 (68) 과 유사한, 32-포인트 DCT-II 유닛 (73) 의 역 동작들을 수행한다. 합산 유닛 (50) 은 재구성된 잔차 데이터를 모션 보상 유닛 (44) 에 의하여 생성된 모션 보상된 예측 블록에 가산하여, 메모리 (34) 내의 저장을 위한 재구성된 코딩 유닛을 생성한다. 재구성된 코딩 유닛은 모션 추정 유닛 (32) 및 모션 보상 유닛 (36) 에 의하여 사용되어 후속 비디오 프레임 내의 블록을 인코딩한다.
도 6 은 본 개시물의 기법들에 따라서 구성된 32-포인트 DCT-III를 적용할 때의 코딩 디바이스, 예컨대 도 3 의 비디오 디코더 (20) 의 예시적인 동작을 도시하는 흐름도이다. 비디오 디코더 (26) 는 비디오 인코더 (20) 에 의하여 인코딩된 바 있는 인코딩된 비디오 비트스트림을 수신한다. 특히, 엔트로피 디코딩 유닛 (54) 은 인코딩된 비디오 비트스트림을 수신하고 그리고 이 비트스트림으로부터 양자화된 잔차 계수들 및 양자화된 파라미터들, 및 다른 정보, 예컨대 매크로블록 코딩 모드 및 모션 정보를 디코딩하는데, 이것은 모션 벡터들 및 블록 파티션들을 포함할 수도 있다 (단계 106, 단계 108). 모션 보상 유닛 (56) 은 모션 벡터들 및 블록 파티션들 및 하나 이상의 복원 참조 프레임들을 메모리 (62) 로부터 수신하여 예측 유닛을 생성한다 (단계 110).
복원 유닛 (58) 은 양자화된 블록 계수들을 역 양자화, 즉, 양자화-해제한다 (단계 112). 역 변환 유닛 (60) 은 역 변환, 예를 들어, 역 DCT를 계수들에 적용하여 잔차 데이터를 생성한다. 좀 더 구체적으로는, 역 변환 유닛 (60) 은 스케일링된 32-포인트 DCT-III 유닛 (68) 을 포함하는데, 이것을 역 변환 유닛 (60) 이 호출하여 처리 계수들을 처리하고 그리고 이를 통하여 잔차 데이터를 생성한다 (단계 114). 도 2 에서 도시된 스케일링된 32-포인트 DCT-II 유닛 (52) 의 역인 스케일링된 32-포인트 DCT-III 유닛 (68) 은 위에서 설명된 방식으로 계수들을 주파수 도메인으로부터 공간 도메인으로 변환하여 잔차 데이터를 생성할 수도 있다. 위의 양자화 유닛 (40) 과 유사하게, 복원 유닛 (58) 은 인수화 도중에 제거된 외부 인자들을 구현형태 복잡성에서의 증가가 있다고 하더라도 거의 없게 하면서 복원 처리로 통합함으로써 32-포인트 DCT-III 유닛 (68) 의 스케일링된 성질을 설명한다. 인자들을 스케일링된 32-포인트 DCT-III 유닛 (68) 으로부터 제거하는 것은 구현형태 복잡성을 감소시키며, 이를 통하여 비디오 디코더 (26) 에 대한 복잡성의 순수 감소를 초래할 수도 있다.
그러면, 예측 유닛들은 합산기 (66) 에 의하여 잔차 데이터와 합산되어 디코딩된 블록들을 형성한다 (단계 116). 디블로킹 필터 (미도시) 가 디코딩된 블록들을 필터링하여 블록화 아티팩트들을 제거하도록 적용될 수도 있다. 그러면, 필터링된 블록들은 메모리 (62) 내에 배치되는데, 이것은 후속 비디오 프레임들의 디코딩을 위한 참조 프레임을 제공하며 그리고 또한 디스플레이 디바이스, 예컨대 도 1 의 디스플레이 디바이스 (28) 를 구동할 디코딩된 비디오를 생성한다 (단계 118).
도 7a 내지 도 7e 는 도 2 의 32-포인트 DCT-II 유닛의 다른 예시적인 구현형태의 다양한 양태들을 도시하는 도면들이다. 도 4a 내지 도 4e 에서, 32-포인트 DCT-II 유닛 (52) 의 예시적인 구현형태가 버터플라이들을 사용하여 도시되는데, 여기에서 이러한 예시적인 구현형태는 위에서 진술된 이유들 때문에 행렬 승산이 존재한다고 하더라도 이를 많이 수반하지 않는다. 다르게 말하면, 32-포인트 DCT_II 유닛 (52) 은 행렬 승산들을 수행하지 않으면서 위에서 설명된 다양한 사이즈들의 변환들을 구현할 수도 있다. 그러나, DCT-II 유닛들의 소위 "부분적인 버터플라이" 구현형태들은 대두되는 HEVC 표준의 동작 초안 및 테스트 모델 (HM5.0) 내에 채택되어 왔으며 그리고 본 개시물에서 설명된 기법들은 이러한 부분적인 버터플라이 구현형태들에 대하여 구현될 수도 있다. 부분적인 버터플라이 DCT-II 구현형태들은 ("합 및 차분" 스테이지라고도 지칭될 수도 있는) 분해의 조합을 버터플라이 스테이지 내로 수반하는 것과 그 이후의 짝수 부분에 대한 사이즈 N/2 의 변환을 수반할 수도 있는데, 여기에서 N은 DCT-II의 사이즈를 표시한다. 홀수 부분에 대하여, 도 4d 및 도 4e 의 예에 대해서 위에 도시된 버터플라이 구현형태가 아니라 N/2 포인트 행렬 승산이 사용된다.
예를 들어, 제안된 부분적인 버터플라이 8-포인트 DCT는 4x4 행렬 승산을 요구하는데, 이것은 심지어 범용 승산기들을 사용하는 경우에도 계산 복잡성의 관점에서 너무 고비용이 아닐 수도 있다. 그러나, 16-포인트 및 32-포인트 변환에 대한 부분적인 버터플라이 구현형태를 사용하는 것은, 각각 8x8 및 16x16 행렬 승산을 요구한다. 이것은 하드웨어 영역의 관점에서 고비용일 수도 있으며 그리고 또한 모바일 또는 배터리-전력 디바이스들에 대하여 전력 보존에 영향을 줄 수도 있다. 기법들은 이러한 부분적인 버터플라이 DCT-II 구현형태들에 대하여 구현되어, 일 실례에서 도 4a 내지 도 4e 의 예들에 대하여 위에서 설명되고 도시된 방식으로 이러한 부분적인 버터플라이 DCT-II 구현형태들을 네스팅함으로써 잠재적으로 보드 공간의 소모를 감소시킬 수도 있다.
도 7a 는 도 2 의 예에서 도시된 32-포인트 DCT-II 유닛 (52) 의 일 예시적인 부분적인 버터플라이 (PB) 구현형태 (119) 를 도시하는 도면이다. 도 7a 의 예에서, 32-포인트 DCT-II 유닛 (119) 은 도 4a 의 예에서 도시된 DCT-II 유닛 (52) 의 버터플라이 구현형태에 대하여 위에서 도시된 것들과 같은 실질적으로 유사한 버터플라이 유닛 (69), 기븐스 회전 행렬 (70) 및 선형 조합 (LC) 유닛 (71) 을 포함한다. 그러나, 32-포인트 PB DCT-II 유닛 (119) 은 16-포인트 PB DCT-II 유닛 (120) 을 짝수 부분에서 그리고 두 개의 8-포인트 PB DCT-II 유닛들 (122A, 122B) 을 홀수 부분에서 포함한다. 16-포인트 PB DCT-II 유닛 (120) 은 더 나아가 8-포인트 PB DCT-II 유닛 (122C) 을 짝수 부분에서 그리고 두 개의 4-포인트 PB DCT-II 유닛들 (124A, 124B) 을 홀수 부분에서 포함한다. 8-포인트 PB DCT-II 유닛 (122C) 은 또한 4-포인트 PB DCT-II 유닛 (124C) 을 자신의 짝수 부분에서 포함한다.
몇 가지 실례들에서는, 도 2 의 우측 상의 스케일 또는 정규화 인자들은 변화할 수도 있다. 이러한 변화는 근사적으로 동일한 놈들 (norms) 을 가지는 PB 유닛들 내에서 사용되는 기초 기능들에 기인한다. 그러므로 16-포인트 변환의 상부 절반 내의 모든 변환 계수들이 단일 정규화 인자를 가질 것이다. 이와 유사하게, 16-포인트 변환의 하부 절반 내의 변환 계수들에 대한 단일 스케일링 인자가 존재할 것이다. 이러한 스케일링 인자는 PB 변환들에 대한 스케일링 인자 및 기븐스 회전 행렬 R8 내의 버터플라이 인자들로부터 대두하는 스케일링 인자 Z16 을 고려할 것이다. 따라서, 변환을 정규직교적으로 만들 오직 두 개의 상이한 스케일링 또는 정규화 인자들만이 존재할 수도 있다. 동일한 개념이 상부 절반 내의 위에서 설명된 16-포인트 변환을 재사용하고 그리고 하부 절반 내의 8-포인트 PB 변환들 및 기븐스 회전 행렬 R16 을 사용함으로써 32-포인트 변환으로 연장될 수 있다. 이러한 경우에서는, 3 개의 상이한 스케일링 또는 정규화 인자들이 변환을 정규직교적으로 만들기 위하여 필요할 수도 있다.
도 7b 는 도 7a 의 예에서 도시된 16-포인트 PB DCT-II 유닛 (120) 을 좀 더 상세하게 도시하는 도면이다. 16-포인트 PB DCT-II 유닛 (120) 은 버터플라이 유닛들 (77, 78) 및 기븐스 회전 행렬 (80) 을 포함하는데, 이것은 실질적으로 도 4b 의 예에서 도시된 16-포인트 DCT-II (73) 과 유사하다. 그러나, 4-포인트 DCTG-II 유닛들 (76) 및 8-포인트 DCT-II 유닛 (72) 의 버터플라이 구현형태들을 포함하는 것이 아니라, 16-포인트 PB DCT-II 유닛 (120) 은 위에서 지적된 4-포인트 부분적인 버터플라이 (PB) DCT-II 유닛들 (124A-124C) 및 8-포인트 PB DCT-II 유닛 (122C) 을 포함한다. 하부 또는 홀수 4-포인트 PB DCT-II 유닛들 (124A, 124B) 은 또한 도 4b 의 예에서 도시된 16-포인트 DCT-II 유닛 (73) 에 대하여 위에서 설명된 것과 유사한 8-포인트 DCT-IV 유닛 (125) 을 형성할 수도 있다.
도 7c 는 4-포인트 PB DCT-II 유닛 (124) 을 좀 더 상세하게 도시하는 도면이다. 도 7c 의 예에서, 4-포인트 PB DCT-II 유닛 (124) 은, 4-포인트 PB DCT-II 유닛 (124) 이 버터플라이 유닛 (82) 을 포함한다는 점에서 도 4c 의 예에서 도시된 4-포인트 DCT-II 유닛 (76) 과 유사하다. 버터플라이 유닛 (82) 은 두 개의 상부 출력들에 대한 '0' 및 '2' 명명법 및 두 개의 하부 출력들에 대한 '1' 및 '3' 명명법에 의하여 표시되는 바와 같이, 입력들을 짝수 및 홀수 입력들로 재정렬한다. 홀수 입력들 상에서 동작하는 4-포인트 PB DCT-II 유닛 (124) 의 부분은 홀수 부분으로서 지칭될 수도 있는 반면에 짝수 입력들 상에서 동작하는 부분은 짝수 부분으로서 지칭될 수도 있다.
4-포인트 PB DCT-II 유닛 (124) 의 짝수 부분은 4-포인트 DCT-II 유닛 (76) 에 대하여 위에서 설명된 것과 실질적으로 유사하다. 홀수 부분에서, 버터플라이를 포함하는 것이 아니라, 4-포인트 PB DCT-II 유닛 (124) 은 행렬 승산 유닛 (matrix multiplication unit; MMU) (130) ("MMU (130)") 을 포함한다. 행렬 승산 유닛 (130) 은 행렬 승산을 홀수 입력들 상에 수행할 수도 있다. 승산을 수행하기 위하여 사용되는 MMU (130) 내의 행렬의 계수들은 아래의 표 11 에서 보여질 수도 있다. 이러한 행렬은 최신 HEVC 테스트 모델 (HM5.0) 에서 사용된다. 행렬 승산 스테이지 이후에 우측 천이를 도입하여 출력 값들을 정규화하는 것이 필요할 수도 있다.
Figure pat00038
도 7d 는 8-포인트 PB DCT-II 유닛 (122) 을 좀 더 상세하게 도시하는 블록도이다. 도 7d 의 예에서, 8-포인트 PB DCT-II 유닛 (122) 은 도 4d 의 예에서 도시된 8-포인트 DCT-II 유닛 (72) 에 대하여 위에서 설명된 버터플라이 유닛 (84) 과 실질적으로 유사한 버터플라이 유닛 (84) 을 포함한다. 어떠한 경우에서도, 버터플라이 유닛 (84) 은 짝수 입력들을 생성하기 위한 교차-가산들 및 홀수 입력들을 생성하기 위한 교차-감산들을 역시 수행하면서 자신의 입력들을 짝수 및 홀수 입력들로 재정렬한다. 짝수 입력들 상에서 동작하는 8-포인트 PB DCT-II 유닛 (122) 의 부분은 짝수 부분으로서 지칭될 수도 있는 반면에 홀수 입력들 상에서 동작하는 부분은 홀수 부분으로서 지칭될 수도 있다. 이러한 실례에서 짝수 부분은 네스팅된 4-포인트 PB DCT-II 유닛 (124C) 을 포함하는데, 이것은 도 7c 의 예에 대하여 위에서 설명된 4-포인트 DCT-II 유닛 (124) 과 실질적으로 유사하다.
8-포인트 PB DCT-II 유닛 (122) 의 짝수 부분은 8-포인트 DCT-II 유닛 (72) 에 대하여 위에서 설명된 것과 실질적으로 유사하다. 그러나, 홀수 부분에서, 버터플라이를 포함하는 것이 아니라, 8-포인트 PB DCT-II 유닛 (122) 은 행렬 승산 유닛 (MMU) (132) ("MMU (132)") 을 포함한다. 행렬 승산 유닛 (132) 은 행렬 승산을 홀수 입력들 상에 수행할 수도 있다. 승산을 수행하기 위하여 사용되는 MMU (132) 내의 행렬의 계수들은 아래의 표 12 에서 보여질 수도 있다. 이러한 행렬은 최신 HEVC 테스트 모델 (HM5.0) 에서 사용된다. 행렬 승산 스테이지 이후에 우측 천이를 도입하여 출력 값들을 정규화하는 것이 필요할 수도 있다.
Figure pat00039
도 7e 는 8-포인트 PB DCT-IV 유닛 (125) 을 좀 더 상세하게 도시하는 블록도이다. 도 7e 의 예에서, 8-포인트 PB DCT-IV 유닛 (125) 은, 위에서 언급된 바와 같이, 두 개의 4-포인트 DCT-II 유닛들 (124A, 124B) 을 포함하는데, 이들 각각은 도 7c 의 예에 대하여 위에서 설명된 4-포인트 DCT-II 유닛 (124) 과 실질적으로 유사할 수도 있다. 또한, 8-포인트 DCT-IV 유닛 (125) 은, 역시 위에서 언급된 바와 같이, 인자 승산 유닛 (78) 및 교차-가산 유닛 (80) 을 포함한다. 인자 승산 유닛 (78) 은 8-포인트 DCT-IV 유닛 (125) 으로의 입력들을 인자들 H, I, J, K, L, M, 및 N에 의하여 승산하며, 인자들에 의하여 승산되기만 하면, 상부 4 개의 입력들을 하부 4 개의 입력들과 교차-가산하고 그리고 상부 4 개의 입력들을 하부 4 개의 입력들로부터 교차-감산한다. 그러면, 상부 4 개의 입력들은 4-포인트 DCT-II 유닛 (124A) 에 의하여 처리되고, 반면에 하부 4 개의 입력들은 4-포인트 DCT-II 유닛 (124B) 에 의하여 처리된다. 그러면, 교차-가산 유닛 (80) 은 하부 7 개의 입력들을 교차 가산/감산한다 (여기에서 감산은 가산의 다른 형태로서 간주된다).
위에서 하나 이상의 네스팅된 16-포인트 DCT-II 및 DCT-III 및 8-포인트 DCT-II 및 DCT-III 및 하나 이상의 네스팅된 4-포인트 DCT-II 및 DCT-III을 포함하는 사이즈 32 의 DCT-II 및 DCT-III에 대하여 설명된 반면에, 이 기법들은 이러한 특정 사이즈들로 제한되어서는 안된다. 대신에, 이 기법들은 더 작게 사이징된 네스팅된 DCT-II 및 DCT-III을 포함하는 임의의 사이즈의 임의의 DCT-II 또는 DCT-III에 적용할 수도 있다. 결과적으로, 이 기법들은 이러한 관점에서 본 개시물에서 설명된 예들로 제한되어서는 안된다.
본 개시물의 기법들은 무선 통신 디바이스 핸드셋, 예컨대 모바일 폰, 집적회로 (IC) 또는 IC들의 세트 (즉, 칩 셋) 을 포함하는, 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 임의의 컴포넌트들, 모듈들 또는 유닛들은 기능성 양태들을 강조하기 위하여 설명되어 왔으며 그리고 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 본 명세서에서 설명된 기법들은 또한 하드웨어로 또는 하드웨어, 소프트웨어, 펌웨어의 임의의 조합으로 구현될 수도 있다. 모듈들, 유닛들 또는 컴포넌트들로서 설명된 임의의 피쳐들은 통합형 로직 디바이스 내에 함께 또는 개별적으로 별개이지만 상호동작가능 로직 디바이스들로서 구현될 수도 있다. 몇 가지 경우들에서는, 다양한 피쳐들은 집적 회로 디바이스, 예컨대 집적 회로 칩 또는 칩셋으로서 구현될 수도 있다.
만일 소프트웨어로 구현되면, 기법들은 적어도 부분적으로 명령들로서, 프로세서 내에서 실행시, 위에서 설명된 방법들 중 하나 이상을 수행하는 명령들을 포함하는 컴퓨터-판독가능 매체에 의하여 실현될 수도 있다. 컴퓨터-판독가능 매체는 물리적 비 일시적 구조인 컴퓨터-판독가능 저장 매체를 포함할 수도 있으며, 패키징 재료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터-판독가능 저장 매체는 랜덤 액세스 메모리 (RAM), 예컨대 동기화 동적 랜덤 액세스 메모리 (SDRAM), 판독-전용 메모리 (ROM), 비-휘발성 랜덤 액세스 메모리 (NVRAM), 전기적 소거가능 프로그래밍가능 판독-전용 메모리 (EEPROM), 플래시 메모리, 자기적 또는 광학적 데이터 스토리지 미디어, 및 기타 등등을 포함할 수도 있다.
코드 또는 명령들은 하나 이상의 프로세서들, 예컨대 하나 이상의 디지털 신호 프로세서들 (digital signal processors; DSPs), 범용 마이크로프로세서들, 주문형 집적회로들 (application specific integrated circuits; ASICs), 필드 프로그램가능 로직 어레이들 (field programmable logic arrays; FPGAs), 또는 다른 균등한 집적 또는 이산 로직 회로부에 의하여 실행될 수도 있다. 이에 상응하여, 용어 "프로세서"는 본 명세서에서 사용될 때, 앞선 구조 또는 본 명세서에서 설명되는 기법들의 구현에 적합한 임의의 다른 구조 중의 임의의 것을 지칭할 수도 있다. 또한, 일부 양태들에서, 본원에서 설명되는 기능성은 인코딩 및 디코딩을 위하여 구성되는 전용 소프트웨어 모듈들 및/또는 하드웨어 모듈들 내에 제공되거나, 또는 결합형 비디오 코덱 (codec) 내에 통합될 수도 있다. 또한, 이러한 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들 내에 온전히 구현될 수 있다.
개시물은 또한 본 개시물에서 설명된 기법들 중 하나 이상을 구현하기 위한 회로부를 포함하는 다양한 집적 회로 디바이스들 중 임의의 것을 고려한다. 이러한 회로부는 단일 집적 회로 칩 내에 또는 소위 칩셋 내의 다중의 상호동작가능 집적 회로 칩들 내에 제공될 수도 있다. 이러한 집적 회로 디바이스들은 다양한 애플리케이션들에서 사용될 수도 있는데, 이들 중 몇몇은 무선 통신 디바이스들, 예컨대 모바일 전화기 핸드셋들 내에서의 사용을 포함할 수도 있다.
이 기법들의 다양한 양태들이 설명되어 왔다. 이러한 그리고 다른 양태들은 후속하는 청구항들의 범위 내에 속한다.

Claims (1)

  1. 본원 발명의 설명에 기재된 발명.
KR1020177012024A 2011-01-10 2012-01-10 미디어 데이터 코딩을 위한 32-포인트 변환 KR20170051540A (ko)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US201161431343P 2011-01-10 2011-01-10
US61/431,343 2011-01-10
US201161433015P 2011-01-14 2011-01-14
US61/433,015 2011-01-14
US201161433351P 2011-01-17 2011-01-17
US61/433,351 2011-01-17
US201161446834P 2011-02-25 2011-02-25
US61/446,834 2011-02-25
US201161504146P 2011-07-01 2011-07-01
US61/504,146 2011-07-01
US13/346,632 US9824066B2 (en) 2011-01-10 2012-01-09 32-point transform for media data coding
US13/346,632 2012-01-09
PCT/US2012/020755 WO2012096943A2 (en) 2011-01-10 2012-01-10 32-point transform for media data coding

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020137021148A Division KR20130116924A (ko) 2011-01-10 2012-01-10 미디어 데이터 코딩을 위한 32-포인트 변환

Publications (1)

Publication Number Publication Date
KR20170051540A true KR20170051540A (ko) 2017-05-11

Family

ID=46455218

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137021148A KR20130116924A (ko) 2011-01-10 2012-01-10 미디어 데이터 코딩을 위한 32-포인트 변환
KR1020177012024A KR20170051540A (ko) 2011-01-10 2012-01-10 미디어 데이터 코딩을 위한 32-포인트 변환

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020137021148A KR20130116924A (ko) 2011-01-10 2012-01-10 미디어 데이터 코딩을 위한 32-포인트 변환

Country Status (6)

Country Link
US (1) US9824066B2 (ko)
EP (1) EP2663933A2 (ko)
JP (3) JP5797774B2 (ko)
KR (2) KR20130116924A (ko)
CN (1) CN103380425B (ko)
WO (1) WO2012096943A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019203569A1 (ko) * 2018-04-17 2019-10-24 엘지전자 주식회사 전처리/후처리 행렬에 기초하는 근사 변환을 이용하여 비디오 신호를 처리하는 방법 및 장치
WO2019231291A1 (ko) * 2018-05-31 2019-12-05 엘지전자 주식회사 레이어드 기븐스 변환을 이용하여 변환을 수행하는 방법 및 장치

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9110849B2 (en) * 2009-04-15 2015-08-18 Qualcomm Incorporated Computing even-sized discrete cosine transforms
US9069713B2 (en) * 2009-06-05 2015-06-30 Qualcomm Incorporated 4X4 transform for media coding
US8762441B2 (en) * 2009-06-05 2014-06-24 Qualcomm Incorporated 4X4 transform for media coding
US9081733B2 (en) * 2009-06-24 2015-07-14 Qualcomm Incorporated 16-point transform for media data coding
US8451904B2 (en) * 2009-06-24 2013-05-28 Qualcomm Incorporated 8-point transform for media data coding
US9118898B2 (en) * 2009-06-24 2015-08-25 Qualcomm Incorporated 8-point transform for media data coding
US9075757B2 (en) * 2009-06-24 2015-07-07 Qualcomm Incorporated 16-point transform for media data coding
JPWO2013046504A1 (ja) * 2011-09-29 2015-03-26 パナソニックIpマネジメント株式会社 算術復号装置、画像復号装置、および算術復号方法
US10642921B2 (en) * 2011-11-03 2020-05-05 Texas Instruments Incorporated Unified forward and inverse transform architecture
TWI443527B (zh) * 2012-01-02 2014-07-01 Univ Nat Cheng Kung 遞迴式第四型離散餘弦之系統
US9749633B2 (en) * 2012-01-19 2017-08-29 Vid Scale, Inc. System and method of video coding quantization and dynamic range control
US9781447B1 (en) 2012-06-21 2017-10-03 Google Inc. Correlation based inter-plane prediction encoding and decoding
US9167268B1 (en) 2012-08-09 2015-10-20 Google Inc. Second-order orthogonal spatial intra prediction
US9344742B2 (en) * 2012-08-10 2016-05-17 Google Inc. Transform-domain intra prediction
CN103067718B (zh) * 2013-01-30 2015-10-14 上海交通大学 适用于数字视频编解码的一维离散余弦逆变换模块电路
US9848188B1 (en) * 2013-06-12 2017-12-19 Apple Inc. Video coding transform systems and methods
CN103747266A (zh) * 2013-12-24 2014-04-23 华为技术有限公司 一种数据变换方法和设备
KR101601864B1 (ko) * 2014-02-25 2016-03-10 숭실대학교산학협력단 동영상 코덱의 역변환 방법 및 그 장치
US10863200B2 (en) * 2014-07-25 2020-12-08 Intel Corporation Techniques for performing a forward transformation by a video encoder using a forward transform matrix
WO2016040865A1 (en) * 2014-09-12 2016-03-17 Vid Scale, Inc. Inter-component de-correlation for video coding
FR3044507A1 (fr) * 2015-11-30 2017-06-02 Orange Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants
US10390048B2 (en) * 2016-02-15 2019-08-20 Qualcomm Incorporated Efficient transform coding using optimized compact multi-pass transforms
US10349085B2 (en) * 2016-02-15 2019-07-09 Qualcomm Incorporated Efficient parameter storage for compact multi-pass transforms
US10448053B2 (en) * 2016-02-15 2019-10-15 Qualcomm Incorporated Multi-pass non-separable transforms for video coding
US11368720B2 (en) * 2016-05-13 2022-06-21 Sony Corporation Image processing apparatus and method
KR20190039562A (ko) 2016-09-01 2019-04-12 엘지전자 주식회사 레이어드 기븐스 변환을 이용하여 변환을 수행하는 방법 및 장치
CN107027039B (zh) * 2017-04-14 2019-08-27 西安电子科技大学 基于高效视频编码标准的离散余弦变换实现方法
US20200221130A1 (en) * 2017-09-03 2020-07-09 Lg Electronics Inc. Method and device for performing transform using layered givens transform
US10904573B2 (en) * 2017-11-30 2021-01-26 Embry-Riddle Aeronautical University, Inc. Reduced multiplicative complexity discrete cosine transform (DCT) circuitry
US10863199B2 (en) * 2018-03-26 2020-12-08 Qualcomm Incorporated Minimization of transform memory and latency via parallel factorizations
WO2019190282A1 (ko) * 2018-03-29 2019-10-03 엘지전자 주식회사 곱셈 없는 회전 기반 변환에 기초하여 비디오 신호를 처리하는 방법 및 장치
US10536720B2 (en) * 2018-05-07 2020-01-14 Tencent America LLC Method, apparatus and medium for decoding or encoding
WO2019235491A1 (ja) * 2018-06-08 2019-12-12 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
EP3874412A1 (en) * 2018-10-30 2021-09-08 Raytheon Company Computer architecture for multiplier-less machine learning
US11284112B2 (en) 2018-12-06 2022-03-22 Tencent America LLC Method and apparatus for a primary transform using an 8-bit transform core
CN109788286B (zh) * 2019-02-01 2021-06-18 北京大学深圳研究生院 一种编码、解码变换方法、系统、设备及计算机可读介质

Family Cites Families (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2581463B1 (fr) * 1985-05-03 1989-09-08 Thomson Csf Dispositifs de calcul de transformees cosinus, dispositif de codage et dispositif de decodage d'images comportant de tels dispositifs de calcul
FR2582424B1 (fr) * 1985-05-22 1989-06-30 Guichard Jacques Circuit de calcul rapide de la transformee en cosinus, directe ou inverse, d'un signal discret
EP0376683A2 (en) * 1988-12-27 1990-07-04 Kabushiki Kaisha Toshiba Discrete cosine transforming apparatus
US5163103A (en) * 1988-12-27 1992-11-10 Kabushiki Kaisha Toshiba Discrete cosine transforming apparatus
US5257213A (en) * 1991-02-20 1993-10-26 Samsung Electronics Co., Ltd. Method and circuit for two-dimensional discrete cosine transform
US5253055A (en) 1992-07-02 1993-10-12 At&T Bell Laboratories Efficient frequency scalable video encoding with coefficient selection
US5408425A (en) * 1993-05-25 1995-04-18 The Aerospace Corporation Split-radix discrete cosine transform
US5508949A (en) 1993-12-29 1996-04-16 Hewlett-Packard Company Fast subband filtering in digital signal coding
US5649077A (en) 1994-03-30 1997-07-15 Institute Of Microelectronics, National University Of Singapore Modularized architecture for rendering scaled discrete cosine transform coefficients and inverse thereof for rapid implementation
TW284869B (ko) 1994-05-27 1996-09-01 Hitachi Ltd
US5712809A (en) * 1994-10-31 1998-01-27 Vivo Software, Inc. Method and apparatus for performing fast reduced coefficient discrete cosine transforms
JP3115199B2 (ja) 1994-12-16 2000-12-04 松下電器産業株式会社 画像圧縮符号化装置
US5737450A (en) 1995-05-15 1998-04-07 Polaroid Corporation Method and apparatus for fast two-dimensional cosine transform filtering
JP2778622B2 (ja) 1995-06-06 1998-07-23 日本電気株式会社 2次元dct回路
JPH09212484A (ja) 1996-01-30 1997-08-15 Texas Instr Inc <Ti> 離散コサイン変換方法
CN1268231A (zh) * 1997-08-25 2000-09-27 夸尔柯姆股份有限公司 数据块规模可变的2维逆向离散余弦变换机
EP0917070B1 (en) 1997-11-17 2010-07-14 Sony Electronics Inc. Method and apparatus for performing discrete cosine transformation and its inverse
US6252994B1 (en) * 1998-01-26 2001-06-26 Xerox Corporation Adaptive quantization compatible with the JPEG baseline sequential mode
US6222944B1 (en) 1998-05-07 2001-04-24 Sarnoff Corporation Down-sampling MPEG image decoder
JP2001346213A (ja) 2000-06-02 2001-12-14 Nec Corp 離散コサイン変換装置及びその離散コサイン変換方法
WO2001059603A1 (en) 2000-02-09 2001-08-16 Cheng T C Fast method for the forward and inverse mdct in audio coding
EP1352336A4 (en) 2000-10-23 2006-09-06 Ibm FASTER TRANSFORMATIONS THROUGH THE USE OF SCALED TERMS, EARLY BREAKDOWN AND PRECISION REFINANCES
US7929610B2 (en) 2001-03-26 2011-04-19 Sharp Kabushiki Kaisha Methods and systems for reducing blocking artifacts with reduced complexity for spatially-scalable video coding
US7366236B1 (en) 2001-06-04 2008-04-29 Cisco Sytems Canada Co. Source adaptive system and method for 2D iDCT
US7185037B2 (en) 2001-08-23 2007-02-27 Texas Instruments Incorporated Video block transform
DE60220295T2 (de) 2001-08-24 2008-01-17 Koninklijke Philips Electronics N.V. Addieren von halbbildern eines bildes
US7082450B2 (en) 2001-08-30 2006-07-25 Nokia Corporation Implementation of a transform and of a subsequent quantization
US6882685B2 (en) 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
KR100481067B1 (ko) 2001-09-28 2005-04-07 브이케이 주식회사 분산 산술 처리장치 및 그를 이용한 이차원 이산여현변환 처리장치
US7088791B2 (en) * 2001-10-19 2006-08-08 Texas Instruments Incorporated Systems and methods for improving FFT signal-to-noise ratio by identifying stage without bit growth
US7130876B2 (en) 2001-11-30 2006-10-31 General Instrument Corporation Systems and methods for efficient quantization
CN101448162B (zh) * 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
FR2834362A1 (fr) 2001-12-28 2003-07-04 Koninkl Philips Electronics Nv Dispositif de transformation inverse adaptatif
JP2003223433A (ja) 2002-01-31 2003-08-08 Matsushita Electric Ind Co Ltd 直交変換方法、直交変換装置、符号化方法、符号化装置、逆直交変換方法、逆直交変換装置、復号化方法、及び、復号化装置
US7007055B2 (en) 2002-03-12 2006-02-28 Intel Corporation Method of performing NxM Discrete Cosine Transform
US7242713B2 (en) 2002-05-02 2007-07-10 Microsoft Corporation 2-D transforms for image and video coding
US7437394B2 (en) 2002-06-19 2008-10-14 The Aerospace Corporation Merge and split discrete cosine block transform method
US7760950B2 (en) 2002-09-26 2010-07-20 Ntt Docomo, Inc. Low complexity and unified transforms for video coding
US20040136602A1 (en) 2003-01-10 2004-07-15 Nithin Nagaraj Method and apparatus for performing non-dyadic wavelet transforms
US20040141654A1 (en) * 2003-01-17 2004-07-22 Yi-Yung Jeng Texture encoding procedure
US7412100B2 (en) 2003-09-04 2008-08-12 Qualcomm Incorporated Apparatus and method for sub-sampling images in a transform domain
US7379500B2 (en) 2003-09-30 2008-05-27 Microsoft Corporation Low-complexity 2-power transform for image/video compression
TWI241074B (en) 2003-11-05 2005-10-01 Bing-Fei Wu Image compression system using two-dimensional discrete wavelet transformation
TWI240560B (en) 2003-12-03 2005-09-21 Via Tech Inc Control device, system and method for reading multi-pixel
US20050213835A1 (en) 2004-03-18 2005-09-29 Huazhong University Of Science & Technology And Samsung Electronics Co., Ltd. Integer transform matrix selection method in video coding and related integer transform method
US8861600B2 (en) 2004-06-18 2014-10-14 Broadcom Corporation Method and system for dynamically configurable DCT/IDCT module in a wireless handset
US7587093B2 (en) 2004-07-07 2009-09-08 Mediatek Inc. Method and apparatus for implementing DCT/IDCT based video/image processing
US7471850B2 (en) 2004-12-17 2008-12-30 Microsoft Corporation Reversible transform for lossy and lossless 2-D data compression
US7792385B2 (en) 2005-01-25 2010-09-07 Globalfoundries Inc. Scratch pad for storing intermediate loop filter data
TW200643848A (en) 2005-06-01 2006-12-16 Wintek Corp Method and apparatus for four-color data conversion
US20070025441A1 (en) 2005-07-28 2007-02-01 Nokia Corporation Method, module, device and system for rate control provision for video encoders capable of variable bit rate encoding
TWI280804B (en) 2005-09-26 2007-05-01 Yuh-Jue Chuang Method for splitting 8x8 DCT into four 4x4 modified DCTS used in AVC/H. 264
US7725516B2 (en) 2005-10-05 2010-05-25 Qualcomm Incorporated Fast DCT algorithm for DSP with VLIW architecture
US20070200738A1 (en) 2005-10-12 2007-08-30 Yuriy Reznik Efficient multiplication-free computation for signal and data processing
TWI311856B (en) 2006-01-04 2009-07-01 Quanta Comp Inc Synthesis subband filtering method and apparatus
US8595281B2 (en) 2006-01-11 2013-11-26 Qualcomm Incorporated Transforms with common factors
CN100562111C (zh) 2006-03-28 2009-11-18 华为技术有限公司 离散余弦逆变换方法及其装置
US8849884B2 (en) 2006-03-29 2014-09-30 Qualcom Incorporate Transform design with scaled and non-scaled interfaces
EP1850597A1 (en) 2006-04-24 2007-10-31 Universität Dortmund Method and circuit for performing a cordic based Loeffler discrete cosine transformation (DCT), particularly for signal processing
US8606023B2 (en) * 2006-06-26 2013-12-10 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
US8571340B2 (en) 2006-06-26 2013-10-29 Qualcomm Incorporated Efficient fixed-point approximations of forward and inverse discrete cosine transforms
US8582663B2 (en) 2006-08-08 2013-11-12 Core Wireless Licensing S.A.R.L. Method, device, and system for multiplexing of video streams
US8548815B2 (en) 2007-09-19 2013-10-01 Qualcomm Incorporated Efficient design of MDCT / IMDCT filterbanks for speech and audio coding applications
US8654833B2 (en) 2007-09-26 2014-02-18 Qualcomm Incorporated Efficient transformation techniques for video coding
EP2227020B1 (en) 2007-09-28 2014-08-13 Dolby Laboratories Licensing Corporation Video compression and transmission techniques
US20090141808A1 (en) 2007-11-30 2009-06-04 Yiufai Wong System and methods for improved video decoding
US8631060B2 (en) * 2007-12-13 2014-01-14 Qualcomm Incorporated Fast algorithms for computation of 5-point DCT-II, DCT-IV, and DST-IV, and architectures
KR20090078494A (ko) 2008-01-15 2009-07-20 삼성전자주식회사 영상 데이터의 디블록킹 필터링 방법 및 디블록킹 필터
CN101330616B (zh) 2008-07-31 2011-04-13 上海交通大学 视频解码过程中反离散余弦变换的硬件实现装置及方法
RU2497303C2 (ru) 2008-10-03 2013-10-27 Квэлкомм Инкорпорейтед Видео кодирование с использованием преобразования больше чем 4×4 и 8×8
US20100172409A1 (en) 2009-01-06 2010-07-08 Qualcom Incorporated Low-complexity transforms for data compression and decompression
US9110849B2 (en) 2009-04-15 2015-08-18 Qualcomm Incorporated Computing even-sized discrete cosine transforms
US8762441B2 (en) 2009-06-05 2014-06-24 Qualcomm Incorporated 4X4 transform for media coding
US9069713B2 (en) 2009-06-05 2015-06-30 Qualcomm Incorporated 4X4 transform for media coding
US9118898B2 (en) 2009-06-24 2015-08-25 Qualcomm Incorporated 8-point transform for media data coding
US9075757B2 (en) 2009-06-24 2015-07-07 Qualcomm Incorporated 16-point transform for media data coding
US9081733B2 (en) 2009-06-24 2015-07-14 Qualcomm Incorporated 16-point transform for media data coding
US8451904B2 (en) 2009-06-24 2013-05-28 Qualcomm Incorporated 8-point transform for media data coding
CN101989253B (zh) * 2009-07-31 2012-08-29 鸿富锦精密工业(深圳)有限公司 离散余弦转换电路及使用其的影像处理装置
BR112013007023A2 (pt) 2010-09-28 2017-07-25 Samsung Electronics Co Ltd método de codificação de vídeo e método de decodificação de vídeo

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Yoon Mi Hong외2. Low-complexity 16X16 and 32X32 transforms and partial frequency transform. 2010. *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019203569A1 (ko) * 2018-04-17 2019-10-24 엘지전자 주식회사 전처리/후처리 행렬에 기초하는 근사 변환을 이용하여 비디오 신호를 처리하는 방법 및 장치
US11350130B2 (en) 2018-04-17 2022-05-31 Lg Electronics Inc. Method and apparatus for processing video signal by using approximation transform on basis of preprocessing/postprocessing matrix
WO2019231291A1 (ko) * 2018-05-31 2019-12-05 엘지전자 주식회사 레이어드 기븐스 변환을 이용하여 변환을 수행하는 방법 및 장치
US11470316B2 (en) 2018-05-31 2022-10-11 Lg Electronics Inc. Method and device for performing transformation by using layered-givens transform

Also Published As

Publication number Publication date
EP2663933A2 (en) 2013-11-20
JP5797774B2 (ja) 2015-10-21
KR20130116924A (ko) 2013-10-24
US9824066B2 (en) 2017-11-21
JP2018038046A (ja) 2018-03-08
WO2012096943A2 (en) 2012-07-19
WO2012096943A3 (en) 2013-08-08
JP2014509108A (ja) 2014-04-10
CN103380425A (zh) 2013-10-30
JP2015216650A (ja) 2015-12-03
CN103380425B (zh) 2017-12-26
US20120177108A1 (en) 2012-07-12

Similar Documents

Publication Publication Date Title
KR20170051540A (ko) 미디어 데이터 코딩을 위한 32-포인트 변환
US10972739B2 (en) Low-complexity two-dimensional (2D) separable transform design with transpose buffer management
KR101315629B1 (ko) 미디어 데이터 코딩을 위한 16-포인트 변환
RU2482616C2 (ru) Видеокодирование коэффициентов фильтра на основе горизонтальной и вертикальной симметрии
RU2547239C2 (ru) Зависящее от режима сканирование коэффициентов блока видеоданных
KR101315565B1 (ko) 미디어 데이터 코딩을 위한 16-포인트 변환
KR101477435B1 (ko) 비디오 코딩에서 고정 소수점 변환들을 위한 가변 로컬화 비트 깊이 증가
US20170085875A1 (en) Transform and quantization architecture for video coding and decoding
JP2012531670A (ja) メディアデータ符号化用8点変換
JP2013502624A (ja) メディアデータ符号化用8点変換
KR20150135519A (ko) 인트라 예측 샘플을 생성하는 방법, 장치 및 시스템
EP3554075A1 (en) Method and apparatus for coding and decoding video using adative sorting tables
Richter Lossless coding extensions for JPEG
AU2011247855A1 (en) Method, apparatus and system for updating a probability estimate for arithmetic coding
JP2021520698A (ja) ビデオのコード化および復号。

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application