KR20140126370A - 인코딩된 비디오 데이터의 변환 유닛의 서브세트를 인코딩 및 디코딩하는 방법, 장치 및 시스템 - Google Patents

인코딩된 비디오 데이터의 변환 유닛의 서브세트를 인코딩 및 디코딩하는 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR20140126370A
KR20140126370A KR1020147025173A KR20147025173A KR20140126370A KR 20140126370 A KR20140126370 A KR 20140126370A KR 1020147025173 A KR1020147025173 A KR 1020147025173A KR 20147025173 A KR20147025173 A KR 20147025173A KR 20140126370 A KR20140126370 A KR 20140126370A
Authority
KR
South Korea
Prior art keywords
decoding
rice
parameter
subset
golomb
Prior art date
Application number
KR1020147025173A
Other languages
English (en)
Other versions
KR101818102B1 (ko
Inventor
볼로디미르 콜레스니코프
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AU2012202182A external-priority patent/AU2012202182B2/en
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20140126370A publication Critical patent/KR20140126370A/ko
Application granted granted Critical
Publication of KR101818102B1 publication Critical patent/KR101818102B1/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4068Parameterized codes
    • H03M7/4075Golomb codes
    • 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/124Quantisation
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛(400)을 디코딩하는 방법이 개시된다. 상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정한다. 상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 소정의 라이스 파라미터를 선택한다. 상기 소정의 라이스 파라미터는 결정된 유효 레지듀얼 계수의 수가 소정의 임계값보다 높으면 제로 설정으로부터 오프셋된다. 상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 소정의 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩한다.

Description

인코딩된 비디오 데이터의 변환 유닛의 서브세트를 인코딩 및 디코딩하는 방법, 장치 및 시스템{METHOD, APPARATUS AND SYSTEM FOR ENCODING AND DECODING A SUBSET OF TRANSFORM UNITS OF ENCODED VIDEO DATA}
본 발명은 일반적으로 디지털 비디오 신호 처리에 관한 것으로, 특히, 비디오 데이터의 변환 유닛의 서브세트를 인코딩 및 디코딩하는 방법, 장치 및 시스템에 관한 것이다.
비디오 데이터의 송신 및 저장을 위한 애플리케이션을 구비하는 많은 비디오 코딩용 애플리케이션이 현재 존재한다. 많은 비디오 코딩 표준이 또한 개발되어 왔고 다른 표준이 현재 개발 중에 있다. 비디오 코딩 표준화에서의 최근 개발은 JCT-VC(Joint Collaborative Team on Video Coding)라 불리우는 그룹을 형성시켜왔다. JCT-VC는 VCEG(Video Coding Experts Group)로서 알려진 ITU-T(International Telecommunication Union-Telecommunication Standardisation Sector)의 SG16/Q6(Study Group 16, Question 6)의 멤버 및 MPEG(Moving Picture Experts Group)로서 알려진 ISO/IEC JTC1/SC29/WG11(International Organisations for Standardisation/International Electrotechnical Commission Joint Technical Committe 1/Subcommittee 29/Working Group 11)의 멤버를 구비한다.
JCT-VC는 "H.264/MPEG-4 AVC"로서 알려진 기존 비디오 코딩 표준을 크게 능가하는 새로운 비디오 코딩 표준을 생성하려는 목표를 갖는다. H.264/MPEG-4 AVC 표준은 MPEG-4 및 ITU-T H.263 등의 이전의 비디오 코딩 표준에 대한 큰 개선이다. 개발중인 새로운 비디오 코딩은 "HEVC(high efficiency video coding)이라 명명되었다. JCT-VC는 또한 높은 해상도 또는 높은 프레임 레이트에서 동작하기 위하여 표준의 구현을 스케일링할 때 어려움을 생성하는 HEVC에 대하여 제안된 기술로부터 발생하는 구현 도전(implementation challenges)을 고려하고 있다.
H.264/MPEG-4 AVC 비디오 코딩 표준은 비디오 데이터를 표시하기 위하여 레지듀얼(residual) 계수를 코딩할 때 높은 압축 효율을 달성하는데 어려움을 제공한다.
비디오 데이터는 프레임의 시퀀스에 의해 형성되고, 각각의 프레임은 샘플의 2차원 어레이를 갖는다. 일반적으로, 프레임은 하나의 휘도(루마) 및 2개의 색도(크로마) 채널을 구비한다. 색 정보는 일반적으로 YUV 등의 색 공간을 이용하여 표시되고, Y는 루마 채널이고 UV는 2개의 크로마 채널이다. YUV 등의 색 공간은, 프레임의 콘텐츠의 대부분이 루마 채널에 포함되고 UV 채널에 저장된 비교적 작은 양의 콘텐츠가 색 프레임을 재구성하기에 충분하다는 이점을 제공한다. 크로마 채널은 또한 무시할만한 지각 품질 손실을 갖는 더 낮은 공간 해상도로 다운 샘플링될 수 있다.
4:2:0으로서 알려진 공통으로 사용되는 크로마 포맷은 수직 및 수평 해상도의 절반을 갖는 각각의 크로마 채널을 야기한다. 각각의 프레임은 가장 큰 코딩 유닛(LCU; largest coding unit)으로 분해된다. 가장 큰 코딩 유닛(LCU)은 고정된 사이즈를 갖고, 에지 치수는 2의 제곱이고 64 루마 샘플 등의 동일한 폭 및 높이를 갖는다. 코딩 트리는 각각의 가장 큰 코딩 유닛(LCU)을 4개의 코딩 유닛(CU)으로 세분하는 것을 가능하게 하고, 각각의 CU는 부모 LCU의 폭 및 높이의 절반을 갖는다. 코딩 유닛(CU)의 각각은 또한 4개의 동일 사이즈의 코딩 유닛(CU)으로 세분될 수 있다. 이러한 세분 프로세스는 가장 작은 코딩 유닛(SCU) 사이즈에 도달할 때까지 재귀적으로 적용되어, 코딩 유닛(CU)이 최소 지원 사이즈까지 정의될 수 있다. 코딩 유닛의 계층으로의 가장 큰 코딩 유닛의 재귀적 세분은 쿼드 트리 구조를 갖고 코딩 트리라 한다. 세분화 프로세스는 빈(bin)으로 코딩된 플래그의 시퀀스로서 통신 비트 스트림에서 인코딩된다. 그러므로, 코딩 유닛은 정사각형 형상을 갖는다.
코딩 유닛의 세트가 더 세분되지 않는 코딩 트리에 존재하여 코딩 트리의 리프 노드(leaf node)를 차지한다. 변환 트리는 코딩 유닛에 존재한다. 변환 트리는 코딩 트리에 사용되는 쿼드 트리 구조를 이용하여 코딩 유닛을 더 분해할 수 있다. 변환 트리의 리프 노드에서, 레지듀얼 데이터는 변환 유닛(TU)을 이용하여 인코딩된다. 코딩 트리에 반하여, 변환 트리는 코딩 유닛을 비-정사각형 형상을 갖는 변환 유닛으로 세분할 수 있다. 또한, 변환 트리 구조는 변환 유닛(TU)이 부모 코딩 유닛에 의해 제공되는 모든 영역을 차지하는 것을 요구하지 않는다.
코딩 트리의 리프 노드에서의 각각의 코딩 유닛은, 각각 예측 유닛(PU)으로서 알려진 예측 데이터 샘플의 하나 이상의 어레이로 세분된다. 각각의 예측 유닛(PU)은 인트라 예측 또는 인터 예측 프로세스를 적용함으로써 도출된 입력 비디오 프레임 데이터의 일부의 예측을 포함한다.
코딩 유닛(CU) 내에서 예측 유닛(PU)을 코딩하는데 몇 개의 방법이 사용될 수 있다. 단일 예측 유닛(PU)이 코딩 유닛(CU)의 전체 영역을 차지하거나 코딩 유닛(CU)이 수평으로 또는 수직으로 2개의 동일 사이즈의 직사각형 예측 유닛(PU)으로 분할될 수 있다. 추가적으로, 코딩 유닛(CU)은 4개의 동일 사이즈의 정사각형 예측 유닛(PU)으로 분할될 수 있다.
비디오 인코더는 비디오 데이터를 신택스 엘리먼트의 시퀀스로 변환함으로써 비디오 데이터를 비트스트림으로 압축한다. CABAC(context adaptive binary arithmetic coding) 방식은 MPEG-4-AVC/H.264 비디오 압축 표준에서 정의된 것에 대하여 동일한 산술 코딩 방식을 이용하여 개발중인 HEVC 표준 내에서 정의된다. 개발중인 HEVC 표준에서, CABAC가 사용되면, 각각의 신택스 엘리먼트는 빈의 시퀀스로서 표현된다. 각각의 빈은 바이패스 코딩되거나 산술 코딩된다. 빈이 동일하게 0 또는 1일 가능성이 있으면 바이패스 코딩이 사용된다. 이 경우, 달성가능한 추가의 압축은 없다. 산술 코딩은 동일하지 않은 확률 분포를 갖는 빈에 사용된다. 각각의 산술 코딩 빈은 '컨텍스트'로 알려진 정보와 연관된다. 컨텍스트는 'valMPS'(likely bin value) 및 확률 상태를 포함하고, 정수는 valMPS의 추정 확률에 맵핑한다. 신택스 엘리먼트로부터 바이패스 코딩 빈 및 산술 평균 빈의 조합을 포함하는 이러한 빈의 시퀀스를 생성하는 것은 신택스 엘리먼트의 "이진화"로 알려져 있다.
비디오 인코더 또는 비디오 디코더에서, 개별 컨텍스트 정보가 각각의 빈에 이용가능하고, 빈에 대한 컨텍스트 선택은 코딩 효율을 개선하는 수단을 제공한다. 특히, 코딩 효율은, 연관된 컨텍스트 정보가 이용되면, 빈의 이전의 인스턴스로부터의 통계 특성이 빈의 현재 인스턴스의 통계 특성과 상관할 수 있도록 특정 빈을 선택함으로써 개선될 수 있다. 이러한 컨텍스트 선택은 빈번히 공간 로컬 정보를 이용하여 최적의 컨텍스트를 결정한다.
개발중인 HEVC 표준 및 H.264/MPEG-4 AVC에서, 현재 블록에 대한 예측은 다른 프레임으로부터 또는 이전에 디코딩된 현재 블록 내의 이웃 영역으로부터의 참조 샘플 데이터에 기초하여 도출된다. 예측 및 원하는 샘플 데이터 간의 차는 레지듀얼로서 알려져 있다. 레지듀얼의 주파수 도메인 표시는 레지듀얼 계수의 2차원 어레이이다. 관례상, 2차원 어레이의 상부 좌측 코너는 저주파수 정보를 나타내는 레지듀얼 계수를 포함한다.
일반적인 비디오 데이터에서, 샘플 값의 변화의 대부분은 점진적이어서, 레지듀얼 내에서 저주파수 정보의 우세를 유발한다. 이것은 2차원 어레이의 상부 좌측 코너에 위치하는 레지듀얼 계수에 대한 더 큰 크기로서 나타난다.
본 발명의 목적은 기존의 방식의 하나 이상의 단점을 실질적으로 극복하거나 적어도 개선하는 것이다.
본 개시의 일 양태에 따르면, 골롬-라이스(Golomb-Rice) 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 방법으로서,
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수(significant residual coefficient)를 결정하는 단계;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 단계 - 상기 미리정해진 라이스 파라미터는 결정된 유효 레지듀얼 계수의 수가 미리정해진 임계값보다 높으면 제로 설정으로부터 오프셋됨 -;
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 단계를 포함하는 방법이 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 장치로서,
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 수단;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 수단 - 상기 미리정해진 라이스 파라미터는 결정된 유효 레지듀얼 계수의 수가 미리정해진 임계값보다 높으면 제로 설정으로부터 오프셋됨 -;
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 수단을 포함하는 장치가 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 시스템으로서,
데이터 및 컴퓨터 프로그램을 저장하는 메모리;
상기 컴퓨터 프로그램을 실행하기 위하여 상기 메모리에 결합된 프로세서를 포함하고,
상기 컴퓨터 프로그램은,
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하고;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하고 - 상기 미리정해진 라이스 파라미터는 결정된 유효 레지듀얼 계수의 수가 미리정해진 임계값보다 높으면 제로 설정으로부터 오프셋됨 -;
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는
명령을 포함하는 시스템이 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 매체로서,
상기 프로그램은,
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 코드;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 코드 - 상기 미리정해진 라이스 파라미터는 결정된 유효 레지듀얼 계수의 수가 미리정해진 임계값보다 높으면 제로 설정으로부터 오프셋됨 -;
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 코드를 포함하는 컴퓨터 판독가능 매체가 제공된다.
본 개시의 다른 양태에 따르면, 비디오 데이터의 스트림을 디코딩하여 비디오 데이터의 디코딩된 스트림 내의 현재의 레지듀얼 계수의 값을 결정하는 방법으로서,
상기 비디오 데이터의 스트림으로부터 레지듀얼 계수의 변환 유닛을 수신하는 단계;
상기 변환 유닛의 현재의 레지듀얼 계수의 위치를 결정하는 단계;
상기 변환 유닛 내의 현재의 레지듀얼 계수의 위치가 미리정해진 임계값보다 크면 의존성이 없는 골롬-라이스 디코딩을 이용하여 상기 현재의 레지듀얼 계수를 디코딩하는 단계 - 상기 의존성이 없는 골롬-라이스는 미리정해진 골롬-라이스 값을 이용함 -;
상기 변환 유닛 내의 현재의 레지듀얼 계수의 위치가 상기 미리정해진 임계값보다 작으면 상기 현재의 계수에 대한 의존성 기반 골롬-라이스 디코딩을 이용하여 상기 현재의 레지듀얼 계수를 디코딩하는 단계 - 상기 의존성 기반 골롬-라이스 디코딩은 이전에 디코딩된 레지듀얼 계수 값을 이용하여 골롬-라이스 값을 선택함 -; 및
선택된 상기 골롬-라이스 디코딩 값을 이용하여 상기 현재의 레지듀얼 계수에 대한 값을 결정하는 단계를 포함하는 방법이 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 방법으로서,
상기 변환 유닛에 대한 양자화 파라미터를 결정하는 단계;
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 단계;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 단계 - 상기 미리정해진 라이스 파라미터는 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 작으면 제로 설정으로부터 오프셋됨 -; 및
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 단계를 포함하는 방법이 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 장치로서,
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 수단;
상기 변환 유닛에 대한 양자화 파라미터를 결정하는 수단;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 수단 - 상기 미리정해진 라이스 파라미터는 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 작으면 제로 설정으로부터 오프셋됨 -; 및
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 수단을 포함하는 장치가 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 시스템으로서,
데이터 및 컴퓨터 프로그램을 저장하는 메모리; 및
상기 컴퓨터 프로그램을 실행하기 위하여 상기 메모리에 결합된 프로세서를 포함하고,
상기 컴퓨터 프로그램은,
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하고;
상기 변환 유닛에 대한 양자화 파라미터를 결정하고;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하고 - 상기 미리정해진 라이스 파라미터는 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 작으면 제로 설정으로부터 오프셋됨 -;
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는
명령을 포함하는 시스템이 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 매체로서,
상기 프로그램은,
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 코드;
상기 변환 유닛에 대한 양자화 파라미터를 결정하는 코드;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 코드 - 상기 미리정해진 라이스 파라미터는 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 작으면 제로 설정으로부터 오프셋됨 -; 및
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 코드를 포함하는 컴퓨터 판독가능 매체가 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 방법으로서,
상기 변환 유닛에 대한 양자화 파라미터를 결정하는 단계;
상기 변환 유닛에 대한 폭 및 높이를 결정하는 단계;
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 단계;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 단계 - 상기 미리정해진 라이스 파라미터는, 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 작거나 같고 상기 폭이 미리정해진 임계값보다 크고 상기 높이가 미리정해진 임계값보다 크면 제로 설정으로부터 오프셋됨 -; 및
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 단계를 포함하는 방법이 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 장치로서,
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 수단;
상기 변환 유닛에 대한 양자화 파라미터를 결정하는 수단;
상기 변환 유닛에 대한 폭 및 높이를 결정하는 수단;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 수단 - 상기 미리정해진 라이스 파라미터는, 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 작거나 같고 상기 폭이 미리정해진 임계값보다 크고 상기 높이가 미리정해진 임계값보다 크면 제로 설정으로부터 오프셋됨 -; 및
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 수단을 포함하는 장치가 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 시스템으로서,
데이터 및 컴퓨터 프로그램을 저장하는 메모리; 및
상기 컴퓨터 프로그램을 실행하기 위하여 상기 메모리에 결합된 프로세서를 포함하고,
상기 컴퓨터 프로그램은,
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하고;
상기 변환 유닛에 대한 양자화 파라미터를 결정하고;
상기 변환 유닛에 대한 폭 및 높이를 결정하고;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하고 - 상기 미리정해진 라이스 파라미터는, 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 작거나 같고 상기 폭이 미리정해진 임계값보다 크고 상기 높이가 미리정해진 임계값보다 크면 제로 설정으로부터 오프셋됨 -;
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는
명령을 포함하는 시스템이 제공된다.
본 개시의 다른 양태에 따르면, 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 매체로서,
상기 프로그램은,
상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 코드;
상기 변환 유닛에 대한 양자화 파라미터를 결정하는 코드;
상기 변환 유닛에 대한 폭 및 높이를 결정하는 코드;
상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 코드 - 상기 미리정해진 라이스 파라미터는, 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 작거나 같고 상기 폭이 미리정해진 임계값보다 크고 상기 높이가 미리정해진 임계값보다 크면 제로 설정으로부터 오프셋됨 -; 및
상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 코드를 포함하는 컴퓨터 판독가능 매체가 제공된다.
다른 형태가 또한 개시된다.
본 발명의 적어도 하나의 실시예는 다음의 도면을 참조하여 설명한다.
도 1은 비디오 인코더의 기능 모듈을 나타내는 개략 블록도.
도 2는 비디오 디코더의 기능 모듈을 나타내는 개략 블록도.
도 3a 및 도 3b는 도 1 및 도 2의 인코더 및 디코더가 각각 실행될 수 있는 범용 컴퓨터 시스템의 개략 블록도.
도 4a 및 도 4b는 예시적인 변환 유닛의 공간 구조를 나타내는 도면.
도 5는 예시적인 변환 유닛의 신택스 엘리먼트 구조를 나타내는 개략적인 블록도.
도 6a는 변환 유닛(TU)을 인코딩하는 방법을 나타내는 개략 블록도.
도 6b는 변환 유닛(TU)을 디코딩하는 방법을 나타내는 개략 블록도.
도 7은 도 5의 예시적인 변환 유닛의 서브세트의 신택스 엘리먼트 구조를 나타내는 개략 블록도.
도 8a는 변환 유닛의 서브세트를 인코딩하는 방법을 나타내는 개략 흐름도.
도 8b는 변환 유닛의 서브세트를 디코딩하는 방법을 나타내는 개략 흐름도.
도 9는 골롬-라이스 코드워드(Golomb-Rice code-words)에 의한 레지듀얼 계수의 이진 표시를 나타내는 표.
도 10은 0차의 지수 골롬 코드워드에 의한 레지듀얼 계수의 이진 표시를 나타내는 표.
도 11은 골롬-라이스 파라미터의 현재 값 및 이전의 레지듀얼 계수의 값에 기초하여 골롬-라이스 파라미터의 값을 결정하는 룩업 테이블을 나타내는 표.
도 12a는 레지듀얼 계수를 인코딩하는 방법을 나타내는 개략적인 흐름도.
도 12b는 레지듀얼 계수를 디코딩하는 방법을 나타내는 개략적인 흐름도.
도 13은 골롬-라이스 디코딩을 이용하여 레지듀얼 계수를 디코딩하는 방법에 의해 사용되는 파라미터(K)의 값을 결정하는 방법을 나타내는 개략적인 흐름도.
도 14a는 변환 유닛(TU)의 서브세트에 대한 나머지 레지듀얼 계수 크기 값을 디코딩하는 이진화기를 나타내는 도면.
도 14b는 변환 유닛(TU)의 서브세트에 대한 나머지 레지듀얼 계수 크기 값을 디코딩하는 이진화기를 나타내는 도면.
도 15는 다른 예시적인 변환 유닛을 나타내는 도면.
첨부된 도면의 임의의 하나 이상에서는 동일한 참조 번호를 갖는 단계 및/또는 특징에 대하여 언급하며, 이들 단계 및/또는 특징은 반대 의도가 나타나지 않는한 설명의 목적으로 동일한 기능(들) 또는 동작(들)을 갖는다.
레지듀얼 계수의 2차원 어레이의 상부 좌측 코너에서 우세한 저주파수 정보의 특성은 비트스트림에서 레지듀얼 계수의 사이즈를 최소화하기 위하여 이진화 방식에 의해 사용될 수 있다.
이진화의 일 형태는 개별 플래그에 대응하는 신택스 엘리먼트를 코딩하는데 사용되는 컨텍스트의 선택이다. 하나의 플래그는 1보다 많은 컨텍스트를 이용할 수 있다. 어떤 컨텍스트가 플래그의 특정 인스턴스에 이용되어야 하는지를 결정하는 것은 이미 이용가능한 다른 정보에 의존하고 '컨텍스트 모델링'으로 알려져 있다. 컨텍스트 모델링은 플래그의 현재 인스턴스의 통계 특성을 가장 정확하게 나타내는 컨텍스트가 선택되는 프로세스이다. 예를 들어, 플래그의 값은 흔히 동일한 플래그의 이웃 인스턴스의 값에 의해 영향을 받고, 이 경우, 컨텍스트는 플래그의 이웃 인스턴스의 값에 기초하여 선택될 수 있다. 다수의 프레임 정보가 루마 채널 내에 포함되기 때문에, 컨텍스트 모델링은 흔히 루마 채널 대 크로마 채널에 대한 개별 컨텍스트를 이용한다. 그러나, 2개의 크로마 채널의 통계 특성이 비교적 유사하기 때문에, 컨텍스트는 일반적으로 크로마 채널 사이에서 공유된다.
HEVC 테스트 모델의 버전 6("HM-6.0")은 변환 유닛(TU)을 다수의 서브세트로 분할하고 2개의 패스(pass)에서 각 서브세트 내의 레지듀얼 계수를 스캔한다. 제1 패스는 제로가 아닌 값(유효(significant)) 또는 제로 값(무효(non-significant))인 레지듀얼 계수의 상태를 나타내는 플래그를 인코딩한다. 이 데이터는 시그니피컨스 맵(significance map)으로서 알려져 있다. 제2 패스는 계수 레벨로서 알려진 유효 레지듀얼 계수의 크기 및 부호를 인코딩한다.
제공된 스캔 패턴은 레지듀얼 계수의 2차원 어레이를 1차원 어레이로 스케닝하도록 한다. HM-6.0에서, 제공된 스캔 패턴은 시그니피컨스 맵 및 계수 레벨을 처리하는데 사용된다. 제공된 스캔 패턴을 이용하여 시그니피컨스 맵을 스캔함으로써, 2차원 시그니피컨스 맵 내의 마지막 유효 계수의 위치가 결정될 수 있다. 스캔 패턴은 수평, 수직 또는 대각선일 수 있다.
HM-6.0은 정사각형 형상 및 비정사각형 형상을 갖는 변환 유닛(TU)으로서 알려진 레지듀얼 블록에 대한 지원을 제공한다. 각각의 변환 유닛(TU)은 레지듀얼 계수의 세트를 포함한다. 동일 사이즈의 측면 치수를 갖는 레지듀얼 블록은 정사각형 변환 유닛(TU)으로서 알려져 있고, 동일하지 않은 사이즈의 측면 치수를 갖는 레지듀얼 블록은 비정사각형 변환 유닛(TU)으로서 알려져 있다.
HM-6.0에서 지원되는 변환 유닛(TU) 사이즈는 4×4, 8×8, 16×16, 32×32, 4×16, 16×4, 8×32, 32×8이다. 변환 유닛(TU) 사이즈는 일반적으로 루마 샘플로 기재된다. 그러나, 4:2:0의 크로마 포맷이 이용되면, 각각의 크로마 샘플은 2×2 루마 샘플의 영역을 차지한다. 따라서, 변환 유닛(TU)을 스캔하여 크로마 레지듀얼 데이터를 인코딩하는 것은 4×4 루마 레지듀얼 블록에 대한 2×2 등의 수평 및 수직 치수의 절반의 스캔 패턴을 이용한다. 레지듀얼 계수를 스캔하고 코딩할 목적으로, 16×16, 32×32, 4×16, 16×4, 8×32 및 32×8 변환 유닛(TU)은 HM-6.0 내에 존재하는 해당 맵을 갖는 다수의 서브블록, 즉, 4×4의 사이즈를 갖는 변환 유닛(TU) 스캔의 하부층으로 분할된다.
HM-6.0에서, 상기 변환 유닛(TU) 사이즈에 대한 서브블록은 변환 유닛(TU) 내의 서브세트와 동일한 위치에 위치한다. 다른 구현예에서, 서브세트는 서브블록의 사이즈와 다른 사이즈를 갖는 서브블록과 동일한 위치에 위치하지 않을 수 있다. 하나의 서브블록 내의 동일 위치에 위치하는 시그니피컨스 맵의 일부 내의 유효 계수 플래그의 세트는 유효 계수 그룹이라 한다.
16×16, 32×32, 4×16, 16×4, 8×32 및 32×8 변환 유닛(TU)에 대하여, 시그니피컨스 맵 코딩은 2 레벨 스캔을 이용한다. 상부 레벨 스캔은 후방 대각선 하향 좌측 스캔 등의 스캔을 수행하여 각 서브블록의 유효 계수 그룹을 나타내는 플래그를 코딩 또는 추론한다. 서브 블록 내에, 후방 대각선 하향 좌측 스캔 등의 스캔이 수행되어 1의 값을 갖는 유효 계수 그룹 플래그를 갖는 서브블록에 대한 유효 계수 플래그를 코딩한다. 16×16 변환 유닛(TU)에 대하여, 4×4 상위 레벨 스캔이 사용된다. 32×32 변환 유닛(TU)에 대하여, 8×8 상위 레벨 스캔이 사용된다. 16×4, 4×16, 32×8 및 8×32 변환 유닛(TU)에 대하여, 4×1, 1×4, 8×2 및 2×8 상위 레벨 스캔이 각각 사용된다.
각각의 변환 유닛(TU)에서, 레지듀얼 계수 데이터는 비트스트림으로 인코딩될 수 있다. 각각의 "레지듀얼 계수"는, 주파수 (DCT) 도메인에서 변환 유닛 내의 이미지 특성을 나타내고 변환 유닛 내에서 고유 위치를 차지하는 수이다. 변환 유닛은 공간 및 주파수 도메인 사이에서 변환될 수 있는 레지듀얼 데이터 샘플의 블록이다. 주파수 도메인에서, 변환 유닛(TU)은 레지듀얼 계수 데이터로서 레지듀얼 데이터 샘플을 인코딩한다. 변환 유닛의 측면 치수는 "루마" 채널에 대한 4개의 샘플 내지 32개의 샘플까지 및 "크로마" 채널에 대한 2 내지 16개의 샘플까지의 2의 제곱으로 사이즈 변경된다. 변환 유닛(TU) 트리의 리프 노드는 레지듀얼 계수 데이터가 요구되지 않는 경우 변환 유닛(TU)을 포함하거나 아무것도 포함하지 않을 수 있다.
변환 유닛의 공간 표시가 레지듀얼 데이터 샘플의 2차원 어레이임에 따라, 이하에서 더 상세히 설명하는 바와 같이, 변형된 DCT(discrete cosine transform) 등의 변환으로부터 기인하는 주파수 도메인 표시는 또한 레지듀얼 계수의 2차원 어레이이다. 변환 유닛(TU) 내의 일반적인 샘플 데이터의 스펙트럼 특성은 주파수 도메인 표시가 공간 표시보다 더 조밀하도록 한다. 또한, 저주파수 레지듀얼 계수가 표시되면, 변환 유닛(TU) 내의 저주파수 스펙트럼 공간의 우세는 변환 유닛(TU)의 상부 좌측을 향하여 더 큰 값의 레지듀얼 계수를 클러스터링하도록 한다.
변형된 DCT 또는 변형된 DST(discrete sine transform)는 레지듀얼 변환을 구현하는데 사용될 수 있다. 레지듀얼 변환의 구현은 각각의 요구되는 변환 유닛(TU) 사이즈를 지원하도록 구성된다. 비디오 인코더에서, 레지듀얼 변환으로부터의 레지듀얼 계수는 스케일링 및 양자화된다. 스케일링 및 양자화는 이미지 품질의 감소를 희생하고 비트스트림으로 코딩된 데이터의 사이즈를 감소시키면서 레지듀얼 계수의 크기를 감소시킨다.
레지듀얼 변환을 수행한 후, 양자화 프로세스가 수행된다. 양자화 프로세스의 목적은 레지듀얼 계수의 크기 정밀도를 감소시킴으로써 더 높은 압축비를 달성하는 것이다. 크기 정밀도의 감소는 손실이 있는 프로세스이고, 따라서, 시각 품질에 영향을 준다. 정밀도 감소 레벨은 양자화 파라미터(QP)에 의해 제어된다. 파라미터의 값이 커질수록 시각 품질이 더 영향을 받는다. 양자화 파라미터는 이하에서 설명하는 바와 같이 delta_qp 신택스 엘리먼트를 이용하여 변환 유닛(TU) 레벨 상에서 변경될 수 있다.
개발 중인 HEVC 표준은 비디오 데이터의 고효율 압축을 달성하려고 시도한다. 추정 및 통계 데이터 분석은 비디오 데이터의 고효율 압축을 달성하는데 사용될 수 있다. 개발 중인 HEVC 표준은 높은 비트레이트에서 비디오 데이터를 인코딩 또는 디코딩하려고 시도한다. 개발 중인 HEVC 표준에서 채용되는 CABAC(context adaptive binary arithmetic coding) 방식은 '바이패스 코딩'이라 불리우는 동작의 '동등 확률(equal probability)' 모드를 지원한다. 이 모드에서, 빈(bin)은 컨텍스트 모델로부터의 컨텍스트와 연관되지 않고, 컨텍스트 모델 업데이트 단계가 존재하지 않는다. 이러한 모드에서, 각 빈이 바이패스 코딩되면, 다수의 인접 빈이 동시에 비트스트림으로부터 판독되어, 스루풋을 증가할 수 있다. 예를 들어, 하드웨어 구현예가 인접하는 바이패스 코딩 데이터의 그룹을 동시에 기입/판독하여 비트스트림의 인코딩/디코딩의 스루풋을 증가시킬 수 있다.
도 1은 비디오 인코더(100)의 기능 모듈을 나타내는 개략 블록도이다. 도 2는 대응하는 비디오 디코더(200)의 기능 모듈을 나타내는 개략 블록도이다. 비디오 인코더(100) 및 비디오 디코더(200)는 도 3a 및 도 3b에 도시된 바와 같이 범용 컴퓨터 시스템(300)을 이용하여 구현될 수 있고, 다양한 기능 블록은 컴퓨터 시스템(300) 내의 전용 하드웨어, 컴퓨터 시스템(300) 내에서 실행가능한 소프트웨어, 또는 그 대신 컴퓨터 시스템(300) 내에서 실행가능한 전용 하드웨어 및 소프트웨어의 조합에 의해 구현될 수 있다.
도 3a에서 알 수 있는 바와 같이, 컴퓨터 시스템(300)은 컴퓨터 모듈(301), 키보드(302), 마우스 포인터 디바이스(303), 스캐너(326), 카메라(327) 및 마이크로폰(380) 등의 입력 디바이스; 및 프린터(315), 디스플레이 디바이스(314) 및 확성기(317)를 구비하는 출력 디바이스를 구비한다. 외부 변조기-복조기(모뎀) 트랜시버 디바이스(316)는 접속부(321)를 통해 통신 네트워크(320)로/로부터의 전달을 위해 컴퓨터 모듈(301)에 의해 사용될 수 있다. 통신 네트워크(320)는 인터넷, 셀룰러 텔레커뮤니케이션 네트워크 또는 개인 WAN 등의 WAN(wide area network)일 수 있다. 접속부(321)가 전화선이면, 모뎀(316)은 전통적인 "다이얼 업" 모뎀일 수 있다. 대안으로, 접속부(321)가 고용량(예를 들어, 케이블) 접속부이면, 모뎀(316)은 브로드밴드 모뎀일 수 있다. 무선 모뎀은 또한 통신 네트워크(320)으로의 무선 접속에 사용될 수 있다.
컴퓨터 모듈(301)은 일반적으로 적어도 하나의 프로세서 유닛(305) 및 메모리 유닛(306)을 구비한다. 예를 들어, 메모리 유닛(306)은 반도체 RAM(random access memory) 및 반도체 ROM(read only memory)를 포함할 수 있다. 컴퓨터 모듈(301)은 또한 비디오 디스플레이(314), 확성기(317) 및 마이크로폰(380)에 결합된 오디오-비디오 인터페이스(307); 키보드(302), 마우스(303), 스캐너(326), 카메라(327) 및 선택적으로 조이스틱 또는 다른 휴먼 인터페이스 디바이스(도시되지 않음)에 결합된 I/O 인터페이스(313); 및 외부 모뎀(316) 및 프린터(315)에 대한 인터페이스(308)를 구비하는, 다수의 입력/출력(I/O) 인터페이스를 구비한다. 임의의 구현예에서, 모뎀(316)은 컴퓨터 모듈(301), 예를 들어, 인터페이스(308) 내에 포함될 수 있다. 컴퓨터 모듈(301)은 또한 접속부(323)를 통해 컴퓨터 시스템(300)을 LAN(local area network)으로서 알려진 로컬 영역 통신 네트워크(322)에 결합하는 로컬 네트워크 인터페이스(311)를 갖는다. 도 3a에 도시된 바와 같이, 로컬 통신 네트워크(322)는 접속부(324)를 통해 와이드 네트워크(320)에 결합될 수 있고, 또한 일반적으로 소위 "파이어월" 디바이스 또는 유사한 기능의 디바이스를 구비한다. 로컬 네트워크 인터페이스(311)는 이더넷 회로 카드, 블루투스 무선 방식(arrangement) 또는 IEEE 802.11 무선 방식을 포함하지만, 수많은 다른 타입의 인터페이스가 인터페이스(311)를 위해 실행될 수 있다.
I/O 인터페이스(308 및 313)는 직렬 및 병렬 접속 중의 어느 하나 또는 양쪽 제공할 수 있고, 직렬 접속은 일반적으로 유니버설 시리얼 버스(USB) 표준에 따라 구현되고 해당 USB 접속기(도시되지 않음)를 갖는다. 저장 디바이스(309)가 제공되고 일반적으로 하드 디스크 드라이브(HDD)(310)를 구비한다. 플로피 디스크 드라이브 및 자기 테이프 드라이브(도시되지 않음) 등의 다른 저장 디바이스가 또한 사용될 수 있다. 광 디스크 드라이브(312)가 일반적으로 제공되어 데이터의 비휘발성 소스로서 동작한다. 광 디스크(예를 들어, CD-ROM, DVD, 블루레이 디스크), USB-RAM, 포터블, 외부 하드 드라이브 및 플로피 디스크 등의 포터블 메모리 디바이스가 예를 들어 시스템(300)으로의 데이터의 적절한 소스로서 사용될 수 있다. 일반적으로, HDD(310), 광 드라이브(312), 네트워크(320 및 322) 또는 카메라(327) 중의 임의의 것은 인코딩될 비디오 데이터의 소스 또는 디스플레이(314)와 함께 저장 또는 재생될 디코딩된 비디오 데이터의 목적지일 수 있다.
컴퓨터 모듈(301)의 컴포넌트(305 내지 313)는 일반적으로 당업자에게 알려진 컴퓨터 시스템(300)의 동작의 종래 모드를 야기하는 방식으로 상호 접속 버스(304)를 통해 통신한다. 예를 들어, 프로세서(305)는 접속부(318)를 이용하여 시스템 버스(304)에 결합된다. 마찬가지로, 메모리(306) 및 광 디스크 드라이브(312)는 접속부(319)에 의해 시스템 버스(304)에 결합된다. 기재된 방식이 실행될 수 있는 컴퓨터의 예는 IBM-PC 및 호환가능 썬 스팍스테이션(Sun Sparcstation), 애플 맥(Apple Mac) 또는 비슷한 컴퓨터 시스템을 구비한다.
적절하거나 요구된다면, 후술하는 방법 뿐만 아니라 인코더(100) 및 디코더(200)는 컴퓨터 시스템(300)을 이용하여 구현될 수 있고, 기재될 인코더(100), 디코더(200) 및 프로세스는 컴퓨터 시스템(300) 내에서 실행될 하나 이상의 소프트웨어 애플리케이션 프로그램(333)으로서 구현될 수 있다. 특히, 인코더(100), 디코더(200) 및 기재된 방법의 단계는 컴퓨터 시스템(300) 내에서 실행되는 소프트웨어(333) 내의 명령(331)(도 3b 참조)에 의해 영향을 받는다. 소프트웨어 명령(331)은 하나 이상의 특정 태스크를 각각 수행하는 하나 이상의 코드 모듈로서 형성될 수 있다. 소프트웨어는 또한 2개의 개별 파트로 분할될 수 있고, 제1 파트 및 대응하는 코드 모듈은 기재된 방법을 수행하고 제2 파트 및 대응하는 코드 모듈은 제1 파트 및 사용자 간의 사용자 인터페이스를 관리한다.
소프트웨어는 예를 들어 이하에서 설명하는 저장 디바이스를 구비하는 컴퓨터 판독가능 매체에 저장될 수 있다. 소프트웨어는 컴퓨터 판독가능 매체로부터 컴퓨터 시스템(300)으로 로딩되고 컴퓨터 시스템(300)에 의해 실행된다. 컴퓨터 판독가능 매체 상에 기록된 이러한 소프트웨어 또는 컴퓨터 프로그램을 갖는 컴퓨터 판독가능 매체는 컴퓨터 프로그램 제품이다. 컴퓨터 시스템(300) 내의 컴퓨터 프로그램 제품의 이용은 바람직하게 인코더(100), 디코더(200) 및 기재된 방법을 구현하는 유리한 장치에 영향을 준다.
소프트웨어(333)는 일반적으로 HDD(310) 또는 메모리(306)에 저장된다. 소프트웨어는 컴퓨터 판독가능 매체로부터 컴퓨터 시스템(300)에 로딩되고 컴퓨터 시스템(300)에 의해 실행된다. 따라서, 예를 들어, 소프트웨어(333)는 광 판독가능 디스크 저장 매체(예를 들어, CD-ROM)(325) 상에 저장될 수 있고, 광 디스크 드라이브(312)에 의해 판독된다.
임의의 예에서, 애플리케이션 프로그램(333)은 하나 이상의 CD-ROM(325) 상에 인코딩되어 사용자에게 공급되고 대응하는 드라이브(312)를 통해 판독되거나 그 대신 네트워크(320 또는 322)로부터 사용자에 의해 판독될 수 있다. 소프트웨어는 또한 다른 컴퓨터 매체로부터 컴퓨터 시스템(300)으로 로딩될 수 있다. 컴퓨터 판독가능 저장 매체는 실행 및/또는 처리를 위해 컴퓨터 시스템(300)에 기록된 명령 및/또는 데이터를 제공하는 임의의 비일시적 유형(tangible) 저장 매체를 지칭한다. 이러한 저장 매체의 예는, 이러한 디바이스가 컴퓨터 모듈(301)의 내장되거나 외장되든 간에, 플로피 디스크, 자기 테이프, CD-ROM, DVD, 블루레이 디스크, 하드 디스크 드라이브, ROM 또는 집적 회로, USB 메모리, 광자기 디스크, 또는 PCMCIA 카드 등의 컴퓨터 판독가능 카드를 구비한다. 컴퓨터 모듈(301)로의 소프트웨어, 애플리케이션 프로그램, 명령 및/또는 비디오 데이터 또는 인코딩된 비디오 데이터의 제공에 참여할 수 있는 수 있는 일시적 또는 비유형 컴퓨터 판독가능 송신 매체의 예는 다른 컴퓨터 또는 네트워크 디바이스로의 네트워크 접속부 뿐만 아니라 무선 또는 적외선 송신 채널 및 웹사이트 등 상에 기록된 이메일 송신 및 정보를 구비하는 인터넷 또는 인트라넷을 구비한다.
상술한 애플리케이션 프로그램(333)의 제2 파트 및 대응하는 코드 모듈은 디스플레이(314) 상에서 렌더링되거나 표시되는 하나 이상의 그래픽 사용자 인터페이스(GUI)를 구현하도록 실행될 수 있다. 키보드(302) 및 마우스(303)의 조작을 통해, 컴퓨터 시스템(300) 및 애플리케이션의 사용자는 기능적으로 적응가능한 방식으로 인터페이스를 조작하여 GUI(들)와 연관된 애플리케이션으로의 명령 및/또는 입력의 제어를 제공할 수 있다. 확성기(317)를 통해 출력되는 스피치 프롬프트 및 마이크로폰(380)을 통해 입력되는 사용자 보이스 명령을 이용하는 오디오 인터페이스 등의 기능적으로 적응가능한 사용자 인터페이스의 다른 형태가 또한 구현될 수 있다.
도 3b는 프로세서(305) 및 "메모리"(334)의 세부 개략 블록도이다. 메모리(334)는 도 3a의 컴퓨터 모듈(301)에 의해 액세스될 수 있는 모든 메모리 모듈(HDD(309) 및 반도체 메모리(306)를 구비함)의 논리적 집합을 나타낸다.
컴퓨터 모듈(301)이 초기에 기동되면, POST(power-on self-test) 프로그램(350)이 실행된다. POST 프로그램(350)은 일반적으로 도 3a의 반도체 메모리(306)의 ROM(349)에 저장된다. 소프트웨어를 저장하는 ROM(349) 등의 하드웨어 디바이스는 때때로 펌웨어라 불리운다. 정확한 동작을 위해 일반적으로 ROM(349)에 저장된 POST 프로그램(350)은 컴퓨터 모듈(301) 내의 하드웨어를 조사하여 적절한 기능을 보장하고 일반적으로 프로세서(305), 메모리(334)(309, 306) 및 BIOS(basic input-output system software) 모듈(351)을 체크한다. POST 프로그램(350)이 성공적으로 실행되면, BIOS(351)은 도 3a의 하드 디스크 드라이브(310)를 활성화한다. 하드 디스크 드라이브(310)의 활성화는, 하드 디스크 드라이브(310) 상에 상주하는 부트스트랩 로더 프로그램(352)이 프로세서(305)를 통해 실행되도록 한다. 이것은 오퍼레이팅 시스템(353)을 RAM 메모리(306)로 로딩하고, 이때, 오퍼레이팅 시스템(353)은 동작을 개시한다. 오퍼레이팅 시스템(353)은 프로세서(305)에 의해 실행되어 프로세서 관리, 메모리 관리, 디바이스 관리, 저장장치 관리, 소프트웨어 애플리케이션 인터페이스 및 일반 사용자 인터페이스를 구비하는 다양한 하이 레벨 기능을 이행하는 시스템 레벨 애플리케이션이다.
오퍼레이팅 시스템(353)은 메모리(334)(309, 306)를 관리하여 컴퓨터 모듈(301) 상에서 실행되는 각각의 프로세스 또는 애플리케이션이 다른 프로세스에 할당된 메모리와 충돌하지 않고 실행하기에 충분한 메모리를 갖도록 보장한다. 또한, 도 3a의 시스템(300)에서 이용가능한 상이한 타입의 메모리는 각각의 프로세스가 효율적으로 실행될 수 있도록 적절히 사용되어야 한다. 따라서, 합쳐진 메모리(334)는 (달리 언급되지 않으면) 메모리의 특정 세그먼트가 어떻게 할당되는지를 나타내도록 의도되지 않고, 컴퓨터 시스템(300)에 의해 액세스가능한 메모리의 일반적인 뷰 및 어떻게 이용되는지를 제공하도록 의도된다.
도 3b에 도시된 바와 같이, 프로세서(305)는 제어 유닛(339), 산술 논리 연산 장치(ALU)(340), 및 때때로 캐시 메모리라 불리우는 로컬 또는 내부 메모리(348)를 구비하는 다수의 기능 모듈을 구비한다. 캐시 메모리(348)는 일반적으로 레지스터 부분에 다수의 저장 레지스터(344-346)를 구비한다. 하나 이상의 내부 버스(341)는 기능적으로 이들 기능 모듈을 상호 접속한다. 프로세서(305)는 또한 일반적으로 접속부(318)를 이용하여 시스템 버스(304)를 통해 외부 디바이스와 통신하는 하나 이상의 인터페이스(342)를 갖는다. 메모리(334)는 접속부(319)를 이용하여 버스(304)에 결합된다.
애플리케이션 프로그램(333)은 조건적 브랜치 및 루프 명령을 구비할 수 있는 일련의 명령(331)을 구비한다. 프로그램(333)은 또한 프로그램(333)의 실행에 사용되는 데이터(332)를 구비할 수 있다. 명령(331) 및 데이터(332)는 각각 메모리 위치(328, 329, 330, 335, 336, 337)에 저장된다. 명령(331) 및 메모리 위치(328-330)의 상대적 사이즈에 따라, 특정 명령은 메모리 위치(330)에 도시된 명령에 의해 도시된 바와 같이 단일 메모리 위치에 저장될 수 있다. 대안으로, 명령은 메모리 위치(328 및 329)에 도시된 명령 세그먼트에 의해 도시된 바와 같이 개별 메모리 위치에 각각 저장된 다수의 파트로 분할될 수 있다.
일반적으로, 프로세서(305)에는 여기에서 실행되는 명령 세트가 주어진다. 프로세서(305)는 후속 입력을 기다리고, 프로세서(305)는 다른 명령 세트를 실행함으로써 그에 반응한다. 입력 디바이스(302, 303) 중의 하나에 의해 생성된 데이터, 네트워크(320, 302) 중의 하나를 통해 외부 소스로부터 수신된 데이터, 저장 디바이스(306, 309) 중의 하나로부터 검색된 데이터 또는 저장 매체(325)로부터 검색되어 대응하는 리더(312)로 삽입된 데이터를 구비하는 각각의 입력이 다수의 소스 중의 하나 이상으로부터 제공될 수 있고, 이들 데이터는 모두 도 3a에 도시된다. 임의의 경우, 명령 세트의 실행은 데이터의 출력을 야기한다. 실행은 또한 메모리(334)에 데이터 또는 변수를 저장하는 것을 수반할 수 있다.
인코더(100), 디코더(200) 및 기재된 방법은 해당 메모리 위치(355, 356, 357)에서 메모리(334)에 저장된 입력 변수(354)를 사용한다. 인코더(100), 디코더(200) 및 기재된 방법은 해당 메모리 메모리 위치(362, 363, 364)에 메모리(334)에 저장된 출력 변수(361)를 생성한다. 중간 변수(358)는 메모리 위치(359, 360, 366, 367)에 저장될 수 있다.
도 3b의 프로세서(305)를 참조하면, 레지스터(344, 345, 346), 산술 논리 연상 장치(ALU)(340) 및 제어 유닛(339)은 함께 동작하여 프로그램(333)을 만드는 명령 세트 내의 모든 명령에 대하여 "페치(fetch), 디코딩, 및 실행" 사이클을 수행하는데 필요한 마이크로 동작의 시퀀스를 수행한다. 각각의 페치, 디코딩 및 실행 사이클은,
(a) 메모리 위치(328, 329, 330)로부터 명령(331)을 페치하거나 판독하는 페치 동작;
(b) 제어 유닛(339)이 어떤 명령이 페치되었는지를 결정하는 디코딩 동작; 및
(c) 제어 유닛(339) 및/또는 ALU(340)가 명령을 실행하는 실행 명령
을 포함한다.
그 후, 다음의 명령에 대한 추가의 페치, 디코딩 및 실행 사이클이 실행될 수 있다. 마찬가지로, 제어 유닛(339)이 메모리 위치(332)에 값을 저장 또는 기입함으로써 저장 사이클이 수행될 수 있다.
기재될 프로세스 내의 각각의 단계 또는 서브프로세스는, 프로그램(333)의 하나 이상의 세그먼트와 연관되고, 함께 동작하여 프로그램(333)의 언급된 세그먼트에 대한 명령 세트 내의 모든 명령에 대한 페치, 디코딩 및 실행 사이클을 수행하는 프로세서(305) 내의 레지스터 부분(344, 345, 347), ALU(340) 및 제어 유닛(339)에 의해 수행된다.
인코더(100), 디코더(200) 및 기재된 방법은 대안으로 기재된 방법의 기능 또는 서브 기능을 수행하는 하나 이상의 집적 회로 등의 전용 하드웨어에서 구현될 수 있다. 이러한 전용 하드웨어는 그래픽 프로세서, 디지털 신호 프로세서, ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 하나 이상의 마이크로프로세서 및 관련 메모리를 구비할 수 있다.
상술한 바와 같이, 비디오 인코더(100)는, 하드 디스크 드라이브(310) 상에 상주하고 그 실행이 프로세서(305)에 의해 제어되는 소프트웨어 애플리케이션 프로그램(333)의 하나 이상의 소프트웨어 코드 모듈로서 구현될 수 있다. 특히, 비디오 인코더(100)는 소프트웨어 애플리케이션 프로그램(333)의 하나 이상의 소프트웨어 코드 모듈로서 각각 구현될 수 있는 모듈(102 내지 112, 114 및 115)을 포함한다.
도 1의 비디오 인코더(100)가 HEVC 비디오 디코딩 파이프라인의 예이지만, 모듈(102 내지 112, 114 및 115)에 의해 수행되는 처리 단계는 VC-1 또는 H.264/MPEG-4 AVC등의 다른 비디오 코덱에 공통이다. 비디오 인코더(100)는 휘도 및 색도 샘플을 구비하는 일련의 프레임으로서 인코딩되지 않은 프레임 데이터(101)를 수신한다. 비디오 인코더(100)는 프레임 데이터(101)의 각 프레임을, 예를 들어, 코딩 유닛(CU) 트리로서 표현될 수 있는 코딩 유닛(CU)의 계층적 세트로 분할한다.
멀티플렉서 모듈(110)로부터 예측 유닛(PU)(120)으로서 알려진 예측 데이터 샘플의 어레이를 출력함으로써, 비디오 인코더(100)가 동작한다. 차 모듈(difference module)(115)은 예측 유닛(PU)(120) 및 프레임 데이터(101)로부터 수신된 데이터 샘플의 해당 어레이 간의 차를 출력하고, 차는 레지듀얼 데이터 샘플(122)로서 알려져 있다.
차 모듈(115)로부터의 레지듀얼 데이터 샘플(122)은 차를 공간 표시로부터 주파수 도메인 표시로 변환하여 변환 트리 내의 각각의 변환 유닛(TU)에 대한 변환 계수(124)를 생성하는 변환 모듈(102)에 의해 수신된다. 개발 중인 HEVC 표준에 대하여, 주파수 도메인 표시로의 변환은 변형된 DCT를 이용하여 구현되고, 전통적인 DCT는 시프트 및 가산을 이용하여 구현되도록 변경된다. 그 후, 변환 계수(124)는 스케일 및 양자화 모듈(103)에 입력되고 스케일링 및 양자화되어 레지듀얼 계수(126)를 생성한다. 스케일 및 양자화 프로세스는 정밀도 손실을 야기한다.
레지듀얼 계수(126)는 스케일 및 양자화 모듈(103)에 의해 수행되는 스케일링을 반전하여 레지듀얼 계수(126)의 재스케일링 버전인 재스케일링된 변환 계수(128)를 생성하는 역 스케일링 모듈(105)로의 입력으로서 취해진다. 레지듀얼 계수(126)는 또한 인코딩된 비트스트림(113) 내의 레지듀얼 계수를 인코딩하는 엔트로피 인코더 모듈(104)로의 입력으로서 취해진다. 스케일 및 양자화 모듈(103)로부터의 정밀도의 손실 때문에, 재스케릴일링된 변환 계수(128)는 원래의 변환 계수(124)와 동일하지 않다. 역 스케일링 모듈(105)로부터의 재스케일링된 변환 계수(128)는 역 변환 모듈(106)로 출력된다. 역 변환 모듈(106)은 주파수 도메인으로부터 공간 도메인으로 역 변환을 수행하여 디코더에서 생성된 공간 도메인 표시와 동일한 재스케일링된 변환 계수(128)의 공간 도메인 표시(130)를 생성한다.
모션 추정 모듈(107)은 프레임 데이터(101)를 메모리(306) 내에 구성된 프레임 버퍼 모듈(112)에 저장된 이전의 프레임 데이터와 비교함으로써 모션 벡터(132)를 생성한다. 그 후, 모션 벡터(132)는 모션 벡터(132)로부터 도출된 공간 오프셋을 고려하여 프레임 버퍼 모듈(112)에 저장된 샘플을 필터링함으로써 인터 예측(inter-predicted) 참조 샘플(134)을 생성하는 모션 보상 모듈(108)에 입력된다. 도 1에 도시되지 않지만, 모션 벡터(132)는 또한 신택스 엘리먼트로서 인코딩된 비트스트림(113) 내의 코딩을 위해 엔트로피 인코더 모듈(104)로 전달된다. 인트라 프레임 예측 모듈(109)은, 멀티플렉서 모듈(110)의 출력(120) 및 역 변환 모듈(106)로부터의 출력(130)을 합하는 합산 모듈(114)로부터 얻은 샘플(138)을 이용하여 인트라 예측 참조 샘플(136)을 생성한다.
예측 유닛(PU)은 인트라 예측 또는 인터 예측 방법을 이용하여 코딩될 수 있다. 인트라 예측 또는 인터 예측을 사용할지에 대한 결정은, 결과적인 인코딩된 비트스트림(113)의 원하는 비트레이트 및 인트라 예측 또는 인터 예측 방법에 의해 도입된 이미지 품질 왜곡의 양 간의 레이트-왜곡 트레이드오프에 따라 수행된다. 인트라 예측이 사용되면, 레이트-왜곡 트레이드오프에 따라 가능한 모드의 세트로부터 하나의 인트라 예측 모드가 선택된다. 하나의 인트라 예측 모드는 각각의 예측 유닛을 위하여 선택된다.
멀티플렉서 모듈(110)은 도시되지 않지만 종래 기술에 잘 알려진 제어 로직에 의해 결정된 현재 예측 모드(142)에 따라 인트라 프레임 예측 모듈(109)로부터의 인트라 예측 참조 샘플(136) 또는 모션 보상 블록(108)으로부터의 인터 예측 참조 샘플(134)을 선택한다. 예측 모드(142)는 또한 엔트로피 인코더(104)에 제공되어 후술하는 바와 같이 변환 유닛의 스캔 순서를 결정 또는 확립하는데 사용된다. 인트라 프레임 예측은 대각선 스캔 순서만을 이용하지만, 인트라 프레임 예측은 대각선 스캔, 수평 스캔 또는 수직 수캔 순서를 이용할 수 있다.
합산 모듈(114)은 디블록킹 필터 모듈(111)에 입력되는 합(138)을 생성한다. 디블록킹 필터 모듈(111)은 블록 경계를 따라 필터링을 수행하여 메모리(306) 내에 구성되는 프레임 버퍼 모듈(112)에 기입되는 디블록킹 샘플(140)을 생성한다. 프레임 버퍼 모듈(112)은 미래의 참조를 위해 다수의 지난 프레임으로부터의 데이터를 유지하기에 충분한 용량을 갖는 버퍼이다.
비디오 인코더(100)에서, 하나의 변환 유닛(TU) 내의 레지듀얼 데이터 샘플(122)은 입력 프레임 데이터(101)의 데이터 샘플 및 입력 프레임 데이터(101)의 데이터 샘플의 예측(120) 간의 차를 찾음으로써 결정된다. 차는 변환 유닛(TU)의 레지듀얼 계수의 공간 표시를 제공한다. 변환 유닛(TU)의 레지듀얼 계수는 2차원 시그니피컨스 맵으로 변환된다.
그 후, 변환 유닛(TU) 내의 레지듀얼 계수의 시그니피컨스 맵은 스캔 순서로서 알려진 특정 순서로 스캔되어 유효 계수 플래그의 리스트로 불리우는 플래그 값의 1차원 리스트를 형성한다. 스캔 순서는 인트라 예측 모듈(109)로부터의 예측 모드(142)와 함께 수신된 것 등의 스캔 패턴에 의해 기술되거나 특정된다. 스캔 패턴은 수평, 수직, 대각선 또는 지그재그일 수 있다.
HEVC 테스트 모듈의 버전 6(즉, "HM-6.0")은 후방으로 스캔을 수행한다. 그러나, 전방으로의 스캔 또한 가능하다. HEVC 기준 모델 버전 6.0(즉, "HM-6.0")에서, 스캔 동작은 마지막 유효 계수 후(여기서 '후'는 레지듀얼 계수의 후방 스캔 방향에 있다)에 하나의 레지듀얼 계수를 시작하고 시그니피컨스 맵의 상부 좌측 위치에 도달할 때까지 진행한다. HEVC 기준 모델 버전 6.0에 따라 이 특성을 갖는 스캔 동작은 '후방 스캔'으로서 알려져 있다. HEVC 참조 소프트웨어 버전 6.0(즉, "HM-6.0")에서, 마지막 유효 계수의 위치는 변환 유닛(TU) 내의 계수의 좌표를 인코딩함으로써 시그널링된다. 이 컨텍스트 내의 형용사 "마지막"의 사용은 특정 스캔 방향에 의존한다. 하나의 스캔 패턴에 따라 "마지막" 제로가 아닌 레지듀얼 계수 또는 해당 1 값의 유효 계수 플래그일 수 있는 것은 다른 스캔 패턴에 따라 "마지막"이 아닐 수 있다.
마지막 유효 계수 이전에 각각의 레지듀얼 계수의 시그니피컨스를 나타내는 유효 계수 플래그의 리스트는 비트스트림으로 코딩된다. 마지막 유효 계수 플래그 값은 명시적으로 비트스트림으로 인코딩될 필요가 없는데, 이것은 이 레지듀얼 계수가 유효했다는 것을 마지막 유효 계수 플래그의 위치의 이전 코딩이 암시적으로 나타내기 때문이다.
변환 유닛(TU)의 상부 좌측을 향하여 더 큰 값의 레지듀얼 계수를 클러스터링하는 것은 리스트 내에서 더 앞에 있는 가장 유효한 플래그가 유효하도록 하고, 반면에, 덜 유효한 플래그는 리스트의 뒤에서 찾을 수 있다.
상술한 바와 같이, 비디오 인코더(100)는 또한 엔트로피 인코딩 방법을 구현하는 엔트로피 인코더 모듈(104)을 포함한다. 엔트로피 인코더 모듈(104)은 스케일 및 양자화 모듈(103)로부터 수신된 들어오는 레지듀얼 계수 데이터(또는 레지듀얼 계수)(126)로부터 신택스 엘리먼트를 생성한다. 엔트로피 인코더 모듈(104)은 인코딩된 비트스트림(113)을 출력하고 이는 이하에서 더 상세히 설명한다. 개발 중인 HEVC 표준에 대하여, 인코딩된 비트스트림(113)은 NAL(network abstraction layer) 유닛으로 기술된다. 프레임의 각각의 슬라이스는 하나의 NAL 유닛에 포함된다.
엔트로피 인코더 모듈(104)에서 구현되는 엔트로피 인코딩 방법에 대한 몇 개의 대안이 존재한다. 개발중인 HEVC 표준은 CABAC를 지원하고, CABAC의 변형은 H.264/MPEG-4 AVC에서 제공된다. 다른 엔트로피 코딩 방식은 PIPE(probability interval partitioing entropy) 코더로서 알려져 있다.
다수의 비디오 코딩 방법을 지원하는 비디오 인코더(100)에 대하여, 지원되는 엔트로피 코딩 방법 중의 하나는 인코더(100)의 구성에 따라 선택된다. 또한, 각 프레임으로부터의 코딩 유닛의 인코딩에서, 엔트로피 인코더 모듈(104)은 인코딩된 비트스트림(113)을 기입하여 각각의 프레임이 프레임당 하나 이상의 슬라이스를 갖도록 하고, 각각의 슬라이스는 프레임의 파트에 대한 이미지 데이터를 포함한다. 프레임 마다 하나의 슬라이스를 생성하는 것은 각 슬라이스 경계를 기술하는 것과 연관된 오버헤드를 감소시킨다. 그러나, 프레임을 다수의 슬라이스로 분할하는 것도 가능하다.
도 2의 비디오 디코더(200)는, 하드 디스크 드라이브(310) 상에 상주하고 그 실행이 프로세서(305)에 의해 제어되는 소프트웨어 애플리케이션 프로그램(333)의 하나 이상의 소프트웨어 코드 모듈로서 구현될 수 있다. 특히, 비디오 디코더(200)는 소프트웨어 애플리케이션 프로그램(333)의 하나 이상의 소프트웨어 코드 모듈로서 각각 구현될 수 있는 모듈(202 내지 208 및 210)을 포함한다. 비디오 디코더(200)는 HEVC 비디오 디코딩 파이프라인을 참조하여 설명하지만, 모듈(202 내지 208 및 209)에 의해 수행되는 처리 단계는 H.264/MPEG-4 AVC, MPEG-2 및 VC-1 등의 엔트로피 코딩을 채용하는 다른 비디오도 코덱에 공통이다.
인코딩된 비트스트림(113) 등의 인코딩된 비트스트림은 비디오 디코더(200)에 의해 수신된다. 인코딩된 비트스트림(113)은 메모리(306), 하드 디스크 드라이브(310), CD-ROM, 블루레이 디스크 또는 다른 컴퓨터 판독가능 저장 매체로부터 판독될 수 있다. 대안으로, 인코딩된 비트스트림(113)은 통신 네트워크(320)에 접속된 서버 또는 무선 주파수 수신기 등의 외부 소스로부터 수신될 수 있다. 인코딩된 비트스트림(113)은 디코딩될 프레임 데이터를 나타내는 인코딩된 신택스 엘리먼트를 포함한다.
인코딩된 비트스트림(113)은, 인코딩된 비트스트림(113)으로부터 신택스 엘리먼트를 추출하고 신택스 엘리먼트의 값을 비디오 디코더(200) 내의 다른 블록으로 전달하는 엔트로피 디코더 모듈(202)에 입력된다. 엔트로피 인코더 모듈(104)를 참조하여 설명한 것 등의 엔트로피 디코더 모듈(202)에서 구현되는 다수의 엔트로피 디코딩 방법이 존재할 수 있다. 레지듀얼 계수 데이터를 나타내는 신택스 엘리먼트 데이터(220)는 역 스케일 및 변환 모듈(203)로 전달되고 모션 벡터 정보를 나타내는 신택스 엘리먼트 데이터(222)가 모션 보상 모듈(204)로 전달된다. 역 스케일 및 변환 모듈(203)은 레지듀얼 계수 데이터에 대한 역 스케일링을 수행하여 재구성된 변환 계수를 생성한다. 그 후, 모듈(203)은, 역 변환 모듈(106)을 참조하여 설명하는 역 변환 등의, 재구성된 변환 계수를 주파수 도메인 표시로부터 공간 도메인 표시로 변환하는 역 변환을 수행하여 레지듀얼 샘플(224)을 생성한다.
모션 보상 모듈(204)은, 프레임 버퍼 블록(208)으로부터의 이전의 프레임 데이터(226)와 결합되고 메모리(306) 내에 구성되는, 엔트로피 디코더 모듈(202)로부터의 모션 벡터 데이터(222)를 이용하여 출력 디코딩 프레임 데이터의 예측인 예측 유닛(PU)에 대한 인터 예측 참조 샘플(228)을 생성한다. 현재의 코딩 유닛이 인트라 예측을 이용하여 코딩되었다는 것을 신택스 엘리먼트가 표시하면, 인트라 프레임 예측 모듈(205)은 예측 유닛(PU)에 공간적으로 이웃하는 샘플을 이용하여 예측 유닛(PU)에 대한 인트라 예측 참조 샘플(230)을 생성한다. 공간적으로 이웃하는 샘플은 합산 모듈(210)로부터 출력되는 합(232)으로부터 얻어진다. 멀티플렉서 모듈(206)은 인코딩된 비트스트림(113) 내의 신택스 엘리먼트에 의해 지시되는 현재의 예측 모드에 따라 예측 유닛(PU)에 대하여 인트라 예측 참조 샘플 또는 인터 예측 참조 샘플을 선택한다. 멀티플렉서 모듈(206)로부터 출력되는 샘플(234)의 어레이는 합산 모듈(210)에 의해 역 스케일 및 변환 모듈(203)로부터의 레지듀얼 샘플(224)에 추가되어 합(232)을 생성하고, 합은 그 후 디블록킹 필터 모듈(207) 및 인트라 프레임 예측 모듈(205)의 각각에 입력된다. 인코더(100)와 반대로, 인트라 프레임 예측 모듈(205)은 엔트로피 디코더(202)로부터 예측 모드(236)를 수신한다. 멀티플렉서(206)는 엔트로피 디코더(202)로부터 인트라 프레임 예측/인터 프레임 예측 선택 신호를 수신한다. 디블록킹 필터 모듈(207)은 데이터 블록 경계를 따라 필터링을 수행하여 데이터 블록 경계를 따라 보이는 아티팩트(artefact)를 매끄럽게 한다. 디블록킹 필터 모듈(207)의 출력은 메모리(306) 내에 구성되는 프레임 버퍼 모듈(208)에 기입된다. 프레임 버퍼 모듈(208)은 미래의 참조용을 위해 다수의 디코딩된 프레임을 유지하기에 충분한 저장소를 제공한다. 디코딩된 프레임(209)은 또한 프레임 버퍼 모듈(208)로부터 출력된다.
예시적인 변환 유닛(TU)(400)의 공간 구조는 도 4a 및 도 4b를 참조하여 설명한다.
도 4a는 예시적인 변환 유닛(TU)(400)을 나타낸다. 변환 유닛(400)은 직사각형 공간 구조를 갖고 4×4로부터 32×32로 사이즈가 감소할 수 있다. 변환 유닛(TU)(400)의 폭 및 높이는 2의 정수 제곱인 값을 취한다.
상술한 바와 같이, 변환 유닛(TU)은 레지듀얼 계수를 유지한다. 변환 유닛(TU)(400)을 하나 이상의 서브세트(401)의 세트로 분할하는 2레벨 스캔이 정의될 수 있다. 각각의 서브세트는, 마지막 유효 계수의 위치에 따라, 16보다 작은 레지듀얼 계수를 포함할 수 있는, 스캔 순서에서의 제1 서브세트를 제외하고, 스캔 순서(403)에서 16개의 연속적인 레지듀얼 계수로 구성된다. 도 4b에서 알 수 있는 바와 같이, 예시적인 변환 유닛(400)은 스캔 순서(403)에 대하여 마지막 유효 계수 위치(451)를 갖는다.
도 4a에서 알 수 있는 바와 같이, 변환 유닛(400)의 상위 레벨에서, 후방 대각선 하향 좌측 스캔(backward diagonal down-left scan) 등의 스캔을 이용하여 각각의 하위 레벨을 스캔함으로써 스캔이 수행된다. "서브세트 레벨"로서 또한 알려진 변환 유닛(400)의 더 낮은 레벨에서, 후방 대각선 하향 좌측 스캔 등의 스캔을 이용하여 스캔이 수행될 수 있다. 변환 유닛(400)의 상위 스캔 레벨에서, 다음의 서브세트가 임의의 유효 레지듀얼 계수를 포함하지 않으면 다음의 서브세트의 하위 레벨 스캔을 수행하지 않도록 결정할 수 있다.
변환 유닛(400)은 유효 레지듀얼 계수를 갖지 않는 서브세트(452)를 포함한다. 이 예에서, 하위 레벨 스캔 단계는 서브세트(452)에 대하여 스킵되고 상위 레벨 스캔은 스캔 순서(403)에서 다음 서브세트로 진행한다. 변환 유닛(400)의 상부 좌측 서브세트(405)는 서브세트 인덱스 제로를 갖는다. 다른 서브세트는 스캔 순서와 반대의 순서로 증가하는 인덱스를 갖는다.
변환 유닛(TU)(400) 등의 변환 유닛(TU)의 신택스 엘리먼트 구조는 도 5 및 7을 참조하여 설명한다. 비트스트림(113)의 비트스트림 부분(501)은 변환 유닛(TU)(400)의 신택스 엘리먼트를 포함하고, 다음의 신택스 엘리먼트로 구성된다:
(i) delta_qp(502): delta_qp 신택스 엘리먼트(502)는 변환 유닛(TU)(400)을 양자화하는데 사용되는 양자화 파라미터 값 및 소정의 양자화 파라미터 값 간의 차에 대한 정보를 포함한다.
(ii) last_significant_xy(503): last_significant_xy 신택스 엘리먼트(503)는 변환 유닛(TU)(400) 내의 마지막 유효 레지듀얼 계수의 위치에 대한 정보를 포함한다.
(iii) 서브세트 레지듀얼 계수 데이터(504): 서브세트 레지듀얼 계수 데이터는 제로 이상의 블록(701)으로 구성되고 변환 유닛(TU)(400)의 레지듀얼 계수의 값에 대한 정보를 포함한다.
도 7에서 알 수 있는 바와 같이, 블록(701)은 변환 유닛(TU)의 단일 서브세트의 레지듀얼 계수의 값에 대한 정보를 포함하고 다음의 신택스 엘리먼트로 구성된다.
(i) significant_coeff_group_flag(702): significant_coeff_group_flag 신택스 엘리먼트(702)는 서브세트마다 한번 코딩되고, 거짓이면, 서브세트 내의 모든 레지듀얼 계수는 제로로 추론되고, 레지듀얼 계수 데이터(703, 704, 705, 706 및 707)는 블록(701)에 없다. 그렇지 않으면(significant_coeff_group_flag 신택스(702)가 참이면), 서브세트 내의 적어도 하나의 레지듀얼 계수는 제로가 아닌 값을 갖고 레지듀얼 계수 데이터(703, 704, 705, 706 및 707)의 임의의 조합이 블록(701)에 존재한다.
(ii) 제로 이상의 significant_coeff_flag 값의 블록(703): 블록(703)은 significant_coeff_group_flag(702)가 블록(703)의 존재를 나타내면 존재한다. significant_coeff_group_flag(702)의 값은 마지막 유효 레지듀얼 계수를 제외하고 서브세트의 모든 레지듀얼 계수에 대하여 블록(703)에 존재하여, 소정의 레지듀얼 계수의 크기가 제로보다 큰 지 여부를 나타낸다.
(iii) 제로 이상의 coeff_abs_level_grater1_flag 값의 블록(704): 블록(704)은 significant_coeff_group_flag(702)가 블록(704)의 존재를 나타내면 존재한다. 크기가 제로보다 큰 것으로 지시된 서브세트의 모든 레지듀얼 계수에 대하여 coeff_abs_level_grater1_flag 값이 블록(703)에 존재하여, 소정의 레지듀얼 계수의 크기가 1보다 큰 지 여부를 나타낸다.
(iv) 제로 이상의 coeff_abs_level_grater2_flag 값의 블록(705): 블록(705)은 significant_coeff_group_flag(702)가 블록(705)의 존재를 나타내면 존재한다. 크기가 1보다 큰 것으로 지시된 서브세트의 모든 레지듀얼 계수에 대하여 coeff_abs_level_grater2_flag 값이 블록(705)에 존재하여, 소정의 레지듀얼 계수의 크기가 2보다 큰 지 여부를 나타낸다.
(v) 제로 이상의 coeff_sign_flag 값의 블록(706): 블록(706)은 significant_coeff_group_flag(702)가 블록(706)의 존재를 나타내면 존재한다. 크기가 0보다 큰 것으로 지시된 모든 레지듀얼 계수에 대하여 coeff_sign_flag 값이 블록(706)에 존재하여, 소정의 레지듀얼 계수의 산술 부호를 나타낸다.
(vi) 제로 이상의 coeff_abs_level_remaining 값의 블록(707): 블록(707)의 각각의 coeff_abs_level_remaining 값은 레지듀얼 계수 크기 마이너스 3의 소정의 값(즉, 나머지 레지듀얼 계수 크기)에 대한 골롬-라이스 코드워드이다. 블록(707)은 significant_coeff_group_flag(702)가 블록(707)의 존재를 나타내면 존재한다. 크기가 2보다 큰 것으로 지시된 각각 레지듀얼 계수에 대하여 coeff_abs_level_remaining 값이 블록(707)에 존재한다. coeff_abs_level_remaining 값은 소정의 레지듀얼 계수의 나머지 레지듀얼 계수 크기에 대한 골롬-라이스 코드워드의 값을 특정한다.
변환 유닛(TU)을 인코딩하는 방법(650)은 도 6a를 참조하여 설명한다. 방법(650)은 인코더(100)의 엔트로피 인코더 모듈(104)의 일부로서 구현될 수 있다. 상술한 바와 같이, 인코더(100)를 형성하는 소프트웨어 코드 모듈(102 내지 112, 114 및 115)은 하드 디스크 드라이브(310) 상에 상주하고 그 실행은 프로세서(305)에 의해 제어된다.
방법(650)은 도 5의 비트스크림 부분(501)을 참조하여 예로서 설명한다. 방법(650)은 delta_qp(502), last_significant_xy(503) 및 데이터(504)를 비트스크림 부분(501)으로 인코딩한다.
방법(650)은 delta_qp 값을 인코딩하는 단계(651)에서 시작하고, delta_qp 값은 프로세서(305)의 실행 하에서 인코더 모듈(104)에 의해 인코딩되고 메모리(306)에 저장된다.
그 후, 마지막 유효 위치를 인코딩하는 단계(652)에서, 마지막 유효 레지듀얼 계수의 위치는 프로세서(305)의 실행 하에서 인코더 모듈(104)에 의해 비트스트림 부분(501)으로 인코딩된다. 비트스트림 부분(501)은 메모리(306)에 저장될 수 있다. 마지막 유효 레지듀얼 계수의 위치, 변환 유닛의 폭 및 높이 및 스캔 순서(403)에 대한 정보는 변환 유닛(TU) 내의 인코딩될 서브세트의 수를 결정하는데 사용된다.
방법(650)은 서브세트를 인코딩하는 단계(653)에서 계속되고, 서브세트 데이터(504)는 인코더 모듈(104)에 의해 인코딩되고 메모리(306)에 저장된다.
그 후, 결정 단계(654)에서, 인코더 모듈(104)은 변환 유닛(TU) 내의 마지막 유효 레지듀얼 계수의 위치에 관한 정보 및 사용되는 스캔 순서(403)에 기초하여 더 많은 서브세트(504)가 비트스트림 부분(501)으로 인코딩되어야 하는지를 결정한다. 인코더 모듈(104)이 인코딩될 더 많은 서브세트(504)가 존재하는 것으로 결정하면, 방법(650)은 서브세트를 인코딩하는 단계(653)로 복귀한다. 이처럼, 방법(650)은 마지막 유효 계수를 포함하는 서브세트로부터 제1 서브세트로의 모든 서브세트가 처리될 때까지 단계(653 및 654)를 반복한다. 그렇지 않으면, 방법(650)은 종료한다.
변환 유닛(TU)을 디코딩하는 방법(600)은 도 6b를 참조하여 설명한다. 방법(600)은 디코더(200)의 엔트로피 디코더 모듈(202)의 일부로서 구현될 수 있다. 상술한 바와 같이, 디코더(200)를 형성하는 소프트웨어 코드 모듈(202 내지 208 및 210)은 하드 디스크 드라이브(310) 상에 상주하고 그 실행은 프로세서(305)에 의해 제어된다.
또한, 방법(600)은 방법(650)에 따라 인코딩된 도 5의 비트스트림 부분(501)을 참조하여 예로서 기재된다. 방법(600)은 비트스트림 부분(501)으로부터의 데이터 블록(502, 503, 504)을 디코딩한다.
방법은 delta_qp 값을 디코딩하는 단계(601)에서 시작하고, delta_qp 플래그의 값은 프로세서(305)의 실행 하에서 디코더 모듈(202)에 의해 결정된다. delta_qp 플래그 값은 메모리(306)에 저장될 수 있다.
그 후, 마지막 유효 위치를 디코딩하는 단계(602)에서, 변환 유닛(TU) 내의 마지막 유효 레지듀얼 계수의 위치는 디코더 모듈(202)에 의해 결정된다. 마지막 유효 레지듀얼 계수의 위치, 변환 유닛의 폭 및 높이 및 스캔 순서(403)에 대한 정보는 변환 유닛(TU) 내의 디코딩될 서브세트의 수를 결정하는데 사용된다.
방법(600)은 서브세트를 디코딩하는 단계(603)에서 계속되고, 여기서, 서브세트 데이터(504)는 프로세서(305)의 실행 하에서 디코더 모듈(202)에 의해 디코딩된다. 디코딩된 서브세트 데이터는 메모리(306)에 저장될 수 있다.
그 후, 결정 단계(604)에서, 디코더 모듈(202)은 변환 유닛(TU) 내의 마지막 유효 레지듀얼 계수의 위치에 관한 정보 및 사용되는 스캔 순서(403)에 기초하여 더 많은 서브세트(504)가 비트스트림 부분(501)으로부터 디코딩되어야 하는지를 결정한다.
디코더 모듈(202)이 디코딩될 더 많은 서브세트(504)가 존재하는 것으로 결정하면, 방법(600)은 서브세트 디코딩 단계(603)로 복귀한다. 그렇지 않으면, 방법(600)은 종료된다.
변환 유닛(TU)의 서브세트를 인코딩하는 방법(850)은 도 8a를 참조하여 설명한다. 방법(850)은 인코더(100)의 엔트로피 인코더 모듈(104)의 일부로서 구현될 수 있다. 상술한 바와 같이, 인코더(100)를 형성하는 소프트웨어 코드 모듈(102 내지 112, 114 및 115)은 하드 디스크 드라이브(310) 상에 상주하고 그 실행은 프로세서(305)에 의해 제어된다.
방법(850)은 도 7의 블록(701)을 참조하여 예로서 설명한다. 방법(850)은 블록(702, 703, 704, 705, 706, 707)을 비트스트림 부분(501)으로 인코딩한다.
방법(850)은 유효 그룹 플래그를 인코딩하는 단계(851)에서 시작하고, 여기서, 프로세서(305)의 실행 하에서, 인코더 모듈(104)은 significant_coeff_group_flag(702)의 값을 인코딩하고 인코딩된 값을 메모리(306)에 저장한다.
그 후, 단계(852)에서, significant_coeff_group_flag(702)의 값이 서브세트가 블록(703, 704, 705, 706, 707)에 대하여 인코딩될 데이터를 포함하는 것을 나타내면, 방법(850)은 단계(853)로 진행한다. 그렇지 않으면, 방법(850)은 종료한다.
인코딩 단계(853)에서, 프로세서(305)의 실행 하에서, 인코더 모듈(104)은 significant_coeff_flag 값의 블록(703)을 인코딩한다. 인코더 모듈(104)은 변환 유닛(TU)의 마지막 유효 레지듀얼 계수를 제외하고 서브세트의 각각의 레지듀얼 계수에 대한 하나의 significant_coeff_flag 값을 결정한다. significant_coeff_flag 값은 메모리(306)에 저장될 수 있다.
그 후, 인코딩 단계(854)에서, 인코더 모듈(104)은 coeff_abs_level_grater1_flag 값의 블록(704)을 인코딩한다. 인코더 모듈(104)은 제로보다 큰 크기를 갖는 서브세트의 각각의 레지듀얼 계수에 대한 하나의 coeff_abs_level_grater1_flag 값을 결정한다. 인코딩된 coeff_abs_level_grater1_flag 값은 메모리(306)에 저장될 수 있다.
인코딩 단계(855)에서, 인코더 모듈(104)은 coeff_abs_level_grater2_flag 값의 블록(705)을 인코딩한다. 인코더 모듈(104)은 1보다 큰 크기를 갖는 서브세트의 각각의 레지듀얼 계수에 대한 하나의 coeff_abs_level_grater2_flag 값을 결정한다. 인코딩된 coeff_abs_level_grater2_flag 값은 메모리(306)에 저장될 수 있다.
인코딩 단계(856)에서, 인코더 모듈(104)은, 프로세서(305)의 실행하에서, coeff_sign_flag 값의 블록(706)을 인코딩한다. 인코더 모듈(104)은 0보다 큰 크기를 갖는 서브세트의 각각의 레지듀얼 계수에 대한 하나의 coeff_sign_flag 값을 결정한다. 인코딩된 coeff_sign_flag 값은 메모리(306)에 저장될 수 있다.
인코딩 단계(857)에서, 인코더 모듈(104)은 coeff_abs_level_remaining 값의 블록(707)을 인코딩한다. 인코더 모듈(104)은 2보다 큰 크기를 갖는 서브세트의 각각의 레지듀얼 계수에 대한 하나의 coeff_abs_level_remaining 값을 결정한다. 인코딩된 coeff_abs_level_remaining 값은 메모리(306)에 저장될 수 있다. 단계(857) 후에, 방법(850)은 종료한다.
변환 유닛(TU)의 서브세트를 디코딩하는 방법(800)은 도 8b를 참조하여 설명한다. 방법(800)은 디코더(200)의 엔트로피 디코더 모듈(202)의 일부로서 구현될 수 있다. 상술한 바와 같이, 디코더(200)를 형성하는 소프트웨어 코드 모듈(202 내지 208 및 210)은 하드 디스크 드라이브(310) 상에 상주하고 그 실행은 프로세서(305)에 의해 제어된다.
방법(800)은 도 7의 블록(701)을 참조하여 예로서 기재된다. 방법(800)은 비트스트림 부분(501)으로부터의 블록(702, 703, 704, 705, 706, 707)을 디코딩한다.
방법(800)은 유효 그룹 플래그를 디코딩하는 단계(801)에서 시작하고, 여기서, 디코더 모듈(202)은 significant_coeff_group_flag(702)의 값을 디코딩한다. 디코딩된 significant_coeff_group_flag(702) 값은 메모리(306)에 저장될 수 있다.
그 후, 단계(802)에서, significant_coeff_group_flag(702)의 값이 서브세트가 레지듀얼 계수 데이터 블록(703, 704, 705, 706, 707)을 포함하는 것을 나타낸다고 디코더 모듈(202)이 결정하면, 방법(800)은 단계(803)로 진행한다. 그렇지 않으면, 방법(800)은 종료한다.
디코딩 단계(803)에서, 프로세서(305)의 실행 하에서, 디코더 모듈(202)은 significant_coeff_flag 값의 블록(703)을 디코딩한다. 디코더 모듈(202)은 변환 유닛(TU)의 마지막 유효 레지듀얼 계수를 제외하고 서브세트의 각각의 레지듀얼 계수에 대한 하나의 significant_coeff_flag 값을 결정한다. 디코딩된 significant_coeff_flag 값은 메모리(306)에 저장될 수 있다.
그 후, 인코딩 단계(804)에서, 디코더 모듈(202)은 coeff_abs_level_grater1_flag 값의 블록(704)을 디코딩한다. 디코더 모듈(202)은 단계(803)에서 크기가 제로보다 큰 것으로 결정된 서브세트의 각각의 레지듀얼 계수에 대한 하나의 coeff_abs_level_grater1_flag 값을 결정한다. 디코딩된 coeff_abs_level_grater1_flag 값은 메모리(306)에 저장될 수 있다.
디코딩 단계(805)에서, 디코더 모듈(202)은, 프로세서(305)의 실행 하에서, coeff_abs_level_grater2_flag 값의 블록(705)을 디코딩한다. 디코더 모듈(202)은 단계(804)에서 크기가 1보다 큰 서브세트의 각각의 레지듀얼 계수에 대한 하나의 coeff_abs_level_grater2_flag 값을 결정한다. 디코딩된 coeff_abs_level_grater2_flag 값은 메모리(306)에 저장될 수 있다.
디코딩 단계(806)에서, 디코더 모듈(202)은 coeff_sign_flag 값의 블록(706)을 디코딩한다. 디코더 모듈(202)은 단계(803)에서 크기가 0보다 큰 것으로 결정된 서브세트의 모든 레지듀얼 계수에 대한 하나의 coeff_sign_flag 값을 결정한다. 디코딩된 coeff_sign_flag 값은 메모리(306)에 저장될 수 있다.
방법(800)은 단계(807)에서 종료하고, 여기서, 디코더 모듈(202)가 coeff_abs_level_remaining 값의 블록(707)을 디코딩한다. 디코더 모듈(202)은 단계(805)에서 크기가 2보다 큰 서브세트의 각각의 레지듀얼 계수에 대한 하나의 coeff_abs_level_remaining 값을 결정한다. 또한, 단계(807)에서, 디코더 모듈(202)은 소정의 레지듀얼 계수의 나머지 레지듀얼 계수 크기에 대한 골롬-라이스 코드워드의 값을 결정한다.
단계(807) 후에, 방법(800)은 종료한다.
파라미터화된 골롬-라이스 코드 및 HEVC 기준 모델 버전 6.0 및 여기에 기재된 방법에서의 그 사용은 도 9, 도 10, 도 14a 및 도 14b를 참조하여 설명한다.
파라미터화된 골롬-라이스 코드는 변환 유닛(TU)의 레지듀얼 계수의 나머지 레지듀얼 계수 크기 값을 나타내는데 사용되는 유니버설 프리픽스(prefix) 이진 코드의 클래스이다. 프리픽스 이진 코드는 모든 2진 코드워드가 고유 프리픽스를 갖는 이진 값 표시이다. 이러한 고유 프리픽스는 코드워드에 의해 표시되는 값을 고유하게 식별하는데 필요한 다른 코드워드로부터 특정 코드워드가 구별되도록 한다.
파라미터화된 골롬-라이스 코드의 각각의 코드워드는 2개의 파트: 즉, 파라미터화된 결절(truncated)-라이스 프리픽스 파트 및 빈 0차-지수-골롬 서픽스 파트(empty order-0-exponential-Golomb suffix part)로 구성될 수 있다. 결절-라이스 프리픽스 파트는 값(0, 1, 2, 3, 4)을 취할 수 있는 파라미터(K)에 의존한다. 파라미터(K)의 모든 값에 대하여, 임계값이 정의된다. 레지듀얼 계수 나머지 크기의 인코딩된 값이 임계값보다 작으면, 값은, 지수-골롬-서픽스 없이, 결절-라이스 코드로 인코딩된다.
레지듀얼 계수 나머지 크기의 인코딩된 값이 임계값과 동일하거나 크면, 소정의 결절-라이스 코드워드가 인코딩되어 인코딩된 값이 임계값과 동일하거나 크다는 것을 나타낸다. 또한, 원래의 인코딩된 값 - 임계값과 동일한 값은 0차-지수-골롬 코드를 이용하여 인코딩된다.
도 9에서 알 수 있는 바와 같이, 표(900)는 값(0 내지 15)에 대한 예시적인 결절-라이스 코드워드 및 파라미터(K) 값(0 및 1)을 포함한다.
도 10에서 알 수 있는 바와 같이, 표(1000)는 예시적인 0차-지수 골롬 코드워드를 포함한다. 예를 들어, 파라미터(K=0)를 갖는 골롬-라이스 코드를 이용하여, 값(10)은 골롬-라이스 코드워드 "11111111110"을 형성하는 결절 라이스 프리픽스 "11111111" 및 0차-지수-골롬 서픽스 "110" 로 표시된다. 파라미터(K)의 값을 알고 있으면, 골롬-라이스 코드워드는 소정의 이진 시퀀스로부터 고유하게 식별될 수 있다.
파라미터화된 골롬-라이스코드의 모든 코드워드는 파라미터(K) 및 인코딩된 값에 의존하는 고정 길이를 갖는다. 제한된 수의 코드워드는 소정의 길이를 가질 수 있다. 이처럼, 인코딩된 값의 세트에 대하여, 일부의 인코딩된 값은 더 짧은 코드워드로 표시되지만, 다른 인코딩된 값은 더 긴 코드워드로 표시될 것이다. 비디오 데이터 인코딩을 위하여, 코드워드가 인코딩된 값에 할당되어 비트스트림(113)으로 인코딩된 모든 코드워드의 총 길이를 최소화할 수 있다. 상이한 나머지 레지듀얼 계수 크기 값은 변환 유닛(TU) 데이터에서 상이한 빈도의 출현을 갖는다. 총 코드워드 길이의 감소는 인코딩된 값에 코드워드를 할당하여 코드워드의 길이가 인코딩된 값의 출현의 빈도에 대응하도록 함으로써 달성될 수 있다. 예를 들어, 레지듀얼 계수 나머지 크기의 더 빈번한 값에는 더 짧은 코드워드가 할당되고, 동일한 빈도를 갖는 레지듀얼 계수 나머지 크기의 값에는 동일한 길이의 코드워드가 할당될 수 있다.
파라미터화된 골롬-라이스 코드의 파라미터(K)는 코드워드 중의 코드워드 길이의 분포가 제어되도록 한다. 파라미터(K)의 더 작은 값은 더 작은 크기를 갖는 값에 더 최적한 코드워드를 할당하지만, 파라미터(K)의 더 큰 값은 더 큰 크기를 갖는 값에 더 최적한 코드를 할당한다. 그러므로, 일반적으로 최적의 코드워드를 할당하기 위하여, 기재된 방법은 레지듀얼 계수 나머지 크기의 소정 값의 출현의 빈도에 기초하여 파라미터(K)의 값을 결정한다.
개발 중인 HEVC 표준에서, 나머지 레지듀얼 계수 크기의 값 등의 레지듀얼 계수 나머지 크기 값의 참된 빈도는 미리 알려져 있지 않아서, 파라미터(K) 값의 추정은 서브세트 내에서 수행된다. 파라미터화된 골롬-라이스 코드워드의 정확한 디코딩을 보장하기 위하여, 인코더(100) 및 디코더(200)는 파라미터(K)의 동일한 값을 이용하여 특정 코드워드를 디코딩하도록 구성될 수 있다. 이처럼, 빈도 값의 추정은 디코더(200)에서 이용가능한 정보로 제한된다.
빈도 값의 추정은 2개의 페이즈, 즉, 초기 추정 및 적응(adaptation)으로 구성될 수 있다.
초기 추정 페이즈는 파라미터(K)에 초기 추정 값을 제공한다. 나머지 레지듀얼 계수 크기의 값이 디코딩되고 더 많은 정보가 분석에 이용가능해짐에 따라 적응 페이즈는 파라미터(K)의 값에 추가의 정정을 제공한다.
초기 추정은 더 최적한 코드워드 할당을 보장한다. 반면에, 디코딩 전에 나머지 레지듀얼 계수 크기의 값에 대한 정보가 이용가능하지 않음에 따라, 초기 추정은 통상 효율적인 방식으로 구현되기 어렵다. 파라미터(K)의 추정을 초기에 결정하는 효율적인 방법은 코딩 효율에 있어서 상당한 개선을 제공할 수 있다.
파라미터(K)의 초기 추정 동안, 추가의 적응이 파라미터(K)의 값에 큰 영향을 주지 않는 경우를 검출할 수 있고, 따라서, 스킵될 수 있다. 적응 페이즈는 일반적으로 인코딩 효율을 개선한다. 그러나, 실제의 경우의 와이드 클래스에 대하여, 초기 추정이 파라미터(K)의 최적 값을 제공하고 추가의 적응이 필요하지 않기 때문에, 적응은 리던던트이다. 적응 페이즈의 하나의 단점은, 이전의 coeff_abs_level_remaining 값의 디코딩 후에 적응적으로 추정된 파라미터(K)의 값을 알지 않고 각각의 값이 디코딩될 수 없기 때문에, coeff_abs_level_remaining 값의 연속적인 값은 동시에 디코딩될 수 없다는 것이다.
변환 유닛(TU)의 서브세트의 coeff_abs_level_remaining 값의 블록을 인코딩하는 방법(1250)은 도 11 및 도 12a를 참조하여 설명한다.
방법(1250)은 인코더(100)의 엔트로피 인코더 모듈(104)의 일부로서 구현될 수 있다. 상술한 바와 같이, 인코더(100)를 형성하는 소프트웨어 코드 모듈(102 내지 112, 114 및 115)은 하드 디스크 드라이브(310) 상에 상주하고 그 실행은 프로세서(305)에 의해 제어된다.
방법(1250)은 도 7의 coeff_abs_level_remaining 값의 블록(707)을 참조하여 예로서 설명한다. 방법(1250)은 제로 이상의 coeff_abs_level_remaining 값을 스트림 부분(501)의 블록(707)으로 인코딩한다.
방법(1250)은 초기화 단계(1251)에서 시작하고, 여기서, 골롬-라이스 파라미터(K)는 프로세서(305)의 실행 하에서 인코더 모듈(104)에 의해 초기에 추정된다. K의 초기 값은 메모리(306)에 저장될 수 있다. 단계(1251)에서, 인코더 모듈(104)은 인코딩 동안 파라미터(K) 적응의 필요성을 결정한다.
그 후, 결정 단계(1257)에서, 인코더 모듈(104)이 적응이 필요한 것으로 결정하면, 방법(1250)은 단계(1252)로 진행한다. 적응 결정 단계(1257)는 이하에서 더 상세히 설명한다. 그렇지 않으면, 방법(1250)은 단계(1255)로 진행한다.
결정 단계(1252)에서, 인코더 모듈(104)이 인코딩할 coeff_abs_level_remaining 값이 더 있는 것으로 결정하면, 방법(1250)은 단계(1253)로 진행한다. 그렇지 않으면, 방법(1250)은 종료한다.
인코딩 단계(1253)에서, 인코더 모듈(104)은 표(900 및 1000)을 참조하여 상술한 바와 같이 골롬-라이스 파라미터(K)의 초기 값에 따라 골롬-라이스 코드워드를 블록(707)으로 인코딩하는 것을 수행한다.
그 후, 업데이트 단계(1254)에서, 인코더 모듈(104)은 다음의 coeff_abs_level_remaining 값을 인코딩하는데 사용될 파라미터(K)의 값의 적응을 수행한다. 파라미터(K)의 다음의 값(Kn +1)은 2개의 파라미터, 즉, 파라미터(Kn)의 현재 값 및 마지막 디코딩된 coeff_abs_level_remaining 값에 기초하여 단계(1254)에서 결정된다. 단계(1254)는 도 11에 도시된 바와 같이 룩업 테이블(1100)을 이용하여 결정될 수 있다. 룩업 테이블(1100)은 메모리(306) 및/또는 하드 디스크 드라이브(310)에 저장될 수 있다. 룩업 테이블(1100)은 열로서 값(Kn) 및 행으로서 레지듀얼 계수 크기를 이용하여 Kn+1에 대한 값을 제공한다. 예를 들어, 파라미터(K)의 현재 값이 1이고 마지막 디코딩된 coeff_abs_level_remaining 값이 12이면, 파라미터(K)의 다음 값은 3이다.
결정 단계(1255)에서, 인코더 모듈(104)이 인코딩될 coeff_abs_level_remaining 값이 더 존재하는 것으로 결정하면, 방법(1250)은 단계(1256)로 진행한다. 그렇지 않으면, 방법(1250)은 종료한다.
인코딩 단계(1256)에서, 인코더 모듈(104)은 골롬-라이스 코드워드를 블록(707)으로 인코딩하고 인코딩된 골롬-라이스 코드워드를 메모리(306)에 저장한다.
변환 유닛(TU)의 서브세트의 coeff_abs_level_remaining 값의 블록을 결정하는 방법(1200)은 도 11 및 도 12b를 참조하여 설명한다. 디코딩은 골롬-라이스 디코딩을 이용하여 방법(1200)에 따라 수행된다. 방법(1200)은 디코더(200)의 엔트로피 디코더 모듈(202 내지 208)의 일부로서 구현될 수 있다. 상술한 바와 같이, 디코더(200)를 형성하는 소프트웨어 코드 모듈(202 내지 208 및 210)은 하드 디스크 드라이브(310) 상에 상주하고 그 실행은 프로세서(305)에 의해 제어된다.
방법(1200)은 도 7의 coeff_abs_level_remaining 값의 블록(707)을 참조하여 예로서 기재된다. 방법(1200)은 비트스트림 부분(501)의 블록(707)으로부터 제로 이상의 coeff_abs_level_remaining 값(즉, 레지듀얼 계수 나머지 크기의 값)을 디코딩한다.
방법(1200)은 초기화 단계(1201)에서 시작하고, 여기서, 골롬-라이스 파라미터(K)는 프로세서(305)의 실행 하에서 디코더 모듈(202)에 의해 초기에 결정된다. 단계(1201)에서, 디코더 모듈(202)은 디코딩 동안 파라미터(K) 적응의 필요성을 결정한다. 단계(1201)는 단계(1251)와 동일하다.
그 후, 결정 단계(1207)에서, 디코더 모듈(202)이 적응이 필요한 것으로 결정하면, 후술하는 바와 같이, 방법(1200)은 단계(1202)로 진행한다. 그렇지 않으면, 방법(1200)은 단계(1205)로 진행한다.
그 후, 결정 단계(1202)에서, 디코더 모듈(202)이 디코딩될 coeff_abs_level_remaining 값이 더 존재하는 것으로 결정하면, 방법(1200)은 단계(1203)로 진행한다. 그렇지 않으면, 방법(1200)은 종료한다.
디코딩 단계(1203)에서, 디코더 모듈(202)은 메모리(306)에 저장된 블록(707)으로부터의 골롬-라이스 코드워드를 디코딩한다.
그 후, 업데이트 단계(1204)에서, 디코더 모듈(202)은 서브세트의 다음의 coeff_abs_level_remaining 값의 골롬-라이스 디코딩에 이용될 파라미터(K)의 값의 적응을 수행한다. 단계(1204)에서 수행되는 적응의 절차는 상술한 단계(1254)에서 이용되는 것과 동일하다.
결정 단계(1205)에서, 디코더 모듈(202)이 디코딩될 coeff_abs_level_remaining 값이 더 존재하는지를 결정하면, 방법(1200)은 단계(1206)로 진행한다. 그렇지 않으면, 방법(1200)은 종료한다.
디코딩 단계(1206)에서, 디코더 모듈(202)은 골롬-라이스 디코딩을 이용하여 블록(707)으로부터의 골롬-라이스 코드워드를 디코딩한다. 디코딩된 골롬-라이스 코드워드는 메모리(306)에 저장될 수 있다.
나머지 레지듀얼 계수 크기 값의 적응 및 비적응 디코딩은 도 14a 및 도 14b를 참조하여 설명한다.
도 14a는 coeff_abs_level_remaining 이진화기(1400)를 나타낸다. 이진화기 모듈(1400)은 컴퓨터 시스템(300)을 이용하여 구현될 수 있고, 다양한 기능 모듈(1414, 1413, 1406, 1407 및 1410)은 컴퓨터 시스템(300) 내에서 실행가능한 소프트웨어에 의해 구현될 수 있다. 대안으로, 이진화기(1400)는 컴퓨터 시스템(300) 내의 전용 하드웨어에 의해 구현될 수 있다. 또 다른 대안에서, 이진화기(1400)는 컴퓨터 시스템(300) 내에서 실행가능한 소프트웨어 및 전용 하드웨어의 조합에 의해 구현될 수 있다.
이진화기(1400)는 디코더(200)의 디코더 모듈(202)의 일부로서 구현될 수 있다. 대안으로, 이진화기(1400)는 또한 디코더(100)의 인코더 모듈(104)의 일부로서 구현될 수 있다.
이진화기(1400)는 변환 유닛(TU)의 서브세트에 대한 나머지 레지듀얼 계수 크기 값을 디코딩한다.
이진화기(1400)는 파라미터(K)의 적응적 추정을 이용한다. 이진화기(1400)은 상술한 바와 같이 파라미터(K)의 초기 추정을 수행하는 K0 모듈(1414)의 초기 추정을 포함한다.
모듈(1413)은 나머지 레지듀얼 계수 크기(V0)를 디코딩한다. 모듈(1413)은 입력된 골롬-라이스 코드워드(1402) 및 파라미터(K)의 초기에 추정된 값(1401)을 수용한다. 모듈(1413)이 디코딩을 완료하면, 도 14a에서 알 수 있는 바와 같이, 디코딩된 나머지 레지듀얼 계수 크기 값(1412)이 출력된다.
모듈(1406)은 상술한 바와 같이 파라미터(K)의 초기에 추정된 값(1401) 및 모듈(1403)에 의해 디코딩된 값(1404)에 기초하여 파라미터(K) 값의 적응을 수행한다.
모듈(1407)은 나머지 레지듀얼 계수 크기(V1)를 디코딩한다. 모듈(1407)은 입력된 골롬-라이스 코드워드(1403) 및 파라미터(K)의 추정된 값(1405)을 수용한다. 모듈(1407)이 디코딩을 완료하면, 디코딩된 나머지 레지듀얼 계수 크기 값(1411)이 출력된다.
모듈(1410)은 파라미터(K)의 이전의 값(1405) 및 모듈(1407)에 의해 디코딩된 값(1408)에 기초하여 파라미터(K) 값의 적응을 수행한다.
파라미터(K)의 추정된 값(1409)은 다음의 골롬-라이스 디코딩 및 적응 모듈(1415)에 의해 사용될 수 있다. 모듈(1410)은 모듈(1413)에 의해 제공된 데이터에 의존하는 모듈(1406)에 의해 제공되는 데이터에 의존하는 모듈(1407)에 의해 제공되는 데이터에 의존한다. 이처럼, 디코딩 모듈(1413 및 1410)의 동시 실행이 어렵다. 추가의 디코딩 및 적응 모듈(1415)은 또한 파라미터(K)의 이전에 추정된 값 뿐만 아니라 입력 데이터(1416)에 의존한다. 그러나, 파라미터(K)의 값이 이미 최적이면, 단계(1406 및 1410) 등의 적응 단계는 파라미터(K)의 실제 값에 영향을 주지 않는다. 리던던트인 적응 단계를 피하는 것은 코딩 효율에 대한 상당한 영향없이 디코딩 스루풋을 개선할 수 있다.
도 14b는 다른 coeff_abs_level_remaining 이진화기(1450)를 나타낸다. 또한, 이진화기 모듈(1450)은 컴퓨터 시스템(300)을 이용하여 구현될 수 있고, 다양한 기능 모듈(1414, 1413, 1406, 1407 및 1410)은 컴퓨터 시스템(300) 내에서 실행가능한 소프트웨어에 의해 구현될 수 있다. 대안으로, 이진화기(1450)는 컴퓨터 시스템(300) 내의 전용 하드웨어에 의해 구현될 수 있다. 또 다른 대안에서, 이진화기(1450)는 컴퓨터 시스템(300) 내에서 실행가능한 소프트웨어 및 전용 하드웨어의 조합에 의해 구현될 수 있다.
또한, 이진화기(1450)는 디코더(200)의 디코더 모듈(202)의 일부로서 구현될 수 있다. 대안으로, 이진화기(1450)는 또한 디코더(100)의 인코더 모듈(104)의 일부로서 구현될 수 있다.
이진화기(1450)는 파라미터(K)의 적응적 추정을 이용하지 않는다. 이진화기(1450)는 클록 사이클 당 다수의 레지듀얼 계수를 디코딩함으로써 병행을 달성한다.
모듈(1458)은 상술한 바와 같이 파라미터(K)의 초기 추정을 수행한다.
모듈(1454)은 상술한 바와 같이 나머지 레지듀얼 계수 크기(V0)를 디코딩한다.
모듈(1454)은 입력된 골롬-라이스 코드워드(1452) 및 파라미터(K)의 초기에 추정된 값(1451)을 수용한다. 모듈(1456)은 나머지 레지듀얼 계수 크기(V1)를디코딩한다. 모듈(1456)은 입력된 골롬-라이스 코드워드(1453) 및 파라미터(K)의 초기에 추정된 값(1451)을 수용한다.
추가의 디코딩 모듈(1460)은 또한 그에 대응하는 입력된 골롬-라이스 코드워드(1459) 및 파라미터(K)의 초기에 추정된 값(1451)을 수용한다.
모듈(1454, 1456) 및 모든 추가의 디코더 모듈(1460)은 임의의 데이터 의존성을 갖지 않고 동시에 실행될 수 있다.
변환 유닛(TU)의 coeff_abs_level_remaining 값의 블록을 디코딩하기 위해 파라미터(K)의 값을 결정하는 방법(1300)은 도 13을 참조하여 이하에서 설명한다.
방법(1300)은 인코더(100) 및 디코더(200)에 의해 사용되어 데이터의 정확한 디코딩을 보증한다. 이처럼, 방법(1300)은 인코더(100)의 엔트로피 인코더 모듈(104)의 일부로서 구현될 수 있다. 또한, 방법(1300)은 디코더(200)의 엔트로피 디코더 모듈(202)의 일부로서 구현될 수 있다.
방법(1300)은 디코더(200)를 참조하여 예로서 설명한다.
방법(1300)은 단계(1301)에서 시작하고, 여기서, 프로세서(305)의 실행 하에서, 디코더 모듈(202)은 변환 유닛(TU)의 현재 서브세트 및 이전에 디코딩된 서브세트에 대한 이전에 디코딩된 정보를 분석한다. 현재의 서브세트에 대한 이전에 디코딩된 정보는 메모리(306)로부터 액세스될 수 있다. 단계(1301)는 이하에서 더 상세히 설명한다.
그 후, 단계(1302)에서, 디코더 모듈(202)은 디코딩이 적응을 이용하는지를 결정하고 파라미터(K)에 대한 값을 결정한다. 단계(1302)는 이하에서 더 상세히 설명한다.
단계(1303)에서, 단계(1302)에서 추정된 파라미터(K)의 값은 디코더 모듈(202)에 의해 파라미터(K)를 유지하는 메모리(306) 내에 설정된 변수에 할당된다. 단계(1303) 후에, 방법(1300)은 종료한다.
일 구현예에서, 단계(1301)는 현재의 서브세트 내의 제로가 아닌 레지듀얼 계수의 수가 소정의 임계값(T)보다 큰 지 여부를 분석할 수 있다. 제로가 아닌(유효) 레지듀얼 계수의 수가 소정의 임계값보다 크면, 파라미터(K)에는 오프셋 값(Koffset)이 할당된다. 오프셋 값 때문에, 파라미터(K)는 Koffset의 값에 의해 제로로부터 오프셋되는 제로가 아닌 값을 갖는다. Koffset의 값은 소정의 값으로서 1로 설정된다. 그렇지 않으면, 파라미터(K)에는 제로 설정 값(Kzero)이 할당된다.
HEVC 테스트 모델 6.0("HM-6.0")에 대하여, 결정하기 위하여 사용되는 임계값(T)은 14이다. 파라미터(K)의 오프셋 값(Koffset)은 1이고 제로 설정 값(Kzero)은 제로이다.
다른 구현예에서, 단계(1301)에서 양자화 파라미터(Q)의 값 및 현재의 서브세트(I)의 인덱스가 분석될 수 있다. 이러한 구현예에서, 양자화 파라미터(Q)의 값이 소정의 임계값(TQ)보다 작고 서브세트 인덱스(I)의 값이 소정의 임계값(Isubset)보다 작으면, 파라미터(K)에는 오프셋 값(Koffset)이 할당된다. 그렇지 않으면,파라미터(K)에는 제로 설정 값(Kzero)이 할당된다.
HEVC 테스트 모델 6.0("HM-6.0")에 대하여, 결정하기 위하여 사용되는 양자화파라미터(TQ)의 임계값은 10이고 결정하기 위하여 사용되는 서브세트(Isubset)의 값은 1이다. 파라미터(K)의 오프셋 값(Koffset)은 1이고 제로 설정 값(Kzero)은 제로이다.
단계(1301)에서 변환 유닛 폭 및 높이의 값이 추가적으로 분석된다. 이러한 구현예에서, 변환 유닛 폭 및 높이의 값이 소정의 임계값(Twidth 및 Theight)보다 크면, 파라미터(K)에는 오프셋 값(Koffset)이 할당된다. 그렇지 않으면, 파라미터(K)에는 제로 설정 값(Kzero)이 할당된다.
HEVC 테스트 모델 6.0("HM-6.0")에 대하여, 결정하기 위하여 사용되는 변환 유닛 폭 및 높이의 임계값(Twidth 및 Theight)은 8 및 8이다. 파라미터(K)의 오프셋 값(Koffset)은 1이고 제로 설정 값(Kzero)은 제로이다.
단계(1302)에서, 서브세트의 인덱스에 기초하여 서브세트의 인코딩 또는 디코딩 동안 적응을 이용하는 것에 대한 결정이 이루어질 수 있다. 인덱스가 소정의 값(Imax)과 동일하거나 크면, 인코더 방법(1250)의 단계(1257) 및 디코더 방법(1200)의 단계(1207)에서, 방법은 디코더의 단계(1205) 및 인코더의 단계(1255)로 진행하고 파라미터(K)의 적응을 사용하지 않는다. 고정된 라이스 파라미터(K)를 갖는 것은 의존성이 없는 골롬-라이스 인코딩 또는 디코딩으로서 간주될 수 있다. 그렇지 않으면, 방법은 방법(1200)의 단계(1202) 및 방법(1250)의 단계(1252)로 진행하고 파라미터(K)의 적응을 사용하지 않는다. 적응적 라이스 파라미터(K)를 갖는 것은 의존성 기반 골롬-라이스 인코딩 또는 디코딩으로서 간주될 수 있다.
HEVC 테스트 모델 6.0("HM-6.0")에 대하여, 인덱스(Imax)의 임계값은 6이다. 도 15는 인덱스(Imax)의 임계값(6)이 단계(1302)에서 사용되어 서브세트의 인코딩 또는 디코딩 동안 적응을 이용하는 것에 대한 결정을 하는 예시적인 변환 유닛(1500)을 나타낸다. 도 15의 예에서는 후방 대각선 스캔 패턴이 상정된다. 변환 유닛(1500)은 서브세트(1510) 등의 16개의 서브세트로 분할된다. 도 15의 모든 서브세트는 문자 "A" 또는 문자 "F"로 마크되고, 문자 "A"로 마크된 서브세트는 적응적인 라이스 파라미터(K)를 이용하여 인코딩 및 디코딩된 서브세트를 나타내고 문자 "F"로 마크된 서브세트는 단계(1302)에서 인덱스(Imax)에 대한 6의 임계값을 이용할 때 고정된 라이스 파라미터(K)를 이용하는 서브세트를 나타낸다. 인덱스(Imax)에 대한 6의 값 때문에 "A" 서브세트가 서브세트 내의 적응적 라이스 파라미터(K)를 이용한다. 문자 "F"로 마크된 서브세트는 TU(1500) 내의 위치의 서브세트를 나타내고, 인덱스(Imax)에 대한 6의 임계값 때문에 서브세트가 고정된 라이스 파라미터를 이용한다. 인덱스(Imax)의 임계값은 TU(1500)에서 모든 서브세트에 대하여 동일하고, TU(1500) 내의 서브세트의 위치는 임계값과 비교되어 적응적 라이스 파라미터가 인코딩 및 디코딩을 위해 사용되는지를 결정한다. 인덱스(Imax)의 임계값은 도 15에서 적응적 및 고정 서브세트 사이의 경계를 선택하는데 사용된다. 서브세트 순서는 상부 좌측 서브세트(1520)에 대하여 제로에서 시작하고 1로서의 서브세트(1530) 및 2로서의 서브세트(1540)를 갖는 역 스캔 순으로 진행한다.
다른 구현예에서, 서브세트의 인코딩 또는 디코딩 동안 적응을 이용하는 것에 대한 결정은 이전에 인코딩 또는 디코딩된 서브세트에서 2보다 큰 레지듀얼 계수의 수(G2) 및 1보다 큰 레지듀얼 계수의 수(G1)에 기초하여 단계(1302)에서 이루어질 수 있다. 그러나, 이러한 방법은 이전에 인코딩되거나 디코딩된 서브세트가 없는 경우에 적용할 수 없다. 이전에 인코딩 또는 디코딩된 서브세트가 있으면, 값(G2-G1)이 소정의 임계값(T21)보다 크면, 인코더 방법(1250)의 단계(1257)에서(또는 디코더 방법(1200)의 단계(1207)에서), 방법(1250)은 인코더 방법(1250)의 단계(1255)(또는 디코더 방법(1200)의 단계(1205))로 진행하고 파라미터(K)의 적응을 사용하지 않는다. 그렇지 않으면, 방법(1250)은 인코더 방법(1250)의 단계(1252)로 진행(또는 방법(1200)은 디코더 방법(1200)의 단계(1202)로 진행)하고 파라미터(K)의 적응을 사용한다.
HEVC 테스트 모델 6.0에 대하여, 인덱스(T21)의 임계값인 4이다.
비디오 인코더(100)에 적용될 때의 방법(1250 및 1300) 및 디코더(200)에 적용될 때의 방법(1200 및 1300)은 구현예가 프레임 데이터(101) 등의 프레임 데이터의 좀 더 효율적인 압축을 실현하게 한다. 기재된 방법은 또한 구현예가 인코딩된 비트스트림(113) 등의 인코딩된 비트스트림의 파싱의 스루풋을 증가시키도록 한다. 프레임 데이터의 좀 더 효율적인 압축은 더 짧은 코드워드가 인코딩된 심볼에 할당되도록 하는 골롬-라이스 파라미터(K)의 더 나은 추정을 이용함으로써 발생한다. 더 높은 스루풋은 구현예가 골롬-라이스 코드워드를 디코딩하는 방법을 이용하도록 함으로써 달성되어, 코드워드 간의 데이터 의존성을 제거함으로써 한번에 1보다 많은 코드워드를 디코딩할 수 있다.
산업상 이용가능성
기재된 방식은 컴퓨터 및 데이터 처리 산업 및 특히 비디오 신호 등의 신호의 인코딩 및 디코딩을 위한 디지털 신호 처리에 적용될 수 있다.
상기 설명은 본 발명의 일부의 실시예만을 기술하며, 그 변형 및/또는 변경이 본 발명의 범주 및 사상을 벗어나지 않고 가능하고, 실시예들은 예시적이며 제한적이지 않다.
본 명세서의 문맥에서, 단어 "포함하는"은 "주로 구비하지만 반드시 단독으로 구비하지 않고", "갖는" 또는 "구비하는"을 의미하고, "만으로 구성되는"을 의미하지 않는다. "포함하다" 등의 단어 "포함하는"의 변형은 대응하여 변형된 의미를 갖는다.

Claims (16)

  1. 골롬-라이스(Golomb-Rice) 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 방법이며,
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수(significant residual coefficient)를 결정하는 단계;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스(Rice) 파라미터를 선택하는 단계 - 상기 미리정해진 라이스 파라미터는 결정된 상기 유효 레지듀얼 계수의 수가 미리정해진 임계값보다 높으면 제로 설정으로부터 오프셋됨 -;
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 단계를 포함하는, 디코딩 방법.
  2. 제1항에 있어서,
    상기 미리정해진 임계값은 14인, 디코딩 방법.
  3. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 장치이며,
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 수단;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 수단 - 상기 미리정해진 라이스 파라미터는 결정된 상기 유효 레지듀얼 계수의 수가 미리정해진 임계값보다 높으면 제로 설정으로부터 오프셋됨 -;
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 수단을 포함하는, 디코딩 장치.
  4. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 시스템이며,
    데이터 및 컴퓨터 프로그램을 저장하는 메모리;
    상기 컴퓨터 프로그램을 실행하기 위하여 상기 메모리에 결합된 프로세서를 포함하고,
    상기 컴퓨터 프로그램은,
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하고;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하고 - 상기 미리정해진 라이스 파라미터는 결정된 상기 유효 레지듀얼 계수의 수가 미리정해진 임계값보다 높으면 제로 설정으로부터 오프셋됨 -;
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는
    명령을 포함하는, 디코딩 시스템.
  5. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 매체이며,
    상기 컴퓨터 프로그램은,
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 코드;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 코드 - 상기 미리정해진 라이스 파라미터는 결정된 상기 유효 레지듀얼 계수의 수가 미리정해진 임계값보다 높으면 제로 설정으로부터 오프셋됨 -;
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 코드를 포함하는, 컴퓨터 판독가능 매체.
  6. 비디오 데이터의 스트림을 디코딩하여 비디오 데이터의 디코딩된 스트림 내의 현재의 레지듀얼 계수의 값을 결정하는 디코딩 방법이며,
    상기 비디오 데이터의 스트림으로부터 레지듀얼 계수의 변환 유닛을 수신하는 단계;
    상기 변환 유닛의 현재의 레지듀얼 계수의 위치를 결정하는 단계;
    상기 변환 유닛 내의 현재의 레지듀얼 계수의 위치가 미리정해진 임계값보다 크면 의존성이 없는 골롬-라이스 디코딩을 이용하여 상기 현재의 레지듀얼 계수를 디코딩하는 단계 - 상기 의존성이 없는 골롬-라이스는 미리정해진 골롬-라이스 값을 이용함 -;
    상기 변환 유닛 내의 현재의 레지듀얼 계수의 위치가 상기 미리정해진 임계값보다 작으면 상기 현재의 계수에 대한 의존성 기반 골롬-라이스 디코딩을 이용하여 상기 현재의 레지듀얼 계수를 디코딩하는 단계 - 상기 의존성 기반 골롬-라이스 디코딩은 이전에 디코딩된 레지듀얼 계수 값을 이용하여 골롬-라이스 값을 선택함 -; 및
    선택된 상기 골롬-라이스 디코딩 값을 이용하여 상기 현재의 레지듀얼 계수에 대한 값을 결정하는 단계를 포함하는, 디코딩 방법.
  7. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 방법이며,
    상기 변환 유닛에 대한 양자화 파라미터를 결정하는 단계;
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 단계;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 단계 - 상기 미리정해진 라이스 파라미터는 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 낮으면 제로 설정으로부터 오프셋됨 -; 및
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 단계를 포함하는, 디코딩 방법.
  8. 제7항에 있어서,
    상기 미리정해진 임계값은 10인, 디코딩 방법.
  9. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 장치이며,
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 수단;
    상기 변환 유닛에 대한 양자화 파라미터를 결정하는 수단;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 수단 - 상기 미리정해진 라이스 파라미터는 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 낮으면 제로 설정으로부터 오프셋됨 -; 및
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 수단을 포함하는, 디코딩 장치.
  10. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 시스템이며,
    데이터 및 컴퓨터 프로그램을 저장하는 메모리; 및
    상기 컴퓨터 프로그램을 실행하기 위하여 상기 메모리에 결합된 프로세서를 포함하고,
    상기 컴퓨터 프로그램은,
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하고;
    상기 변환 유닛에 대한 양자화 파라미터를 결정하고;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하고 - 상기 미리정해진 라이스 파라미터는 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 낮으면 제로 설정으로부터 오프셋됨 -;
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는
    명령을 포함하는, 디코딩 시스템.
  11. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 매체이며,
    상기 컴퓨터 프로그램은,
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 코드;
    상기 변환 유닛에 대한 양자화 파라미터를 결정하는 코드;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 코드 - 상기 미리정해진 라이스 파라미터는 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 낮으면 제로 설정으로부터 오프셋됨 -; 및
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 코드를 포함하는, 컴퓨터 판독가능 매체.
  12. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 방법이며,
    상기 변환 유닛에 대한 양자화 파라미터를 결정하는 단계;
    상기 변환 유닛에 대한 폭 및 높이를 결정하는 단계;
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 단계;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 단계 - 상기 미리정해진 라이스 파라미터는, 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 낮거나 같고 상기 폭이 미리정해진 임계값보다 크고 상기 높이가 미리정해진 임계값보다 크면 제로 설정으로부터 오프셋됨 -; 및
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 단계를 포함하는, 디코딩 방법.
  13. 제13항에 있어서,
    상기 미리정해진 임계값은 10인, 디코딩 방법.
  14. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 장치이며,
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 수단;
    상기 변환 유닛에 대한 양자화 파라미터를 결정하는 수단;
    상기 변환 유닛에 대한 폭 및 높이를 결정하는 수단;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 수단 - 상기 미리정해진 라이스 파라미터는, 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 낮거나 같고 상기 폭이 미리정해진 임계값보다 크고 상기 높이가 미리정해진 임계값보다 크면 제로 설정으로부터 오프셋됨 -; 및
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 수단을 포함하는, 디코딩 장치.
  15. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하는 시스템이며,
    데이터 및 컴퓨터 프로그램을 저장하는 메모리; 및
    상기 컴퓨터 프로그램을 실행하기 위하여 상기 메모리에 결합된 프로세서를 포함하고,
    상기 컴퓨터 프로그램은,
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하고;
    상기 변환 유닛에 대한 양자화 파라미터를 결정하고;
    상기 변환 유닛에 대한 폭 및 높이를 결정하고;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하고 - 상기 미리정해진 라이스 파라미터는, 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 낮거나 같고 상기 폭이 미리정해진 임계값보다 크고 상기 높이가 미리정해진 임계값보다 크면 제로 설정으로부터 오프셋됨 -;
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는
    명령을 포함하는, 디코딩 시스템.
  16. 골롬-라이스 디코딩을 이용하여, 인코딩된 비디오 데이터의 변환 유닛을 디코딩하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 매체이며,
    상기 컴퓨터 프로그램은,
    상기 변환 유닛의 서브세트에 대한 유효 레지듀얼 계수를 결정하는 코드;
    상기 변환 유닛에 대한 양자화 파라미터를 결정하는 코드;
    상기 변환 유닛에 대한 폭 및 높이를 결정하는 코드;
    상기 변환 유닛의 서브세트의 골롬-라이스 디코딩을 위한 미리정해진 라이스 파라미터를 선택하는 코드 - 상기 미리정해진 라이스 파라미터는, 결정된 상기 양자화 파라미터가 미리정해진 임계값보다 낮거나 같고 상기 폭이 미리정해진 임계값보다 크고 상기 높이가 미리정해진 임계값보다 크면 제로 설정으로부터 오프셋됨 -; 및
    상기 골롬-라이스 디코딩을 위한 초기 파라미터로서 상기 미리정해진 라이스 파라미터를 이용하여 상기 변환 유닛의 서브세트를 디코딩하는 코드를 포함하는, 컴퓨터 판독가능 매체.
KR1020147025173A 2012-04-13 2013-04-12 인코딩된 비디오 데이터의 변환 유닛의 서브세트를 인코딩 및 디코딩하는 방법, 장치 및 시스템 KR101818102B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2012202182 2012-04-13
AU2012202182A AU2012202182B2 (en) 2012-04-13 Method, apparatus and system for encoding and decoding a subset of transform units of encoded video data
PCT/AU2013/000380 WO2013152401A1 (en) 2012-04-13 2013-04-12 Method, apparatus and system for encoding and decoding a subset of transform units of encoded video data

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020187000410A Division KR101974320B1 (ko) 2012-04-13 2013-04-12 비디오 데이터의 변환 유닛의 서브 블록을 인코딩 및 디코딩하는 방법, 장치 및 기록매체

Publications (2)

Publication Number Publication Date
KR20140126370A true KR20140126370A (ko) 2014-10-30
KR101818102B1 KR101818102B1 (ko) 2018-01-12

Family

ID=49326956

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020187000410A KR101974320B1 (ko) 2012-04-13 2013-04-12 비디오 데이터의 변환 유닛의 서브 블록을 인코딩 및 디코딩하는 방법, 장치 및 기록매체
KR1020147025173A KR101818102B1 (ko) 2012-04-13 2013-04-12 인코딩된 비디오 데이터의 변환 유닛의 서브세트를 인코딩 및 디코딩하는 방법, 장치 및 시스템

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020187000410A KR101974320B1 (ko) 2012-04-13 2013-04-12 비디오 데이터의 변환 유닛의 서브 블록을 인코딩 및 디코딩하는 방법, 장치 및 기록매체

Country Status (11)

Country Link
US (1) US10873761B2 (ko)
EP (1) EP2837185B1 (ko)
JP (2) JP2015516745A (ko)
KR (2) KR101974320B1 (ko)
CN (5) CN104221288A (ko)
AU (2) AU2016202272B2 (ko)
BR (1) BR112014021436B1 (ko)
ES (1) ES2746961T3 (ko)
PL (1) PL2837185T3 (ko)
RU (3) RU2014141168A (ko)
WO (1) WO2013152401A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018070788A1 (ko) * 2016-10-14 2018-04-19 세종대학교 산학협력단 영상 부호화 방법/장치, 영상 복호화 방법/장치 및 비트스트림을 저장한 기록 매체
US10979709B2 (en) 2016-10-14 2021-04-13 Industry Academy Cooperation Foundation Of Sejong University Image encoding method/device, image decoding method/device and recording medium having bitstream stored therein

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9978156B2 (en) * 2012-10-03 2018-05-22 Avago Technologies General Ip (Singapore) Pte. Ltd. High-throughput image and video compression
US11259020B2 (en) 2013-04-05 2022-02-22 Qualcomm Incorporated Determining palettes in palette-based video coding
US9936200B2 (en) * 2013-04-12 2018-04-03 Qualcomm Incorporated Rice parameter update for coefficient level coding in video coding process
US9396249B1 (en) * 2013-06-19 2016-07-19 Amazon Technologies, Inc. Methods and systems for encoding parent-child map tile relationships
US9558567B2 (en) * 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US10021419B2 (en) * 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
BR112016015109A2 (pt) * 2013-12-30 2017-08-08 Qualcomm Inc Simplificação de codificação residual dc delta em codificação de vídeo 3d
CN114501033B (zh) * 2014-06-20 2023-11-10 寰发股份有限公司 用于视频编码的调色板预测器信令的方法
CN104469366B (zh) * 2014-12-18 2017-10-03 中国科学院自动化研究所 一种0阶指数哥伦布码解码器及解码方法
WO2016206590A1 (en) * 2015-06-23 2016-12-29 Mediatek Singapore Pte. Ltd. Method and apparatus for transform coefficient coding of non-square blocks
WO2017000222A1 (en) * 2015-06-30 2017-01-05 Mediatek Singapore Pte. Ltd. Grouping bypass bins and improved sign data hiding for residual coding
US20170311003A1 (en) * 2016-04-20 2017-10-26 Mediatek Inc. Method and apparatus for performing entropy encoding with sign data removal and associated method and apparatus for performing entropy decoding with sign data recovery
AU2016231584A1 (en) * 2016-09-22 2018-04-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
CN108259896B (zh) * 2016-12-29 2021-10-08 四川大学 一种利用系数分布特性的哥伦布-莱斯初始参数自适应决策方法
WO2018232676A1 (zh) * 2017-06-22 2018-12-27 华为技术有限公司 一种帧内预测的方法及装置
CN115442606A (zh) 2017-07-31 2022-12-06 韩国电子通信研究院 对图像编码和解码的方法及存储比特流的计算机可读介质
WO2019146811A1 (en) * 2018-01-25 2019-08-01 Lg Electronics Inc. Video decoder and controlling method thereof
JP2021520698A (ja) * 2018-05-02 2021-08-19 インターデジタル ヴイシー ホールディングス, インコーポレイテッド ビデオのコード化および復号。
WO2020003268A2 (en) * 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Definition of zero unit
US11336918B2 (en) 2018-09-05 2022-05-17 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
CN114390280B (zh) * 2018-11-12 2023-08-18 Lg电子株式会社 图像解码方法、图像编码方法和数据发送方法
US10904548B2 (en) 2018-12-06 2021-01-26 Qualcomm Incorporated Coefficient processing for video encoding and decoding
US11632557B2 (en) 2019-01-01 2023-04-18 Lg Electronics Inc. Method and device for decoding video using residual sign related information in video coding system
US11134273B2 (en) * 2019-02-14 2021-09-28 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
US10939107B2 (en) * 2019-03-01 2021-03-02 Sony Corporation Embedded codec circuitry for sub-block based allocation of refinement bits
CN113728627B (zh) * 2019-04-26 2023-09-19 北京字节跳动网络技术有限公司 用于环路内重构的参数的预测
CN112118456B (zh) * 2019-06-20 2022-03-25 腾讯美国有限责任公司 莱斯参数选择方法、装置、计算机设备及存储介质
CN114342393A (zh) 2019-07-12 2022-04-12 Lg 电子株式会社 基于变换的图像编译方法及其设备
US11677984B2 (en) * 2019-08-20 2023-06-13 Qualcomm Incorporated Low-frequency non-separable transform (LFNST) signaling
WO2021040319A1 (ko) * 2019-08-23 2021-03-04 엘지전자 주식회사 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치
US11470334B2 (en) * 2019-09-23 2022-10-11 Qualcomm Incorporated Rice parameter derivation for lossless/lossy coding modes for video coding
US11265536B2 (en) * 2019-09-23 2022-03-01 Tencent America LLC Method to extend the range of rice parameter for residual coding in transform skip mode
WO2021071187A1 (ko) * 2019-10-07 2021-04-15 엘지전자 주식회사 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치
WO2021071188A1 (ko) * 2019-10-07 2021-04-15 엘지전자 주식회사 비디오/영상 코딩 시스템에서 엔트로피 코딩 방법 및 장치
US11336891B2 (en) * 2019-11-25 2022-05-17 Tencent America LLC Coding method and system with improved transform domain coefficient computation
US11368715B2 (en) * 2019-12-27 2022-06-21 Qualcomm Incorporated Block-based delta pulse code modulation for video coding
WO2022066869A1 (en) * 2020-09-23 2022-03-31 Beijing Dajia Internet Information Technology Co., Ltd. Residual and coefficients coding for video coding
GB2601184A (en) * 2020-11-23 2022-05-25 Sony Group Corp Image data encoding and decoding
CN116918328A (zh) * 2021-02-25 2023-10-20 株式会社Kt 视频信号编码/解码方法和存储由编码方法生成的数据流的记录介质
CN113315968B (zh) * 2021-07-29 2021-12-03 杭州博雅鸿图视频技术有限公司 提高码率计算效率的电路设计方法、装置、设备及介质
CN117354534B (zh) * 2023-12-04 2024-02-02 上海方诚光电科技有限公司 一种自适应图像无损压缩方法、设备及存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0940994B1 (en) 1998-03-06 2014-04-16 Canon Kabushiki Kaisha Image processing apparatus and method and storage medium storing steps realizing such method
JP2000115783A (ja) 1998-10-06 2000-04-21 Canon Inc 復号化装置及び方法
JP4181699B2 (ja) 1999-07-27 2008-11-19 キヤノン株式会社 符号化装置及び方法及び記憶媒体
US6735254B2 (en) * 2001-06-29 2004-05-11 Qualcomm, Inc. DCT compression using Golomb-Rice coding
CN100566419C (zh) * 2001-07-02 2009-12-02 高通股份有限公司 以无损的方式编码数字图像数据的设备和方法
US7689051B2 (en) * 2004-04-15 2010-03-30 Microsoft Corporation Predictive lossless coding of images and video
US6987468B1 (en) 2004-10-29 2006-01-17 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
US7580585B2 (en) * 2004-10-29 2009-08-25 Microsoft Corporation Lossless adaptive Golomb/Rice encoding and decoding of integer data using backward-adaptive rules
JP4427003B2 (ja) * 2005-05-23 2010-03-03 オリンパスイメージング株式会社 データ符号化装置、データ復号化装置、データ符号化方法、データ復号化方法、プログラム
DE102007017254B4 (de) 2006-11-16 2009-06-25 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung zum Kodieren und Dekodieren
CN101543036B (zh) 2006-11-24 2011-10-26 日本电气株式会社 编码和解码装置、编码和解码方法
US7486211B2 (en) * 2007-04-13 2009-02-03 Apple Inc. Method and system for entropy coding
WO2009044346A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation System and method for combining adaptive golomb coding with fixed rate quantization
CN101779466B (zh) * 2008-06-10 2015-02-11 松下电器产业株式会社 图像解码装置及图像编码装置
WO2010084951A1 (ja) * 2009-01-23 2010-07-29 日本電信電話株式会社 パラメータ選択方法、パラメータ選択装置、プログラム及び記録媒体
JP5492206B2 (ja) * 2009-07-27 2014-05-14 株式会社東芝 画像符号化方法および画像復号方法、ならびに、画像符号化装置および画像復号装置
US8410959B2 (en) * 2010-04-09 2013-04-02 Qualcomm, Incorporated Variable length codes for coding of video data
WO2012025215A1 (en) * 2010-08-23 2012-03-01 Panasonic Corporation Adaptive golomb codes to code filter coefficients
CN102238387B (zh) * 2011-05-25 2017-07-18 深圳市云宙多媒体技术有限公司 一种视频熵编码、熵解码方法、装置
CN102368385B (zh) * 2011-09-07 2013-08-14 中科开元信息技术(北京)有限公司 后向块自适应Golomb-Rice编解码方法及装置
US9743116B2 (en) 2012-01-19 2017-08-22 Huawei Technologies Co., Ltd. High throughput coding for CABAC in HEVC
US9635358B2 (en) * 2012-01-21 2017-04-25 Google Technology Holdings LLC Method of determining binary codewords for transform coefficients

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018070788A1 (ko) * 2016-10-14 2018-04-19 세종대학교 산학협력단 영상 부호화 방법/장치, 영상 복호화 방법/장치 및 비트스트림을 저장한 기록 매체
US10979709B2 (en) 2016-10-14 2021-04-13 Industry Academy Cooperation Foundation Of Sejong University Image encoding method/device, image decoding method/device and recording medium having bitstream stored therein
US11659174B2 (en) 2016-10-14 2023-05-23 Industry Academy Cooperation Foundation Of Sejong University Image encoding method/device, image decoding method/device and recording medium having bitstream stored therein

Also Published As

Publication number Publication date
US20150078443A1 (en) 2015-03-19
AU2016202272B2 (en) 2017-09-28
AU2017279640B2 (en) 2019-08-01
CN106851277B (zh) 2021-05-07
CN107071420A (zh) 2017-08-18
BR112014021436A2 (ko) 2017-06-20
JP6465955B2 (ja) 2019-02-06
EP2837185B1 (en) 2019-09-04
JP2018078625A (ja) 2018-05-17
CN106851277A (zh) 2017-06-13
AU2017279640A1 (en) 2018-01-18
PL2837185T3 (pl) 2020-03-31
RU2634214C1 (ru) 2017-10-24
CN107105247A (zh) 2017-08-29
CN107105248B (zh) 2021-05-07
KR101974320B1 (ko) 2019-04-30
CN104221288A (zh) 2014-12-17
CN107105248A (zh) 2017-08-29
KR20180006495A (ko) 2018-01-17
AU2012202182A1 (en) 2013-10-31
KR101818102B1 (ko) 2018-01-12
CN107071420B (zh) 2021-07-16
US10873761B2 (en) 2020-12-22
CN107105247B (zh) 2021-05-07
WO2013152401A1 (en) 2013-10-17
EP2837185A1 (en) 2015-02-18
JP2015516745A (ja) 2015-06-11
BR112014021436B1 (pt) 2023-03-07
ES2746961T3 (es) 2020-03-09
EP2837185A4 (en) 2016-03-16
RU2667715C1 (ru) 2018-09-24
RU2014141168A (ru) 2016-06-10

Similar Documents

Publication Publication Date Title
KR101818102B1 (ko) 인코딩된 비디오 데이터의 변환 유닛의 서브세트를 인코딩 및 디코딩하는 방법, 장치 및 시스템
JP6825064B2 (ja) 動画データを生成する方法
KR101754547B1 (ko) 하나 이상의 코딩 유닛의 인코딩 및 디코딩하기 위한 방법, 장치 및 컴퓨터 판독가능한 저장 매체

Legal Events

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