KR102462386B1 - 데이터 인코딩 및 디코딩 - Google Patents

데이터 인코딩 및 디코딩 Download PDF

Info

Publication number
KR102462386B1
KR102462386B1 KR1020217042077A KR20217042077A KR102462386B1 KR 102462386 B1 KR102462386 B1 KR 102462386B1 KR 1020217042077 A KR1020217042077 A KR 1020217042077A KR 20217042077 A KR20217042077 A KR 20217042077A KR 102462386 B1 KR102462386 B1 KR 102462386B1
Authority
KR
South Korea
Prior art keywords
encoded
prefix
value
length
data
Prior art date
Application number
KR1020217042077A
Other languages
English (en)
Other versions
KR20210158427A (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
Application filed by 소니그룹주식회사 filed Critical 소니그룹주식회사
Publication of KR20210158427A publication Critical patent/KR20210158427A/ko
Application granted granted Critical
Publication of KR102462386B1 publication Critical patent/KR102462386B1/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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
    • 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/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/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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

데이터 인코딩 방법은 데이터 값들의 어레이를 데이터 세트들 및 데이터 세트들에 의해 인코딩되지 않은 값들에 대한 이스케이프 코드들로서 인코딩하는 단계를 포함하고, 이스케이프 코드는 프리픽스 부분, 및 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함한다.

Description

데이터 인코딩 및 디코딩{DATA ENCODING AND DECODING}
관련 출원들에 대한 상호 참조
본원은 그 전체 내용들이 본원에 참조로 포함된, 영국 특허청에 각각 2014년 3월 5일자 및 2013년 12월 23일자 출원된 GB1403854.1 및 GB1322947.1을 우선권 주장한다.
발명의 분야
본 개시 내용은 데이터 인코딩 및 디코딩에 관한 것이다.
여기에 제공된 "배경" 설명은 본 개시 내용의 문맥을 일반적으로 제시하는 목적을 위한 것이다. 이 배경 절에서 설명된 정도까지, 뿐만 아니라 그렇지 않으면 출원 당시에 종래 기술로서 간주되지 않을 수 있는 설명의 양태들까지의 본 발명자들의 연구는 명시적으로나 암시적으로 본 개시 내용에 대한 종래 기술로서 인정되지 않는다.
비디오 데이터를 주파수 도메인 표현으로 변환하고, 주파수 도메인 계수들을 양자화하고 다음에 이 양자화된 계수들에 엔트로피 인코딩의 일부 형태를 적용하는 것을 포함하는 몇 가지 비디오 데이터 압축 및 압축 해제 시스템들이 있다.
본 문맥에서, 엔트로피는 데이터 심볼 또는 일련의 심볼들의 정보 내용을 표현하는 것으로서 고려될 수 있다. 엔트로피 인코딩의 목적은 일련의 데이터 심볼들의 정보 내용을 표현하기 위해 필요한 최소 수의 인코딩된 데이터 비트들을 (이상적으로) 사용하여 손실 없는 방식으로 그 일련의 데이터 심볼들을 인코딩하는 것이다. 실제로, 엔트로피 인코딩은 인코딩된 데이터가 (비트들의 그 수에 대해서) 원래의 양자화된 계수들의 데이터 크기보다 작도록 양자화된 계수들을 인코딩하는 데 사용된다. 더욱 효율적인 엔트로피 인코딩 과정은 동일한 입력 데이터 크기에 대해 더욱 작은 출력 데이터 크기를 제공한다.
비디오 데이터를 엔트로피 인코딩하기 위한 한가지 기술은 소위 CABAC(context adaptive binary arithmetic coding; 컨텍스트 적응 이진 산술 코딩) 기술이다.
본 개시 내용은 데이터 디코딩 장치를 제공하고, 이 데이터 디코딩 장치는 입력 인코딩된 데이터 값들을 비트 깊이를 갖는 디코딩된 데이터 값들로 디코딩하도록 구성된 디코더를 포함하고, 상기 입력 인코딩된 데이터 값들은 데이터 세트들 및 데이터 세트들에 의해 인코딩되지 않은 값들에 대한 이스케이프(escape) 코드들로서 인코딩되고, 이스케이프 코드는 데이터 값들의 비트 깊이에 의존하는 최대 프리픽스 길이로 캡핑된 프리픽스 길이를 갖는 프리픽스 부분 및 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항(non-unary) 코딩된 서픽스 부분의 비트 길이가 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함한다.
추가의 각각의 양태들 및 특징들이 첨부된 청구범위에서 정의된다.
상기 일반적인 설명 및 다음의 상세한 설명 둘 다는 본 개시 내용을 예시하지만 제한하는 것은 아니라는 것을 이해하여야 한다.
본 개시 내용 및 그 수반하는 장점들의 많은 것은 첨부 도면과 관련하여 고려될 때, 실시예들의 다음의 상세한 설명을 참조하여 더욱 잘 이해됨에 따라 더 완전히 알게 될 것이다.
도 1은 비디오 데이터 압축 및 압축 해제를 사용하는 오디오/비디오(A/V) 데이터 송신 및 수신 시스템을 개략적으로 도시한다.
도 2는 비디오 데이터 압축 해제를 사용하는 비디오 디스플레이 시스템을 개략적으로 도시한다.
도 3은 비디오 데이터 압축 및 압축 해제를 사용하는 오디오/비디오 저장 시스템을 개략적으로 도시한다.
도 4는 비디오 데이터 압축을 사용하는 비디오 카메라를 개략적으로 도시한다.
도 5는 비디오 데이터 압축 및 압축 해제 장치의 개략적 개관을 제공한다.
도 6은 예측된 영상들의 발생을 개략적으로 도시한다.
도 7은 최대 코딩 유닛(LCU)을 개략적으로 도시한다.
도 8은 4개의 코딩 유닛들(CU)의 세트를 개략적으로 도시한다.
도 9 및 10은 더욱 작은 코딩 유닛들로 세분된 도 8의 코딩 유닛들을 개략적으로 도시한다.
도 11은 예측 유닛들(PU)의 어레이를 개략적으로 도시한다.
도 12는 변환 유닛들(TU)의 어레이를 개략적으로 도시한다.
도 13은 부분적으로 인코딩된 영상을 개략적으로 도시한다.
도 14는 가능한 예측 방향들의 세트를 개략적으로 도시한다.
도 15는 예측 모드들의 세트를 개략적으로 도시한다.
도 16은 지그재그 스캔을 개략적으로 도시한다.
도 17은 CABAC 엔트로피 인코더를 개략적으로 도시한다.
도 18은 코딩 기술을 개략적으로 도시한 플로우차트이다.
도 19는 코딩 기술을 도시한 개략적 플로우차트이다.
도 20은 코딩 기술을 도시한 개략적 플로우차트이다.
도 21은 코딩 기술을 도시한 개략적 플로우차트이다.
이제 도면을 참조하면, 도 1-4는 실시예들과 관련하여 아래에 설명될 압축 및/또는 압축 해제 장치를 사용하는 장치 또는 시스템들의 개략적 도시를 보여주기 위해 제공된다.
아래에 설명될 데이터 압축 및/또는 압축 해제 장치의 모두는 하드웨어에서, 범용 컴퓨터와 같은 범용 데이터 처리 장치 상에서 실행하는 소프트웨어에서, 주문형 집적 회로(ASIC) 또는 필드 프로그래머블 게이트 어레이(FPGA)와 같은 프로그래머블 하드웨어로서 또는 이들의 조합들로서 구현될 수 있다. 실시예들이 소프트웨어 및/또는 펌웨어에 의해 구현되는 경우들에서, 이러한 소프트웨어 및/또는 펌웨어, 및 이러한 소프트웨어 및/또는 펌웨어가 저장 또는 그렇지 않으면 제공되는 비일시적인 머신 판독가능 데이터 저장 매체는 실시예들로서 고려된다는 것을 알 것이다.
도 1은 비디오 데이터 압축 및 압축 해제를 사용하는 오디오/비디오 데이터 송신 및 수신 시스템을 개략적으로 도시한다.
입력 오디오/비디오 신호(10)는 케이블, 광 섬유, 무선 링크 등과 같은 송신 루트(30)를 따라 송신하기 위해 오디오/비디오 신호(10)의 적어도 비디오 성분을 압축하는 비디오 데이터 압축 장치(20)에 공급된다. 압축된 신호는 출력 오디오/비디오 신호(50)를 제공하기 위해 압축 해제 장치(40)에 의해 처리된다. 복귀 경로를 위해, 압축 장치(60)는 압축 해제 장치(70)로의 송신 루트(30)를 따라 송신하기 위해 오디오/비디오 신호를 압축한다.
그러므로, 압축 장치(20) 및 압축 해제 장치(70)는 송신 링크의 한 노드를 형성할 수 있다. 압축 해제 장치(40) 및 압축 해제 장치(60)는 송신 링크의 또 하나의 노드를 형성할 수 있다. 물론, 송신 링크가 단방향인 예들에서, 노드들 중 단지 하나만이 압축 장치를 필요로 할 것이고 다른 노드는 단지 압축 해제 장치를 필요로 할 것이다.
도 2는 비디오 데이터 압축 해제를 사용하는 비디오 디스플레이 시스템을 개략적으로 도시한다. 특히, 압축된 오디오/비디오 신호(100)는 디스플레이(120) 상에 디스플레이될 수 있는 압축 해제된 신호를 제공하기 위해 압축 해제 장치(110)에 의해 처리된다. 압축 해제 장치(110)는, 예를 들어 디스플레이 디바이스와 동일한 케이싱 내에 제공된, 디스플레이(120)의 일체부로서 구현될 수 있다. 대안적으로, 압축 해제 장치(110)는 (예를 들어) 소위 셋톱 박스(STB)로서 제공될 수 있고, "셋톱 박스"라는 표현은 디스플레이(120)에 대해 어떤 특정한 배향 또는 위치에 박스가 놓인다는 요건을 의미하지 않고; 그것은 단순히 주변 디바이스로서 디스플레이에 접속가능한 디바이스를 나타내기 위해 본 기술 분야에서 사용되는 용어라는 점에 주목한다.
도 3은 비디오 데이터 압축 및 압축 해제를 사용하는 오디오/비디오 저장 시스템을 개략적으로 도시한다. 입력 오디오/비디오 신호(130)는 자기 디스크 디바이스, 광 디스크 디바이스, 자기 테이프 디바이스, 반도체 메모리 또는 다른 저장 디바이스와 같은 고체 상태 저장 디바이스와 같은 저장 디바이스(150)에 의해 저장하기 위한 압축된 데이터를 발생하는 압축 장치(140)에 공급된다. 재생을 위해, 압축된 데이터는 저장 디바이스(150)로부터 판독되고 출력 오디오/비디오 신호(170)를 제공하기 위해 압축 해제를 위한 압축 해제 장치(160)에 보내진다.
압축되거나 인코딩된 신호, 및 그 신호를 저장하는 저장 매체 또는 데이터 캐리어는 실시예들로서 고려된다는 것을 알 것이다.
도 4는 비디오 데이터 압축을 사용하는 비디오 카메라를 개략적으로 도시한다. 도 4에서, 전하 결합 디바이스(CCD) 영상 센서 및 연관된 제어 및 판독 전자 장치들과 같은 영상 캡처 디바이스(180)는 압축 장치(190)에 보내지는 비디오 신호를 발생한다. 마이크로폰(또는 복수의 마이크로폰)(200)은 압축 장치(190)에 보내질 오디오 신호를 발생한다. 압축 장치(190)는 (도시적 스테이지(220)로서 일반적으로 도시된) 저장 및/또는 송신될 압축된 오디오/비디오 신호(210)를 발생한다.
아래에 설명될 기술들은 주로 비디오 데이터 압축에 관한 것이다. 많은 기존의 기술들이 압축된 오디오/비디오 신호를 발생하기 위해, 설명될 비디오 데이터 압축 기술들과 함께 오디오 데이터 압축을 위해 사용될 수 있다는 것을 알 것이다. 따라서, 오디오 데이터 압축의 별도의 논의는 제공되지 않을 것이다. 비디오 데이터, 특히 방송 품질 비디오 데이터와 연관된 데이터 레이트는 (압축되든 또는 비압축되든) 오디오 데이터와 연관된 데이터 레이트보다 일반적으로 아주 훨씬 높다는 것을 또한 알 것이다. 그러므로 비압축된 오디오 데이터는 압축된 오디오/비디오 신호를 형성하기 위해 압축된 비디오 데이터를 동반할 수 있다는 것을 알 것이다. (도 1-4에 도시한) 본 예들이 오디오/비디오 데이터에 관한 것이지만, 아래에 설명될 기술들은 비디오 데이터를 간단히 다루는(즉, 압축, 압축 해제, 저장, 디스플레이 및/또는 송신하는) 시스템에서의 사용을 발견할 수 있다는 것을 더 알 것이다. 즉, 실시예들은 어떤 연관된 오디오 데이터 처리를 전적으로 반드시 할 필요 없이 비디오 데이터 압축에 적용할 수 있다.
도 5는 제어기(345)의 제어하에서 동작하는 비디오 데이터 압축 및 압축 해제 장치의 개략적 개관을 제공한다.
입력 비디오 신호(300)의 연속하는 영상들이 가산기(310)에 및 영상 예측기(320)에 공급된다. 영상 예측기(320)는 도 6을 참조하여 아래에 더 상세히 설명될 것이다. 가산기(310)는 사실상 그것이 "+" 입력 상에서 입력 비디오 신호(300) 및 "-" 입력 상에서 영상 예측기(320)의 출력을 수신하다는 점에서 감산(음의 가산) 연산을 수행하여, 예측된 영상이 입력 영상으로부터 감산된다. 이 결과는 실제 영상과 투사된 영상 간의 차이를 나타내는 소위 잔차 영상 신호(330)를 발생하는 것이다.
잔차 영상 신호가 발생되는 한 가지 이유는 다음과 같다. 설명될 데이터 코딩 기술들, 즉 잔차 영상 신호에 적용될 기술들은 인코딩될 영상 내에 "에너지"가 덜 있을 때 더 효율적으로 동작하는 경향이 있다. 여기서, "효율적으로"란 말은 소량의 인코딩된 데이터의 발생을 뜻하는 것으로; 특정한 영상 품질 레벨에 대해, 실제로 가능한 만큼 적은 데이터를 발생하는 것이 바람직한 (그리고 "효율적인") 것으로 고려된다. 잔차 영상에서 "에너지"란 잔차 영상 내에 포함된 정보의 양에 관련한다. 예측된 영상이 실제 영상과 동일하다면, 이 2개의 차이(즉, 잔차 영상)는 제로 정보(제로 에너지)를 포함할 것이고 소량의 인코딩된 데이터로 인코딩하는 것이 매우 쉬울 것이다. 일반적으로, 예측 과정이 꽤 합당하게 동작하도록 될 수 있다면, 잔차 영상 데이터는 입력 영상보다 적은 정보(적은 에너지)를 포함할 것이고 그래서 소량의 인코딩된 데이터로 인코딩하는 것이 더 쉬울 것이 예상된다.
잔차 영상 데이터(330)는 잔차 영상 데이터의 이산 코사인 변환(DCT) 표현을 발생하는 변환 유닛(340)에 공급된다. DCT 기술 자체는 널리 공지되어 있고 여기서 상세히 설명되지 않는다. 그러나, 특히 DCT 연산이 적용되는 데이터의 상이한 블록들의 선택에 관해, 아래에 더욱더 상세히 설명될 본 장치에서 사용되는 기술들의 양태들이 있다. 이들은 아래에 도 7-12를 참조하여 논의될 것이다.
일부 실시예들에서, 이산 사인 변환(DST)이 DCT 대신에 사용된다는 점에 주목한다. 다른 실시예들에서, 변환이 사용되지 않을 수 있다. 이것은 변환 스테이지가 예를 들어, "변환 스킵" 명령 또는 모드의 제어하에서 효과적으로 우회되도록 선택적으로 이루어질 수 있다.
변환 유닛(340)의 출력, 즉, 영상 데이터의 각각의 변환된 블록에 대한 변환 계수들의 세트가 양자화기(350)에 공급된다. 다양한 양자화 기술들이 양자화 스케일링 팩터에 의한 간단한 승산으로부터 양자화 파라미터의 제어하에서 복잡한 룩업 테이블들의 적용까지의 범위에 있는, 비디오 데이터 압축의 분야에서 공지되어 있다. 일반적인 목표는 이중적이다. 첫째, 양자화 과정은 변환된 데이터의 가능한 값들의 수를 감소시킨다. 둘째, 양자화 과정은 변환된 데이터의 값들이 제로가 되는 가능성을 높일 수 있다. 이들 둘 다는 아래에 설명될 엔트로피 인코딩 과정이 소량의 압축된 비디오 데이터를 발생하는 데 있어서 보다 효율적으로 동작하게 할 수 있다.
데이터 스캐닝 과정은 스캔 유닛(360)에 의해 적용된다. 스캐닝 과정의 목적은 비제로 양자화된 변환된 계수들을 가능한 많이 함께 모으고, 물론 그래서 제로 값의 계수들을 가능한 한 많이 함께 모으도록 양자화된 변환된 데이터를 재정렬하는 것이다. 이들 특징은 소위 런-길이(run-length) 코딩 또는 유사한 기술들이 효율적으로 적용되게 할 수 있다. 그래서, 스캐닝 과정은 양자화된 변환된 데이터로부터, 그리고 특히 "스캐닝 순서"에 따라, 변환되고 양자화된 영상 데이터의 블록에 대응하는 계수들의 블록으로부터 계수들을 선택하는 것을 포함하므로 (a) 계수들 모두가 스캔의 일부로서 한번 선택되고, (b) 스캔은 원하는 재정렬을 제공하는 경향이 있다. 스캐닝 순서를 선택하기 위한 기술들이 아래에 설명될 것이다. 유용한 결과들을 주는 경향이 있을 수 있는 한 예시적인 스캐닝 순서는 소위 지그재그 스캐닝 순서이다.
스캐닝된 계수들은 다음에 엔트로피 인코더(EE)(370)에 보내진다. 다시, 다양한 유형들의 엔트로피 인코딩이 사용될 수 있다. 아래에 설명되는 2개의 예는 소위 CABAC(컨텍스트 적응 이진 산술 코딩) 시스템의 변형들 및 소위 CAVLC(컨텍스트 적응 가변 길이 코딩) 시스템의 변형들이다. 일반적으로 말하면, CABAC는 더 좋은 효율성을 제공하는 것으로 고려되고, 일부 연구들에서 CAVLC에 비해 비교할 만한 영상 품질을 위한 인코딩된 출력 데이터의 양을 10-20% 감소시키는 것으로 나타났다. 그러나, CAVLC는 CABAC보다 (그것의 구현에 대해서) 훨씬 낮은 레벨의 복잡도를 나타내는 것으로 고려된다. CABAC 기술은 아래 도 17을 참조하여 논의될 것이다.
스캐닝 과정과 엔트로피 인코딩 과정은 별개의 과정들로서 나타나지만, 실제로 조합되거나 함께 처리될 수 있다는 점에 주목한다. 즉, 엔트로피 인코더 내로의 데이터의 판독은 스캔 순서로 일어날 수 있다. 대응하는 고려들이 아래에 설명될 각각의 역 과정들에 적용한다.
예를 들어 예측기(320)가 예측된 영상을 발생하는 방식을 정하는, 추가 데이터(위에 언급되고/되거나 아래에 논의됨)와 함께, 엔트로피 인코더(370)의 출력은 압축된 출력 비디오 신호(380)를 제공한다.
그러나, 예측기(320) 자체의 동작은 압축된 출력 데이터의 압축 해제된 버전에 의존하기 때문에 복귀 경로가 또한 제공된다.
이 특징의 이유는 다음과 같다. (아래에 설명될) 압축 해제 과정의 적절한 스테이지에서 잔차 데이터의 압축 해제된 버전이 발생된다. 이 압축 해제된 잔차 데이터는 출력 영상을 발생하기 위해 예측된 영상에 가산되어야 한다(왜냐하면 원래의 잔차 데이터는 입력 영상과 예측된 영상 간의 차이이기 때문에). 이 과정이 압축 측과 압축 해제 측 간에서와 같이 비교할 만한 것이 되도록, 예측기(320)에 의해 발생된 예측된 영상들은 압축 과정 동안과 압축 해제 과정 동안에 동일하여야 한다. 물론, 압축 해제 시에, 장치는 원래의 입력 영상들에 액세스하지 않고, 압축 해제된 영상들에만 액세스한다. 그러므로, 압축 시에, 예측기(320)는 그것의 예측(적어도, 인터-영상 인코딩을 위해)을 압축된 영상들의 압축 해제된 버전들에 기초한다.
엔트로피 인코더(370)에 의해 수행된 엔트로피 인코딩 과정은 "손실 없는" 것으로, 즉, 먼저 엔트로피 인코더(370)에 공급된 정확히 동일한 데이터에 도달하도록 반전될 수 있는 것으로 고려된다. 그래서, 복귀 경로는 엔트로피 인코딩 스테이지 전에 구현될 수 있다. 실제로, 스캔 유닛(360)에 의해 수행된 스캐닝 과정은 또한 손실 없는 것으로 고려되지만, 본 실시예에서 복귀 경로(390)는 양자화기(350)의 출력으로부터 상보적 역 양자화기(420)의 입력까지이다.
일반적으로 말하면, 엔트로피 디코더(410), 역 스캔 유닛(400), 역 양자화기(420) 및 역변환 유닛(430)은 엔트로피 인코더(370), 스캔 유닛(360), 양자화기(350) 및 변환 유닛(340)의 각각의 역기능들을 제공한다. 이제, 압축 과정을 통해 계속 논의가 될 것이고; 입력 압축된 비디오 신호를 압축 해제하는 과정이 아래에 별도로 논의될 것이다.
압축 과정에서, 스캐닝된 계수들은 양자화기(350)로부터 스캔 유닛(360)의 역 동작을 수행하는 역 양자화기(420)로의 복귀 경로(390)에 의해 통과된다. 역 양자화 및 역변환 과정은 압축된-압축 해제된 잔차 영상 신호(440)를 발생하기 위해 유닛들(420, 430)에 의해 수행된다.
영상 신호(440)는 재구성된 출력 영상(460)을 발생하기 위해 예측기(320)의 출력에, 가산기(450)에서 가산된다. 이것은 아래에 논의되는 바와 같이, 영상 예측기(320)로의 하나의 입력을 형성한다.
수신된 압축된 비디오 신호(470)에 적용되는 과정으로 이제 돌아오면, 그 신호는 엔트로피 디코더(410)에 공급되어 그로부터 가산기(450)에 의해 영상 예측기(320)의 출력에 가산되기 전에 역 스캔 유닛(400), 역 양자화기(420) 및 역변환 유닛(430)의 체인에 공급된다. 간단히 말하면, 가산기(450)의 출력(460)은 출력 압축 해제된 비디오 신호(480)를 형성한다. 실제로, 추가 필터링이 신호가 출력되기 전에 적용될 수 있다.
도 5가 인코더의 맥락에서 설명되었지만, 복귀 디코딩 경로(400, 410, 420, 430, 450, 320, 모두 제어기(345)의 제어하에서 동작함)는 디코더의 예를 형성한다는 것을 알 것이다. 위에 설명되고 아래의 논의에서의 동작들은 인코딩 및 디코딩 동작들에 관한(적용가능한) 방법 단계들의 예들을 제공한다.
도 6은 예측된 영상들의 발생, 및 특히 영상 예측기(320)의 동작을 개략적으로 도시한다.
예측의 기본 2개의 모드들: 소위 인트라-영상 예측 및 소위 인터 영상, 또는 움직임 보상(MC) 예측이 있다.
인트라-영상 예측은 영상의 블록의 내용의 예측을 동일한 영상 내로부터의 데이터에 기초한다. 이것은 다른 비디오 압축 기술들에서의 소위 I-프레임 인코딩에 대응한다. 전체 영상이 인트라-인코딩되는 I-프레임 인코딩과 대조적으로, 본 실시예들에서 인트라-인코딩과 인터-인코딩 간의 선택은 블록 마다에 기초하여 이루어지지만, 다른 실시예들에서 선택은 여전히 영상 마다에 기초하여 이루어진다.
움직임 보상 예측은 현재의 영상에서 인코딩될 영상 상세의, 다른 인접한 또는 가까운 영상에서, 소스를 정하려고 시도하는 움직임 정보를 이용한다. 따라서, 이상적인 예에서, 예측된 영상 내의 영상 데이터의 블록의 내용들은 인접한 영상 내의 동일하거나 약간 상이한 위치에 있는 대응하는 블록을 포인팅하는 기준(움직임 벡터)으로서 매우 간단하게 인코딩될 수 있다.
도 6으로 돌아오면, (인트라-영상 및 인터-영상 예측에 대응하는) 2개의 영상 예측 배열들이 도시되는데, 그 결과들은 가산기들(310 및 450)에 공급하기 위한 예측된 영상의 블록들을 제공하도록 모드 신호(510)의 제어하에서 멀티플렉서(500)에 의해 선택된다. 선택은 어느 선택이 (위에 논의된 바와 같이, 인코딩을 요구하는 정보 내용으로서 고려될 수 있는) 최저 "에너지"를 주는지에 따라 이루어지고, 선택은 인코딩된 출력 데이터스트림 내의 인코더에 시그널링된다. 이와 관련하여 영상 에너지는 예를 들어, 입력 영상으로부터의 예측된 영상의 2개의 버전들의 영역의 시험 감산을 수행하고, 차이 영상의 각각의 화소 값을 제곱하고, 제곱된 값들을 합하고, 2개의 버전들 중 어느 것이 그 영상 영역에 관한 차이 영상의 더 낮은 평균 제곱 값을 일으키는지를 식별함으로써 검출될 수 있다.
인트라-인코딩 시스템에서의 실제 예측은 신호(460)의 부분으로서 수신된 영상 블록들에 기초하여 이루어지고, 즉, 예측은 정확히 동일한 예측이 압축 해제 장치에서 이루어질 수 있도록 인코딩된-디코딩된 영상 블록들에 기초한다. 그러나, 데이터는 인트라-영상 예측기(530)의 동작을 제어하기 위해 인트라-모드 선택기(520)에 의해 입력 비디오 신호(300)로부터 유도될 수 있다.
인터-영상 예측을 위해, 움직임 보상(MC) 예측기(540)는 입력 비디오 신호(300)로부터 움직임 추정기(550)에 의해 유도된 움직임 벡터들과 같은 움직임 정보를 사용한다. 그들 움직임 벡터는 인터-영상 예측의 블록들을 발생하기 위해 움직임 보상 예측기(540)에 의해 재구성된 영상(460)의 처리된 버전에 적용된다.
신호(460)에 적용된 처리가 이제부터 설명될 것이다. 먼저, 신호는 필터 유닛(560)에 의해 필터링된다. 이것은 변환 유닛(340) 및 후속하는 동작들에 의해 수행된 블록-기반 처리의 효과들을 제거 또는 적어도 감소시키는 경향이 있도록 "디블록킹" 필터를 적용하는 것을 포함한다. 또한, 적응 루프 필터는 재구성된 신호(460) 및 입력 비디오 신호(300)를 처리함으로써 유도된 계수들을 사용하여 적용된다. 적응 루프 필터는 공지된 기술들을 사용하여, 필터링될 데이터에 적응 필터 계수들을 적용하는 필터의 유형이다. 즉, 필터 계수들은 다양한 팩터들에 따라 변화할 수 있다. 어떤 필터 계수들을 사용할지를 정하는 데이터는 인코딩된 출력 데이터스트림의 부분으로서 포함된다.
필터 유닛(560)으로부터의 필터링된 출력은 사실상 출력 비디오 신호(480)를 형성한다. 그것은 또한 하나 이상의 영상 스토어(570) 내에서 버퍼링되고; 연속하는 영상들의 저장은 움직임 보상 예측 처리, 및 특히 움직임 벡터들의 발생의 요건이다. 저장 요건들을 절약하기 위해, 영상 스토어들(570) 내의 저장된 영상들은 압축된 형태로 유지된 다음 움직임 벡터들을 발생하는 데 사용하기 위해 압축 해제될 수 있다. 이 특정한 목적을 위해, 임의의 공지된 압축/압축 해제 시스템이 사용될 수 있다. 저장된 영상들은 저장된 영상들의 보다 높은 해상도 버전을 발생하는 보간 필터(580)에 보내지고; 이 예에서, 중간 샘플들(서브-샘플들)은 보간 필터(580)에 의해 출력된 보간된 영상의 해상도가 영상 스토어들(570) 내에 저장된 영상들의 것의 (각 차원에서) 8배 이도록 발생된다. 보간된 영상들은 움직임 추정기(550) 및 또한 움직임 보상 필터(540)로의 입력으로서 보내진다.
실시예들에서, 추가의 선택적인 스테이지가 제공되는데, 그것은 승산기(600)를 사용하여 입력 비디오 신호의 데이터 값들에 4의 팩터를 곱하고(데이터 값들을 2비트만큼 좌측으로 시프트하는 것과 같은 효과), 제산기 또는 우측-시프터(610)를 사용하여 장치의 출력에서 대응하는 제산(2비트만큼 우측으로 시프트)을 적용하는 것이다. 그래서, 좌측 시프팅 및 우측 시프팅은 장치의 내부 동작에 대한 데이터를 순수하게 변화시킨다. 이 조치는 임의의 데이터 라운딩 에러들의 효과가 감소됨에 따라, 장치 내의 보다 높은 계산 정확성을 제공할 수 있다.
영상이 압축 처리를 위해 분할되는 방식이 이제부터 설명될 것이다. 기본 레벨에서, 압축될 영상은 샘플들의 블록들의 어레이로서 고려된다. 본 논의의 목적들을 위해, 고려 중인 최대의 이러한 블록은 64×64 샘플들의 정사각형 어레이를 나타내는, 소위 최대 코딩 유닛(LCU)(700)(도 7)이다. 여기서, 논의는 루미넌스 샘플들에 관한 것이다. 4:4:4, 4:2:2, 4:2:0 또는 4:4:4:4(GBR 플러스 키 데이터)와 같은, 크로미넌스 모드에 따라, 루미넌스 블록에 대응하는 상이한 수들의 대응하는 크로미넌스 샘플들이 있을 것이다.
3개의 기본적인 유형들의 블록들: 코딩 유닛들, 예측 유닛들 및 변환 유닛들이 설명될 것이다. 일반적으로 말하면, LCU들의 리커시브(recursive) 세분은 입력 화상이 블록 크기들 및 (예측 또는 잔차 코딩 모드들과 같은) 블록 코딩 파라미터들 둘 다가 인코딩될 영상의 특정한 특성들에 따라 설정될 수 있도록 분할되게 한다.
LCU는 소위 코딩 유닛들(CU)로 세분될 수 있다. 코딩 유닛들은 항상 정사각형이고 LCU(700)의 8×8 샘플들과 완전 크기 사이의 크기를 갖는다. 코딩 유닛들은 일종의 트리 구조로서 배열될 수 있게 되어, 첫번째 세분은 32×32 샘플들의 코딩 유닛들(710)을 제공하는 것으로, 도 8에 도시한 바와 같이 일어날 수 있고; 후속하는 세분들은 다음에 16×16 샘플들의 일부 코딩 유닛들(720)(도 9) 및 잠재적으로 8×8 샘플들의 일부 코딩 유닛들(730)(도 10)을 제공하도록 하는 선택에 근거하여 일어날 수 있다. 전체적으로, 이 과정은 각각이 LCU 만큼 크거나 8×8 샘플들만큼 작을 수 있는, CU 블록들의 내용-적응 코딩 트리 구조를 제공할 수 있다. 출력 비디오 데이터의 인코딩은 코딩 유닛 구조에 기초하여 일어난다.
도 11은 예측 유닛들(PU)의 어레이를 개략적으로 도시한다. 예측 유닛은 영상 예측 과정들에 관한 정보, 또는 바꾸어 말하면 도 5의 장치로부터 출력 비디오 신호를 형성하기 위해 엔트로피 인코딩된 잔차 영상 데이터에 가산된 추가 데이터를 전달하기 위한 기본 유닛이다. 일반적으로, 예측 유닛들은 형태가 정사각형으로 제한되지 않는다. 그들은 코딩 유닛이 최소 (8×8) 크기보다 큰 한, 다른 형상들, 특히 정사각형 코딩 유닛들 중 하나의 반을 형성하는 직사각형 형상들을 취할 수 있다. 그 목적은 상이한 예측 파라미터들이 상이한 실제 물체들에 적용될 수 있도록, 인접하는 예측 유닛들의 경계가 화상 내의 실제 물체들의 경계와 (가능한 한 가깝게) 일치하게 하는 것이다. 각각의 코딩 유닛은 하나 이상의 예측 유닛을 포함할 수 있다.
도 12는 변환 유닛들(TU)의 어레이를 개략적으로 도시한다. 변환 유닛은 변환 및 양자화 과정의 기본 유닛이다. 변환 유닛들은 항상 정사각형이고 4×4로부터 32×32 샘플들까지의 크기를 취할 수 있다. 각각의 코딩 유닛은 하나 이상의 변환 유닛을 포함할 수 있다. 도 12 내의 두문자어 SDIP-P는 소위 단거리 인트라-예측 분할(short distance intra-prediction partition)을 나타낸다. 이 배열에서 단지 1차원의 변환들이 사용되어, 4×N 블록이 N개의 변환을 통해 통과되는데 변환들로의 입력 데이터는 현재의 SDIP-P 내의 이전에 디코딩된 이웃하는 블록들 및 이전에 디코딩된 이웃하는 라인들에 기초한다.
인트라-예측 과정이 이제부터 논의될 것이다. 일반적으로 말하면, 인트라-예측은 동일한 영상 내의 이전에 인코딩되고 디코딩된 샘플들로부터의 샘플들의 현재의 블록(예측 유닛)의 예측을 발생하는 것을 포함한다. 도 13은 부분적으로 인코딩된 영상(800)을 개략적으로 도시한다. 여기서, 영상은 LCU에 기초하여 상부 좌측으로부터 하부 우측까지 인코딩된다. 전체 영상의 처리를 통해 도중에 인코딩된 하나의 예시적인 LCU가 블록(810)으로서 도시된다. 블록(810)의 위와 좌측의 음영으로 된 영역(820)은 이미 인코딩되었다. 블록(810)의 내용들의 인트라-영상 예측은 음영으로 된 영역(820)의 어떤 것을 이용할 수 있지만 그 아래의 음영으로 되지 않는 영역은 이용할 수 없다.
블록(810)은 LCU를 나타내고; 위에 논의된 바와 같이, 인트라-영상 예측 처리의 목적들을 위해, 이것은 더욱 작은 예측 유닛들의 세트로 세분될 수 있다. 예측 유닛(830)의 예가 LCU(810) 내에 도시된다.
인트라-영상 예측은 현재의 LCU(810)의 위 및/또는 좌측의 샘플들을 고려한다. 요구된 샘플들이 예측되는 소스 샘플들은 LCU(810) 내의 현재의 예측 유닛에 대해 상이한 위치들 또는 방향들에 위치할 수 있다. 현재의 예측 유닛을 위해 어느 방향이 적당한지를 결정하기 위해, 각각의 후보 방향에 기초한 시험 예측의 결과들은 어느 후보 방향이 입력 영상의 대응하는 블록에 가장 가까운 결과를 제공하는지를 알기 위해 비교된다. 가장 가까운 결과를 제공하는 후보 방향은 그 예측 유닛에 대한 예측 방향으로서 선택된다.
화상은 또한 "슬라이스"에 기초하여 인코딩될 수 있다. 한 예에서, 슬라이스는 LCU들의 수평으로 인접한 그룹이다. 그러나 보다 일반적으로 말하면, 전체 잔차 영상은 슬라이스를 형성할 수 있고, 또는 슬라이스는 단일 LCU일 수 있고, 또는 슬라이스는 한 행의 LCU들일 수 있고, 등등이다. 슬라이스들은 그들이 독립 유닛들로서 인코딩됨에 따라 에러들에 어느 정도의 탄력을 줄 수 있다. 인코더 및 디코더 상태들은 슬라이스 경계에서 완전히 리셋된다. 예를 들어, 인트라-예측은 슬라이스 경계들을 가로질러 수행되지 않고; 슬라이스 경계들은 이 목적을 위해 영상 경계들로서 처리된다.
도 14는 가능한(후보) 예측 방향들의 세트를 개략적으로 도시한다. 34개 후보 방향들의 완전 세트는 8×8, 16×16 또는 32×32 샘플들의 예측 유닛에 가용하다. 4×4 및 64×64 샘플들의 예측 유닛 크기들의 특별한 경우들은 그들에 가용한 후보 방향들의 감소된 세트를 갖는다(각각 17개 후보 방향들 및 5개 후보 방향들). 이 방향들은 현재 블록 위치에 대한 수평 및 수직 변위에 의해 결정되지만, 그 세트가 도 15에 도시된, 예측 "모드들"로서 인코딩된다. 소위 DC 모드는 주위의 상부 및 좌측 샘플들의 간단한 산술 평균을 나타낸다는 점에 주목한다.
도 16은 스캔 유닛(360)에 의해 적용될 수 있는 스캔 패턴인 지그재그 스캔을 개략적으로 도시한다. 도 16에서, 패턴은 8×8 변환 계수들의 예시적인 블록을 위해 도시되고, DC 계수들은 블록의 상부 좌측 위치(840)에 배치되고, 증가하는 수평 및 수직 공간 주파수들은 상부 좌측 위치(840) 아래이고 우측으로 증가하는 거리에 있는 계수들에 의해 나타난다.
일부 실시예들에서, 계수들은 역순으로(도 16의 순서 표시를 사용하여 하부 우측로부터 상부 좌측으로) 스캔될 수 있다는 점에 주목한다. 일부 실시예들에서, 스캔은 나머지 계수들의 지그재그를 수행하기 전에, 몇 개(예를 들어, 1 내지 3)의 최상의 수평 행들을 가로질러 좌측으로부터 우측으로 통과할 수 있다는 점에 또한 주목하여야 한다.
도 17은 CABAC 엔트로피 인코더의 동작을 개략적으로 도시한다.
이 성질의 컨텍스트 적응 인코딩에서 및 실시예들에 따라, 데이터의 비트는 데이터 비트가 1 또는 0이 될 것 같은 예상 또는 예측을 나타내는 확률 모델, 또는 컨텍스트에 대해 인코딩될 수 있다. 이것을 행하기 위해서, 입력 데이터 비트에는 코드 값들의 범위의 2개의(또는 일반적으로 그 이상, 복수의) 상보적 하위 범위들 중 선택된 하나 내의 코드 값이 할당되고, 하위 범위들의 각각의 크기들(실시예들에서, 코드 값들의 세트에 대한 하위 범위들의 각각의 비율들)은 (결국 그 입력 값들과 연관된 또는 그렇지 않으면 관련된 컨텍스트 변수에 의해 정의되는) 컨텍스트에 의해 정의된다. 다음 단계는 전체 범위, 즉, (다음 입력 데이터 비트 또는 값에 대해 사용하기 위해), 코드 값들의 세트를 할당된 코드 값 및 선택된 하위 범위의 현재 크기에 응답하여 수정하는 것이다. 수정된 범위가 미리 결정된 최소 크기(예를 들어, 원래의 데이터 크기의 반)를 나타내는 임계값보다 작으면 그것은 예를 들어, 수정된 범위를 2배(좌측 시프트) 함으로써 그 범위가 적어도 미리 결정된 최소 크기를 가질 때까지 크기가 증가하는데, 상기 2배 과정은 필요하다면 연속적으로(한 번보다 많이) 수행될 수 있다. 이 점에서, 출력 인코딩된 데이터 비트는 2배 또는 크기 증가 연산이 (또는 그때마다, 한 번보다 많이) 일어난다는 것을 표시하기 위해 발생된다. 추가 단계는 다음 입력 데이터 비트 또는 값에 대해(또는, 일부 실시예들에서, 인코딩될 데이터 비트들 또는 값들의 다음 그룹에 대해) 또는 이와 함께 사용하기 위해 컨텍스트를 수정하는 것(즉, 실시예들에서, 컨텍스트 변수를 수정하는 것)이다. 이것은 새로운 컨텍스트 값들의 룩업 테이블 내로의 인덱스로서, 또는 새로운 컨텍스트 변수가 유도될 수 있는 적절한 수학식으로의 입력들로서 현재의 "가장 가능한 심볼"(현재 0.5 확률보다 큰 확률을 갖도록 컨텍스트에 의해 표시될 때마다, 1 또는 0)의 현재의 컨텍스트 및 아이덴티티를 사용함으로써 수행될 수 있다. 컨텍스트 변수의 수정은 실시예들에서, 현재의 데이터 값에 대해 선택된 하위 범위 내의 코드 값들의 세트의 비율을 증가시킬 수 있다.
CABAC 인코더는 이진 데이터에 대해, 즉, 단지 2개의 심볼들 0 및 1에 의해 나타내지는 데이터에 대해 동작한다. 인코더는 이전에 인코딩된 데이터에 기초하여 후속 데이터에 대한 "컨텍스트" 또는 확률 모델을 선택하는 소위 컨텍스트 모델링 과정을 이용한다. 컨텍스트의 선택은 동일한 결정이 디코더에 보내질 인코딩된 데이터스트림에 가산될 (컨텐스트를 명시하는) 추가 데이터를 필요로 하지 않고서 디코더에서, 이전에 디코딩된 데이터에 기초하여, 수행될 수 있도록 결정적인 방식으로 수행될 수 있다.
도 17을 참조하면, 인코딩될 입력 데이터는 그것이 이미 이진 형태로 되어 있지 않으면 이진 컨버터(900)로 보내질 수 있고; 데이터가 이미 이진 형태로 되어 있으면, 컨버터(900)는 (도식적 스위치(910))에 의해 우회된다. 본 실시예들에서, 이진 형태로의 변환은 아래에 더 설명될, 일련의 이진 "맵들"로서 양자화된 변환 계수 데이터를 표현함으로써 실제적으로 수행된다.
이진 데이터는 다음에 (별개의 경로들로서 개략적으로 도시되지만, 아래에 논의되는 실시예들에서, 약간 상이한 파라미터들을 그저 사용하여, 동일한 처리 스테이지들에 의해 사실상 구현될 수 있는) 2개의 처리 경로들, "정규" 및 "우회" 경로 중 하나에 의해 처리될 수 있다. 우회 경로는 정규 경로와 동일한 형태로 컨텍스트 모델링을 반드시 사용하지 않는 소위 우회 코더(920)를 사용한다. CABAC 코딩의 일부 예들에서, 이 우회 경로는 데이터의 묶음의 특히 빠른 처리의 필요성이 있으면 선택될 수 있지만, 본 실시예들에서 소위 "우회" 데이터의 2개의 특징은 다음과 같다: 첫째, 우회 데이터는 50% 확률을 나타내는 고정된 컨텍스트 모델을 그저 사용하여, CABAC 인코더(950, 960)에 의해 처리되고; 둘째, 우회 데이터는 데이터의 소정의 부류들에 관한 것이고, 한 특정한 예는 계수 부호 데이터이다. 그렇지 않으면, 정규 경로가 도시적 스위치들(930, 940)에 의해 선택된다. 이것은 코딩 엔진(960)이 뒤에 따르는 컨텍스트 모델러(950)에 의해 처리되는 데이터를 포함한다.
도 17에 도시한 엔트로피 인코더는 블록이 전체적으로 제로 값 데이터로 형성되면 단일 값으로서 데이터(즉, 예를 들어, 잔차 영상의 블록에 관한 계수들의 블록에 대응하는 데이터)의 블록을 인코딩한다. 이 부류에 들지 않는 각각의 블록에 대해, 즉, 적어도 몇 개의 비제로 데이터를 포함하는 블록에 대해, "유의성 맵"이 준비된다. 유의성 맵은 인코딩될 데이터의 블록 내의 각각의 위치에 대해, 블록 내의 대응하는 계수가 비제로인지를 표시한다(및 그래서 비제로인 최상위 데이터 부분들의, 데이터 값들의 어레이에 대한, 위치들을 나타내는 유의성 맵의 예이다). 유의성 맵은 비제로 값을 갖는 최상위 데이터 부분들의 마지막의, 데이터 값들의 어레이의 미리 결정된 순서에 따라, 위치를 나타내는 데이터 플래그를 포함할 수 있다.
이진 형태로 되어 있는 유의성 맵 데이터는 인코딩된 CABAC 자체이다. 유의성 맵의 사용은 압축으로 지원하는데 왜냐하면 유의성 맵이 제로인 것으로 표시하는 크기를 갖는 계수에 대해서는 데이터가 인코딩될 필요가 없기 때문이다. 또한, 유의성 맵은 블록 내에 최종 비제로 계수를 나타내기 위해 특별한 코드를 포함할 수 있어서, 최종의 고 주파수/후행하는 제로 계수들의 모두가 인코딩으로부터 생략될 수 있다. 유의성 맵 이후에는, 인코딩된 비트스트림에서, 유의성 맵에 의해 명시된 비제로 계수들의 값들을 정의하는 데이터가 따른다.
맵 데이터의 추가 레벨들이 또한 준비되고 CABAC 인코딩된다. 한 예는 유의성 맵이 "비제로"인 것으로 표시한 맵 위치에서의 계수 데이터가 실제로 "1"의 값을 갖는지를 이진 값(1=예, 0=아니오)으로서 정의하는 맵이다. 또 하나의 맵은 유의성 맵이 "비제로"인 것으로 표시한 맵 위치에서의 계수 데이터가 실제로 "2"의 값을 갖는지를 명시한다. 추가 맵은 유의성 맵이 계수 데이터가 "비제로"인 것을 표시한 그들 맵 위치들에 대해, 데이터가 "2보다 큰" 값을 갖는지를 표시한다. 또 하나의 맵은 "비제로"로서 식별된 데이터에 대해 다시, (+에 대해서는 1, -에 대해서는 0, 또는 물론 다른 유사 방식과 같은 미리 결정된 이진 표기를 사용하여) 데이터 값의 부호를 표시한다.
실시예들에서, 유의성 맵 및 다른 맵들은, 예를 들어 스캔 유닛(360)에 의해 양자화된 변환 계수로부터 발생되고, CABAC 인코딩의 대상이 되기 전에 지그재그 스캐닝 과정(또는 인트라-예측 모드에 따라 지그재그, 수평 래스터 및 수직 래스터 스캐닝으로부터 선택된 스캐닝 과정)의 대상이 된다.
일부 실시예들에서, HEVC CABAC 엔트로피 코더는 다음의 과정들을 사용하여 신택스 요소들을 코딩한다:
TU 내의 최종 유의 계수의 위치(스캔 순서로)가 코딩된다.
각각의 4×4 계수 그룹에 대해(그룹들은 역 스캔 순서로 처리된다), 그룹이 비제로 계수들을 포함하는지를 표시하는, 유의-계수-그룹 플래그가 코딩된다. 이것은 최종 유의 계수를 포함하는 그룹에 대해서는 요구되지 않고 (DC 계수를 포함하는) 상부-좌측 그룹에 대해서는 1이라고 가정한다. 플래그가 1이면, 그룹에 관한 다음의 신택스 요소들은 다음에 따라 즉시 코딩된다:
유의성 맵:
그룹 내의 각각의 계수에 대해, 계수가 유의성을 갖는지(비제로 값을 갖는지) 여부를 표시하는 플래그가 코딩된다. 플래그는 최종 유의 위치에 의해 표시된 계수에 대해서는 필요하지 않다.
1보다 큰 맵(Greater-than-one map):
(그룹의 끝으로부터 뒤로 카운트된) 유의성 맵 값 1을 갖는 8개까지의 계수에 대해, 이것은 크기가 1보다 큰지를 표시한다.
2보다 큰 플래그(Greater-than-two flag):
(그룹의 끝에 가장 가까운 것) 1보다 큰 맵 값 1을 갖는 1개까지의 계수에 대해, 이것은 크기가 2보다 큰지를 표시한다.
부호 비트들(Sign bits):
모든 비제로 계수들에 대해, 부호 비트들은 같은 정도의 확률이 있는 CABAC 빈들로서 코딩되고, 최종 부호 비트(역 스캔 순서)는 아마 부호 비트 하이딩(sign bit hiding)이 사용될 때 대신에 패리티로부터 추론된다.
이스케이프 코드들(Escape codes):
크기가 앞선 신택스 요소에 의해 완전히 설명되지 않는 어떤 계수에 대해, 나머지는 이스케이프 코드로서 코딩된다.
일반적으로 말하면, CABAC 인코딩은 다른 이전에 인코딩된 데이터에 기초하여, 인코딩될 다음 비트에 대해, 컨텍스트, 또는 확률 모델을 예측하는 것을 포함한다. 다음 비트가 확률 모델에 의해 "가장 가능한 것"으로서 식별된 비트와 동일하면, "다음 비트는 확률 모델과 일치한다"라는 정보의 인코딩이 가장 효율적으로 인코딩될 수 있다. "다음 비트는 확률 모델과 일치하지 않는다"고 인코딩하는 것은 덜 효율적이라서, 컨텍스트 데이터의 유도는 인코더의 좋은 동작에 중요하다. "적응"이라는 용어는 컨텍스트 또는 확률 모델들이 (아직 코딩되지 않은) 다음 데이터와 좋은 매치를 제공하려는 시도에서, 인코딩 동안에 적응되거나, 변화되는 것을 의미한다.
간단한 유사성을 사용하면, 영어 기재에서, 문자 "U"는 비교적 흔하지 않다. 그러나 문자 "Q" 바로 다음의 문자 위치에서, 그것은 실제로 매우 흔하다. 그래서, 확률 모델은 "U"의 확률을 매우 낮은 값으로서 설정할 수 있지만, 현재의 문자가 "Q"이면, 다음의 문자로서 "U"에 대한 확률 모델은 매우 높은 확률 값으로서 설정될 수 있다.
CABAC 인코딩은 본 배열들에서, 적어도 비제로 값들이 1 또는 2인지를 표시하는 유의성 맵 및 맵들을 위해 사용되지만, 이들 신택스 요소들의 각각은 모든 계수에 대해 코딩되지 않을 수 있다. 이들 실시예에서 CABAC 인코딩과 동일하지만 확률 모델이 1들 및 0들의 동일한(0.5:0.5) 확률 분포로 고정된다는 사실에 대한 우회 처리는 적어도 부호 데이터 및 앞선 신택스 요소들에 의해 설명되지 않은 계수 크기의 부분들을 위해 사용된다. 완전히 설명되지 않은 그들의 계수 크기의 부분들을 갖는 것으로서 식별된 그들 데이터 위치들에 대해, 별개의 소위 이스케이프 데이터 인코딩이 데이터의 실제 나머지 값을 인코딩하는 데 사용될 수 있고, 여기서 실제 크기 값은 나머지 크기 값 플러스 각각의 코딩된 신택스 요소들로부터 유도된 오프셋이다. 이것은 골롬-라이스(Golomb-Rice) 인코딩 기술을 포함할 수 있다.
CABAC 컨텍스트 모델링 및 인코딩 과정은 [WD4: Working Draft 4 of High-Efficiency Video Coding, JCTVC-F803_d5, Draft ISO/IEC 23008-HEVC;201x(E)2011-10-28]에 더욱 상세히 설명된다.
이스케이프 비트 인코딩의 실시예들에 관한 다른 기술들 또는 관련된 기술들은 도 18을 참조하여 논의될 것이다.
그러나, 먼저, 이스케이프 코드들을 인코딩하는 데 사용되는 기술들이 논의될 것이다.
현재의(본원의 우선일 기준) HEVC 표준에서, 이스케이프 코드들은 2개의 메커니즘을 사용하여 코딩된다:
1/ 2의 최대 프리픽스 길이를 갖는 골롬-라이스 코드.
2/ 코딩된 값이 골롬-라이스 코드에 의해 완전히 설명될 수 없다면, "이스케이프-이스케이프" 코드가 지수-골롬-차수-k를 사용하여 코딩된다.
소위 골롬-라이스 코딩은 값 v를 k(다른 경우에 rParam이라고 함) 비트의 서픽스가 뒤에 따르는 단항 인코딩된 프리픽스(0이 뒤에 따르는 가변 수의 1들, 또는 그 반대)로서 인코딩한다.
코딩 공간은 그 크기가 다음과 같이 라이스 파라미터 rParam에 의해 결정되는 간격들로 나누어진다:
간격 크기 = 1<<rParam
보통, 표기 "<<n"은 값 n인 비트 위치들의 수만큼 좌측으로 시프트하는 것을 나타낸다. 유사한 표기 >>n은 n 비트 위치들만큼 우측으로 시프트하는 것을 나타낸다. 그래서, 예를 들어, rParam이 0일 때, 코딩 간격 크기는 1이다. rParam이 3일 때, 간격 크기는 8이고, 등등이다.
rParam의 값은 인코더 및 디코더에 의해 별개로 유지되고 미리 결정된 조건들하에서 수정된다.
프리픽스는 최종 값이 그 안에 드는 코딩 간격을 나타내기 위해 단항 코딩을 사용하여 코딩된다.
예를 들어, 프리픽스 값=2, rParam=2, 간격 크기=4이고 그 값은 범위 8-11 내에 든다. 이것은 값의 "대략" 부분으로서 고려될 수 있다.
서픽스는 이진 코딩을 사용하여 코딩된다(서픽스 길이는 rParam임). 서픽스 값은 최종 값이 명시된 간격 내에 어디에 있는지를 표시한다.
예를 들어, 프리픽스 값=2, rParam=2, 서픽스 값=3이고; 이것은 최종 값이 간격 8-11 내에 있다는 것을 표시한다. 0의 서픽스 값은 8의 최종 값을 표시할 것이고; 3의 서픽스 값은 (본 예에서와 같이) 11의 최종 값을 표시한다.
그러므로 서픽스는 값의 "미세" 부분으로서 고려될 수 있다.
prefix_length를 단항 인코딩된 프리픽스 내의 1들의 총수라고 하자. K를 최하위 rParam 비트들의 값이라고 하자.
최종 값=(prefix_length<<rParam)+K이다.
위에 언급된 바와 같이, 현재의(본원의 우선일 기준) HEVC 표준에서, 골롬-라이스 코딩에 대한 최대 프리픽스 길이에 (2의) 제한이 부과된다(그러므로 불과 3개의 간격이 있다). 보다 긴 프리픽스가 보내지면, 그것의 값으로부터 3이 감산되고(프리픽스의 값은 그것의 길이임) 프리픽스는 대신에 지수-골롬-차수-k 프리픽스로서 처리된다(rParam은 k의 값의 역할을 함). 이 지수-골롬-차수-k 코드는 정상적인 이스케이프-코딩 메커니즘으로부터의 이스케이프 - "이스케이프-이스케이프" 코드인 것으로 고려될 수 있다.
지수 골롬 차수-k가 뒤에 따르는 2의 최대 길이를 갖는 골롬 라이스 프리픽스는 또한 골롬-차수-k+1 지수가 뒤에 따르는 3의 최대 길이를 갖는 골롬 라이스 프리픽스와 등가라는 것을 이해할 것이다.
또한, 최종 값은 또한 골롬-라이스 코딩을 사용하여 코딩될 수 없는 최소 값을 (디코더에서) 가산 또는 (인코더에서) 감산함으로써 수정되는데 왜냐하면 최종 값은 이스케이프-이스케이프 코딩이 사용된 후에 적어도 그 큰 것으로 알려지기 때문이다.
지수 골롬 차수-k 코드들이 이제 논의될 것이다. 이러한 코드들에서, 인코딩될 수는 가변 길이 단항-인코딩된 프리픽스와 가변 길이 서픽스로 나누어진다. 서픽스 비트들의 수 = prefix_length + k이다. 여기서, prefix_length는 단항 코드에서 한번 다시 1들의 수이다.
골롬-라이스 코딩에서와 같이, 코딩 공간은 간격들로 분할된다. 그러나, 간격들은 동일 크기는 아니고; 대신에 그들은 예를 들어 (간격 0= 0, 간격 1=1-2, 간격 2=3-6) 등등과 같이, 기하급수적으로 크기가 증가한다.
프리픽스는 최종 값이 그 안에 드는 코딩 간격을 나타내기 위해 단항 코딩을 사용하여 코딩된다.
서픽스는 이진 코딩을 사용하여 코딩되지만, 여기서 서픽스 길이는 프리픽스 길이와 동일하다. 서픽스 값은 최종 값이 명시된 간격 어디에 있는지를 표시한다.
k와 동일한 많은 여분의 비트들은 이진 코딩을 사용하여 코딩되고; 이들 비트는 최종 값의 추가 LSB들의 역할을 한다.
코드 내의 비트들의 총수= prefix_length + 1 + prefix_length + k이다.
K를 최종 k 비트들의 값이라고 하자.
prefix_length가 0일 때, v는 K일 것이다.
prefix_length가 1일 때, v는 (1<<k)+K와 (3<<k)+K 사이(양쪽 수는 제외)일 것이다.
prefix_length가 2일 때, v는 (3<<k)+K와 (7<<k)+K 사이(양쪽 수는 제외)일 것이다.
prefix_length가 3일 때, v는 (7<<k)+K와 (15<<k)+K 사이(양쪽 수는 제외)일 것이다.
그러므로 v=((2^prefix_length)-1)<<k) + 서픽스이다.
예를 들어: 최종 이진 코드=110011이다.
이 예에서, rParam=1; 프리픽스 길이=2(처음 0 전의 2개의 1들), 코딩 간격=3-6; 서픽스=0b01=1, k 전의 값 = 4 = 0b100; 여분의 비트 = 0b1 = 1, 최종 값=0b1001=9이다.(0b는 이진 표시라는 것을 나타낸다).
HEVC에서, 위에 언급된 바와 같이, 골롬-라이스 및 지수 골롬 코드들 둘 다가 사용된다. prefix_length가 3 미만이면, 코드는 골롬-라이스 코드로서 인터프리트된다. 그러나, prefix_length가 3 이상이면, 코드는 차수 k의 지수 골롬 코드로서 인터프리트되고, 여기서 위에 언급된 rParam 값은 값 k의 역할을 한다.
프리픽스(어느 한 시스템에서)는 단항 코드의 예이다. 서픽스는 비단항 코드의 예이다. 2개의 시스템들은 2-부분 가변 길이 코드의 예들이다.
이 경우에, 지수 골롬 코드를 디코딩하는 데 사용되는 prefix_length의 값은 3만큼 감소되고, 디코딩 동작으로부터 결과된 값은 (3<<k)만큼 증가되는데, 왜냐하면 이것은 골롬-라이스 코드를 사용하여 표현될 수 없는 최소 값이기 때문이다.
HEVC 이스케이프 및 이스케이프-이스케이프 코드들을 위해 사용되는 값 "k"는 변화한다. 16개 계수들의 각각의 그룹에 대해, 값 k는 0에서 시작하고, 계수 값의 크기가 3<<k보다 클 때마다 증가된다. 이 상황에 응답하여, k는 최대 4까지 증가된다. 계수의 부호를 나타내는 부호 비트는 별개로 보내지므로, 논의는 계수 크기들에 관한 것이라는 점에 주목한다. k를 초기화하고 조정하는 다른 방식들이 또한 적용될 수 있다.
도 18은 위에 논의된 바와 같이 이스케이프 코드들을 발생하는 과정을 도시한 개략적 플로우차트이다.
이 방법은 (예를 들어) 주파수 변환된 영상 계수들의 시퀀스, 또는 각각의 데이터 값의 크기가 1만큼 감소된 그 시퀀스의 비제로 성분들, 또는 그 시퀀스의 비제로 성분들을 포함하는 데이터 값들의 그룹에 대해 동작가능하다(이 마지막 경우에, 유의성 맵이 먼저 발생될 수 있어서, 각각의 계수는 추가 처리 전에 1만큼 감소되는데 왜냐하면 유의성 맵은 1의 값을 차지하기 때문이다).
단계 2000에서, k의 초기 값은 각각의 그룹의 시작에서 설정된다. 정상적인 HEVC 버전 1 시스템에서, k는 초기에 0으로 설정되지만, HEVC 표준으로의 확장들을 위해 사용된 대안적인 방식들이 있을 수 있다. 단계 2010에서, CABAC 인코더는 현재 그룹이 DC 계수의 등가를 포함하는 상부 좌측 그룹인지 또는 그 그룹이 앞선 과정에 의해 최종 유의 계수로서 마크된 계수를 포함하는지를 체크한다. 그렇다면, 제어는 단계 2030으로 넘어간다. 그렇지 않으면, 단계 2020에서 CABAC 인코더는 현재의 그룹이 비제로 계수들을 포함하는지를 체크한다. 그렇지 않으면, 과정은 각각의 유의성 그룹 플래그를 0으로 코딩하는 것을 종료한다. 그렇다면, 제어는 각각의 유의성 그룹 플래그를 1로 코딩하는 단계 2030으로 넘어간다. 단계 2030에서, 유의성 맵은 그룹 내의 각각의 계수에 대해 발생된다(그러나 최종 유의 계수를 포함하는 그룹에 대해, 일부 계수들은 이들이 추론될 수 있는 대로, 유의성 맵 엔트리를 요구하지 않는다). 단계 2040에서, 그룹의 끝으로부터 뒤로 카운트되는, 유의성 맵 값 1을 갖는 8개까지의 계수들에 대해, 크기가 1보다 큰지를 표시하는 a>1 맵이 발생된다. 단계 2050에서, a>2 맵이 발생된다. 1의 1> 맵 값을 갖는 1까지의 계수에 대해(그룹의 끝에 가장 가까운 하나), 이것은 크기가 2보다 큰지를 표시한다. 단계 2060에서, (부호 비트 하이딩이라고 하는 방식이 그렇지 않으면 그룹 내의 코딩된 값들의 우수 및 기수 패리티로부터 코딩됐을 최종 부호 비트를 추론하는 데 사용될 수 있지만) 부호 비트들은 모든 유의 계수들에 대해 발생되고 단계 1570에서, 이스케이프 코드들은 그 크기가 앞선 신택스 요소(즉, 단계들 2030-2060 중 어느 것에서 발생된 데이터)에 의해 완전히 설명되지 않은 어떤 계수에 대해 발생된다. 도 18에서, HEVC의 일부 예시적인 구현들에서, 맵들의 모두가 각각의 계수에 대해 발생될 필요는 없다는 점에 주목한다. 예를 들어, (말하자면) 16개 계수의 그룹 내에, 일부 맵들이 발생되지 않는 하나 이상의 계수가 있을 수 있다.
이들 맵은 1보다 큰 최상위 데이터 부분들의, 데이터 값들의 어레이에 대한, 위치들을 나타내는 1보다 큰 맵; 및 2보다 큰 최상위 데이터 부분들의, 데이터 값들의 어레이에 대한, 위치들을 나타내는 2보다 큰 맵의 예들이다.
단계 2070에서, 이스케이프 코드가 요구되면, 그것은 지금까지 설명된 기술들을 사용하여 k의 현재 값에 기초하여 발생된다. 특히, 이스케이프 코드의 사용을 요구하는 계수는 먼저 유의성 맵 및 선택적으로 다른 맵들 중 하나 이상을 사용하여 처리된다. 이스케이프 코딩을 필요로 하는 계수의 경우에, 사용된 유의성, >1 및 >2 맵 중의 어느 것은 "1"로서 플래그될 것이라는 점에 주목한다. 이것은 이스케이프 코딩을 필요로 하는 임의의 계수가 그 계수에 대해 가용한 어떤 맵이라도 사용하여 인코딩될 수 있는 값보다 정의에 의해 크기 때문이다.
현재의 데이터 값이 완전히 인코딩되지 않았다면 이스케이프 코드가 필요하다. 여기서, "완전히" 인코딩된다는 용어는 (예를 들어, 맵들, 또는 맵들 플러스 고정된 비트들에 의해) 이미 인코딩된 값들보다 적은 데이터 값이 제로라는 것을 의미한다. 바꾸어 말하면, 데이터 값은 그들 성분을 고려한, 그 데이터 값의 잔차량이 제로인 경우에 이미 발생된 성분들에 의해 완전히 인코딩된다.
그래서, 예시적인 계수에 대해, 유의성 맵 및 >1 및 >2 맵들이 가용하다고 가정하면, 이들 각각은 그 계수에 대해 "유의", ">1" 및 ">2"로서 플래그될 것이다.
이것은 (이 예에서) 계수는 적어도 3이어야 한다는 것을 의미한다.
그러므로, 3의 값이 정보의 손실 없이, 이스케이프 코딩 전에 계수로부터 감산될 수 있다. 3의 값(또는 보다 일반적으로, 그 계수에 적용한 맵들에 의해 정의된 수치 범위를 표시하는 변수 base_level)은 디코딩 시에 회복된다.
15 십진(1111 이진)의 계수 값을 예로서 취하면, 유의성 맵은 "1"이고, >1 맵은 "1"이고 >2 맵은 "1"이다. 값 base_level은 3이다. base-level이 이스케이프 코딩을 위해 통과된 12 십진(1100 이진)의 값을 부여하기 위해 계수 값으로부터 감산된다.
값 k(상기 참조)는 이제 서픽스 비트들의 수를 정의한다. 서픽스 비트들은 base_level의 감산 이후에 계수 값의 최하위 비트들로부터 취해진다. (예를 들어) k=2이면, 나머지 값 1100의 2개의 최하위 비트들은 서픽스 비트들로서 처리되고, 즉 이 예에서 서픽스 비트들은 00이다. 나머지 비트들(이 예에서 11)은 프리픽스로서 인코딩되는 것으로 처리된다.
그래서 요약하면, 이스케이프 코드와 연관된 처리는:
(이스케이프 코드가 요구되는 경우에) 계수가 적어도 base_level의 값을 가져야 하도록 계수의 하나 이상의 최하위 비트를 정의하는 하나 이상의 맵을 발생하고;
계수로부터 base_level을 감산하고;
계수의 나머지 부분의 최하위 k 비트들을 서픽스 비트들로서 인코딩하고;
계수의 나머지 부분의 나머지 최상위 비트들을 프리픽스로서 인코딩하는 것을 포함한다.
본 개시 내용의 실시예들은 계수에 대한 이스케이프 코드를 코딩할 때 발생할 수 있는 최악의 경우 코드 길이의 인식에 관한 것이다.
16-비트 비디오에 대한 확장된 정밀도 처리를 사용할 때, 엔트로피 코더 내의 계수 범위 maxTrDynamicRange는 22-비트이므로, 계수에 대해 코딩될 수 있는 이스케이프-코드 비트들의 최대 수는 rParam이 0이고 계수 크기가 (1<<22)의 그것의 최대에 있을 때 다음과 같이 주어진다는 것이 이 방식으로 보여질 수 있다:
최대 지수-골롬 코딩된 값=
(1<<22) (초기 계수 크기)
-1 (유의성 맵에 의해 이미 코딩된 값으로 인해 1을 공제)
-3 (위에 논의된 바와 같이 골롬-라이스 코드가 아니기 때문에 3을 공제)
= 4194300
HEVC 지수-골롬 코딩에서, 이 값은 그것이 골롬-라이스 코드가 아니라는 것을 시그널링하기 위해 1-비트 분리자 및 3의 여분의 프리픽스 비트들 뿐만 아니라 21-비트 서픽스(및 그러므로 21-비트 프리픽스)를 요구한다. 이것은 최악의 경우 총 46 비트를 야기하여, 디코더에 대한 부담이 과중할 수 있다.
본 개시 내용의 실시예들은 최악의 경우 이스케이프 코드 길이를, HEVC 버전 1에서의 최악의 경우 이스케이프 코드 길이와 동일한 32로 감소시킬 수 있는 이스케이프 코딩의 지수-골롬 부분에 하나 이상의 대안적인 방식을 제공한다. 잠재적으로 코드 길이는 더 감소할 수 있지만, 이것은 코드 길이와 코딩 효율 간의 절충으로 된다. 버전 2 디코더가 버전 1을 지원하여야 하기 때문에, 버전 2 디코더의 확장된 프로필들 내의 최대 코드 길이를 버전 1 표준의 최대 코드 길이의 것 아래로 감소시키는 요구는 없다.
위에 논의된 바와 같이, 현재의(본원의 우선일 기준) HEVC 표준에서, 이스케이프 코드들(CABAC-코딩된 신택스 요소에 의해 설명되지 않은 계수의 크기의 어떤 부분)은 2-부분 골롬-라이스/지수-골롬 방법을 사용하여 코딩된다. 확장된 정밀도를 사용하여 16-비트 비디오를 코딩할 때, 이 방법은 위에 유도된 바와 같이 46비트의 최대 이스케이프 코드 길이를 야기하여, 단일 계수에 대해 디코딩하는 것에 상당한 부담이 될 수 있다.
일부 실시예들에서, 이스케이프 코딩 방식의 지수-골롬 부분에서 프리픽스와 서픽스 길이들 간의 맵핑을 수정함으로써, 최악의 경우는 코딩 효율 또는 처리 효율에 상당한 악 영향을 주지 않고, 예를 들어, 32비트로 감소될 수 있다. 다른 실시예들에서, 골롬-라이스는 또한 조정될 수 있거나, 심지어 전체적으로 제거될 수 있다.
소위 확장된 정밀도를 사용하여 16-비트 비디오를 코딩할 때, 변환과 양자화기 및 그러므로 엔트로피 코더에 들어가는 계수들의 동적 범위 (maxTrDynamicRange)는 16+6=22이다. 이것은 222=4194304의 최대 계수 크기를 야기한다. 유의성 맵 엔트리에 대해 1 및 골롬-라이스 코드(라이스 파라미터 rParam은 최악의 경우에서 0이다)에 대해 3의 감산에 의해 조정될 때, 지수-골롬 코딩을 사용하여 코딩될 수 있는 최대 값은 4194300이다.
HEVC에서 지수-골롬을 사용하여 이 값을 코딩하기 위해, 21-비트 서픽스(및 그러므로 21-비트 프리픽스)가 지수-골롬 코딩이 사용 중이라는 것을 시그널링하기 위해 1-비트 분리기 및 3개의 여분의 프리픽스 비트들에 추가하여 요구된다. 이것은 46의 최악의 경우 총 코드 길이를 야기한다.
그러나, 서픽스 길이로 직접 프리픽스 길이를 간단히 맵핑(1:1 맵핑)하기 보다는, 다양한 대안적인 방식들이 여기에 제공된다.
일부 실시예들에서, 서픽스 길이는 프리픽스 길이의 (지수 함수 등과 같은) 함수일 수 있다. 지수 함수의 예는 suffixLength=(1<<prefixLength)>>1이다. 예들 들어, 이 방식에서, 단지 5개의 프리픽스 비트들이 16개의 서픽스 비트들을 시그널링하기 위해 보내져야 하고; 분리자 '0'이 단항 코딩 또는 5의 최대를 갖는 절사된 단항 코딩이 사용되는지에 따라, 또한 요구될 수 있다. 이것은 프리픽스 부분에 의해 인코딩된 값이 비단항 코딩된 서픽스 부분의 길이가 프리픽스 부분에 의해 인코딩된 값의 지수 함수이도록 비단항 코딩된 서픽스 부분과 연관되는 배열의 예이다.
일부 실시예들에서, 프리픽스는 자체로 단항-인코딩이라기 보다는 지수-골롬 코드일 수 있다.
일부 실시예들에서 프리픽스 길이는 테이블을 사용하여 서픽스 길이에 맵핑될 수 있다. 이 방법은 간격 크기들의 세트가 데이터에 맞추어지게 한다. 테이블은 선정될 수 있거나(즉, 인코더 및 디코더에서 미리 제공됨), (프리픽스 부분의 길이와 서픽스 부분의 길이 간의 관계가 코딩될 데이터와 연관하여 보내진 정보에 의해 정의되도록) 인코딩된 데이터 스트림에서 또는 그와 연관하여 보내지거나, (스트림에서 보내진 데이터를 사용하여 미리 결정된 테이블들의 세트로부터 선택된 것과 같은) 이전에 코딩된 계수들 또는 다른 데이터, 또는 이들 또는 다른 기술들의 조합으로부터 유도될 수 있다. 일부 실시예들에서 프리픽스 부분에 의해 인코딩된 값과 비단항 코딩된 서픽스 부분의 길이는 하나 이상의 테이블에 의해 연관된다. 일부 실시예들은 (ⅰ) 인코딩된 데이터 값들과 연관된 데이터 플래그; 및 (ⅱ) 하나 이상의 이전에 인코딩된 데이터 값들로부터 유도된 파라미터로 이루어진 그룹 중 하나 이상에 따라 프리픽스 부분에 의해 인코딩된 값과 비단항 코딩된 서픽스 부분의 길이를 연관시키는 테이블들 중 하나를 선택하는 단계를 포함한다.
일부 다른 실시예들은 다음과 같이 동작할 수 있다. 확장된 정밀도를 사용하여 16-비트 비디오를 코딩할 때, 변환과 양자화기 및 그러므로 엔트로피 코더에 들어가는 계수들의 동적 범위(maxTrDynamicRange)는 16+6=22이다. 위에 논의된 바와 같이, 이것은 222=4194304의 최대 계수 크기를 야기한다. 유의성 맵 엔트리에 대해 1 및 골롬-라이스 코드(라이스 파라미터 rParam은 최악의 경우에서 0임)에 대해 3의 감산에 의해 조정될 때, 지수-골롬 코딩을 사용하여 코딩될 수 있는 최대 값은 4194300이고, 위에 논의된 바와 같이, 46의 최악의 경우 총 코드 길이이다.
그러나, 프리픽스 길이가 제한 없이 간단히 연장하게 하기 보다는, 최악의 경우를 시그널링하는 데 요구되는 프리픽스 비트들의 수를 제한하는 대안적인 방식이 확장된 정밀도 처리가 가능하게 될 때 사용될 수 있다. 최대 프리픽스 길이는
maximumPrefixLength = 32 - (3 + MAX_TR_DYNAMIC_RANGE)로 주어진다.
이 프리픽스 길이가 도달될 때, 대응하는 서픽스 길이는
suffixLength = MAX_TR_DYNAMIC_RANGE - rParam로 주어진다.
또한, 최대 프리픽스 길이는 인코딩/디코딩의 시작에서 알려지기 때문에, 프리픽스는 절사된-단항 코딩을 사용하여 - 최대 프리픽스 길이가 도달되면 분리자를 생략하여 코딩될 수 있다.
따라서 최악의 경우 이스케이프 코드 길이는:
(32 - (3 + MAX_TR_DYNAMIC_RANGE)) (프리픽스)
+ (MAX_TR_DYNAMIC_RANGE - rParam) (서픽스)
+ rParam (고정된 비트들)
+ 3 (비골롬-라이스-코드 비트들)
= 32
로 감소된다.
이것은 어떤 이스케이프 코드가 단일 32-비트 정수 내로 맞게 하고 최대 이스케이프 코드 길이를 HEVC 버전 1에서의 것과 동일하게 한다. (16 비트 비디오의 사용과 같은) 높은 비트 깊이 동작을 지원하는 HEVC 디코더는 여전히 적어도 일부 실시예에서 HEVC 버전 1을 사용하여 인코딩된 데이터의 사용을 지원하는 것을 필요로 하므로, HEVC 버전 1 하에서 허용되는 최대까지의 이스케이프 코드의 비트들의 수의 제한은 이러한 배열들에서 이스케이프 코드 길이는 이미 지원된 최대보다 크기 않다는 것을 의미한다는 점에 주목한다.
이들 실시예는 위에 논의된 맵핑 테이블 배열과 유사한 장점들을 제공할 수 있지만, 본 예들은 룩업 테이블을 필요로 하지 않고 동일한 최악의 경우 코드 길이 경감 및 동일한 코딩 성능을 달성할 수 있다. 그러나, (인코딩될 또는 디코딩된) 데이터 값들의 비트 깊이에 의존하는 최대 길이로 프리픽스 길이를 캡핑하는 일반적인 원리는 또한 위에 논의된 것과 같은 하나 이상의 테이블, 또는 프리픽스 길이와 서픽스 길이 간의 관계의 다른 표현들과 함께 사용될 수 있다.
이들 실시예는 그러므로 프리픽스 길이가 최대 프리픽스 길이 값으로 캡핑되는 기술의 예를 제공한다. 예를 들어, 최대 프리픽스 길이 값은 인코딩을 위한 데이터 값들의 동적 범위인 값 maxTrDynamicRange에 의존할 수 있다. 일부 예들에서, 최대 프리픽스 길이는 29-maxTrDynamicRange이다. 다른 예들에서, 최대 프리픽스 길이는 28-maxTrDynamicRange이다.
이들 기술들 중 일부를 표현하는 또 하나의 방식은 비디오 데이터가 (16비트들, 각각의 채널 내의 샘플 당 비트들의 수의 표현과 같은) 비트 깊이를 갖는 것이라는 점에 주목한다. 이 비트 깊이는 원래의 비디오 데이터의 샘플들(즉, 인코더에 의한 인코딩을 위한 샘플들)에 적용하고, 또한 디코더에 의해 디코딩되는 대로 디코딩된 샘플들에 대응하여 적용한다. 비트 깊이는 인코더 또는 디코더에 공급되는 대로 데이터 구조로부터 암시될 수 있거나, 플래그들 또는 파라미터들과 같은 하나 이상의 표시자에 의해 인코더 또는 디코더에 플래그되거나 그렇지 않으면 표시될 수 있다. 일부 예들에서, maxTrDynamicRange는 비트 깊이 플러스 6비트의 오프셋과 같은 오프셋이 되도록 설정되고(그래서 비트 깊이가 예를 들어, 16비트인 상황에서, 변수 maxTrDynamicRange는 16+6=22비트일 수 있음) 프리픽스 길이는 그러므로 경우에 따라, 인코딩하기 위한 데이터 값들 또는 디코딩된 데이터 값들의 비트 깊이에 의존하는 최대 프리픽스 길이로 캡핑된다. 보다 구체적으로, 일부 예들에서, 프리픽스 길이는 그러므로 경우에 따라, 인코딩하기 위한 데이터 값들 또는 디코딩된 데이터 값들의 비트 깊이에 의존하는 최대 프리픽스 길이, 플러스 6비트로 캡핑된다.
따라서 이러한 배열들은 최대 프리픽스 길이가 미리 결정된 상수 마이너스 인코딩을 위한 데이터 값들의 동적 범위인 값과 동일한 인코딩 또는 디코딩 시스템들 및 방법들의 예들을 제공할 수 있다. 예를 들어, 미리 결정된 상수는 29일 수 있거나, 미리 결정된 상수는 28일 수 있다.
이들 기술의 조합, 및/또는 아래에 논의될 기술들이 사용될 수 있다.
제어기(345)는 프리픽스 길이 및/또는 프리픽스 길이와 서픽스 길이 간의 관계가 의존하는 어떤 파라미터들을 검출하고, 최대 프리픽스 길이 및 프리픽스 길이와 서픽스 길이 간의 관계를 설정 또는 그렇지 않으면 구현하기 위해(디코더 또는 인코더의 경우에, 또는 대응하는 방법들의 경우에) 동작가능할 수 있다.
이들 방식은 데이터 인코딩 장치의 동작 방법이 데이터 인코딩 장치가 데이터 값들의 어레이를 데이터 세트들 및 데이터 세트들에 의해 인코딩되지 않은 값들에 대한 이스케이프 코드들로서 인코딩하는 것을 포함하고, 이스케이프 코드는 프리픽스 부분 및 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함하는 기술의 모든 실시예들이다. 여기에 설명된 예들은 프리픽스 길이가 인코딩되는 데이터 값들 또는 디코딩된 데이터 값들의 비트 깊이에 의존하는 최대 프리픽스 길이로 캡핑되는 기술의 실시예들을 제공한다.
(디코더에서 또는 인코더의 디코딩 경로 내에서) 대응하는 디코딩 동작에 대해, 이들 방식들은 데이터 디코딩 장치의 동작 방법은 데이터 디코딩 장치가 데이터 세트들 및 데이터 세트들에 의해 인코딩되지 않은 값들에 대한 이스케이프 코드들로서 인코딩된 입력 인코딩된 데이터 값들을 디코딩하는 것을 포함하고, 이스케이프 코드는 프리픽스 부분 및 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함하는 기술의 모든 실시예들이다.
실시예들은 이러한 방법들을 수행하는 인코딩 및/또는 디코딩 장치, 이러한 방법들이 소프트웨어를 실행하는 컴퓨터에 의해 실행되게 하는 소프트웨어, 이러한 소프트웨어가 제공되는 비일시적인 머신 판독가능 저장 매체(자기 또는 광 디스크 등), 및 비디오 데이터 캡처, 송신, 디스플레이 및/또는 이러한 장치를 포함하는 저장 장치를 포함한다.
논의된 바와 같이, 프리픽스 부분은 단항 인코딩된 값을 포함할 수 있다.
일부 실시예들에서, 최악의 경우를 시그널링하는 데 요구되는 프리픽스 비트들의 수를 제한하는 데 사용될 수 있는 맵핑이 확장된 정밀도 처리가 가능하게 될 때 사용될 수 있다. 이러한 맵핑은 서픽스 길이들을 확장된 정밀도 처리를 위한 프리픽스 길이들에 맵핑하는 다음의 테이블에서 제시된다.
Figure 112021148693952-pat00001
방식 (ⅰ)는 정상적인 지수-골롬 코딩의 거동을 복제한다.
방식 (ⅱ)는 위에 논의된 바와 같이 프리픽스 길이의 지수 함수인 서픽스 길이를 에뮬레이트한다.
방식 (ⅱ)는 16-비트 비디오 코딩(여기서 MAX_TR_DYNAMIC_RANGE는 22-비트)을 위한 최악의 경우를, 46 비트(단항 코딩을 갖는 방식 ⅰ)로부터 단항 코딩이 프리픽스를 위해 사용되는 경우에 31 비트로, 또는 절사된 단항 코딩이 프리픽스를 위해 사용되는 경우에 30 비트로, 5개의 프리픽스 비트들의 최대에 의해, 감소시킬 수 있지만, 이것은 간격 정밀도가 작은 값들에 대해 손실됨에 따라 방식 (ⅲ)보다 코딩 효율이 많이 손실되는 결과를 가져다 준다는 점에 주목할 수 있다. 그러나, (그 내용들이 참조로 포함된) GB1320775.8에 개시된 골롬-라이스 파라미터 적응 방법들이 또한 채택된다면, 이들 방식들에 대한 손실들이 감소될 수 있다.
방식 (ⅲ)을 사용하여, 최대가능한 서픽스를 시그널링하기 위해 (21이라기 보다는) 불과 7개의 프리픽스 비트들을 요구하면서, 작은 값들에 대한 미세하게 잘린 코딩 간격들이 유지된다. 또한, 최대 프리픽스 길이가 알려지기 때문에, 프리픽스는 절사된 단항 인코딩된 값으로서 절사된 단항 코딩을 사용하여 - 최대 프리픽스 길이가 도달되면 분리자를 생략하여 코딩될 수 있다. 최대 서픽스 길이는 maxTrDynamicRange이지만, rParam이 비제로일 때는, 최대 서픽스 길이는 maxTrDynamicRange가 - rParam이고, 추가의 rParam 비트들이 서픽스를 따른다. 그러므로, 이 방식의 일부 실시예들에서, 테이블 내의 값들의 일부 또는 모두는 rParam의 함수이다.
제어기(345)는 프리픽스 길이와 서픽스 길이 간의 적절한 관계를 검출하기 위해 (상기 테이블들 (ⅰ) 내지 (ⅲ)과 같은) 테이블들의 세트 중 하나 이상에 액세스하도록 구성될 수 있다.
최악의 경우 이스케이프 코드 길이는 그러므로 7(프리픽스)+22(최대 서픽스)+3(비골롬-라이스-코드 비트들)=32로 감소되어, 절사된 단항 프리픽스에 대해 분리자가 없고, 어떤 이스케이프 코드가 단일의 32-비트 정수 내로 맞게 한다.
일부 실시예들의 추가 특징들은 다음과 같다:
최대 서픽스 길이가 알려지기 때문에, 프리픽스는 간단한 단항 코딩 대신에 절사된 단항 코딩을 사용하여 보내질 수 있다(즉, 프리픽스 비트들의 최대 수가 도달되면, 프리픽스와 서픽스 사이에 정상적으로 제공되는 분리자는 요구되지 않는다).
프리픽스 길이가 요구된 것보다 큰 (예를 들어, maxTrDynamicRange보다 큰) 서픽스 길이에 맵핑할 수 있는 방식들에서, 대신에 그것은 이 값으로 깎일 수 있으므로, maxTrDynamicRange보다 큰 프리픽스 길이와 서픽스 길이 간의 관계에 의해 제공된 임의의 값들은 maxTrDynamicRange로 설정된다. 일반적으로, 실시예들에서, 프리픽스 부분에 의해 인코딩된 값과 비단항 코딩된 서픽스 부분의 길이 간의 관계는 비단항 코딩된 서픽스 부분의 최대 길이가 인코딩될 데이터 값들 각각의 비트들의 최대 수보다 크지 않도록 된다.
maxTrDynamicRange가 16비트보다 적은 구성들에서, 16의 값은, 예를 들어 상기 관계들에서의 최대 서픽스 길이를 15로서 설정함으로써 제거될 수 있다. 한 예로서, 이것은 그렇지 않으면 16비트 서픽스를 함축했을, 값 4의 지수 프리픽스를 인터프리트하기 위해 사용될 수 있다.
제1의 실시된 예가 이제 논의될 것이다.
이 과정에의 입력은 부호 없는 값 synVal을 갖는 신택스 요소, Rice 파라미터 riceParam 및 현재의 신택스 요소가 크로마 계수에 관한 것인지 여부를 나타내는 플래그 isChroma에 대한 테이블-기반 이진화의 요구이다.
이 과정의 출력은 신택스 요소 synVal의 테이블-기반 이진화이다.
변수 maxTrDynamicRange는 다음과 같이 유도된다:
isChroma가 0이면, maxTrDynamicRange = extended_precision_processing_flag ? Max( 15, BitDepthY + 6 ) : 15
그렇지 않으면, maxTrDynamicRange = extended_precision_processing_flag ? Max (15, BitDepthC + 6 ) : 15.
여기에 사용된 표기는 다음과 같다. "A = flag ? B : C"는 변수 A가 각각 참 또는 거짓인 이진 값 "플래그"의 상태에 따라 값 B 또는 값 C에 할당되는 것을 표시한다. Max(D, E)는 값들 D와 E 중 큰 것을 돌려준다. BitDepthY는 루마 또는 그린 채널 비트 깊이이고; BitDepthC는 크로마 또는 블루 및 레드 채널 비트 깊이이다. 값 extended_precision_processing_flag는 확장된 정밀도 처리가 가능한지 여부를 나타내는 플래그이다.
변수들 suffixLength[x] 및 minimumUncodeableValue[x], 위에 논의된 바와 같은 이스케이프-이스케이프 코드의 최소 값을 나타내는 값은 (한 예로서) 다음의 테이블로부터 유도된다.
Figure 112021148693952-pat00002
신택스 요소 synVal의 테이블-기반 이진화 과정의 빈 스트링은 다음과 같이 명시되는데, 여기서 함수 put(X)의 각각의 호출(call)은 빈 스트링의 끝에서 이진 값 X를 가산하고, X는 0 또는 1이다:
Figure 112021148693952-pat00003
coeff_abs_level_remaining을 위한 이진화 과정
변수 cMax는 아래와 같이, 위에 사용된 rParam과 등가인 cRiceParam으로부터 유도된다.
cMax = 43 << cRiceParam
신택스 요소 coeff_abs_level_remaining[n]의 이진화는 프리픽스 스트링과 (존재할 때) 서픽스 빈 스트링의 연쇄이다.
프리픽스 빈 스트링의 유도를 위해, 다음이 적용된다:
cu_qp_delta_abs의 프리픽스 값, prefixVal은 다음과 같이 유도된다:
prefixVal = Min(cMax, coeff_abs_level_remaining[n])
프리픽스 빈 스트링은 입력들로서 변수들 cMax 및 cRiceParam를 갖는 prefixVal에 대한 TR 이진화 과정을 불러옴으로써 명시된다.
프리픽스 빈 스트링이 모든 비트들이 1인 길이 43의 비트 스트링일 때, 서픽스 빈 스트링이 제시되고 그것은 다음과 같이 유도된다:
cu_qp_delta_abs의 서픽스 값, suffixVal은 다음과 같이 유도된다:
suffixVal = coeff_abs_level_remaining[n] - cMax
extended_precision_processing_flag가 1일 때, 서픽스 빈 스트링은 cldx가 0보다 크면 1로 그렇지 않으면 0으로 설정되는 변수 isChroma를 갖는 suffixVal에 대한 테이블-기반 이진화 과정을 불러옴으로써 명시된다.
그렇지 않으면(extended_precision_processing_flag가 0이면), 서픽스 빈 스트링은 cRiceParam으로 설정된 지수-골롬 차수 k를 갖는 suffixVal에 대한 EGk 이진화 과정을 불러옴으로써 명시된다.
프리픽스 길이가 캡핑되는 실시예들에 관한 다른 실시된 예가 이제 설명될 것이다. 이 과정에의 입력은 부호 없는 값 synVal을 갖는 신택스 요소, Rice 파라미터 riceParam 및 현재의 신택스 요소가 크로마 계수에 관한 것인지 여부를 나타내는 플래그 isChroma에 대한 제한된 지수-골롬 이진화의 요구이다. 이 과정의 출력은 신택스 요소 synVal의 제한된 지수-골롬-차수-k 이진화 과정이다.
변수 maxTrDynamicRange는 다음과 같이 유도된다:
isChroma가 0이면, maxTrDynamicRange = extended_precision_processing_flag ? Max( 15, BitDepthY + 6 ) : 15
그렇지 않으면, maxTrDynamicRange = extended_precision_processing_flag ? Max(15, BitDepthC + 6 ) : 15.
변수 maximumPrefixLength는 (29 - maxTrDynamicRange)로 설정된다. 신택스 요소 synVal의 제한된 지수-골롬-차수-k 이진화 과정의 빈 스트링은 다음과 같이 명시되는데, 여기서 함수 put(X)의 각각의 호출은 빈 스트링의 끝에서 이진 값 X를 가산하고, X는 0 또는 1이다:
Figure 112021148693952-pat00004
위에 논의된 것과 같은, 정상적인 지수-골롬 코드에서, 서픽스는 코딩될 값으로부터 보다 작은 서픽스 길이에 의해 코딩될 수 없는 최소 값을 감산함으로써 형성된다. 예를 들어, k=0을 갖는 (또는 k를 적용하지 않는) 9(0b1001)(0b 프리픽스는 이진 표기라는 것을 나타냄)를 코딩하기 위해, 다음과 같이 되는 것이 주목된다:
값 0까지의 0-비트 프리픽스/서픽스 코드들
값 2까지의 1-비트 프리픽스/서픽스 코드들
값 6까지의 2-비트 프리픽스/서픽스 코드들
그러므로 3-비트 프리픽스/서픽스(값 14까지의 코드들)가 요구된다. 2-비트 프리픽스/서픽스로 코딩될 수 없는 최소 값은 7(6+1)이라서 - 서픽스는 3비트로서 9-7=2(0b010)로 형성되어, 최종 코딩된 값 111-0-010이 된다.
본 개시 내용하에서, 최대 프리픽스 길이와 연관된 서픽스 길이는 이 감산이 요구되지 않기에 충분히 (필수적으로) 커서, 서픽스는 간단히 코딩될 값으로 될 수 있다.
예를 들어, 최대 프리픽스 길이=3이고, 연관된 서픽스 길이=4이다.
그러면 코딩된 값은 코딩될 값과 동일한 서픽스가 뒤에 따르는 절사된-단항 프리픽스로 된다. 예를 들어, 십진 9는 111 - 1001로서 코딩될 수 있다.
다른 실시된 예에서, "비골롬-라이스 코드(not a Golomb-Rice code)"를 시그널링하는 데 사용된 1들의 수는 4이지만, 이 코드는 다음에 (k+1)번째 차수 지수 골롬 코드로서 인터프리트된다. 위에 논의된 기술들을 위한 최대 프리픽스 길이는
maximumPrefixLength = 32 (원하는 최대 코드 길이) - ("비골롬-라이스 코드"를 시그널링하기 위한 비트들의 수) - maxTrDynamicRange
= 28 - maxTrDynamicRange
로서 유도된다.
다음의 코드들을 고려해보자:
(ⅰ) 110X...
(ⅱ) 1110X...
(ⅲ) 111X...
(여기서 X는 "이 비트의 값이 어떤 것이든 상관 없다(don't care)"는 것을 표시한다)
선행하는 1들의 수가 2인 코드 (ⅰ)에서, 상기 배열들의 어는 것도 이것을 지수-골롬-코드로서 인터프리트하지 않을 것이다.
선행하는 1들의 수가 3인 코드 (ⅱ)에서, 위에 먼저 설명된 시스템은 이것을 지수-골롬 코드로서 인터프리트하지만, 제2 배열은 그렇지 않을 것이다. 그러나, 선행하는 1들이 정확히 3개이기 때문에, 지수-골롬 코드의 프리픽스 길이는 0이다(첫번째 0 전에 1들이 없다). 그러나 프리픽스 길이가 0일 때, k번째 차수 지수-골롬 코드의 인터프리테이션은 k번째 차수 골롬-라이스 코드의 인터프리테이션과 동일하다.
선행하는 1들의 수가 4인 코드 (ⅲ)에서, 양자의 기술들이 이것을 지수-골롬 코드로서 인터프리트할 것이다. 제1 시스템에서, 이것은 적어도 1의 프리픽스 길이를 갖는 k번째 차수 코드로서 인터프리트될 것이다. 제2 시스템에서, 이것은 적어도 0의 프리픽스 길이를 갖는 (k+1)번째 차수 코드로서 인터프리트될 것이다. 양자의 경우들에서, 프리픽스 길이는 이 코드의 시작 이후의 추가의 1들의 수에 의존한다. 그러나 지수-골롬 코딩에서 프리픽스 비트들은 k의 값에 효과적으로 가산하기 때문에, 양자의 인터프리테이션들은 등가라는 것을 알 수 있다. 그러므로 "비골롬-라이스 코드" 임계값이 (불과) 1만큼 상승하는 것과 지수-골롬 코드를 디코딩할 때 k의 값이 또한 1만큼 증가되는 것은 등가이다.
도 19는 코딩 기술을 도시한 개략적 플로우차트이다. 단계 2200에서, 프리픽스 길이 및/또는 최대 프리픽스 길이가 위에 논의된 기술들 중 어느 하나에 의해 (예를 들어, 데이터 비트 깊이와 같은 하나 이상의 파라미터에 응답하여, 제어기(345)에 의해) 정의된다. 단계 2210에서, 하나 이상의 데이터 값이 이렇게 정의된 프리픽스 길이에 따라 인코딩된다.
도 20은 코딩 기술을 도시한 개략적 플로우차트이다. 단계 2220에서, 프리픽스는 단항 인코딩된 값으로서 인코딩된다(한 예가 절사된 단항 인코딩된 값이다). 단계 2230에서 대응하는 서픽스가 인코딩된다.
도 21은 코딩 기술을 도시한 개략적 플로우차트이다. 단계 2240에서, 위에 논의된 테이블이 참조되어, (단계 2250에서) 서픽스 길이가 획득된다.
대응하는 기술들은 각각의 디코딩 스테이지들에 적용한다.
또한, 본 개시 내용의 추가의 각각의 양태들 및 특징들이 다음의 숫자가 매겨진 조항들에 의해 정의된다.
1. 데이터 인코딩 장치의 동작 방법으로서,
데이터 인코딩 장치가 데이터 값들의 어레이를 데이터 세트들 및 상기 데이터 세트들에 의해 인코딩되지 않은 값들에 대한 이스케이프 코드들로서 인코딩하는 단계를 포함하고, 이스케이프 코드는 프리픽스 부분 및 상기 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 상기 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함하는 방법.
2. 조항 1에 있어서, 상기 프리픽스 부분은 단항 인코딩된 값을 포함하는 방법.
3. 조항 2에 있어서, 상기 프리픽스 부분은 절사된 단항 인코딩된 값을 포함하는 방법.
4. 선행 조항들 중 어느 한 조항에 있어서, 상기 프리픽스 부분의 길이와 상기 서픽스 부분의 길이 간의 관계는 코딩될 데이터와 연관하여 보내진 정보에 의해 정의되는 방법.
5. 선행 조항들 중 어느 한 조항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값과 상기 비단항 코딩된 서픽스 부분의 길이는 하나 이상의 테이블에 의해 연관되는 방법.
6. 조항 5에 있어서, (ⅰ) 상기 인코딩된 데이터 값들과 연관된 데이터 플래그; 및 (ⅱ) 하나 이상의 이전에 인코딩된 데이터 값들로부터 유도된 파라미터로 이루어진 그룹 중 하나 이상에 따라 상기 프리픽스 부분에 의해 인코딩된 값과 상기 비단항 코딩된 서픽스 부분의 길이를 연관시키는 테이블들 중 하나를 선택하는 단계를 포함하는 방법.
7. 선행 조항들 중 어느 한 조항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값은 상기 비단항 코딩된 서픽스 부분의 길이가 상기 프리픽스 부분에 의해 인코딩된 값의 지수 함수이도록 상기 비단항 코딩된 서픽스 부분의 길이와 연관되는 방법.
8. 선행 조항들 중 어느 한 조항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값과 상기 비단항 코딩된 서픽스 부분의 길이 간의 관계는 상기 비단항 코딩된 서픽스 부분의 최대 길이가 인코딩될 상기 데이터 값들 각각의 비트들의 최대 수; 및 미리 결정된 최대 값으로 이루어진 리스트로부터 선택된 최대 값보다 크지 않도록 되는 방법.
9. 선행 조항들 중 어느 한 조항에 있어서, 상기 프리픽스 부분은 지수 골롬 코드로서 자체로 인코딩되는 방법.
10. 선행 조항들 중 어느 한 조항에 있어서, 상기 프리픽스 길이는 최대 프리픽스 길이 값으로 캡핑되는 방법.
11. 조항 10에 있어서, 상기 최대 프리픽스 길이 값은 인코딩을 위한 상기 데이터 값들의 동적 범위인 값 maxTrDynamicRange에 의존하는 방법.
12. 조항 11에 있어서, 상기 최대 프리픽스 길이는 29-maxTrDynamicRange인 방법.
13. 선행 조항들 중 어느 한 조항에 있어서, 상기 데이터 세트들 중 하나는 비제로인 최상위 데이터 부분들의, 상기 데이터 값들의 어레이에 대한, 위치들을 나타내는 유의성 맵인 방법.
14. 조항 13에 있어서, 상기 유의성 맵은 비제로 값을 갖는 상기 최상위 데이터 부분들의 마지막의, 데이터 값들의 어레이의 미리 결정된 순서에 따라, 상기 위치를 나타내는 데이터 플래그를 포함하는 방법.
15. 조항 13에 있어서, 상기 데이터 세트들은
1보다 큰 최상위 데이터 부분들의, 상기 데이터 값들의 어레이에 대한, 위치들을 나타내는 1보다 큰 맵; 및
2보다 큰 최상위 데이터 부분들의, 상기 데이터 값들의 어레이에 대한, 위치들을 나타내는 2보다 큰 맵을 포함하는 방법.
16. 데이터 디코딩 장치의 동작 방법으로서,
데이터 디코딩 장치가 데이터 세트들 및 상기 데이터 세트들에 인코딩되지 않은 값들에 대한 에스케이프 코드들로서 인코딩된 입력 인코딩된 데이터 값들을 디코딩하는 단계를 포함하고, 이스케이프 코드는 프리픽스 부분 및 상기 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 상기 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함하는 방법.
17. 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 선행 조항들 중 어느 한 조항의 방법을 수행하게 하는 컴퓨터 소프트웨어.
18. 데이터 인코딩 장치로서
데이터 값들의 어레이를 데이터 세트들 및 상기 데이터 세트들에 의해 인코딩되지 않은 값들에 대한 이스케이프 코드들로서 인코딩하도록 구성된 인코더를 포함하고, 이스케이프 코드는 프리픽스 부분 및 상기 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 상기 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함하는 데이터 인코딩 장치.
19. 데이터 디코딩 장치로서,
데이터 세트들 및 상기 데이터 세트들에 인코딩되지 않은 값들에 대한 에스케이프 코드들로서 인코딩된 입력 인코딩된 데이터 값들을 디코딩하도록 구성된 디코더를 포함하고, 이스케이프 코드는 프리픽스 부분 및 상기 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 상기 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된된 서픽스 부분을 포함하는 데이터 디코딩 장치.
20. 조항 18 또는 조항 19에 따른 장치를 포함하는 비디오 데이터 캡처, 송신, 디스플레이 및/또는 저장 장치.
본 개시 내용의 추가의 각각의 양태들 및 특징들이 다음의 숫자가 매겨진 조항들에 의해 정의된다.
1. 데이터 디코딩 장치로서,
입력 인코딩된 데이터 값들을 비트 깊이를 갖는 디코딩된 데이터 값들로 디코딩하도록 구성된 디코더를 포함하고, 상기 입력 인코딩된 데이터 값들은 데이터 세트들 및 상기 데이터 세트들에 의해 인코딩되지 않은 값들에 대한 이스케이프 코드들로서 인코딩되고, 이스케이프 코드는 상기 데이터 값들의 상기 비트 깊이에 의존하는 최대 프리픽스 길이로 캡핑된 프리픽스 길이를 갖는 프리픽스 부분, 및 상기 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 상기 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함하는 데이터 디코딩 장치.
2. 조항 1에 있어서, 상기 프리픽스 부분은 단항 인코딩된 값을 포함하는 장치.
3. 조항 2에 있어서, 상기 프리픽스 부분은 절사된 단항 인코딩된 값을 포함하는 장치.
4. 조항들 1 내지 3 중 어느 한 조항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값과 상기 비단항 코딩된 서픽스 부분의 길이가 연관되는 하나 이상의 테이블에 액세스하도록 구성된 제어기를 포함하는 장치.
5. 조항 4에 있어서, 상기 제어기는 (ⅰ) 상기 인코딩된 데이터 값들과 연관된 데이터 플래그; 및 (ⅱ) 하나 이상의 이전에 인코딩된 데이터 값들로부터 유도된 파라미터로 이루어진 그룹 중 하나 이상에 따라 상기 프리픽스 부분에 의해 인코딩된 값과 상기 비단항 코딩된 서픽스 부분의 길이를 연관시키는 테이블들 중 하나를 선택하도록 구성된 장치.
6. 조항들 1 내지 3 중 어느 한 조항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값은 상기 비단항 코딩된 서픽스 부분의 길이가 상기 프리픽스 부분에 의해 인코딩된 값의 지수 함수이도록 상기 비단항 코딩된 서픽스 부분의 길이와 연관되는 장치.
7. 조항들 1 내지 3 중 어느 한 조항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값과 상기 비단항 코딩된 서픽스 부분의 길이 간의 관계는 상기 비단항 코딩된 서픽스 부분의 최대 길이가 인코딩될 데이터 값들 각각의 비트들의 최대 수; 및 미리 결정된 최대 값으로 이루어진 리스트로부터 선택된 최대 값보다 크지 않도록 되는 장치.
8. 선행 조항들 중 어느 한 조항에 있어서, 상기 프리픽스 부분은 지수 골롬 코드로서 자체로 인코딩되는 장치.
9. 선행 조항들 중 어느 한 조항에 있어서, 상기 프리픽스 길이는 상기 데이터 값들의 비트 깊이 플러스 6에 의존하는 최대 프리픽스 길이로 캡핑되는 장치.
10. 선행 조항들 중 어느 한 조항에 있어서, 상기 최대 프리픽스 길이는 미리 결정된 상수 마이너스 인코딩을 위한 상기 데이터 값들의 동적 범위인 값인 장치.
11. 조항 10에 있어서, 상기 미리 결정된 상수는 29인 장치.
12. 조항 10에 있어서, 상기 미리 결정된 상수는 28인 장치.
13. 선행 조항들 중 어느 한 조항에 있어서, 상기 데이터 세트들 중 하나는 비제로인 최상위 데이터 부분들의, 상기 데이터 값들의 어레이에 대한, 위치들을 나타내는 유의성 맵인 장치.
14. 조항 13에 있어서, 상기 유의성 맵은 비제로 값을 갖는 상기 최상위 데이터 부분들의 마지막의, 데이터 값들의 어레이의 미리 결정된 순서에 따라, 상기 위치를 나타내는 데이터 플래그를 포함하는 장치.
15. 데이터 디코딩 장치의 동작 방법으로서,
데이터 디코딩 장치가 입력 인코딩된 데이터 값들을 비트 깊이를 갖는 디코딩된 데이터 값들로 디코딩하는 단계를 포함하고, 상기 입력 인코딩된 데이터 값들은 데이터 세트들 및 상기 데이터 세트들에 의해 인코딩되지 않은 값들에 대한 이스케이프 코드들로서 인코딩되고, 이스케이프 코드는 상기 데이터 값들의 상기 비트 깊이에 의존하는 최대 프리픽스 길이로 캡핑된 프리픽스 길이를 갖는 프리픽스 부분, 및 상기 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함하는 방법.
16. 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 조항 15의 방법을 수행하게 하는 컴퓨터 소프트웨어.
17. 조항 16항에 따른 컴퓨터 소프트웨어를 저장한 비일시적인 머신 판독가능 저장 매체.
18. 데이터 인코딩 장치로서,
비트 깊이를 갖는 데이터 값들의 어레이를 데이터 세트들 및 상기 데이터 세트들에 의해 인코딩되지 않은 값들에 대한 이스케이프 코드들로서 인코딩하도록 구성된 인코더를 포함하고, 이스케이프 코드는 상기 데이터 값들의 상기 비트 깊이에 의존하는 최대 프리픽스 길이로 캡핑된 프리픽스 길이를 갖는 프리픽스 부분, 및 상기 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 상기 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함하는 데이터 인코딩 장치.
19. 조항 18에 있어서, 상기 프리픽스 부분은 단항 인코딩된 값을 포함하는 장치.
20. 조항 19에 있어서, 상기 프리픽스 부분은 절사된 단항 인코딩된 값을 포함하는 장치.
21. 조항들 18 내지 20 중 어느 한 조항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값과 상기 비단항 코딩된 서픽스 부분의 길이가 연관되는 하나 이상의 테이블에 액세스하도록 구성된 제어기를 포함하는 장치.
22. 조항 21에 있어서, 상기 제어기는 (ⅰ) 상기 인코딩된 데이터 값들과 연관된 데이터 플래그; 및 (ⅱ) 하나 이상의 이전에 인코딩된 데이터 값들로부터 유도된 파라미터로 이루어진 그룹 중 하나 이상에 따라 상기 프리픽스 부분에 의해 인코딩된 값과 상기 비단항 코딩된 서픽스 부분의 길이를 연관시키는 테이블들 중 하나를 선택하도록 구성된 장치.
23. 조항들 18 내지 20 중 어느 한 조항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값은 상기 비단항 코딩된 서픽스 부분의 길이가 상기 프리픽스 부분에 의해 인코딩된 값의 지수 함수이도록 상기 비단항 코딩된 서픽스 부분의 길이와 연관되는 장치.
24. 조항들 18 내지 20 중 어느 한 조항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값과 상기 비단항 코딩된 서픽스 부분의 길이 간의 관계는 상기 비단항 코딩된 서픽스 부분의 최대 길이가 인코딩될 상기 데이터 값들 각각의 비트들의 최대 수; 및 미리 결정된 최대 값으로 이루어진 리스트로부터 선택된 최대 값보다 크지 않도록 되는 장치.
25. 조항들 18 내지 24 중 어느 한 조항에 있어서, 상기 프리픽스 부분은 지수 골롬 코드로서 자체로 인코딩되는 장치.
26. 조항들 18 내지 25 중 어느 한 조항에 있어서, 상기 최대 프리픽스 길이는 미리 결정된 상수 마이너스 인코딩을 위한 상기 데이터 값들의 동적 범위인 값인 장치.
27. 조항 26에 있어서, 상기 미리 결정된 상수는 29인 장치.
28. 조항 26에 있어서, 상기 미리 결정된 상수는 28인 장치.
29. 조항들 18 내지 28 중 어느 한 조항에 있어서, 상기 데이터 세트들 중 하나는 비제로인 최상위 데이터 부분들의, 상기 데이터 값들의 어레이에 대한, 위치들을 나타내는 유의성 맵인 장치.
30. 조항 29에 있어서, 상기 유의성 맵은 비제로 값을 갖는 상기 최상위 데이터 부분들의 마지막의, 상기 데이터 값들의 어레이의 미리 결정된 순서에 따른, 상기 위치를 나타내는 데이터 플래그를 포함하는 장치.
31. 조항 29 또는 항 30에 있어서, 상기 데이터 세트들은
1보다 큰 최상위 데이터 부분들의, 상기 데이터 값들의 어레이에 대한, 위치들을 나타내는 1보다 큰 맵; 및
2보다 큰 최상위 데이터 부분들의, 상기 데이터 값들의 어레이에 대한, 위치들을 나타내는 2보다 큰 맵을 포함하는 장치.
32. 데이터 인코딩 장치의 동작 방법으로서,
데이터 인코딩 장치가 데이터 값들의 어레이를 비트 깊이를 갖는 데이터 세트들 및 상기 데이터 세트들에 의해 인코딩되지 않은 값들에 대한 이스케이프 코드들로서 인코딩하는 단계를 포함하고, 이스케이프 코드는 상기 데이터 값들의 상기 비트 깊이에 의존하는 최대 프리픽스 길이로 캡핑된 프리픽스 길이를 갖는 프리픽스 부분, 및 상기 프리픽스 부분에 의해 인코딩된 적어도 일부 값들에 대해, 비단항 코딩된 서픽스 부분의 비트 길이가 상기 프리픽스 부분의 비트 길이보다 크도록 하는 관계에 따라 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 비트 길이를 갖는 비단항 코딩된 서픽스 부분을 포함하는 방법.
33. 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 조항 32항의 방법을 수행하게 하는 컴퓨터 소프트웨어.
34. 조항 33에 따른 컴퓨터 소프트웨어를 저장한 비일시적인 머신 판독가능 저장 매체.
35. 조항들 1 내지 14 및 18 내지 31 중 어느 한 조항에 따른 장치를 포함하는 비디오 데이터 캡처, 송신, 디스플레이 및/또는 저장 장치.
프리픽스 길이와 서픽스 길이 간의 관계를 선택 또는 그렇지 않으면 확립하고/하거나, 최대 프리픽스 길이를 선택 또는 그렇지 않으면 확립하기 위한, 디코더 또는 인코더의 기능들, 또는 디코딩 방법 또는 인코딩 방법들의 기능적 단계들이 제어기(345)와 같은 (위에 설명된 일부 예들에서) 제어기 등에 의해 수행될 수 있다는 것을 알 것이다.
앞서 논의된 바와 같이, 상기 조항의 장치 특징들은 앞서 논의된 것과 같은 인코더 또는 디코더의 각각의 특징들에 의해 구현될 수 있다는 것을 알 것이다.

Claims (26)

  1. 비디오 데이터를 인코딩하는 방법으로서,
    인코딩 스킴들의 세트 중에서 선택된 지수 골롬 인코딩 스킴에 의해 인코딩할 신택스 요소의 값을 나타내는 비디오 코딩 파라미터를 인코딩하는 단계;
    회로를 통해 인코딩될 데이터 값들의 비트 깊이 플러스 6에 기초하여 프리픽스 부분의 최대 길이를 계산하고 상기 회로를 통해 비트들을 상기 프리픽스 부분 및 서픽스 부분으로 할당함으로써, 상기 비디오 코딩 파라미터를 나타내는 상기 신택스 요소의 값이 상기 지수 골롬 인코딩 스킴에 의해 인코딩되는 비트 길이를 32비트로 제한하는 단계;
    를 포함하고, 상기 서픽스 부분의 비트 길이는 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 방법.
  2. 제1항에 있어서, 상기 프리픽스 부분은 단항 인코딩된 부분을 포함하는 방법.
  3. 제2항에 있어서, 상기 프리픽스 부분은 절사된 단항 인코딩된 값(truncated unary encoded value)을 포함하는 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 서픽스 부분은 비단항 인코딩된 값을 포함하는 방법.
  5. 제4항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값은 비단항 서픽스 부분의 길이가 상기 프리픽스 부분에 의해 인코딩된 값의 지수 함수이도록 상기 비단항 서픽스 부분의 길이와 연관되는 방법.
  6. 제1항에 있어서, 상기 프리픽스 부분의 최대 길이는 변환 계수의 최대 동적 범위인 maxTrDynamicRange에 의존하고, maxTrDynamicRange는 비트 깊이 플러스 6에 기초하는 방법.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 프리픽스의 최대 길이는 상수 마이너스 인코딩될 데이터 값들의 동적 범위인 값인 방법.
  8. 제1항의 방법에 의해 인코딩된 비디오 데이터를 디코딩하는 방법.
  9. 회로를 포함하는 비디오 데이터 인코더 장치로서, 상기 회로는,
    인코딩 스킴들의 세트 중에서 선택된 지수 골롬 인코딩 스킴에 의해 인코딩할 신택스 요소의 값을 나타내는 비디오 코딩 파라미터를 인코딩하고,
    인코딩될 데이터 값들의 비트 깊이 플러스 6에 기초하여 프리픽스 부분의 최대 길이를 계산하고 비트들을 상기 프리픽스 부분 및 서픽스 부분으로 할당함으로써, 상기 비디오 코딩 파라미터를 나타내는 상기 신택스 요소의 값이 상기 지수 골롬 인코딩 스킴에 의해 인코딩되는 비트 길이를 32비트로 제한하도록 구성되고,
    상기 서픽스 부분의 비트 길이는 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 비디오 데이터 인코더 장치.
  10. 제9항에 있어서, 상기 프리픽스 부분은 단항 인코딩된 부분을 포함하는 비디오 데이터 인코더 장치.
  11. 제10항에 있어서, 상기 프리픽스 부분은 절사된 단항 인코딩된 값(truncated unary encoded value)을 포함하는 비디오 데이터 인코더 장치.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서, 상기 서픽스 부분은 비단항 인코딩된 값을 포함하는 비디오 데이터 인코더 장치.
  13. 제12항에 있어서, 상기 프리픽스 부분에 의해 인코딩된 값은 비단항 서픽스 부분의 길이가 상기 프리픽스 부분에 의해 인코딩된 값의 지수 함수이도록 상기 비단항 서픽스 부분의 길이와 연관되는 비디오 데이터 인코더 장치.
  14. 제9항에 있어서, 상기 프리픽스 부분의 최대 길이는 변환 계수의 최대 동적 범위인 maxTrDynamicRange에 의존하고, maxTrDynamicRange는 비트 깊이 플러스 6에 기초하는 비디오 데이터 인코더 장치.
  15. 제9항 내지 제11항 중 어느 한 항에 있어서, 상기 프리픽스의 최대 길이는 상수 마이너스 인코딩될 데이터 값들의 동적 범위인 값인 비디오 데이터 인코더 장치.
  16. 제9항의 비디오 데이터 인코더 장치에 의해 인코딩된 비디오 데이터를 디코딩하는 방법.
  17. 비디오 데이터를 디코딩하도록 구성된 회로를 포함하는 비디오 데이터 디코더로서, 상기 비디오 데이터는,
    인코딩 스킴들의 세트 중에서 선택된 지수 골롬 인코딩 스킴에 의해 인코딩할 신택스 요소의 값을 나타내는 비디오 코딩 파라미터를 인코딩하고;
    인코딩될 데이터 값들의 비트 깊이 플러스 6에 기초하여 프리픽스 부분의 최대 길이를 계산하고 비트들을 상기 프리픽스 부분 및 서픽스 부분으로 할당함으로써, 상기 비디오 코딩 파라미터를 나타내는 상기 신택스 요소의 값이 상기 지수 골롬 인코딩 스킴에 의해 인코딩되는 비트 길이를 32비트로 제한하는 것에 의해 인코딩된 것이고,
    상기 서픽스 부분의 비트 길이는 상기 프리픽스 부분에 의해 인코딩된 값에 의존하는 비디오 데이터 디코더.
  18. 제17항에 있어서, 상기 프리픽스 부분의 최대 길이는 변환 계수의 최대 동적 범위인 maxTrDynamicRange에 의존하고, maxTrDynamicRange는 비트 깊이 플러스 6에 기초하는 비디오 데이터 디코더.
  19. 제17항에 있어서, 상기 프리픽스의 최대 길이는 상수 마이너스 인코딩될 데이터 값들의 동적 범위인 값인 비디오 데이터 디코더.
  20. 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 제1항 또는 제16항의 방법을 수행하게 하는 소프트웨어를 저장한 비일시적인 머신 판독가능 저장 매체.
  21. 제9항에 따른 장치를 포함하는 비디오 데이터 캡처 장치.
  22. 제9항에 따른 장치를 포함하는 비디오 데이터 송신 장치.
  23. 제9항에 따른 장치를 포함하는 비디오 데이터 디스플레이 장치.
  24. 제9항에 따른 장치를 포함하는 비디오 데이터 저장 장치.
  25. 제17항에 따른 비디오 데이터 디코더를 포함하는 비디오 데이터 디스플레이 장치.
  26. 제17항에 따른 비디오 데이터 디코더를 포함하는 비디오 데이터 수신 장치.
KR1020217042077A 2013-12-23 2014-11-07 데이터 인코딩 및 디코딩 KR102462386B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
GB1322947.1A GB2521828A (en) 2013-12-23 2013-12-23 Data encoding and decoding
GB1322947.1 2013-12-23
GB1403854.1A GB2521685A (en) 2013-12-23 2014-03-05 Data encoding and decoding
GB1403854.1 2014-03-05
PCT/GB2014/053326 WO2015097425A1 (en) 2013-12-23 2014-11-07 Data encoding and decoding
KR1020167016373A KR102343621B1 (ko) 2013-12-23 2014-11-07 데이터 인코딩 및 디코딩

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020167016373A Division KR102343621B1 (ko) 2013-12-23 2014-11-07 데이터 인코딩 및 디코딩

Publications (2)

Publication Number Publication Date
KR20210158427A KR20210158427A (ko) 2021-12-30
KR102462386B1 true KR102462386B1 (ko) 2022-11-03

Family

ID=50114704

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217042077A KR102462386B1 (ko) 2013-12-23 2014-11-07 데이터 인코딩 및 디코딩
KR1020167016373A KR102343621B1 (ko) 2013-12-23 2014-11-07 데이터 인코딩 및 디코딩

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020167016373A KR102343621B1 (ko) 2013-12-23 2014-11-07 데이터 인코딩 및 디코딩

Country Status (12)

Country Link
US (2) US10237556B2 (ko)
EP (1) EP3087739B1 (ko)
JP (1) JP6730187B2 (ko)
KR (2) KR102462386B1 (ko)
CN (2) CN105850125B (ko)
AU (1) AU2014372362B2 (ko)
CA (2) CA2933395C (ko)
GB (2) GB2521828A (ko)
MX (1) MX367071B (ko)
RU (1) RU2679784C2 (ko)
TW (1) TWI662830B (ko)
WO (1) WO2015097425A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2513111A (en) * 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
US10425659B2 (en) 2015-01-30 2019-09-24 Qualcomm Incorporated Coding escape pixels for palette coding
US11368720B2 (en) * 2016-05-13 2022-06-21 Sony Corporation Image processing apparatus and method
EP3264763A1 (en) 2016-06-29 2018-01-03 Thomson Licensing Method and apparatus for improved significance flag coding using simple local predictor
KR102509347B1 (ko) * 2017-04-13 2023-03-14 엘지전자 주식회사 비디오 신호를 인코딩, 디코딩하는 방법 및 장치
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US20180316938A1 (en) * 2017-04-26 2018-11-01 Canon Kabushiki Kaisha Method and apparatus for k-th order exp-golomb binarization
GB2567427B (en) * 2017-10-06 2020-10-07 Imagination Tech Ltd Data compression
GB2567861A (en) * 2017-10-27 2019-05-01 Sony Corp Image data encoding and decoding
GB2570711B (en) 2018-02-05 2023-04-05 Sony Corp Data encoding and decoding
US11477486B2 (en) * 2019-01-02 2022-10-18 Qualcomm Incorporated Escape coding for coefficient levels
US11012701B2 (en) * 2019-02-22 2021-05-18 Tencent America LLC Residual coding for transform skip mode and block differential pulse-code modulation
CN111865487B (zh) 2019-04-29 2022-07-29 华为技术有限公司 一种编码方法及通信设备
US11496745B2 (en) 2019-06-24 2022-11-08 Qualcomm Incorporated Binarization in transform skip residual coding
EP4035369A1 (en) * 2019-09-24 2022-08-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Arithmetic encoders and decoders, video encoders and decoders, methods for encoding or decoding symbols, and methods for encoding or decoding video content
GB2590723A (en) * 2019-12-31 2021-07-07 Sony Corp Data encoding and decoding
US11637685B2 (en) 2021-08-31 2023-04-25 Samsung Display Co., Ltd. System and method for transition encoding with flexible word-size

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130272389A1 (en) * 2012-04-13 2013-10-17 Texas Instruments Incorporated Reducing Context Coded and Bypass Coded Bins to Improve Context Adaptive Binary Arithmetic Coding (CABAC) Throughput

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5455577A (en) * 1993-03-12 1995-10-03 Microsoft Corporation Method and system for data compression
EP1802129A3 (en) * 1995-03-15 2008-10-22 Kabushiki Kaisha Toshiba Moving picture coding and/or decoding systems
US7099881B2 (en) * 2002-12-06 2006-08-29 Stmicroelectronics, Inc. Method for increasing average storage capacity in a bit-mapped tree-based storage engine by using remappable prefix representations and a run-length encoding scheme that defines multi-length fields to compactly store IP prefixes
US7348902B2 (en) * 2003-07-29 2008-03-25 Intel Corporation Method for efficient variable length decoding
US7660355B2 (en) * 2003-12-18 2010-02-09 Lsi Corporation Low complexity transcoding between video streams using different entropy coding
FR2875042B1 (fr) * 2004-09-03 2006-11-24 Canon Kk Procede et dispositif d'acces aleatoire a une zone d'une image codee en vue de la decoder et procede et dispositif de codage d'une image
US20060198322A1 (en) * 2005-03-03 2006-09-07 Susan Hares Method and apparatus for BGP peer prefix limits exchange with multi-level control
KR100718134B1 (ko) * 2005-07-21 2007-05-14 삼성전자주식회사 비트율에 적응적인 영상 데이터 이진 산술 부호화/복호화장치 및 방법
US7540430B2 (en) * 2005-09-27 2009-06-02 The Boeing Company System and method for string distance measurement for alphanumeric indicia
JP4732203B2 (ja) * 2006-03-17 2011-07-27 キヤノン株式会社 画像符号化装置及び復号装置及びそれらの制御方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体
RU2010145524A (ru) * 2008-04-10 2012-05-20 Квэлкомм Инкорпорейтед (US) Симметрия для интерполяционной фильтрации субпиксельных позиций при кодировании видео
EP2112764A1 (en) * 2008-04-25 2009-10-28 Thomson Licensing Method for encoding a sequence of integers, storage device and signal carrying an encoded integer sequence and method for decoding a sequence of integers
CN102238387B (zh) * 2011-05-25 2017-07-18 深圳市云宙多媒体技术有限公司 一种视频熵编码、熵解码方法、装置
AP2016009618A0 (en) * 2011-06-16 2016-12-31 Ge Video Compression Llc Entropy coding of motion vector differences
US8737499B2 (en) * 2011-10-17 2014-05-27 Qualcomm Incorporated Advanced interference cancellation for precoded GSM edge radio access network (GERAN)
JP5368662B1 (ja) * 2011-11-07 2013-12-18 パナソニック株式会社 符号化方法および符号化装置
KR102073868B1 (ko) * 2011-11-07 2020-02-05 타지반 투 엘엘씨 화상 부호화 방법, 화상 복호 방법, 화상 부호화 장치, 화상 복호 장치, 및 화상 부호화 복호 장치
US9154792B2 (en) * 2011-11-08 2015-10-06 Qualcomm Incorporated Progressive coding of position of last significant coefficient
KR101843087B1 (ko) * 2012-03-05 2018-03-28 삼성전자주식회사 디코딩 장치 및 방법
US20130336386A1 (en) * 2012-06-18 2013-12-19 Qualcomm Incorporated Sample adaptive offset (sao) coding
WO2014107029A1 (ko) * 2013-01-02 2014-07-10 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
US9930348B2 (en) * 2014-03-14 2018-03-27 Qualcomm Incorporated Coefficient level coding in a video coding process
CA3077920C (en) * 2014-06-20 2021-11-09 Hfi Innovation Inc. Method and apparatus of binarization and context-adaptive coding for syntax in video coding
US10142629B2 (en) * 2015-12-28 2018-11-27 Mediatek Inc. Method and apparatus for entropy coding in image compression
US10110931B2 (en) * 2016-04-27 2018-10-23 Aspeed Technology Inc. Variable length coding and decoding methods and devices for grouped pixels
AU2016231584A1 (en) * 2016-09-22 2018-04-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
US10484695B2 (en) * 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130272389A1 (en) * 2012-04-13 2013-10-17 Texas Instruments Incorporated Reducing Context Coded and Bypass Coded Bins to Improve Context Adaptive Binary Arithmetic Coding (CABAC) Throughput

Also Published As

Publication number Publication date
EP3087739B1 (en) 2023-08-02
CA2933395A1 (en) 2015-07-02
WO2015097425A1 (en) 2015-07-02
GB201322947D0 (en) 2014-02-12
JP2017507519A (ja) 2017-03-16
GB2521685A (en) 2015-07-01
CA2933395C (en) 2023-06-27
CN111083476A (zh) 2020-04-28
MX2016007334A (es) 2016-08-19
KR102343621B1 (ko) 2021-12-28
RU2679784C2 (ru) 2019-02-12
RU2016130271A (ru) 2018-01-30
US20160295214A1 (en) 2016-10-06
AU2014372362A1 (en) 2016-05-05
EP3087739A1 (en) 2016-11-02
KR20210158427A (ko) 2021-12-30
TWI662830B (zh) 2019-06-11
GB2521828A (en) 2015-07-08
US10893273B2 (en) 2021-01-12
KR20160101925A (ko) 2016-08-26
CN105850125B (zh) 2019-11-05
US20190253714A1 (en) 2019-08-15
MX367071B (es) 2019-08-05
AU2014372362B2 (en) 2018-12-20
JP6730187B2 (ja) 2020-07-29
GB201403854D0 (en) 2014-04-16
CA3114216A1 (en) 2015-07-02
CN111083476B (zh) 2022-02-08
RU2016130271A3 (ko) 2018-07-10
TW201540049A (zh) 2015-10-16
US10237556B2 (en) 2019-03-19
CA3114216C (en) 2023-09-05
CN105850125A (zh) 2016-08-10

Similar Documents

Publication Publication Date Title
KR102462386B1 (ko) 데이터 인코딩 및 디코딩
US11671599B2 (en) Data encoding and decoding
US11039142B2 (en) Encoding and decoding of significant coefficients in dependence upon a parameter of the significant coefficients
JP6400092B2 (ja) データ符号化及び復号化
US9544599B2 (en) Context adaptive data encoding
CN116458156A (zh) 视频译码中的基于上下文的变换索引信令

Legal Events

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