KR20160031532A - Hevc의 cabac를 위한 변환 스킵된 블록의 수정된 코딩 - Google Patents

Hevc의 cabac를 위한 변환 스킵된 블록의 수정된 코딩 Download PDF

Info

Publication number
KR20160031532A
KR20160031532A KR1020167003699A KR20167003699A KR20160031532A KR 20160031532 A KR20160031532 A KR 20160031532A KR 1020167003699 A KR1020167003699 A KR 1020167003699A KR 20167003699 A KR20167003699 A KR 20167003699A KR 20160031532 A KR20160031532 A KR 20160031532A
Authority
KR
South Korea
Prior art keywords
block
electronic device
coding
value
flag
Prior art date
Application number
KR1020167003699A
Other languages
English (en)
Other versions
KR101871869B1 (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 US13/942,616 external-priority patent/US10616581B2/en
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20160031532A publication Critical patent/KR20160031532A/ko
Application granted granted Critical
Publication of KR101871869B1 publication Critical patent/KR101871869B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/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
    • 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/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/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)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Theoretical Computer Science (AREA)

Abstract

일례에서, 디코더의 전자 디바이스는 비트 스트림을 취득하고, 상기 취득된 비트 스트림으로부터 이진 심볼을 복원하도록 구성된다. 상기 전자 디바이스는 상기 이진 심볼이 수정된 변환 스킵 모드(modified transform skip mode)를 사용하여 디코딩될 것인지를 판정하도록 구성된다. 상기 전자 디바이스는, 상기 이진 심볼이 수정된 변환 스킵 모드를 사용하여 디코딩될 것이 아니라는 판정에 응답하여, 제1 TS_Shift 값을 결정하고, 상기 제1 TS_Shift 값을 사용하여 비디오 데이터를 복구하도록 구성된다. 상기 전자 디바이스는, 상기 이진 심볼이 수정된 변환 스킵 모드를 사용하여 디코딩될 것이라는 판정에 응답하여, 제2 TS_Shift 값을 결정하고, 상기 제2 TS_Shift 값을 사용하여 비디오 데이터를 복구하도록 구성된다.

Description

HEVC의 CABAC를 위한 변환 스킵된 블록의 수정된 코딩 {MODIFIED CODING FOR A TRANSFORM SKIPPED BLOCK FOR CABAC IN HEVC}
관련출원의 상호참조
본 출원은, 2012년 1월 19일에 "HIGH THROUGHPUT BINARIZATION(HTB) METHOD FOR CABAC IN HEVC"라는 명칭으로 출원된 미국 특허출원 제13/354,272호의 계속출원인, 2012년 1월 27일에 "LOSSLESS CODING TECHNIQUE FOR CABAC IN HEVC"라는 명칭으로 출원된 제13/360,615호의 계속출원인, 2012년 2월 2일에 "HIGH THROUGHPUT SIGNIFICANCE MAP PROCESSING FOR CABAC IN HEVC"라는 명칭으로 출원된 미국 특허출원 제13/365,215호의 계속출원인, 2012년 4월 11일에 "LOSSLESS CODING WITH DIFFERENT PARAMETER SELECTION TECHNIQUE FOR CABAC IN HEVC"라는 명칭으로 출원된 미국출원 제13/444,710호의 계속출원인, 2012년 4월 26일에 출원된 "HIGH THROUGHPUT CODING FOR CABAC IN HEVC"라는 명칭으로 출원된 미국 특허출원 제13/457,272호의 계속출원인, 2013년 4월 5일에 "HIGH THROUGHPUT RESIDUAL CODING FOR A TRANSFORM SKIPPED BLOCK FOR CABAC IN HEVC"라는 명칭으로 출원된 미국 특허출원 제13/857,366호의 계속출원인, 2013년 7월 15일에 "MODIFIED CODING FOR A TRANSFORM SKIPPED BLOCK FOR CABAC IN HEVC"라는 명칭으로 출원된 미국 특허출원 제13/942,616호를 기초로 우선권을 주장하며, 상기 출원 각각은 그 전체가 인용에 의해 본 명세서에 통합된다.
본 출원은 2013년 7월 24일에 "MODIFIED CODING FOR A TRANSFORM SKIPPED BLOCK FOR CABAC IN HEVC"라는 명칭으로 출원된 미국 가출원 제61/858,010호에 기초하여 우선권을 주장하며, 상기 출원은 그 전체가 인용에 의해 본 명세서에 통합된다.
본 발명은 일반적으로 전자 디바이스에 관한 것이다. 더욱 구체적으로, 본 발명은 인코딩 및/또는 디코딩을 위해 향상된 컨텍스트 적응적 이진 산술 코딩(Context Adaptive Binary Arithmetic Coding, CABAC)을 이용하는 전자 디바이스에 관한 것이다.
많은 디코더(및 인코더)는 이미지의 블록에 대한 인코딩된 데이터를 수신한다(인코더는 제공한다). 일반적으로, 이미지는 블록들로 분할되고 각각의 블록은, 예를 들어, 이산 코사인 변환(discrete cosine transform, DCT)을 사용하는 등의, 일정한 방식으로 인코딩되어, 디코더에 제공된다. 블록은 이미지 내의 직사각형 영역을 나타낼 수 있고, 화소로 구성된다. 예를 들어 16x16 블록은 폭이 16x 화소이고 높이가 16x 화소인 영역이다. 디코더는 인코딩된 블록들을 수신하고 각각의 블록을, 예를 들어, 역이산 코사인 변환(inverse discrete cosine transform)을 사용하는 등의, 일정한 방식으로 디코딩한다.
MPEG-4 part 10(H.264)과 같은, 비디오 코딩 표준은 한정된 주파수 대역폭 및/또는 한정된 저장 능력을 갖는 채널을 통해 송신하기 위해 비디오 데이터를 압축한다. 이들 비디오 코딩 표준은 더욱 효과적으로 프레임을 인코딩 및 디코딩하기 위해, 인트라 예측(intra prediction), 공간 도메인에서 주파수 도메인으로의 변환, 양자화, 엔트로피 코딩(entropy coding), 움직임 추정(motion estimation), 및 움직임 보상(motion compensation)과 같은 복수의 코딩 단계를 포함한다.
ITU-T(International Telecommunication Union Telecommunication Standardization Sector) SG16(Study Group 16) WP3(Working Party 3)의 JCT-VC(Joint Collaborative Team on Video Coding) 및 ISO/IEC(International Organization for Standardization/International Electrotechnical Commission) JTC1/SC29/WG11(Joint Technical Committee 1/Subcommittee 29/Working Group 11)은 고효율 비디오 코딩 표준(High Efficiency Video Coding standard, HEVC)라고 불리는 비디오 코딩 표준의 표준화 노력을 시작했다. 일부 종래의 비디오 코딩 표준과 유사하게, HEVC는 블록 기반 코딩(block-based coding)이다. 공지의 HEVC 인코더의 예는 도 1에 도시되어 있다. HEVC 디코더도 또한 공지되어 있다.
HEVC에서, 컨텍스트 적응적 이진 산술 코딩(CABAC)이 손실 없이 변환 및 양자화된 계수(Transformed and Quantized Coefficient, TQC)를 압축하는 데 사용된다. TQC는 나중에 복수의 변환 계수 값을 TQC 값들에 매핑하는 연산(operation)을 사용하여 양자화되는 변환 계수를 생성하기 위해 인코더에서 순방향 변환(forward transform)으로 이미지 블록을 처리함으로써 결정된다. 그 후 TQC 값은 디코더에 계수 레벨 값, 또는 레벨 값으로서 전달되고, 계수 각각의 레벨 값은 그 후 인코더에서 계산된 변환 계수 값과 유사하지만 반드시 동일하지는 않은 변환 계수 값에 매핑된다. CABAC 기반 인코딩 및/또는 디코딩 기술은 일반적으로, (i) 과거에 인코딩 및/또는 디코딩된 이전 심볼(previous symbol)의 값에 기초하여 심볼을 적응적으로 코딩하는 것, 및 (ii) 적응에 사용되는 과거에 인코딩 및/또는 디코딩된 심볼의 세트를 식별할 수 있게 해주는 컨텍스트를 가리키는 컨텍스트 적응적이다. 과거의 심볼은 공간적 및/또는 시간적으로 인접한 블록에 위치할 수 있다. 많은 경우에, 컨텍스트는 이웃 블록들의 심볼 값에 기초한다.
전술한 바와 같이, CABAC는 손실 없이 TQC를 압축하는 데 사용될 수 있다. 배경으로서, TQC는 변환 크기(예컨대, 4x4, 8x8, 16x16, 32x32, 16x32)에 따라 상이한 블록 크기로부터 온 것일 수 있다. 이차원(Two-dimensional, 2D) TQC는 엔트로피 코딩 전에 일차원(one-dimensional, 1D) 배열(array)로 변환될 수 있다. 예에서, 4x4 블록 내의 2D 배열된 TQC는 표 1에 나타낸 바와 같이 배열될 수 있다.
[표 1]
Figure pct00001
2D TQC를 1D 배열로 변환할 때, 블록은 대각선 지그재그 방식(diagonal zig-zag fashion)으로 스캐닝될 수 있다. 이 예를 계속 설명하면, 표 1에 나타낸 2D 배열된 TQC는, 1행 1열, 1행 2열, 2행 1열, 3행 1열, 2행 2열, 1행 3열, 1행 4열, 2행 3열, 3행 2열, 4행 1열 등의 순서로 스캐닝함으로써 1D 배열된 TQC [4, 0, 3, -3, 2, 1, 0, -1, 0, ...]로 변환될 수 있다.
TQC의 1D 배열은 CABAC에서 신택스 요소(Syntax Element, SE)들의 시퀀스로 표현된다. 예의 TQC의 1D 배열의 SE의 예는 도 2에 도시되어 있다. SE는 다음 파라미터를 나타낸다: Last position X/Y, Significance Map, 및 속성 Greater than 1, Greater than 2, Sign Information, 및 Absolute-3.
Last Position X/Y는 대응하는 블록 내의 최종 영이 아닌(non-zero) 계수 위치(X/Y)를 나타낸다. Significance Map은 각 계수의 유의성을 나타낸다. Greater than 1은, 영이 아닌 계수(즉, 유효 플래그가 1임) 각각에 대해 계수의 진폭이 1보다 큰지를 지시한다. Greater than 2는 1보다 큰 진폭을 가진(즉, Greater than 1 플래그가 1임) 계수 각각에 대해 계수의 진폭이 2보다 큰지를 지시한다.
HEVC의 CABAC에서, 대표적인 SE가 코딩된다. 도 3은 SE의 코딩에 사용되는 CABAC 프레임워크(framework)를 보여준다. CABAC 코딩 기술은 복수의 단계를 사용하여 코딩 심볼을 포함한다. 제1 단계에서, CABAC는 "이진화기(binarizer)"를 사용하여 입력 심볼을 이진 심볼의 스트링(string), 또는 "빈(bin)"에 매핑한다. 입력 심볼은, 이진화되거나, 아니면 비트로 코딩되기 전에 이진(1 또는 0) 심볼의 스트링으로 변환되는 비이진 값(non-binary valued)의 심볼일 수 있다. 빈은 "바이패스 인코딩 엔진(bypass encoding engine)"이나 "레귤러 인코딩 엔진(regular encoding engine)"을 사용하여 코딩될 수 있다.
CABAC에서의 레귤러 인코딩 엔진의 경우, 제2 단계에서, 확률 모델(probability model)이 선택된다. 확률 모델은 이진화된 입력 심볼의 하나 이상의 빈을 산술 인코딩하는 데 사용된다. 이 모델은 컨텍스트에 따라 사용 가능한 확률 모델의 리스트에서 선택될 수 있으며, 이는 최근에 인코딩된 심볼의 함수이다. 확률 모델은 "1" 또는 "0"인 빈의 확률의 저장한다. 제3 단계에서, 산술 인코더가 선택된 확률 모델에 따라 각각의 빈을 인코딩한다. 각각의 빈마다 "1"과 "0"에 대응하는, 두 개의 서브레인지(sub-range)가 있다. 제4 단계는 확률 모델의 갱신을 포함한다. 선택된 확률 모델은 실제 인코딩된 빈 값에 기초하여 갱신된다(예컨대, 빈 값이 "1"이었으면, "1"의 빈도 카운트(frequency count)가 증가된다). CABAC 디코딩을 위한 디코딩 기술은 이 프로세스를 반대로 한 것이다.
CABAC에서의 바이패스 인코딩 엔진의 경우, 제2 단계는, 계산 비용이 높은 컨텍스트 추정 및 확률 갱신 단계를 생략한 빈의 비트로의 변환을 포함한다. 바이패스 인코딩 엔진은 입력 빈에 대해 고정된 확률 분포를 가정한다. CABAC 디코딩을 위한 디코딩 기술은 이 프로세스를 반대로 한 것이다.
CABAC는 개념적으로 두 단계를 사용하여 심볼을 인코딩한다. 제1 단계에서, CABAC는 입력 심볼을 빈으로 이진화한다. 제2 단계에서, CABAC는 바이패스 인코딩 엔진이나 레뷸러 인코딩 엔진을 사용하여 빈을 비트로 변환한다. 그 결과 인코딩된 비트 값은 디코더에 비트 스트림으로 제공된다.
CABAC는 개념적으로 두 단계를 사용하여 심볼을 디코딩한다. 제1 단계에서, CABAC는 바이패스 디코딩 엔진이나 레귤러 디코딩 엔진을 사용하여 입력 비트를 빈 값으로 변환한다. 제2 단계에서, CABAC는 빈 값에 대한 송신된 심볼 값을 복원하기 위해 역이진화(de-binarization)를 수행한다. 복원된 심볼은 성질상(in nature) 비이진 형태(non-binary)가 아닐 수 있다. 복원된 심볼 값은 디코더의 나머지 측면(remaining aspect)에서 사용된다.
전술한 바와 같이, CABAC의 인코딩 및/또는 디코딩 프로세스는 둘 이상의 상이한 동작 모드를 포함한다. 제1 모드에서, 확률 모델은 실제 코딩된 빈 값에 기초하여 갱신되고, 일반적으로 "레귤러 코딩 모드(regular coding mode)"라고 한다. 레귤러 코딩 모드는 수 개의 순차적인 연속 연산을, 그와 연관된 계산의 복잡도 및 완료까지의 상당한 시간과 함께 필요로 한다. 제2 모드에서, 확률 모델은 실제 코딩된 빈 값에 기초하여 갱신되지 않으며, 일반적으로 "바이패스 코딩 모드(bypass coding mode)"라고 한다. 제2 모드에서, (아마도 고정 확률 외에) 빈을 디코딩하기 위한 확률 모델이 없고, 따라서 확률 모델을 갱신할 필요가 없다.
HEVC의 CABAC 코딩을 이용할 때, 처리율 성능(throughput performance)은 빈/화소의 총 개수, 바이패스 빈/화소의 개수, 및 레귤러(또는 컨텍스트) 코딩된 빈/화소의 총 개수와 같은, 상이한 인자에 따라 다를 수 있지만, 이에 한정되지 않는다. 일반적으로 말하면, 고 비트율 인코딩(낮은 양자화 파라미터(Quantization Parameter, QP) 값)인 경우의 처리량은 다른 경우의 처리량보다 훨씬 적다. 따라서, 고 비트율인 경우의 처리량은 상당한 양의 처리 자원을 소비할 수 있고/있거나 인코딩/디코딩에 상당한 양의 시간이 걸릴 수 있다. 이하의 본 발명은 이러한 문제 및 다른 문제를 해결한다.
CABAC가 잔차 샘플(residual sample)을 압축하기 위한 무손실 코딩 모드에 사용될 수 있다는 것도 공지되어 있다. 일례에서, 잔차 샘플은 이미지 내의 특정 위치에 대응하는 값이다. 일반적으로, 잔차 샘플은 이미지 내의 특정 위치에 대응하는 값과 이미지 내의 그 동일한 위치에 대응하는 예측 값 사이의 차에 대응한다. 또는 잔차 샘플은 변환 연산(transformation operation), 또는 TQC를 생성하는 데 일반적으로 사용되지 않는 변환 연산으로 처리되지 않았던 이미지 내의 특정 위치에 대응하는 값이다. 잔차 샘플은 그 샘플 크기(4x4, 8x8, 16x16, 32x32, 16x32, 등)에 따라 상이한 블록 크기로부터 나올 수 있다. 2D 잔차 샘플 블록은 TQC 인코딩과 유사하게, 엔트로피 코딩 전에 먼저 1D 배열로 변환된다. 예에서, 4x4 블록 내의 2D 배열된 샘플은 표 2에 나타낸 바와 같이 배열될 수 있다.
[표 2]
Figure pct00002
2D 잔차 샘플을 1D 배열로 변환할 때, 블록은 대각선 지그재그 방식으로 스캐닝될 수 있다. 이 예를 계속 설명하면, 표 2 나타낸 2D 배열된 잔차 샘플은, 1행 2열, 2행 1열, 3행 1열, 2행 2열, 1행 3열, 1행 4열, 2행 3열, 3행 2열, 4행 1열 등의 순서로 스캐닝함으로써 1D 배열된 잔차 샘플 [4, 0, 3, -3, 2, 1, 0, -1, 0, ...]로 변환될 수 있다.
1D 배열의 잔차 샘플은 CABAC에서 신택스 요소(Syntax Element, SE)들의 시퀀스로 표현된다. ID 배열의 잔차 샘플의 예에 대한 SE의 예는 도 11에 도시되어 있다. SE는 다음 파라미터를 나타낸다: Last Position X/Y, Significance Map, 및 속성들 Greater than 1, Greater than 2, Sign Information, 및 Absolute-3.
HEVC의 CABAC의 무손실 코딩 모드에서, 대표적인 SE가 코딩된다. 도 3의 CABAC 프레임워크가 SE를 코딩하는 데 사용될 수 있다. CABAC 코딩 기술은 복수의 단계를 사용하여 코딩 심볼을 포함한다. 제1 단계에서, CABAC는 "이진화기"를 사용하여 입력 심볼을 이진 심볼의 스트링, 또는 "빈"에 매핑한다. 입력 심볼은, 이진화되거나 아니면 비트로 코딩되기 전에 이진(1 또는 0) 심볼의 스트링으로 변환되는 비이진 값의 심볼일 수 있다. 빈은 앞서 설명한 "레귤러 인코딩 엔진"을 사용하여 코딩될 수 있다.
CABA의 무손실 코딩 모드에서 레귤러 인코딩 엔진의 경우, 제2 단계에서, 확률 모델(CABAC의 무손실 인코딩 모드에서 "컨텍스트 모델"로도 알려짐)이 선택된다. 확률 모델은 이진화된 입력 심볼의 하나 이상의 빈을 산술 인코딩하는 데 사용된다. 이 모델은 컨텍스트에 따라 사용 가능한 확률 모델의 리스트에서 선택될 수 있으며, 이는 최근에 인코딩된 심볼의 함수이다. 확률 모델은 "1" 또는 "0"인 빈의 확률의 저장한다. 제3 단계에서, 산술 인코더가 선택된 확률 모델에 따라 각각의 빈을 인코딩한다. 각각의 빈마다 "1"과 "0"에 대응하는, 두 개의 서브레인지가 있다. 제4 단계는 확률 모델의 갱신을 포함한다. 선택된 확률 모델은 실제 인코딩된 빈 값에 기초하여 갱신된다(예컨대, 빈 값이 "1"이었으면, "1"의 빈도 카운트가 증가된다). CABAC 디코딩을 위한 디코딩 기술은 이 프로세스를 반대로 한 것이다.
이전 단락에서 설명한 바와 같이 사용된 모델의 수는 184개이다. 구체적으로 다음과 같다: Last position X/Y에 사용된 36개 모델(Last_position_X에 18개 모델, Last_position_Y에 18개 모델); Significance Map(4x4 블록: 9 루마(luma), 6 크로마(chroma); 8x8 블록: 11 루마 11 크로마; 16x16 또는 32x32 블록: 7 루마, 4 크로마)에 사용된 48개 모델; 및 속성들 Greater than 1, Greater than 2, Sign Information, 및 Absolue-3에 사용된 100개 모델(루마의 Greater_than_1 플래그: 30; 크로마의 Greater_than_1 플래그 20, 루마의 Greater_than_2 플래그: 30; 및 크로마의 Greater_than_2 플래그 20).
무손실 코딩 모드로 HEVC의 CABAC 인코딩을 이용할 때, 인코딩/디코딩은 계산적으로 복잡하다. 계산 복잡성에 대한 하나의 이유는, 전술한 바와 같이, 184개 모델의 사용에 있다. 이러한 계산 복잡성으로 인해, 인코딩/디코딩은 상당한 양의 처리 자원을 소비할 수 있고/있거나 완료될 때까지 상당한 시간이 걸릴 수 있다. 이하의 본 발명의 이러한 문제 및 다른 문제를 해결한다.
본 발명의 일 실시예는, 디코더의 전자 디바이스를 포함하는 시스템을 개시하며, 상기 전자 디바이스는, 비트 스트림을 취득하고, 상기 취득된 비트 스트림으로부터 이진 심볼을 복원하도록 구성되고; 상기 이진 심볼은 비디오 데이터의 복원을 위해 역양자화 및 역변환되며, 역변환이 높은 비트 심도 코딩(higher bit depth coding)을 위해 변환 블록에 적용되지 않으면, 스케일링 연산(scaling operation)이 TS_Shift에 기초한 역양자화된 계수 값에 대해, Residue=(Dequantized coefficient values)<<TS_Shift와 같이 수행되고, Residues는 bdShift에 기초하여, Residue=(Residue+(1<<(bdShift-1)))>>bdShift와 같이 계산되며, 위 식에서 TS_Shift는 스케일링 연산을 위한 왼쪽 비트 시프트(left bit shift)이고, bdShift는 스케일링 연산을 위한 오른쪽 비트 시프트이고, TS_Shift는 bdShift 이하이다.
도 1은 HEVC 인코더의 블록도이다.
도 2는 CABAC에 따른 신택스 요소의 시퀀스를 나타낸 테이블이다.
도 3은 신택스 요소의 시퀀스에 대한 CABAC 프레임워크의 블록도이다.
도 4는 인코더 및 디코더의 예를 나타낸 블록도이다.
도 5는 전자 디바이스에서의 고 처리율 이진화 모드(high throughput binarization mode)를 위한 방법의 일 구성을 나타낸 흐름도이다.
도 6은 고 처리율 이진화 모드를 사용한 인코더 처리의 일 구성을 나타낸 흐름도이다.
도 7은 디코딩 측의 전자 디바이스에서의 고 처리율 이진화 모드를 위한 방법의 일 구성을 나타낸 흐름도이다.
도 8은 고 처리율 이진화 모드를 사용한 디코더 처리의 일 구성을 나타낸 흐름도이다.
도 9는 고 처리율 이진화 모드에서 입력 값을 결정하는 데 사용될 수 있는 매핑 테이블을 나타낸다.
도 10은 고 처리율 이진화 모드에서 적응적 이진화에 사용될 수 있는 복수의 이진화 테이블을 나타낸다.
도 11은 CABAC에서 무손실 코딩 모드에 따른 신택스 요소의 시퀀스를 나타낸 테이블이다.
도 12는 무손실 코딩 기술을 위한 인코더 및 디코더의 예를 나타낸 블록도이다.
도 13은 전자 디바이스에서의 무손실 코딩 방법의 일 구성을 나타낸 흐름도이다.
도 14는 도 13에 도시된 구성에 따른 신택스 요소의 시퀀스를 보여주는 테이블이다.
도 15는 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 구성을 나타낸 흐름도이다.
도 16은 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 다른 구성을 나타낸 흐름도이다.
도 17은 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 다른 구성을 나타낸 흐름도이다.
도 18은 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 또 다른 구성을 나타낸 흐름도이다.
도 19는 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 또 다른 구성을 나타낸 흐름도이다.
도 20a는 고 처리율 이진화 모드 조건이 충족되는지를 판정하기 위한 인코더 또는 디코더의 구성예를 나타낸 흐름도이다.
도 20b는 고 처리율 이진화 모드 조건이 충족되는지를 판정하기 위한 인코더 또는 디코더의 구성예를 나타낸 흐름도이다.
도 20c는 고 처리율 이진화 모드 조건이 충족되는지를 판정하기 위한 인코더 또는 디코더의 구성예를 나타낸 흐름도이다.
도 20d는 고 처리율 이진화 모드 조건이 충족되는지를 판정하기 위한 인코더 또는 디코더의 구성예를 나타낸 흐름도이다.
도 21은 디코딩 측의 전자 디바이스에서 고 처리율 이진화 모드 조건이 충족되는지를 판정하는 방법의 일 구성을 나타낸 흐름도이다.
도 22는 디코딩 측의 전자 디바이스에서의 고 처리율 이진화 모드 조건이 충족되는지를 판정하는 방법의 다른 구성을 나타낸 흐름도이다.
도 23은 인코더 및 디코더의 예를 나타낸 블록도이다.
도 24는 디코딩 측의 전자 디바이스에서의 고 처리율 유의성 맵 디코딩(high throughput significance map decoding) 방법의 구성을 나타낸 흐름도이다.
도 25는 디코딩 측의 전자 디바이스에서의 고 처리율 유의성 맵 디코딩 방법의 다른 구성을 나타낸 흐름도이다.
도 26은 디코딩 측의 전자 디바이스에서의 디코딩 바이패스 특성(decode-bypass feature)을 갖는 고 처리율 유의성 맵 디코딩 방법의 구성을 나타낸 흐름도이다.
도 27은 디코딩 측의 전자 디바이스에서의 디코딩 방법 스위칭 특성(decode-method-switching feature)을 갖는 고 처리율 유의성 맵 디코딩 방법의 구성을 나타낸 흐름도이다.
도 28은 CABAC에서 무손실 코딩 모드에 따라 라이스(Rice) 파라미터 갱신에 사용되는 테이블이다.
도 29는 인코더 및 디코더의 예를 나타낸 블록도이다.
도 30은 전자 디바이스에서의 다른 파라미터 선택을 갖는 무손실 코딩 방법의 일 구성을 나타낸 흐름도이다.
도 31은 디코딩 측의 전자 디바이스에서의 다른 파라미터 선택을 갖는 무손실 코딩 방법의 일 구성을 나타낸 흐름도이다.
도 32는 CABAC에 따라 생성된 신택스 요소의 예이다.
도 33은 인코더 및 디코더의 예를 나타낸 블록이다.
도 34는 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
도 35는 디코딩 측의 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
도 36은 도 34의 구성에 따라 생성되는 신택스 요소의 예이다.
도 37은 감축된 라이스 파라미터 갱신 테이블을 나타낸 도면이다.
도 38은 디코딩 측의 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
도 39는 디코딩 측의 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
도 40은 디코딩 측의 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
도 41은 인코더 및 디코더의 예를 나타낸 블록도이다.
도 42는 고 처리율 잔차 코딩(high throughput residual coding) 방법의 일 구성을 나타낸 흐름도이다.
도 43은 디코딩 측의 고 처리율 잔차 코딩 방법의 일 구성을 나타낸 흐름도이다.
도 44는 디코딩 측의 고 처리율 잔차 코딩 방법의 일 구성을 나타낸 흐름도이다.
도 45a는 라이스 파라미터 갱신 함수를 적용하는 일 구성을 나타낸 흐름도이다.
도 45b는 라이스 파라미터를 갱신하는 데 사용되는 테이블의 예이다.
도 46은 인코더 및 디코더의 예를 나타낸 블록도이다.
도 47은 수정된 변환 스킵 모드(modified transform skip mode)를 사용하는 방법의 일 구성을 나타낸 흐름도이다.
도 48은 디코딩 측에서 수정된 변환 스킵 모드를 사용하는 방법의 일 구성을 나타낸 흐름도이다.
도 4는 인코더 및 디코더의 일례를 나타낸 블록도이다.
시스템(400)은 디코더(412)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(411)를 포함한다. 인코더(411)와 디코더(412)는 네트워크를 통해 통신할 수 있다.
인코더(411)는 고 처리율 이진화 모드를 사용하여 인코딩하도록 구성된 전자 디바이스(421)를 포함한다. 전자 디바이스(421)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 5 및 도 6에 도시된 작업(operation)을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
디코더(412)는 고 처리율 이진화 모드를 사용하여 디코딩하도록 구성된 전자 디바이스(422)를 포함한다. 전자 디바이스(422)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 7 및 도 8에 도시된 작업을 수행하기 위해 실행 가능한 명령어들을 저장한다.
도 5는 전자 디바이스에서의 고 처리율 이진화 모드를 위한 방법의 일 구성을 나타낸 흐름도이다.
블록 511에서, 전자 디바이스(421)는 변환 및 양자화된 계수(TQC)의 블록을 취득한다. 판정 블록 512에서, 전자 디바이스(421)는 고 처리율 이진화 모드 조건이 충족되는지를 판정한다. 판정 블록 512에서, 조건이 충족되지 않으면, 블록 513에서 전자 디바이스(421)가 레귤러 코딩 모드와 바이패스 코딩 모드를 선택적으로 사용하여 블록을 코딩한다(종래의 CABAC 선택 스킴에 따름). 판정 블록 512에서 조건이 충족되면, 블록 514에서, 전자 디바이스(421)가 고 처리율 이진화 모드 및 바이패스 코딩 모드를 사용하여 블록을 코딩한다. 블록 515에서, 전자 디바이스(421)가 생성된 비트 스트림을 네트워크를 통해 송신 및/또는 생성된 비트 스트림을 메모리 디바이스에 저장한다.
HTB 모드는 레벨 값의 코딩에 바이패스 코딩 모드를 사용한다. 레귤러 코딩 모드와는 대조적으로, 바이패스 코딩 모드는 입력 빈에 대해 고정된 확률 분포를 가정하기 때문에, 바이패스 코딩은 계산 비용이 많이 드는 컨텍스트 추정 단계 및 확률 갱신 단계를 생략한다.
코딩에 바이패스 코딩 모드를 사용하는 것에 더해, 종래의 CABAC와는 대조적인 방식으로, HTB 모드는 디코딩에 단순화된 부호 구조(simplified signing structure)를 사용한다. 예를 들어, 종래의 CABAC는 코딩에 Greater_than_1, Greater_than_2, Sign information, 및 Absolute-3을 포함한 네 개의 서브파트(sub-part)를 필요로 한다.
도 6은 고 처리율 이진화 모드를 사용한 인코더 처리의 일 구성을 나타낸 흐름도이다.
블록 612-615는 블록 514에서 수행되는 작업을 더 상세하게 나타낸다. 블록 612에서, 전자 디바이스(421)가 각각의 영이 아닌 값에, 절대값 빼기 일 함수(absolute value minus one function)를 적용하고 각각의 영이 아닌 값의 부호를 검사하여, TQC의 블록으로부터 임의의 영이 아닌 값에 대한 부호 및 레벨 정보를 생성한다. 설명의 편의상, 본 출원의 배경기술 부분으로부터 1D 배열된 TQC의 값 [4, 0, 3, -3, 2, 1, 0, -1, 0, ...]를 고려한다. 각각의 영이 아닌 값에, 절대값 빼기 일 함수를 적용하고 각각의 영이 아닌 값의 부호를 검사하여, 부호와 레벨 정보의 6개 조합을 다음과 같이 생성한다: +3, +2, -2, +1, +0, 및 -0.
블록 613에서, 전자 디바이스(421)는 매핑 테이블을 사용하여, 생성된 부호와 레벨 정보의 조합 각각에 입력 값을 매핑한다. 매핑 테이블은 도 9에 도시되어 있다. 도 9는 또한 블록 612 및 613에 따라 입력 값을 결정하기 위한 식도 보여준다.
블록 614에서, 전자 디바이스(421)는 복수의 이진화 테이블, 예컨대, 컨텍스트 적응적 가변 길이 코딩(Context Adaptive Variable Length Coding, CAVLC)의 VLC 테이블을 사용하여 입력 값에 대해 적응적 이진화를 수행한다. CAVLC의 VLC 테이블의 예는 도 10에 도시되어 있다. 도 10은 또한 이전의 입력 정보에 기초하여 이진화 테이블을 갱신하기 위한 식도 보여준다.
예에서, 블록 614는 적어도 제1 입력 값을 이진화하기 위해 VLC-Table-0(FIG. 10) 열의 초기에 사용하는 값을 포함한다. VLC 테이블 번호는 이전의 값이 주어진 임계값, 3, 5, 13, 27보다 클 때 단조 증가될 수 있다(monotomically increased). 따라서, 제1 단조 증가 후의 후속하는 적응적 이진화는 VLC-Table-1 열로부터의 값을 사용할 수 있고, 제2 단조 증가 후의 후속하는 적응적 이진화는 VLC-Table-2 열로부터의 값을 사용할 수 있고, 등등이다.
블록, 615에서, 전자 디바이스(421)가 CABAC 바이패스 코딩 모드를 사용한 적응적 이진화의 결과 값을 인코딩한다.
(고 처리율 이진화 모드 조건)
예에서, 이미지 데이터의 블록에 대응하는 특성이 미리 정해진 임계값보다 크면, 고 처리율 이진화 모드 조건이 충족된다, 예를 들어, 전자 디바이스(421)는 고 처리율 이진화 모드 지시자(indicator), 예컨대, HTB 모드 플래그를 값 1로 설정할 수 있다(이는 물론 디자인 선호도에 따라 HTB 모드 플래그의 디폴트 값을 변경하거나, 또는 HTB 모드 플래그를 디폴트 값 그대로 두는 것을 포함할 수 있다)
예에서, 전자 디바이스(421)는 코딩의 비트율이 미리 설정된 임계값보다 큰지를 판정한다. 비트율이 미리 설정된 임계값보다 크면, 고 처리율 이진화 모드 조건이 충족된다. 예에서, 미리 설정된 비트율 임계값은 QP 16에 해당하지만; 상이한 QP 값에 대응하는 미리 설정된 임계값이 사용될 수 있다.
예에서, (전자 디바이스(421) 또는 전자 디바이스(422)에 의한) 고 처리율 이진화 모드 조건이 충족하는지에 대한 판정은, 이미지 데이터의 대응하는 블록의 변환 유닛 레벨(예를 들어 변환 유닛에 의해 생성되는 레벨 값에 한정되지 않음)이 미리 설정된 임계값보다 큰 것인지에 기초한다.
예에서, 고 처리율 이진화 모드 조건은, 크기가 영보다 큰, 이미지 데이터의 대응하는 블록의 레벨 값의 수가 미리 설정된 임계값, 예컨대, 8보다 클 때, 충족될 수 있다. 다른 예에서, 고 처리율 이진화 모드 조건은, 크기가 미리 설정된 제1 임계값보다 큰, 이미지 데이터의 대응하는 블록의 레벨 값의 수가 미리 설정된 제2 임계값보다 클 때, 충족된다. 또 다른 예에서, 고 처리율 이진화 모드 조건은, 이미지 데이터의 대응하는 블록의 레벨 값이 미리 설정된 임계값보다 클 때, 충족된다.
도 20a∼도 20e는 직전의 두 단락에서 설명한 원리 중 적어도 일부에 따라 작동하는 시스템의 예에서 인코더 또는 디코더에 사용될 수 있는 구성의 일부 예를 보여준다. 도 20a는 도시된 바와 같이, 프로세스 1611-1616을 나타낸다. 도 20b는 도시된 바와 같이, 프로세스 1711-1716을 나타낸다. 도 20c는 프로세스 1801-1805 및 1814-1820을 나타낸다. 도 20d는 프로세스 1901-1905 및 1914-1920을 나타낸다. 도 20e에서, 도시된 바와 같이, 도 20c의 프로세스들이 프로세스 1816까지 수행된다. 프로세스 1816에서 카운터가 임계값보다 크면, 도 20e에 도시된 구성을 계속한다.
예에서, (전자 디바이스(421) 또는 전자 디바이스(422)에 의한) 고 처리율 이진화 모드 조건이 충족하는지에 대한 판정은 이미지 데이터의 대응하는 블록의 슬라이스 레벨(slice level)이 미리 설정된 임계값보다 큰지에 기초한다.
(고 처리율 이진화 모드 지시자)
예에서, 전자 디바이스(421)는 고 처리율 이진화 모드 지시자, 예컨대, HTB 모드 플래그를 헤더(header), 예컨대, 슬라이스 헤더(slice header)에 설정하도록 구성된다. 고 처리율 이진화 모드 지시자는 도 5에 도시된 프로세스가 슬라이스 헤더에 대응하는 블록(들)에 대해 실행되는지를 판정하는 데 사용될 수 있다.
예에서, HTB 모드 플래그를 "1"로 설정하는 것은, 전자 디바이스(421)로 하여금 "1"인 HTB 모드 플래그 값의 관찰에 응답하여 슬라이스 헤더에 대응하는 블록(들)에 대해 도 5의 흐름도에 도시된 프로세스를 수행하도록 한다. HTB 모드 플래그를 "0"으로 설정하는 것은 전자 디바이스(421)로 하여금 "0"인 HTB 모드 플래그 값의 관찰에 응답하여 종래의 CABAC 기술에 따라 슬라이스 헤더에 대응하는 블록(들)을 인코딩하도록 한다.
HTB 모드 플래그 값은 또한 디코딩을 위한 전자 디바이스(422)에 의해 관찰될 수 있다. 예에서, 전자 디바이스(422)는 HTB 모드 플래그 값 "1"의 발견에 응답하여 슬라이스 헤더에 대응하는 블록(들)에 대한 도 7의 흐름도에 도시된 프로세스에 따라, HTB 모드 플래그 값 "1"인 슬라이스 헤더에 대응하는 블록(들)을 디코딩한다. 전자 디바이스(422)는 HTB 모드 플래그 값 "0"의 발견에 응답하여 종래의 CABAC 기술에 따라 HTB 모드 플래그 값 "0"인 슬라이스 헤더에 대응하는 블록(들)을 디코딩한다.
도 7은 디코딩 측의 전자 디바이스에서의 고 처리율 이진화 모드를 위한 방법의 일 구성을 나타낸 흐름도이다.
블록 710에서, 전자 디바이스(422)가 비트 스트림을 취득한다. 블록 711에서, 전자 디바이스(422)가 취득한 비트 스트림으로부터 이진 심볼을 복원한다.
판정 블록 712에서, 전자 디바이스(422)가 고 처리율 이진화 모드 조건이 충족되는지를 판정한다. 예에서, 판정은 슬라이스 헤더와 같은, 수신된 비트 스트림에 대응하는 헤더의 검사를 포함할 수 있다. 헤더를 검사하는 것은 고 처리율 이진화 모드 지시자의 값에 대해 취득된 비트 스트림에 대응하는 슬라이스 헤더를 검사하는 것을 포함한다. 판정 블록 712에서 조건이 충족되지 않으면, 블록 713에서 전자 디바이스(422)가 레귤러 코딩 모드와 바이패스 코딩 모드를 선택적으로 사용하여 이진 심볼을 디코딩한다.
판정 블록 712에서 조건이 충족되면, 블록 714에서 전자 디바이스(421)가 고 처리율 이진화 모드와 바이패스 디코딩 모드를 사용하여 이진 심볼을 디코딩한다. 전자 디바이스(422)는 TQC의 취득된 블록을 메모리 디바이스에 저장할 수 있고/있거나 블록 715에서 비디오 데이터를 복원할 수 있다.
도 8은 고 처리율 이진화 모드를 사용한 디코더 처리의 일 구성을 나타낸 흐름도이다.
블록 812-815는 블록 714에서 수행되는 작업을 더욱 자세하게 나타낸다. 블록 812에서, 전자 디바이스(422)는 인코딩된 이진 심볼을 바이패스 디코딩한다. 블록 813에서, 전자 디바이스(422)가 바이패스 디코딩의 결과를 역이진화한다. 블록 814에서, 전자 디바이스(422)가 매핑 테이블을 사용하여 역이진화로부터 복원된 입력 값을 부호 및 레벨 정보에 매핑한다. 블록 815에서, 부호 및 레벨 정보를 사용하여 변환 및 양자화된 계수(TQC)의 블록을 디코딩한다.
예에서, 프로세서 및 프로세서와 전자 통신하는 메모리를 포함하는 전자 디바이스가 제공된다. 메모리에 저장된 것은 작업들을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들이다.
예에서, 작업은 변환 및 양자화된 계수(TQC)의 블록을 취득하는 것을 포함할 수 있다. 다른 작업은 고 처리율 이진화 모드 조건이 충족되는지를 판정하는 것을 포함할 수 있다. 다른 작업은 고 처리율 이진화 모드 조건이 충족된다는 판정에 응답하여 고 처리율 이진화 모드를 사용하여 제1 비트 스트림을 생성하는 것을 포함한다. 다른 작업은 고 처리율 이진화 모드 조건이 충족되지 않는다는 판정에 응답하여 제2 비트 스트림을 생성하는 것을 포함할 수 있다. 다른 작업은 생성된 제1 또는 제2 비트 스트림을 디코더에 송신하는 것을 포함할 수 있다.
예에서, 고 처리율 이진화 모드를 사용한 제1 비트 스트림의 생성은 추가적인 작업을 포함할 수 있다. 하나의 작업은, 영이 아닌 값 각각에 대해 절대값 빼기 일 함수를 적용하여 블록으로부터 임의의 영이 아닌 값에 대한 부호 및 레벨 정보를 생성하고 영이 아닌 값 각각의 부호를 검사하는 것을 포함할 수 있다. 다른 작업은 매핑 테이블을 사용하여, 생성된 부호와 레벨 정보의 조합 각각에 입력 값을 매핑하는 것을 포함할 수 있다. 다른 작업은 복수의 이진화 테이블을 사용하여 매핑된 입력 값의 적응적 이진화를 수행하는 것을 포함할 수 있다. 다른 작업은 적응적 이진화의 결과를 인코딩하는 것을 포함할 수 있다.
예에서, 복수의 이진화 테이블은 CAVLC의 VLC를 포함한다. 적응적 이진화의 결과를 인코딩하는 것은 CABAC 바이패스 코딩 모드를 이용하는 작업을 더 포함할 수 있다.
예에서, 복수의 이진화 테이블을 사용한 매핑된 입력 값들의 적응적 이진화는 추가적인 작업을 더 포함할 수 있다. 하나의 작업은 매핑된 입력 값 중 하나가 미리 설정된 임계값보다 큰지를 판정하는 것을 포함할 수 있다. 다른 작업은 상기 매핑된 입력 값이 미리 설정된 임계값보다 크다는 판정에 응답하여 테이블 갱신을 수행하는 것을 포함할 수 있다. 예에서, 테이블 갱신 선택은 테이블의 세트에서 하나의 테이블의 선택을 포함한다.
예에서, 제1 비트 스트림의 생성은 추가적인 작업을 포함할 수 있다. 하나의 작업은 CABAC에 따라 레귤러 코딩 모드와 바이패스 코딩 모드를 선택적으로 이용하여 블록을 코딩하는 것을 포함할 수 있다. 다른 작업은 바이패스 코딩 모드만을 이용하여 제1 비트 스트림을 생성하는 것을 포함할 수 있다.
예에서, 고 처리율 이진화 모드 조건이 충족되는지의 판정은 이미지 데이터의 블록에 대응하는 특성이 미리 설정된 임계값보다 큰지에 기초한다.
예에서, 고 처리율 이진화 모드 조건이 충족되는지의 판정은 이미지 데이터의 대응하는 블록의 슬라이스 레벨이 미리 설정된 임계값보다 큰지에 기초한다.
예에서, 고 처리율 이진화 모드 조건이 충족하는지의 판정은 이미지 데이터의 대응하는 블록의 송신 유닛 레벨이 미리 설정된 임계값보다 큰지에 기초한다.
(HEVC의 CABAC를 위한 무손실 코딩 기술)
도 12는 무손실 코딩 기술을 위한 인코더 및 디코더의 예를 나타낸 블록도이다.
시스템(1400)은 디코더(1412)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(1411)를 포함한다. 인코더(1411)와 디코더(1412)는 네크워크를 통해 통신할 수 있다.
인코더(1411)는 HEVC의 CABAC를 위한 무손실 코딩 기술을 사용하여 인코딩하도록 구성된 전자 디바이스(1421)를 포함한다. 전자 디바이스(1421)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 13, 도 16 및 도 18에 도시된 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
디코더(1412)는 는 HEVC의 CABAC를 위한 무손실 코딩 기술을 사용하여 디코딩하도록 구성된 전자 디바이스(1422)를 포함한다. 전자 디바이스(1422)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 15, 도 17 및 도 19에 도시된 작업을 수행하기 위해 실행 가능한 명령어들을 저장한다.
도 13은 전자 디바이스에서의 무손실 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 911에서, 전자 디바이스(1421)가 잔차 샘플을 나타내는 블록을 취득한다. 일례에서, 지그재그 스캐닝 방향은 이웃하는 화소 간의 공간 중복성(redundancy)를 제거하는 데 사용되는 인트라 예측의 방향에 맞도록 재정의될 수 있다. 무손실 인트라 코딩 모드에 이용 가능한 인트라 예측 모드는 몇 가지가 있다. 일례에서, 수직 인트라 예측 모드(vertical intra prediction mode)에서, 위쪽의 화소가 현재 화소 값의 예측 값이 되고, 현재 값과 예측 값(수직 모드에서 위쪽의 화소 값) 사이의 차가 잔차 샘플 값이 된다. 컨텍스트 모델 선택은 또한 인트라 예측의 방향과 대응하는 블록 크기에 따라 달라질 수도 있다.
블록 912에서, 전자 디바이스(1421)가 신택스 요소의 시퀀스에 사용될 유의성 맵(significance map)을 생성한다. 블록 913에서, 전자 디바이스(1421)가 블록의 최종 스캐닝 위치에 대응하는 유의성 맵 필드를 블록의 최종 위치의 레벨에 대응하는 값으로 채운다.
블록 914에서, 전자 디바이스(1421)가 상기 값을 가지는 유의성 맵을 포함하는 신택스 요소의 시퀀스를 생성한다. 신택스 요소의 시퀀스의 생성은 종래의 CABAC 무손실 코딩 모드의 최종 위치 코딩 단계를 생략한다.
도 14는 도 13에 나타낸 구성에 따른 신택스 요소의 시퀀스를 보여주는 테이블이다.
몇 가지 차이점이 도 11에 도시된 신택스 요소의 시퀀스와 비교하여 도 14에 도시된 신택스 요소의 시퀀스의 대비에 의해 관찰될 수 있다. 도 11에 도시된 신택스 요소의 시퀀스는, 종래의 CABAC 무손실 코딩 모드가 최종 위치 코딩 단계를 포함하기 때문에, Last_position_X 필드 및 Last_position_Y 필드를 포함한다. 이와는 대조적으로, 도 14에 도시된 신택스 요소의 시퀀스는, 도 14의 구성이 최종 위치 코딩 단계를 생략하기 때문에, Last_position_X 필드 및 Last_position_Y 필드를 포함하지 않는다.
신택스 요소의 시퀀스 둘 다는 유의성 맵을 포함하지만, 그 유의성 맵 사이에는 차이점이 존재한다. 도 11의 신택스 요소의 시퀀스의 유의성 맵에서, 유의성 맵 필드는, 채워진 Last_position_X/Last_position_Y 필드와 부합하도록 채워지지 않는다. 이와는 대조적으로, 도 14에서, 블록의 최종 스캐닝 위치에 대응하는 유의성 맵 필드는 블록의 최종 위치의 레벨에 대응하는 값, 즉 예의 블록에 대해 "0"으로 채워진다.
도 15는 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 구성을 나타낸 흐름도이다.
블록 1011에서, 전자 디바이스(1422)가, 비트 스트림으로부터, 블록의 최종 스캐닝 위치에 대응하는 값의 번호를 포함하는 유의성 맵 필드를 가지는 신택스 요소의 시퀀스를 복원한다. 블록 1012에서, 유의성 맵 및 유의성 맵의 상기 값을 사용하여 블록의 레벨을 디코딩한다. 블록 1013에서, 메모리 디바이스에 잔차 값(residual value)에 대응하는 취득된 블록을 저장 및/또는 비디오 데이터를 복원한다.
도 16은 전자 디바이스에서의 무손실 코딩 방법의 다른 구성을 나타낸 흐름도이다.
블록 1111에서, 전자 디바이스(1421)가 잔차 샘플의 블록에 대한 레벨 정보를 나타내는 신택스 요소의 시퀀스를 취득한다. 블록 1112에서, 복수의 이진화 테이블, 예컨대, CAVLC의 VLC 테이블(도 10)을 사용하여 신택스 요소의 시퀀스의 절대값-3(Absolute-3) 부분의 값에 대해 적응적 이진화를 수행하며, 신택스 요소의 시퀀스의 절대값-3 부분의 값은 복수의 이진화 테이블에 대해 입력 값으로 사용된다. 이전의 입력 정보에 기초하여 이진화 테이블을 갱신하기 위한 식은 이하에 나타낸다:
Figure pct00003
예에서, 블록 1111은 적어도 제1 입력 값을 이진화하기 위해 인터 슬라이스(inter slice)에 대한 VLC-Table-0(FIG. 10) 열 및 인트라 슬라이스(intra slice)에 대한 VLC-Table-1 열로부터의 초기에 사용하는 값을 포함한다. VLC 테이블 번호는 이전의 값이, 예컨대, 주어진 임계값, 3, 5, 13, 27보다 클 때 단조 증가될 수 있다. 따라서, 제1 단조 증가 후의 후속하는 적응적 이진화는 VLC-Table-1 열로부터의 값을 사용할 수 있고, 제2 단조 증가 후의 후속하는 적응적 이진화는 VLC-Table-2 열로부터의 값를 사용할 수 있고, 등등이다.
블록 1113에서, 전자 디바이스(1421)가 CABAC 바이패스 코딩 모드를 사용하여 적응적 이진화의 결과 값을 인코딩한다.
도 17은 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 다른 구성을 나타낸 흐름도이다.
블록 1211에서 전자 디바이스(1422)가 비트 스트림으로부터 이진 심볼을 복원한다. 블록 1212에서, 전자 디바이스(1422)가 이진 심볼을 바이패스 디코딩한다. 블록 1213에서, 전자 디바이스(1422)가 바이패스 디코딩의 결과를 적응적으로 역이진화한다. 블록 1214에서, 적응적 역이진화의 결과를 사용하여 잔차 정보를 나타내는 블록을 복원한다.
도 18은 전자 디바이스에서의 무손실 코딩 방법의 또 다른 구성을 나타낸 흐름도이다.
블록 1311에서, 전자 디바이스(1421)가 CABAC의 컨텍스트 모델의 서브세트만을 액세스한다. CABAC의 컨텍스트 모델의 수는 184개일 수 있다. 서브세트를 생성하기 위해, 이들 컨텍스트 모델은 컨텍스트 모델의 연관 특성에 기초하여, 예컨대 어느 컨텍스트 모델이 주파수 성분과 연관되어 있는지에 기초하여, 어느 컨텍스트 모델이 스캔 위치와 연관되어 있는지에 기초하여, 어느 컨텍스트 모델이 CABAC의 최종 위치 코딩 단계와 연관되어 있는지에 기초하여, 등등, 또는 이들의 조합에 기초하여, 필터링될 수 있다. 필터링은 일례에서 전자 디바이스(1421)에 의해 수행될 수 있지만, 다른 예에서는 전자 디바이스(1421)가 무손실 코딩 모드를 위해 제공된 서브세트를 액세스할 수 있도록, 서브세트가 전자 디바이스(1421)에 제공될 수 있다. 예에서는, 서브세트를 생성하기 위해, CABAC의 컨텍스트 모델은 컨텍스트 모델의 연관된 특성에 기초하여, 예컨대, 어느 컨텍스트 모델이 주파수 성분에 연관되어 있는지에 기초하여, 어느 컨텍스트 모델이 스캔 위치와 연관되어 있는지에 기초하여, 어느 컨텍스트 모델이 CABAC의 최종 위치 코딩 단계와 연관되어 있는지에 기초하여, 등등, 또는 이들의 임의 조합에 기초하여, 분류될 수 있다. 예에서, 주파수 성분과 스캔 위치는 같고 상호교환할 수 있다.
일례에서, 서브세트는 제1 주파수 성분과 동일하지 않는 주파수 성분을 갖는 CABAC 컨텍스트 모델을 포함하지 않을 수 있다. 예에서, 결과 서브세트는 26개의 컨텍스트 모델, 즉 유의성 맵을 코딩하기 위한 두 개의 컨텍스트 모델(하나는 제1 루마 주파수 성분을 위한 것이고 다른 하나는 제1 크로마 주파수 성분을 위한 것임), Greater_than_1 플래그의 제1 루마 주파수 성분의 코딩, Greater_than_1 플래그의 제1 크로마 주파수 성분의 코딩, Greater_than_2 플래그의 제1 루마 주파수 성분의 코딩, 및 Greater_than_2 플래그의 제1 크로마 주파수 성분의 코딩을 위한 각각 6개의 컨텍스트 모델을 포함할 것이다. 따라서, 총 24개의 컨텍스트 모델이 Greater_than_1 및 Greather_than_2를 위해 사용된다. 예에서, 상기 제1 주파수 성분은 블록 1312에서 유의성 맵을 코딩할 때만 액세스된다.
표 3에 나타낸 바와 같이, 플래그의 제1 루마 주파수를 코딩하기 위한 5개의 컨텍스트 모델은 서브블록의 유형 및 LargerT1 값에 따라 달라질 수 있으며, LargerT1 값은 이전 서브 블록에서 1보다 큰 계수 레벨 값의 개수이다. 예에서, 용어 "서브블록(sub-block)"은 잔차 샘플을 분할한 것(또는 TQC에 대한 블록)을 가리킨다. 예를 들어, 서브블록 크기가 4x4인 경우, 크기 8x8의 잔차 샘플은 4개의 4x4 서브블록으로 분할된다. 유사하게, 서브블록 크기가 8x4인 경우, 크기 32x8의 잔차 샘플은 8개의 8x4 서브블록으로 분할된다. 서브블록들은 코딩 순서에 의해 식별되며, 서브블록 0은 첫 번째(제1) 코딩된 서브블록을 나타낸다. 예에서, 제1 코딩된 서브블록은 블록의 오른쪽 아래(bottom right)에 위치한 서브블록이다. 다른 예에서, 제1 코딩된 서브블록은 블록 중간에 위치한 서브블록이다.
[표 3]
Figure pct00004
블록 1312에서, 전자 디바이스(1421)가 컨텍스트 모델의 서브세트를 사용하여 유의성 맵을 코딩한다.
단락 [0127]에서 설명하는 바와 같이, 제1 주파수 성분(또는 스캐닝 위치)과 동일하지 않은 주파수 성분(또는 스캐닝 위치)을 가진 컨텍스트 모델은 무손실 코딩 모드에 사용될 수 없다. 이것은 무손실 코딩 모드에 대한 계산 복잡도 및 메모리를 줄이는 이점이 있다. 컨텍스트 모델의 제1 서브세트는 유의성 맵 처리에 사용될 수 있다. 컨텍스트 모델의 제2 서브세트는 레벨 코딩, 예컨대 Greater_than_1 코딩 및/또는 Greater_than_2 코딩에 사용될 수 있다. 제1 서브세트는 제2 서브세트와 상이할 수 있다.
이상에서 설명한 원리 중 적어도 일부를 적용한 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제1 서브세트는 단 하나의 컨텍스트 모델을 포함할 수 있다. 전술한 원리 중 적어도 일부를 적용한 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제1 서브세트는, 색 정보(루마/크로마)에 기초하여, 하나 이상의 컨텍스트 모델, 예컨대 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다. 전술한 원리 중 적어도 일부를 적용한 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제1 서브세트는, 예측 유형, 예컨대,블록 내의 인트라 프레임(intra-frame) 또는 인터 프레임(inter-frame) 예측의 사용에 기초하여, 하나 이상의 컨텍스트 모델, 예컨대 수 개의 컨텍스트 모델을 포함할 수 있다. 전술한 원리 중 적어도 일부를 적용한 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제1 서브세트는 블록 크기에 기초하여 하나 이상의 컨텍스트 모델, 예컨대, 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다. 전술한 원리 중 적어도 일부를 적용한 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제1 서브세트는 서브블록 유형에 기초하여 하나 이상의 컨텍스트 모델, 예컨대, 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다.
이상에서 설명한 원리 중 적어도 일부를 적용한 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제2 서브세트는 단 하나의 컨텍스트 모델을 포함할 수 있다. 이상에서 설명한 원리 중 적어도 일부를 적용한 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제2 서브세트는, 색 정보(루마/크로마)에 기초하여, 하나 이상의 컨텍스트 모델, 예컨대 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다. 이상에서 설명한 원리 중 적어도 일부를 적용한 또 다른 예에서, 유의성 맵 처리에 사용된 컨텍스트 모델의 제2 서브세트는, 예측 유형, 예컨대, 블록 내의 인트라 프레임 또는 인터 프레임 예측의 사용에 기초하여, 하나 이상의 컨텍스트 모델, 예컨대 수 개의 컨텍스트 모델을 포함할 수 있다. 이상에 설명한 원리 중 적어도 일부를 적용한 다른 예에서, 레벨 코딩에 사용된 컨텍스트 모델의 제1 서브세트는 블록 크기에 기초하여 하나 이상의 컨텍스트 모델, 예컨대, 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다. 이상에서 설명한 원리 중 적어도 일부를 적용한 다른 예에서, 레벨 코딩 처리에 사용된 컨텍스트 모델의 제1 서브세트는, 서브블록 유형에 기초하여 하나 이상의 컨텍스트 모델, 예컨대, 두 개 또는 세 개의 컨텍스트 모델을 포함할 수 있다.
도 19는 디코딩 측의 전자 디바이스에서의 무손실 코딩 방법의 또 다른 구성을 나타낸 흐름도이다.
블록 1511에서, 전자 디바이스(1422)가 CABAC의 컨텍스트 모델의 서브세트만을 액세스한다. 블록 1512에서, 전자 디바이스(1422)가 컨텍스트 모델의 서브세트를 사용하여 비트 스트림으로부터 이진 심볼을 복원한다. 블록 1513에서, 전자 디바이스(1422)가 디코딩 결과를 사용하여 비디오 데이터를 복원한다.
상술한 바에서, 전자 디바이스(1421)에 의해 구현될 수 있는 구성은 도 13, 도 16 및 도 18에 나타나 있다. 이러한 구성을 모두를 갖는 인코더를 구성하는 것은 공지의 CABAC 무손실 코딩모드에 비해 코딩 성능을 향상시킨다. 그럼에도 불구하고, 임의의 조합으로 모든 이러한 구성보다 작은 구성, 이러한 구성 중 하나 또는 이러한 구성 중 어느 두 개를 갖는 인코더를 구성하는 것도 가능하고 실제적이며, 또한 공지의 CABAC 무손실 코딩모드에 비해 코딩 성능을 향상시킨다.
전술한 바에서, 전자 디바이스(1422)에 의해 구현될 수 있는 구성은 도 14, 도 17 및 도 19에 나타나 있다. 이러한 구성 모두를 갖는 디코더를 구성하는 것은 공지의 CABAC 무손실 코딩모드에 비해 코딩 성능을 향상시킨다. 그럼에도 불구하고, 임의의 조합으로 모든 이러한 구성보다 작은 구성, 이러한 구성 중 하나 또는 이러한 구성 중 어느 두 개를 갖는 디코더를 구성하는 것도 가능하고 실제적이며, 또한 공지의 CABAC 무손실 코딩 모드에 비해 코딩 성능을 향상시킨다.
예에서, 프로세서 및 프로세서와 전자 통신하는 메모리를 포함하는 전자 디바이스가 제공된다. 메모리에 저장된 것은 작업들을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들이다.
예에서, 작업은 무손실 인코딩을 위한 잔차 샘플을 취득하는 것을 포함할 수 있다. 다른 작업은 유의성 맵을 생성하는 것을 포함할 수 있으며, 생성하는 것은 블록의 최종 스캐닝 위치에 대응하는 유의성 맵 필드를 블록의 최종 스캐닝 위치의 레벨에 대한 값으로 채우는 것을 포함한다. 다른 작업은 값을 가지는 유의성 맵을 포함하는 신택스 요소의 시퀀스를 생성하는 것을 포함할 수 있다. 다른 작업은 디코더에 생성된, 신택스 요소의 시퀀스를 나태는 비트 스트림을 송신하는 것을 포함할 수 있다.
예에서, 신택스 요소의 시퀀스는 컨텍스트 적응적 이진 산술 코딩(CABAC)의 최종 위치 코딩 단계를 수행하지 않고 생성된다.
예에서, 다른 작업은 복수의 이진 테이블을 사용하여 적응적 이진화를 수행하는 것을 포함할 수 있으며, 신택스 요소의 시퀀스의 Absolute-3 부분의 값은 복수의 이진화 테이블에 대해 입력 값으로서 사용된다. 다른 작업은 적응적 이진화의 결과를 인코딩하는 것을 포함할 수 있다. 복수의 이진화 테이블은 CAVLC의 VLC 테이블일 수 있다.
예에서, 적응적 이진화의 결과를 인코딩하는 것은, 추가적인 작업을 포함할 수 있다. 추가적인 작업은 CABAC 바이패스 코딩 모드를 이용하는 것을 포함할 수 있다.
예에서, 복수의 이진화 테이블을 사용하여 입력 값의 적응적 이진화는 추가적인 작업을 포함할 수 있다. 추가적인 작업은 입력 값 중 하나가 미리 설정된 임력값보다 큰지를 판정하는 것을 포함할 수 있다. 추가적인 작업은 상기 입력 값이 미리 설정된 임계값보다 크다는 판정에 응답하여 테이블 갱신을 수행하는 것을 포함할 수 있다.
예에서, 다른 작업은 CABAC의 컨텍스트 모델의 서브세트만을 액세스하는 것을 포함할 수 있다. 다른 작업은 유의성 맵을 코딩하기 위해 컨텍스트 모델의 서브세트를 사용하는 것을 포함할 수 있다. 서브세트는 제1 주파수와 같지 않은 주파수 성분을 가지는 CABAC의 컨텍스트 모델을 포함할 수 있다.
예에서, 프로세서 및 프로세서와 전자 통신하는 메모리를 포함하는 전자 디바이스가 제공된다. 메모리에 저장된 것은 작업들을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들이다.
예에서, 작업은 무손실 인코딩을 위한 잔차 샘플을 취득하는 것을 포함할 수 있다. 다른 작업은 블록을 나타내기 위한 신택스 요소의 시퀀스를 생성하는 것을 포함할 수 있다. 다른 작업은 복수의 이진화 테이블을 사용하여 적응적 이진화를 수행하는 것을 포함할 수 있으며, 신택스 요소의 시퀀스의 Absolute-3 부분의 값은 복수의 이진화 테이블을 위한 입력 값으로 사용된다. 다른 작업은 적응적 이진화의 결과를 인코딩하는 것을 포함할 수 있다. 다른 작업은 디코더에 인코딩한 것을 전송하는 것을 포함할 수 있다.
예에서, 복수의 이진화 테이블은 CAVLC의 VLC 테이블이다.
예에서, 적응적 이진화의 결과를 인코딩하는 것은 추가적인 작업을 포함할 수 있다. 추가적인 작업은 컨텍스트 적응적 이진 산술 코딩(CABAC) 바이패스 코딩 모드를 이용하는 것을 포함할 수 있다.
예에서, 복수의 이진화 테이블을 사용한 입력 값의 적응적 이진화는 추가적인 작업을 포함할 수 있다. 추가적인 작업은 입력 값 중 하나가 미리 설정된 임계값보다 큰지를 판정하는 것을 포함할 수 있다. 추가적인 작업은 상기 입력 값이 미리 설정된 임계값보다 크다는 판정에 응답하여 테이블 갱신을 수행하는 것을 포함할 수 있다.
예에서, 다른 작업은 유의성 맵을 생성하는 것을 포함할 수 있으며, 상기 생성하는 것은 블록의 최종 스캐닝 위치에 대응하는 유의성 맵 필드를 블록의 최종 스캐닝 위치의 레벨에 대응하는 값으로 채우는 것을 포함할 수 있다. 다른 작업은 생성된 유의성 맵을 사용하여 신택스 요소의 시퀀스를 생성하는 것을 포함할 수 있다.
예에서, 신택스 요소의 시퀀스는 CABAC의 최종 위치 코딩 단계를 수행하지 않고 생성된다.
일례에서는, 방법을 제공한다. 상기 방법은 디코더를 사용하여 수행될 수 있다. 상기 방법의 하나의 작업은 어느 컨텍스트 모델이 주파수 성분과 연관되어 있는지에 기초하여 컨텍스트 적응적 이진 산술 코딩(CABAC)의 컨텍스트 모델을 필터링하는 것을 포함할 수 있다. 상기 방법의 다른 작업은 비트 스트림을 취득하는 것을 포함할 수 있다. 상기 방법의 다른 작업은 비트 스트림으로부터 이진 심볼을 복원하는 것을 포함할 수 있다. 상기 방법의 다른 작업은 필터링된 컨텍스트 모델을 사용하여 이진 심보를 디코딩하는 것을 포함할 수 있다. 상기 방법의 다른 작업은 디코딩의 결과를 사용하여 비디오 데이터를 복원하는 것을 포함할 수 있다.
예에서, 다른 작업은, 비트 스트림으로부터, 잔차 샘플을 나타내는 블록의 최종 스캐닝 위치에 대응하는 값으로 채워진 유의성 맵을 갖는 신택스 요소의 시퀀스를 복원하는 것을 포함할 수 있다. 다른 작업은 유의성 맵 및 유의성 맵의 상기 값을 사용하여 블록의 레벨을 디코딩하는 것을 포함할 수 있다.
예에서, 블록의 레벨을 디코딩하는 것은 CABAC의 최종 위치 디코딩 단계를 수행하지 않고 수행될 수 있다.
예에서, 다른 작업은 복원된 이진 심볼을 바이패스 디코딩하는 것을 포함할 수 있다. 다른 작업은 바이패스 디코딩의 결과를 적응적으로 역이진화하는 것을 포함할 수 있다. 다른 작업은 역이진화의 결과를 사용하여 잔차 정보를 나타내는 블록을 복원하는 것을 포함할 수 있다.
예에서, 다른 작업은 적응적 역이진화를 위한 CAVLC의 복수의 VLC 테이블을 사용하는 것을 포함할 수 있다.
예에서, 바이패스 디코딩은 CABAC 바이패스 디코딩 모드를 이용하는 것을 포함할 수 있다.
도 21은 디코딩 측의 전자 디바이스에서의 고 처리율 이진화 모드 조건이 충족되는지를 판정하는 방법의 일 구성을 나타낸 흐름도이다.
블록 2611에서 전자 디바이스(422)가 비트 스트림을 취득한다. 블록 2612에서 전자 디바이스(422)가 레벨 값의 블록을 취득한다. 예에서, 블록의 TQC의 블록을 포함한다.
블록 2613에서, 전자 디바이스(422)가 영이 아닌 레벨 값의 개수를 결정한다. 판정 블록 2614에서, 전자 디바이스(422)가 개수가 미리 설정된 임계값보다 큰지를 판정한다. 예에서, 미리 설정된 임계값은 8일 수 있으며, 이는 4x4 블록의 개수 값의 절반이다. N개 레벨 값을 갖는 블록 크기를 가지는 예에서, 임계값은 N의 50%에 상당할 수 있다. 예에서, 전자 디바이스(422)는 전자 디바이스(421)로부터의 시그널링을 수신한다. 전자 디바이스(421)에 의해 송신되는 시그널링은 미리 설정된 임계값을 지정할 수 있거나 미리 설정된 임계값을 결정하기 위해 전자 디바이스(421)에 의해 사용될 수 있는 정보를 포함할 수 있다.
판정 블록 2614에서 개수가 미리 설정된 임계값 이하이면, 블록 2615에서 전자 디바이스(422)는 영이 아닌 레벨 값을 제1 이진화 방법으로 디코딩한다. 판정 블록 2614에서 상기 개수가 미리 설정된 임계값보다 크면, 블록 2616에서 전자 디바이스(422)가 영이 아닌 레벨 값을 제1 이진화 방법과는 다른 제2 이진화 방법으로 디코딩한다. 예에서, 제2 이진화 방법은, 앞서 설명한 HTB 모드와 같은, 고 처리율 역이진화 모드를 포함할 수 있다. 예에서, 제1 이진화 모드는 종래의 CABAC의 이진화를 포함할 수 있다.
도 22는 디코딩 측의 전자 디바이스에서의 고 처리율 이진화 모드 조건이 충족되는지를 판정하는 방법의 다른 구성을 나타낸 흐름도이다.
블록 2711에서, 전자 디바이스(422)가 비트 스트림을 취득한다. 블록 2712에서, 전자 디바이스(422)가 레벨 값의 블록을 취득한다. 예에서, 블록은 TQC의 블록을 포함한다.
블록 2713에서, 전자 디바이스(422)가 절대값이 제1 임계값보다 큰, 레벨 값의 개수를 결정한다. 다른 예에서는 다른 미리 설정된 제1 임계값이 사용될 수 있지만, 예에서, 미리 설정된 제1 임계값은 1 또는 2일 수 있다. 판정 블록 2714에서, 전자 디바이스(422)는 그 개수가 미리 설정된 제2 임계값보다 큰지를 판정한다. 예에서, 미리 설정된 제2 임계값은 8일 수 있으며, 이는 4x4 블록의 개수 값의 절반이다. N개 레벨 값을 갖는 블록 크기를 가지는 예에서, 미리 설정된 제2 임계값은 N의 50%에 상당할 수 있다.
예에서, 전자 디바이스(422)는 전자 디바이스(421)로부터의 시그널링을 수신한다. 전자 디바이스(421)에 의해 송신되는 시그널링은 미리 설정된 제1 임계값 및/또는 미리 설정된 제2 임계값을 지정할 수 있거나, 또는 미리 설정된 제1 임계값 및/또는 미리 설정된 제2 임계값을 결정하기 위해 전자 디바이스(421)에 의해 사용될 수 있는 정보를 포함할 수 있다.
판정 블록 2714에서 개수가 미리 설정된 제2 임계값 이하이면, 블록 2715에서 전자 디바이스(422)는 영이 아닌 레벨 값을 제1 이진화 방법으로 디코딩한다. 판정 블록 2714에서 상기 개수가 미리 설정된 임계값보다 크면, 블록 2716에서 전자 디바이스(422)가 영이 아닌 레벨 값을 제1 이진화 방법과는 다른 제2 이진화 방법으로 디코딩한다. 예에서, 제2 이진화 방법은, 앞서 설명한 HTB 모드와 같은, 고 처리율 역이진화 모드를 포함할 수 있다. 예에서, 제1 이진화 모드는 공지의 CABAC 디코딩의 이진화를 포함할 수 있다.
도 23은 인코더 및 디코더 예를 나타낸 블록도이다.
시스템(2400)은 디코더(2412)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(2411)를 포함한다. 인코더(2411)와 디코더(2412)는 네크워크를 통해 통신할 수 있다.
디코더(2412)는 고 처리율 유의성 맵 처리를 사용하여 디코딩하도록 구성된 전자 디바이스(2422)를 포함한다. 전자 디바이스(2422)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 24 - 도 27에 도시된 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
인코더(2411)는 전자 디바이스(2421)를 포함하며, 이는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있으며, 메모리는 도 24 - 도 27에 도시된 구성에 대한 설명 및 그에 대응하는 설명으로부터 당업자에 의해 이해될 것인 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
도 24는 디코딩 측의 전자 디바이스에서의 고 처리율 유의성 맵 디코딩 방법의 구성을 나타낸 흐름도이다.
블록 2801에서, 전자 디바이스(2422)가 비트 스트림을 취득한다. 블록 2802에서 전자 디바이스(2422)가 레벨 값의 블록을 취득한다. 예에서, 블록은 TQC의 블록을 포함한다. 블록 2803에서, 전자 디바이스(2422)가 블록의 레벨 값, 예컨대, 블록의 제1 레벨 값 또는 블록의 다음 레벨 값을 취득한다.
판정 블록 2804에서, 전자 디바이스(2422)가, 취득된 레벨 값이 블록의 최종 레벨 값인지를 판정한다. 판정 블록 2804에서 취득된 레벨 값이 최종 레벨 값이 아니면, 전자 디바이스(2422)는 판정 블록 2804를 처리한다. 판정 블록 2804에서 취득된 레벨 값이 최종 레벨 값이면, 블록 2805에서 전자 디바이스(2422)가 레벨 값의 크기(이는 각 레벨 값의 부호 정보 및 절대 크기 모두를 포함할 수 있음)를 디코딩한다.
판정 블록 2814를 다시 참조하여, 전자 디바이스(2422)가, 제1 디코딩 방법을 사용하여 취득된 레벨 값이 영이 아닌지를 판정한다. 판정 블록 2814에서 취득된 레벨 값이 영이 아니면, 전자 디바이스(2422)는 블록 2815로 진행하고; 그렇지 않으면 전자 디바이스(2422)는 블록 2803으로 돌아간다. 블록 2815에서, 전자 디바이스(2422)가 카운터를 증가시킨다.
판정 블록 2816에서, 전자 디바이스(2422)가 카운터의 현재 카운트 값이 미리 설정된 임계값보다 큰지를 판정한다. 예에서, 미리 설정된 임계값은 도 21을 참조하여 설명한 미리 설정된 임계값을 포함할 수 있다. 판정 블록 2816에서, 카운터의 현재 카운트 값이 미리 설정된 임계값보다 크면, 전자 디바이스(2422)는 블록 2817로 진행하고; 그렇지 않으면 전자 디바이스(2422)는 블록 2803으로 돌아간다.
블록 2817에서, 전자 디바이스(2422)가 블록의 다음 레벨 값 취득한다. 판정 블록 2818에서, 전자 디바이스(2422)가 취득된 레벨 값이 블록의 최종 레벨 값인지를 판정한다. 판정 블록 2818에서 취득된 레벨 값이 최종 레벨 값이 아니면, 전자 디바이스(2422)는 블록 2819로 진행하고; 그렇지 않으면 블록 2820에서 전자 디바이스(2422)가 레벨 값의 크기를 디코딩한다.
블록 2819에서, 전자 디바이스(2422)가 제1 디코딩 방법과는 다른 제2 디코딩 방법을 사용하여 취득된 레벨 값이 영이 아닌지를 판정한다. 예에서, 제2 디코딩 방법은 고 처리율 디코딩 방법, 바이패스 디코딩 방법, 등을 포함한다. 예에서, 제1 디코딩 방법은 CABAC의 레귤러 디코딩 모드를 포함한다.
상기에 따라, 유의성 맵은 요소단위(element-by-element), 예컨대 유의성 맵 필드 단위(significance map field-by-significance map field)로 디코딩될 수 있다. 미리 설정된 임계값에 도달될 때, 전자 디바이스(2422)는 나머지 유의성 맵 부분의 디코딩을 변경할 수 있다. 고 처리율 또는 바이패스 유의성 맵 디코딩 모드가 나머지 유의성 맵 부분에 대해 사용될 수 있다. 따라서, 디코딩 성능이 종래의 CABAC 유의성 맵 디코딩에 비해 향상될 수 있다.
도 25는 디코딩 측의 전자 디바이스에서의 고 처리율 유의성 맵 디코딩 방법의 다른 구성을 나타낸 흐름도이다.
도 25에 도시된 방법에서, 프로세스 2901-2905는 프로세스 2801-2805(도 24)와 유사하게, 도시된 바와 같이 수행될 수 있다.
블록 2914에서, 전자 디바이스(2422)가 제1 디코딩 방법을 사용하여 취득된 레벨 값의 절대값이 제1 임계값보다 큰지를 판정한다. 다른 예에서는 다른 제1 임계값이 사용될 수 있지만, 예에서, 제1 임계값은 1 또는 2일 수 있다. 판정 블록 2914에서 취득된 레벨 값의 절대값이 제1 임계값보다 크면, 전자 디바이스(2422)는 블록 2915로 진행하고; 그렇지 않으면, 전자 디바이스(2422)는 블록 2903으로 돌아간다. 블록 2915에서, 전자 디바이스(2422)는 카운터를 증가시킨다.
판정 블록 2916에서, 전자 디바이스(2422)가 카운터의 현재 카운트가 미리 설정된 제2 임계값보다 큰지를 판정한다. 예에서, 미리 설정된 제2 임계값은 8일 수 있으며, 이는 4x4 블록의 개수 값의 절반이다. N개 레벨 값을 갖는 블록 크기를 가지는 예에서, 미리 설정된 제2 임계값은 N의 50%에 상당할 수 있다. 판정 블록 2916에서, 카운터의 현재 카운트가 미리 설정된 제2 임계값보다 크면, 전자 디바이스(2422)는 블록 297로 진행하고; 그렇지 않으면 전자 디바이스(2422)는 블록 2903으로 돌아간다.
블록 2917에서, 전자 디바이스(2422)가 블록의 다음 레벨 값 취득한다. 판정 블록 2918에서, 전자 디바이스(2422)가 취득된 레벨 값이 블록의 최종 레벨 값인지를 판정한다. 판정 블록 2918에서 취득된 레벨 값이 최종 레벨 값이 아니면, 전자 디바이스(2422)는 블록 2919로 진행하고; 그렇지 않으면 블록 2920에서 전자 디바이스(2422)가 레벨 값의 크기를 디코딩한다.
블록 2919에서, 전자 디바이스(2422)가 제1 디코딩 방법과는 상이한 제2 디코딩 방법을 사용하여 취득된 레벨 값의 절대값이 제1 임계값보다 큰지를 판정한다. 예에서, 제2 디코딩 방법은 고 처리율 디코딩 방법, 바이패스 디코딩 방법, 등을 포함한다. 예에서, 제1 디코딩 방법은 CABAC의 레귤러 디코딩 모드를 포함한다.
이상의 설명에 따르면, 유의성 맵은 요소 단위, 예컨대 유의성 맵 필드 단위로 디코딩될 수 있다. 미리 설정된 임계값에 도달될 때, 전자 디바이스(2422)는 나머지 유의성 맵 부분의 디코딩을 변경할 수 있다. 고 처리율 또는 바이패스 유의성 맵 디코딩 모드가 나머지 유의성 맵 부분에 대해 사용될 수 있다. 따라서, 디코딩 성능이 종래의 CABAC 유의성 맵 디코딩에 비해 향상될 수 있다.
도 26은 디코딩 측의 전자 디바이스에서의 디코딩 바이패스 특성을 갖는 고 처리율 유의성 맵 디코딩 방법의 구성을 나타낸 흐름도이다.
도 26에 도시된 방법에서, 프로세스 3001-3004 및 3014-3016는, 프로세스 2801-2804 및 2814-2816(도 24)와 유사하게, 도시된 바와 같이 수행될 수 있다.
블록 3005에서, 전자 디바이스(2422)가 제3 디코딩 방법, 예컨대 이진화 방법을 사용하여 레벨 값의 크기를 복원한다. 블록 3020에서, 전자 디바이스(2422)가 제3 디코딩 방법을 사용하여 레벨 값의 제1 부분의 크기를 복원하고, 제4 디코딩 방법, 예컨대 다른 이진화 방법을 사용하여 레벨 값의 제2 부분의 크기를 복원한다.
예에서, 레벨 값의 제1 부분은 제1 디코딩 방법으로 처리되는 레벨 값을 포함한다. 레벨 값의 제2 부분은 제1 디코딩 방법으로 처리되지 않는 레벨 값을 포함한다.
명백해야 하는 것은, 도 26에 도시된 구성과 유사한, 디코딩 측의 전자 디바이스에서의 디코딩 바이패스 특성을 갖는 고 처리율 유의성 맵 디코딩 방법이 다른 구성이 가능하고 실제적일 수 있다는 것이다. 예를 들어, 다른 구성에서, 전자 디바이스(2422)는, 판정 블록 2914(도 25)와 유사하게, 제1 디코딩 방법을 사용하여 취득된 레벨 값의 절대 값이 미리 설정된 제1 임계값보다 큰지를 판정한다. 또한, 전자 디바이스(2422)는 판정 블록 2916(도 25)과 유사하게, 카운터가 미리 설정된 제1 임계값보다 큰지를 판정한다.
이상의 설명에 따르면, 유의성 맵은 요소 단위, 예컨대 유의성 맵 필드 단위로 디코딩될 수 있다. 미리 설정된 임계값에 도달될 때, 전자 디바이스(2422)는 유의성 맵의 디코딩을 중지할 수 있다(유의성 맵의 나머지 요소는 디코딩되지 않는다). 그 후, 디코딩된 요소에 대응하는 레벨 값이 이진화 방법(예컨대, 영의 값을 전송할 수 있는 이진화 방법)을 사용하여 처리되는 한편, 나머지 요소는 상이한 이진화 방법(예컨대, 영의 값을 전송할 수 없는 이진화 방법)을 사용하여 처리된다. 따라서, 디코딩 성능이 종래의 CABAC 유의성 맵 디코딩에 비해 향상될 수 있다.
도 27은 디코딩 측의 전자 디바이스에서의 디코딩 방법 스위칭 특성(decode-method-switching feature)을 갖는 고 처리율 유의성 맵 디코딩 방법의 구성을 나타낸 흐름도이다.
도 27에 도시된 방법에서, 프로세스 2801-2804 및 2814-2819(도 24)와 유사하게, 프로세스 801-3804 및 3814-3819가 도시된 바와 같이 수행될 수 있다. 블록 3805에서, 전자 디바이스(2422)는 제3 디코딩 방법(도 26의 제3 디코딩 방법)을 사용하여 레벨 값의 크기를 복원한다. 블록 3820에서, 전자 디바이스(2422)가 제3 디코딩 방법을 사용하여 레벨 값의 제1 부분의 크기를 복원하고, 제4 디코딩 방법(도 26의 제4 디코딩 방법)을 사용하여 레벨 값의 제2 부분의 크기를 복원한다. 예에서, 레벨 값의 제1 부분은 블록 3803에서 취득된 레벨 값을 포함하는 한편, 레벨 값의 제2 부분은 블록 3817에서 취득된 레벨 값을 포함한다.
명백해야 하는 것은, 도 27에 도시된 구성과 유사한 디코딩 측의 전자 디바이스에서 디코딩 바이패스 특성을 갖는 고 처리율 유의성 맵 디코딩 방법의 다른 구성이 가능하고 실제적일 수 있다는 것이다. 예를 들어, 다른 구성에서, 전자 디바이스(2422)는 판정 블록 2914(도 25)와 유사하게, 취득된 레벨 값의 절대값이 미리 설정된 제1 임계값보다 큰지를 제1 디코딩 방법을 사용하여 결정한다. 또한, 전자 디바이스(2422)는, 판정 블록 2916(도 25)과 유사하게, 카운터가 미리 설정된 제2 임계값보다 큰지를 판정한다.
예에서, 프로세서 및 프로세서와 전자 통신하는 메모리를 포함하는 제1 전자 디바이스가 제공된다. 메모리에 저장된 것은 작업들을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들이다.
예에서, 작업은 비트 스트림을 수신하는 것을 포함할 수 있다. 다른 작업은 수신된 비트 스트림에 기초하여 레벨 값의 블록을 취득하는 것을 포함할 수 있다. 다른 작업은 임계값에 따라 레벨 값의 일부분을 식별하는 것을 포함할 수 있다. 다른 작업은, 그 부분을 식별한 후, 고 처리율 유의성 맵 처리 모드를 이용하여 레벨 값의 임의의 나머지 부분을 처리하는 것을 포함할 수 있다. 다른 작업은 그 처리에 기초하여 비디오 데이터를 복원하는 것을 포함할 수 있다.
예에서, 프로세서 및 프로세서와 전자 통신하는 메모리를 포함하는 제2 전자 디바이스가 제공된다. 메모리에 저장된 것은 작업들을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들이다. 작업은 제1 전자 디바이스에 시그널링을 전송하는 것을 포함할 수 있으며, 그 시그널링은 임계값을 식별할 수 있게 해준다.
이상에 따르면, 유의성 맵은 요소 단위, 예컨대 유의성 맵 필드 단위로 디코딩될 수 있다. 미리 설정된 임계값에 도달될 때, 전자 디바이스(2422)는 유의성 맵의 디코딩을 중지할 수 있다(유의성 맵의 나머지 요소는 디코딩되지 않는다). 그 후, 디코딩된 요소에 대응하는 레벨 값이 이진화 방법(예컨대, 영(0, zero)의 값을 전송할 수 있는 이진화 방법)을 사용하여 처리되는 한편, 나머지 요소는 다른 이진화 방법(예컨대, 영의 값을 전송할 수 없는 이진화 방법)을 사용하여 처리된다. 따라서, 디코딩 성능이 종래의 CABAC 유의성 맵 디코딩에 비해 향상될 수 있다.
(HEVC에서 CABAC를 위해 상이한 파라미터 선택 기술을 사용하는 무손실 코딩)
무손실 코딩 모드로 HEVC에서 CABAC 인코딩을 이용할 때, 인코딩/디코딩은 계산적으로 복잡하다. 계산 복잡성에 대한 하나의 이유는, 신택스 요소 "Absolute-3"의 인코딩이다. 공지의 CABAC 코딩에서, 지수 골롬 라이스 코딩 방법(Exponential-Golomb-Rice coding method)이 신택스 요소를 인코딩하는 데 사용된다.
배경으로서, 지수 골롬 라이스(G-R) 코딩 방법은 도 28에 도시된 라이스 파라미터 갱신 테이블을 이용한다. GPR 코딩 방법은 다음 단락에서 더 자세하게 설명되는 바와 같이, CABAC의 공지의 무손실 코딩 방법에서 신택스 요소 "Absolute-3"(즉, 도 2의 테이블의 마지막 줄)을 코딩하는 데 적용된다.
라이스 파라미터는 심볼의, 빈으로의 변환을 제어한다. 예로 설명하기 위해, 심볼 0, 11, 4..., 를 변환하기 위해 도 28의 테이블 및 G-R 코딩의 사용을 고려하고, "0"(제1 심볼)은 서브블록에서 초기 심볼이다. 라이스 파라미터는, 제1 심볼이 서브블록에서 초기 심볼이기 때문에, 제1 심볼에 대해 영으로 초기화된다. 제1 심볼은 영(zero)인 현재의 라이스 파라미터를 사용하여 코딩된다. 일례에서, RP의 라이스 파라미터를 사용하여 심볼을 코딩하는 프로세스는, 값 Quotient=floor( (symbol-1)/RP)을 계산하는 것, 및 1인 빈에 이은 0인 빈의 Quotient 스트링을 포함하는 출력을 생성하는 것으로 구성된다. 여기서, Quotient는 정수이고 floor()는 정수와 분수 성분을 포함하는 값을 정수 성분에 매핑하는 연산자이다. 설명을 위해, 라이스 파라미터 3인 심볼 "5"의 코딩은 1의 Quotient 값 및 "01"의 출력 빈을 낳는다. 유사하게, 라이스 파라미터 33인 심볼 "100"의 코딩은 Quotient 값 3 및 "0001"의 출력 빈을 낳는다. 다른 예에서, RP의 라이스 파라미터를 가지는 심볼의 코딩 프로세스는 값 Quotient=floor((symbol-1)/RP)를 계산하는 것과, 0인 빈에 이은 1인 빈의 Quotient 스트링을 포함하는 출력을 생성하는 것으로 구성된다. 또 다른 예에서, RP의 라이스 파라미터를 가지는 심볼을 코딩하는 프로세스는, 룩업 테이블 세트로부터, 심볼과 빈의 시퀀스 사이의 매핑을 정의하는 제RP(RP-th) 룩업 테이블을 선택하는 것으로 구성된다. 도 28의 테이블에 따라 룩업 결과가 영으로 주어지면, 라이스 파라미터는 다음 심볼에 대해 갱신하지 않는다. 따라서 제2 심볼 "11"이 영인 현재의 라이스 파라미터를 사용하여 코딩된다. 제2 심볼 "11" 및 라이스 파라미터 "0"에 대한 룩업 결과 ("2")가 현재의 라이스 파라미터 값(즉, 영)과 상이한 것으로 주어지면, 라이스 파라미터는 영(0)에서 2로 갱신된다. 제3 심볼 "4"가 그후 2인 현재의 라이스 파라미터를 사용하여 코딩된다. 룩업 결과가 현재의 라이스 파라미터와 상이하지 않은 것으로 주어지면, 라이스 파라미터 2가 다음 심볼에 대해 사용된다.
공지의 CABAC에 따라 "Absolute-3" 값을 코딩하는 G-R의 계산 복잡성으로 인해, 인코딩/디코딩은 상당한 양의 처리 자원을 소비할 수 있고/있거나 완료까지 상당한 시간이 걸릴 수 있다. 아래의 개시 내용은 이러한 문제 및 다른 문제들을 해결한다.
도 29는 인코더 및 디코더의 예를 설명하는 블록도이다.
시스템(2900)은 디코더(2912)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(2911)를 포함한다. 인코더(2911)와 디코더(2912)는 네크워크를 통해 통신할 수 있다.
인코더(2911)는 HEVC에서 CABAC을 위해 다른 파라미터 선택을 갖는 무손실 코딩을 사용하여 인코딩하도록 구성된 전자 디바이스(2921)를 포함한다. 전자 디바이스(2921)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 30에 도시된 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
디코더(2912)는 HEVC에서 CABAC을 위해 다른 파라미터 선택을 갖는 무손실 코딩을 사용하여 디코딩하도록 구성된 전자 디바이스(2922)를 포함한다. 전자 디바이스(2922)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 31에 도시된 작업을 수행하기 위해 실행 가능한 명령어들을 저장한다.
도 30은 전자 디바이스에서의 다른 파라미터 선택을 갖는 무손실 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3011에서, 전자 디바이스(2921)가 산술 기반 인코더, 예컨대 CABAC 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득한다. 판정 블록 3012에서, 전자 디바이스(2921)가, 블록이 무손실 인코딩을 사용하여 인코딩될 것인지를 판정한다. 블록이 무손실 인토딩을 사용하여 인코딩될 것이 아니면, 블록 3013에서, 제1 Absoute-3 코딩 기술을 사용하여 데이터의 블록을 인코딩한다.
블록이 무손실 인코딩을 사용하여 인코딩될 것이면, 블록 3014에서, 전자 디바이스(2921)가 제2 상이한 Absoute-3 코딩 기술을 사용하여 데이터의 블록을 인코딩한다. 블록 3015에서, 전자 디바이스(2921)가 생성된 비트 스트림을 네트워크를 통해 송신 및/또는 생성된 비트 스트림을 메모리 디바이스에 저장한다.
예에서, 제1 Absolute-3 기술은 CABAC 코딩의 R-G 코딩 기술을 포함한다, 즉, 라이스 파라미터는 각 서브블록 코딩 단계에서 0으로 초기화하고, 도 28에 도시된 테이블의 5개 파라미터가 고려된다. 예에서, 다른 제2 Absolute-3 코딩 기술은 각 서브블록의 코딩 단계에서 영으로 초기화하지 않는다, 즉, 다르게 초기화된다, 및/또는 다른 라이스 파라미터 갱신 테이블, 예컨대 축소된 라이스 파라미터 갱신 테이블(reduced Rice parameter update table)을 사용한다.
예에서, 다른 초기화는 각 서브블록이 아니라 각 블록 내의 라이스 파라미터를 영으로 초기화 하는 것을 포함할 수 있다. 예에서, 상이한 초기화는 이전 서브블록에서 현재 서브블록의 초기 라이스 파라미터로 사용된 최근(last) 라이스 파라미터를 사용하는 것을 포함할 수 있다.
예에서, 상이한 초기화는 잔차 샘플의 통계값(statistics)에 기초한 초기화를 포함할 수 있다. 예에서, 상이한 초기화는 블록 유형, 블곡 크기, 또는 색 정보(루마/크로마), 등, 또는 이들의 조합에 기초하여 미러 정의된 라이스 파라미터 값으로 초기화하는 것을 포함할 수 있다. 블록 유형은 블록의 블록 크기, 블록의 예측 정보(인트라/인터), 및 블록의 색 정보(루마/크로마)에 기초하여 블록을 표현하기 위한 값이다. 예에서, 상이한 초기화는, 현재 블록 유형이 특정한 미리 정의된 값(들), 예컨대 "2" 및/또는 "5"일 때, 라이스 파라미터를 미리 정의된 값 "1"로 초기화하는 것을 포함할 수 있다.
예에서, 상이한 라이스 파라미터 갱신 테이블은 제1 Absolute-3 코딩 기술에 사용된 라이스 파라미터 갱신 테이블보다 적은 수의 파라미터를 포함한다. 예에서, 상이한 라이스 파라미터 갱신 테이블은 처음의 두 경우(라이스 파라미터가 "0"과 "1"이다)만을 포함한다. 이러한 라이스 파라미터 갱신 테이블의 예시는 도 28에 포함된다.
예에서, 다른 제2 Absolute-3 코딩 기술이 사용되면, 전자 디바이스(2921)는 대응하는 지시자, 예컨대 다른 제2 Absolute-3 코딩 기술과 연관된 플래그를, 값 1로 설정할 수 있다(이는 물론 설계 선호도에 따라 상기 플래그의 디폴트 값을 변경하거나, 상기 플래그를 디폴트 값 그대로 두는 것을 포함할 수 있다).
도 31은 디코딩 측의 전자 디바이스에서의 다른 파라미터 선택을 갖는 무손실 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3110에서, 전자 디바이스(2922)가 비트 스트림을 취득한다. 블록 3111에서, 전자 디바이스(2922)가 취득된 비트 스트림으로부터 인진 심볼을 복원한다. 판정 블록 3112에서, 전자 디바이스(2922)가 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것인지를 판정한다. 예에서, 상기 판정은 수신된 비트 스트림에 대응하는, 슬라이스 헤더와 같은, 헤더의 검사를 포함할 수 있다. 예에서, 헤더를 검사하는 것은 다른 제2 Absolute-3 코딩 기술과 연관된 플래그의 값에 대해 취득된 비트 스트림에 대응하는 슬라이스 헤더를 검사하는 것을 더 포함할 수 있다. 다른 예에서, 상기 판정은 TQC로의 계수 레벨의 변환을 제어하는 블록 유형 또는 양자화 파라미터와 같은, 블록과 연관된 이전의 디코딩된 심볼을 검사하는 것을 포함할 수 있다. 판정 블록 3112에서 조건이 충족되지 않으면, 블록 3113에서 전자 디바이스(2922)가 제1 Absoute-3 코딩 기술을 사용하여 TQC의 블록을 취득한다.
판정 블록 3112에서 조건이 충족되면, 블록 3114에서 전자 디바이스(2921)가 다른 제2 Absolute-3 코딩 기술을 사용하여 잔차 샘플을 취득한다. 블록 3115에서 전자 디바이스(2922)는 취득된 TQC의 블록 또는 취득된 잔차 샘플을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원할 수 있다.
(HEVC의 CABAC를 위한 고 처리율 코딩)
HEVC의 CABAC를 이용할 때, 처리율 성능은, 빈/화소의 총 개수, 바이패스 빈/화소의 개수, 및 레귤러(또는 컨텍스트) 코딩된 빈/화소의 개수와 같은 상이한 인자에 따라 달라질 수 있지만, 이에 한정되는 것은 아니다. 따라서, 이들 인자에 따라, 코딩에는 상당한 양의 처리 자원을 소비할 수 있고/있거나 상당한 시간이 걸릴 수 있다. 이하의 개시 내용은 이 문제 및 다른 문제를 해결한다.
배경으로서, 공지의 CABAC에 따라, 신택스 요소의 25개 레벨 코드 플래그까지가 컨텍스트 코딩된다. 나머지 레벨 코드 플래그는 파이패스 코딩된다. 미리 정의된 (그리고 고정된) 수의 Greater_than_1 플래그, 8개의 Greater_than_1 플래그가 컨텍스트 코딩된다. 미리 정의된 (그리고 고정된) 수, 즉 1개의 Greater_than_2 플래그가 컨텍스트 코딩된다. 모든 유의성 맵 플래그, 즉 16개까지 컨켁스트 코딩된다(신택스 요소는 그 블록의 최종 위치 정보에 따라 16개보다 작게 유의성 맵 플래그를 가질 수 있다). 따라서, 최대 25개 컨텍스트 코딩된 빈이 주어진 서브세트 블록에 대해 필요하다(25 빈/16 화소 = 1.56 빈/화소). 위의 예는 4x4 서브블록을 사용하는 경우이다.
도 34는 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3411에서, 전자 디바이스(2321)가 산술 기반 인코더, 예컨대 CABAC 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득한다. 블록 3412에서, 전자 디바이스(2321)가 제1 수량의, 신택스 요소의 레벨 코드 플래그, 예컨대, CABAC 신택스 요소의 Greater_than_1 및 Greater_than_2 플래그를 컨텍스트 코딩한다. 제1 수량은 미리 정해진 제1 개수, 예컨대 9개, 즉, 8개의 Greater_than_1 플래그와 1개의 Greater_than_2 플래그를 포함한다.
블록 3413에서, 전자 디바이스(2321)가 신택스 요소의 유의성 맵 내의 실제로 코딩된 빈의 개수를 식별한다. 블록 3414에서, 전자 디바이스(2321)가 미리 정해진 제2 개수와(예컨대 CABAC에서의 16개) 식별된 개수의 차를 결정한다. 블록 3415에서, 전자 디바이스(2321)가 제2 수량의 레벨 코드 플래그를 컨텍스트 코딩하며, 제2 수량은 결정된 차를 포함한다. 블록 3416에서, 전자 디바이스(2321)가 생성된 비트 스트림을 네트워크를 통해 송신 및/또는 생성된 비트 스트림을 메모리 디바이스에 저장한다.
예에서, 도 34에 도시된 구성이 사용되면, 전자 디바이스(2321)는 대응하는 지시자, 예컨대, 플래그를 값 1로 설정할 수 있다(물론 이것은 설계 선호도에 따라 플래그의 디폴트 값을 변경하는 것 또는 플래그를 디폴트 값으로 그대로 두는 것을 포함할 수 있다). 예에서, 지시자는 컨텍스트 코딩되는 추가적인 Greater_than_1 및/또는 Greater_than_2 플래그의 수를 식별하게 해줄 수 있다.
전술한 구성에 따라 생성되는 신택스 요소의 예는 도 36에 도시되어 있다. 예에서, 예의 신택스 요소의 유의성 맵에서 실제로 코딩된 빈의 개수는 12개이다. 16과 12 사이의 결정된 차는 4이다. 컨텍스트 코딩되는 레벨 코드 플래그의 제1 수량은 9개(8개의 Greater_than_1 플래그와 1개의 Greater_than_2 플래그). 컨텍스트 코딩되는 레벨 코드 플래그의 제2 수량은 4개이다. 이 특정한 예에서, 이 4개는 모두 Greater_than_1 플래그이지만, 다른 예에서는 이 4개는 하나 이상의 Greater_than_1 플래그와 하나 이상의 Greater_than_2 플래그, 또는 4개의 Greater_than_2 플래그를 포함할 수 있다. 나머지 레벨 코드 플래그는 바이패스 인코딩된다.
도 35는 디코딩 측의 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3510에서, 전자 디바이스(3322)가 비트 스트림을 취득한다. 블록 3511에서, 전자 디바이스(3322)가 취득된 비트 스트림으로부터 이진 심볼을 복원한다.
블록 3512에서, 전자 디바이스(3322)가 제1 수량의, 신택스 요소의 레벨 코드 플래그, 예컨대, CABAC 신택스 요소의 Greater_than_1 및 Greater_than_2 플래그를 컨텍스트 디코딩하며, 제1 수량은 미리 정해진 제1 개수, 예컨대 9개, 즉, 8개의 Greater_than_1 플래그와 1개의 Greater_than_2 플래그이다. 판정 블록 3513에서, 전자 디바이스(3322)가, 신택스 요소의 추가적인 레벨 코드 플래그가 컨텍스트 코딩되는지를 판정한다. 예에서, 판정은 슬라이스 헤더와 같은, 수신된 비트 스트렘에 대응하는 헤더를 검사하는 것을 포함한다. 확인하는 것은 지시자, 예컨대 플래의 값에 대해 취득된 비트 스트림에 대응하는 슬라이스 헤더를 검사하는 것을 더 포함할 수 있다. 판정 블록 3513에서, 전자 디바이스(3322)가 추가적인 레벨 코드 플래그가 컨텍스트 코딩되지 않는 것으로 판정하면, 3514에서, 신택스 요소의 나머지 레벨 코드 플래그를 바이패스 디코딩한다. 판정 블록 3513에서, 전자 디바이스(3322)가 추가적인 레벨 코드 플래그가 컨텍스트 코딩되는 것으로 판정하면, 블록 3515에서, 전자 디바이스(3322)가 제2 수량의, 신택스 요소의 레벨 코드 플래그를 컨텍스트 디코딩한다. 예에서, 전자 디바이스(3322)는 슬라이스 헤더로부터의 정보에 기초하여 컨텍스트 코딩되는 추가적인 Greater_than_1 및/또는 Greater_than_2의 개수를 식별할 수 있다. 블록 3514에서, 전자 디바이스(3322)가 임의의 나머지 레벨 코드 플래그를 바이패스 디코딩한다. 블록 3516에서, 전자 디바이스(3322)가 취득된, TQC의 블록 또는 취득된 잔차 샘플을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원한다.
도 38은 디코딩 측의 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3850에서, 전자 디바이스(3322)가 비트 스트림을 취득한다. 블록 3851에서, 전자 디바이스(3322)가 취득된 비트 스트림으로부터 레벨 값의 블록을 취득한다.
블록 3853에서, 전자 디바이스(3322)가 블록의 최종 유효 계수(last significant coefficient)의 위치를 결정한다. 블록 3854에서, 전자 디바이스(3322)가 취득된 블록으로부터 유효 계수를 컨텍스트 디코딩하고, 컨텍스트 디코딩을 위한 심볼의 최대 개수를 결정된 위치의 함수로 결정한다.
블록 3855에서, 전자 디바이스(3322)가 카운터를 리세트(reset), 예컨대, 카운터를 영으로 설정한다. 판정 블록 3856에서, 전자 디바이스(3322)가 디코딩될 레벨 코드 플래그가 남아 있는지를 판정한다. 판정 블록 3856에서 남아 있는 레벨 코드 플래그가 없으면, 블록 3857에서, 전자 디바이스(3322)가 취득된 TQC의 블록 또는 취득된 잔차 샘플을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원한다.
레벨 코드 플레그가 남아 있으면(판정 블록 3856), 판정 블록 3858에서, 카운터가 임계값보다 큰지를 판정한다. 예에서, 임계값은 결정된 최대값과 연관될 수 있다. 예에서, 임계값은 결정된 최대값과 블록의 유의성 맵 플래그의 개수의 차에 대응할 수 있다. 판정 블록 3858에서 카운터가 임계값보다 크면, 블록 3859에서, 전자 디바이스(3322)가 레벨 코드 플래그를 바이패스 디코딩한다. 판정 블록 3858에서 카운터가 임계값 미만이면, 블록 3860에서, 전자 디바이스(3322)가 레벨 코드 플래그를 컨텍스트 디코딩한다. 전자 디바이스(3322)는 블록 3861에서, 카운터를 증가시킨다.
도 39는 디코딩 측의 전자 디바이스에서의 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 3950에서, 전자 디바이스(3322)가 비트 스트림을 취득한다. 블록 3951에서, 전자 디바이스(3322)가 취득된 비트 스트림으로부터 레벨 값의 블록을 취득한다.
블록 3953에서, 전자 디바이스(3322)가 블록의 최종 유효 계수의 위치를 결정한다. 블록 3954에서, 전자 디바이스(3322)가 취득된 블록으로부터 유효 계수를 컨텍스트 디코딩하고, 컨텍스트 디코딩을 위한 심볼의 최대 개수를 결정된 위치 및 서브블록 위치 모두의 함수로 결정한다. 프로세스 3955-3961은 프로세스 3855-3861에 대응할 수 있다.
도 40은 디코딩 측의 전자 디바이스에서 HEVC의 CABAC를 위한 고 처리율 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 4050에서, 전자 디바이스(3322)가 비트 스트림을 취득한다. 블록 4051에서, 전자 디바이스(3322)가 취득된 비트 스트림으로부터 레벨 값의 블록을 취득한다.
블록 4053에서, 전자 디바이스(3322)가 최종 유효 계수의 위치를 결정한다. 블록 4054에서, 전자 디바이스(3322)가 취득된 블록으로부터 유효 계수를 컨텍스트 디코딩하고, 컨텍스트 디코딩을 위한 심볼의 최대 개수를 블록의 속성의 함수, 예컨대, 블록의 유효 계수의 개수로 결정로 결정한다. 프로세스 4055-4061는 프로세스 3855-3861에 대응할 수 있다.
일례에서, 시스템이 제공된다. 이 시스템은 비트 스트림으로부터 레벨 값의 블록을 취득하고; 블록의 레벨 코드 플래그를 컨텍스트 디코딩하고; 블록의 다음 레벨 코드 플래그가 있는지를 검사하고; 다음 레벨 코드 플래그가 있으면, 컨텍스트 코딩된 레벨 코드 플래그의 카운트 값이 임계값보다 큰지를 판정하고; 카운트 값이 임계값 미만이라는 판정에 응답하여, 다음 레벨 코드 플래그를 바이패스 디코딩하고; 카운트 값이 임계값보다 크다는 판정에 응답하여, 다음 레벨 코드 플래그를 컨텍스트 디코딩하고; 디코딩된 레벨 코드 플래그를 사용하여 TQC의 블록 또는 잔차 샘플을 복원하고; 복원된 블록을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원하도록 구성된 전자 디바이스를 포함할 수 있다.
상기 전자 디바이스는, 다음 레벨 코드 플래그의 컨텍스트 코딩에 응답하여 카운트를 증가시키도록 구성될 수 있다. 전자 디바이스는 블록의 모든 레벨 코드 플래그가 디코딩될 때까지, 검사, 판정, 디코딩, 및 증가시키는 것을 반복하도록 구성될 수 있다. 전자 디바이스는 제1 레벨 코드 플래그의 컨텍스트 코딩에 응답하여 카운트를 증가시키도록 구성될 수 있다.
상기 전자 디바이스는 블록의 최종 유효 계수의 위치를 결정하고; 적어도 부분적으로 블록의 속성에 기초하여 컨텍스트 디코딩할 심볼의 최대 개수를 결정하도록 구성될 수 있다. 전자 디바이스는 최대 개수의 결정 결과에 따라 임계값을 설정하도록 구성될 수 있다.
상기 전자 디바이스는 블록의 최종 유효 계수의 위치를 결정하고; 적어도 부분적으로 결정된 위치에 기초하여 컨텍스트 디코딩할 심볼의 최대 개수를 결정하도록 구성될 수 있다. 전자 디바이스는 적어도 부분적으로 결정된 위치에 기초하여 적어도 부분적으로 서브블록 위치에 기초하여 컨텍스트 디코딩할 심볼의 최대 개수를 결정하도록 구성될 수 있다.
상기 전자 디바이스는 제1 수량의, 블록과 연관된 신택스 요소의 레벨 코드 플래그를 컨텍스트 디코딩하고 - 제1 수량은 제1 미리 정해진 개수임 -; 신택스 요수의 유의성 맵에서 실제 코딩된 빈의 개수를 식별하고; 제1 미리 정해진 개수와 식별된 개수의 차를 결정하고; 제2 수량의, 신택스 요소의 레벨 코드 플래그를 컨텍스트 디코딩 - 제2 수량은 결정된 차를 포함할 수 있음 -하도록 구성될 수 있다. 예에서, 제1 미리 정해진 개수는 9개를 포함할 수 있다. 예에서, 제2 미리 정해진 개수는 16개를 포함할 수 있다. 예에서, 제1 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 8개의 "greater than 1" 플래그와 1개의 "greater than 2" 플래그를 포함한다. 예에서, 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 "greater than 1" 플래그만을 포함한다. 예에서, 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 오직 "greater than 2" 플래그만을 포함한다.
예에서, 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 제3 미리 정해진 개수의 "greater than 1" 플래그와 동적인 개수(dynamic number)의 greater than 1" 플래그를 포함하고, 동적인 개수는 제2 수량과 미리 정해진 제3 개수의 차를 포함한다.
일례에서, 시스템이 제공된다. 상기 시스템은 인코더의 제1 전자 디바이스를 포함할 수 있고, 제1 전자 디바이스는, 산술 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득하고; 그 데이터의 블록이 무손실 인코딩될 것인지를 판정하고; 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이 아니라는 판정에 응답하여, 제1 Absolute-3 코딩 기술을 사용하여 데이터의 블록을 인코딩하고; 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 제2 Absolute-3 코딩 기술을 사용하여 데이터의 블록을 인코딩하고 - 제2 Absolute-3 코딩 기술은 제1 Absolute-3 코딩 기술과 다름 -; 및 인코딩한 것을 메모리 디바이스에 저장하도록 하도록 구성된다.
상기 시스템은 디코더의 제2 전자 디바이스를 더 포함할 수 있으며, 제2 전자 디바이스는, 수신된 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것인지를 판정하고; 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것이라는 판정에 응답하여, 제1 Absolute-3 코딩 기술을 사용하여 TQC의 블록을 취득하고; 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것이라는 판정에 응답하여, 제2 Absolute-3 코딩 기술을 사용하여 잔차 샘플을 취득 하도록 구성된다.
제1 전자 디바이스는, 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이 아니라는 판정에 응답하여, 서브블록의 초기 값을 위해 라이스 파라미터를 영으로 초기화하고; 데이터 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 서브블록의 초기 값을 위해 이전 서브블록의 최종 값으로부터 라이스 파라미터를 사용하도록 구성될 수 있다.
제1 전자 디바이스는, 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이 아니라는 판정에 응답하여, 서브블록의 초기 값을 위해 라이스 파라미터를 영으로 초기화하고; 데이터 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 서브블록의 초기 값을 위해 라이스 파라미터를 영으로 초기화하는 것을 건너뛰도록 구성될 수 있다.
제1 전자 디바이스는, 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 블록 유형, 블록 크기, 및 색 정보(루마/크로마)를 포함하는 그룹에서 선택된 하나 이상에 기초하여 라이스 파라미터를 미리 정해진 값으로 초기화하도록 구성될 수 있다.
제1 전자 디바이스는, 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 현재의 블록 유형이 2개 또는 5개일 때, 라이스 파라미터를 1로 초기화하도록 구성될 수 있다.
제1 전자 디바이스는, 데이터의 블록이 무손실 인코딩을 사용하여 인코딩될 것이 아니라는 판정에 응답하여, 서브블록의 초기 값을 위해 라이스 파라미터를 영으로 초기화하고; 데이터 블록이 무손실 인코딩을 사용하여 인코딩될 것이라는 판정에 응답하여, 서브블록의 초기 값을 위해 라이스 파라미터를 영으로 초기화하는 것을 건너뛰도록 구성될 수 있다.
제1 전자 디바이스는, 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것이 아니라는 판정에 응답하여, 제1 라이스 파라미터 갱신 테이블을 채용하고; 이진 심볼이 무손실 디코딩을 사용하여 디코딩될 것이라는 판정에 응답하여, 제1 라이스 파라미터 갱신 테이블과는 다른 제2 라이스 파라미터 갱신 테이블을 채용하도록 구성될 수 있다.
제2 라이스 파라미터 갱신 테이블은 제1 라이스 파라미터 갱신 테이블을 절단 버전(truncated version)을 포함할 수 있다. 일 예에서, 제2 라이스 파라미터 갱신 테이블만, 현재의 라이스 파라미터가 2, 3, 또는 4로 갱신되거나 초기화된 후 갱신을 방지하도록 구성된다.
일례에서, 시스템이 제공된다. 상기 시스템은 인코더의 제1 전자 디바이스를 포함하고, 제1 전자 디바이스는, 제1 전자 디바이스는, 산술 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득하고; 제1 수량의, 신택스 요소의 레벨 코드 플래그를 컨텍스트 코딩하고 - 제1 수량은 미리 정해진 제1 개수임 -; 신택스 요소의 유의성 맵에서 실제 코딩된 빈의 개수를 식별하고; 미리 정해진 제2 개수와 식별된 개수의 차를 결정하고; 제2 수량의, 신택스 요소의 레벨 코드 플래그를 컨텍스트 코딩하고 - 제2 수량은 상기 결정된 차를 포함한- ; 컨텍스트 코딩에 의해 생성된 비트 스트림이 메모리 디바이스에 저장되게 하도록 구성된다.
산술 기반 인코딩은 CABAC 인코더를 포함할 수 있다. 미리 정해진 제1 개수는 9개를 포함할 수 있다. 미리 정해진 제2 개수는 16개를 포함할 수 있다. 제1 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 8개의 "greater than 1" 플래그와 1개의 "greater than 2" 플래그를 포함할 수 있다. 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 "greater than 1" 플래그만을 포함한다. 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 "greater than 2" 플래그만을 포함할 수 있다. 제2 수량의 컨텍스트 코딩된 레벨 코드 플래그에 대응하는 레벨 코드 플래그는 미리 정해진 제3 개수의 "greater than 1" 플래그와 동적인 개수의 greater than 1" 플래그를 포함하고, 동적인 개수는 제2 수량과 미리 정해진 제3 개수의 차를 포함한다.
(HEVC의 CABAC를 위한 변환 생략된 블록(transform skipped block)에 대한 고 처리율 잔차 코딩)
도 41은 인코더 및 디코더의 예를 나타낸 블록도이다.
시스템(4100)은 디코더(4112)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(4111)를 포함한다. 인코더(4111)와 디코더(4112)는 네트워크를 통해 통신할 수 있다.
인코더(4111)는 고 처리율 잔차 코딩 모드를 사용하여 인코딩하도록 구성된 전자 디바이스(4121)를 포함한다. 전자 디바이스(4121)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 42에 도시된 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
디코더(4112)는 고 처리율 잔차 코딩 모드를 사용하여 디코딩하도록 구성된 전자 디바이스(4122)를 포함한다. 전자 디바이스(4122)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 43에 도시된 작업을 수행하는 프로세서에 의해 실행 가능한 명령어들을 저장한다.
도 42는 고 처리율 잔차 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 4211에서, 전자 디바이스(4121)가 산술 기반 인코더, 예컨대 CABAC 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득한다. 블록 4212에서, 전자 디바이스(4121)가, 블록이 고 처리율 잔차 코딩을 사용하여 인코딩될 것인지를 판정한다. 블록이 고 처리율 잔차 코딩을 사용하여 인코딩될 것이 아니라면, 블록 4213에서, 전자 디바이스(4121)가 제1 코딩 기술을 사용하여 데이터의 블록을 코딩한다. 예에서, 제1 코딩 기술은 Absolute-3 코딩 기술, 예컨대, 도 30의 블록 3013을 참조하여 설명한 코딩 기술을 포함할 수 있다.
블록이 고 처리율 잔차 코딩을 사용하여 인코딩될 것이면, 블록 4214에서, 전자 디바이스(4121)가 제1 코딩 기술과는 다른 제2 코딩 기술을 사용하여 데이터의 블록을 코딩한다. 블록 4215에서, 전자 디바이스(4121)가 생성된 비트 스트림을 네트워크를 통해 송신 및/또는 생성된 비트 스트림을 메모리 디바이스에 저장한다.
예에서, 제2 코딩 기술은 제1 코딩 기술의 코딩 단계의 서브세트만을 포함한다. 예에서, 제1 코딩 기술은 Greater_than_1 코딩 단계와 Greater_than_2 코딩 단계를 포함하고, 제2 코딩 기술은 Greater_than_1 코딩 단계와 Greater_than_2 코딩 단계 중 적어도 하나를 포함하지 않는다.
예에서, 제1 코딩 기술은 유의성 맵 코딩(significance map coding) 후에 Absolute-3 코딩을 포함하지만, 제2 코딩 기술은 유의성 맵 코딩 후에 Absolute-3 코딩을 포함하지 않는다. 제2 코딩 기술의 예에서, 유의성 맵 코딩 후, Absolute-1 또는 Absolute-2 값이 코딩된다. 예에서, Greater_than_1 코딩 단계와 Greater_than_2 코딩 단계 둘 다를 건너뛰면, Absolute-1 값이 코딩되는 반면, Greater_than_2 코딩 단계를 건너뛰고 Greater_than_1 코딩 단계를 건너뛰지 않으면 Absolute-2 값이 코딩된다. 부호 코딩(sign coding)은 일례에서 Absolute-1 또는 Absolute-2 코딩 전에 수행될 수 있다. Absolute-1 또는 Absolute-2 값 코딩은 여기서 설명한 골롬 라이스(Golomb-Rice, G-R) 코드를 사용한다. 예를 들어, Absolute-1 또는 Absolute-2 값 코딩은 도 30을 참조하여 설명한 G-R 코딩 기술을 사용할 수 있다. 예에서, Absolute-1 또는 Absolute-2 값 코딩은 제1 코딩 기술에 사용된 동일한 G-R 코딩을 사용한다.
예에서, Absolute-1 또는 Absolute-2 값 코딩에 사용된 G-R 코딩 기술은 블록 유형, 블록 크기, 또는 색 정보(루마/크로마), 등, 또는 이들의 임의 조합에 기초하여 미리 정의된 라이스 파라미터로 초기화하는 것을 포함할 수 있다. 예를 들어, 미리 정의된 라이스 파라미터는 루마 블록에 대해 두 개일 수 있고, 크로마 블록에 대해 하나 일 수 있다. 예에서, 동일한 G-R 코딩이 Absolute-1 또는 Absolute-2 코딩과 Absolute-3 코딩에 사용된다.
예에서, 전자 디바이스(4121)는 디코딩 측의 초기화 정보를 명시적으로 시그널링할 수 있다. 초기화 정보는 비트 스트림 또는 현재의 블록, 즉 블록 단위로 라이스 파라미터 초기 값을 포함할 수 있다. 초기화 정보가 블록에 대한 하나 이상의 라이스 파라미터 초기 값을 포함하면, 초기화 정보는 또한 제1 값 또는 제2 값을 사용하기 위한 기준(criterion)을 지시할 수 있고, 즉 값은 2와 1일 수 있고, 조건은 루마 블록에 대해 2 및/또는 크로마 블록에 대해 1일 수 있다. 예에서, 추가적인 정보가 추가적인 신택스 요소를 포함할 수 있다.
예에서, 판정 블록 4212는 데이터의 블록의 Transform_skip_flag 또는 Trans_quant_Bypass_flag가 세트(set)되어 있는지를 판정하는 것을 포함할 수 있다. 예에서, Transform_skip_flag 또는 Trans_quant_Bypass_flag가 1이면, 고 처리율 잔차 코딩이 그 데이터 블록에 사용된다(반대로, Transform_skip_flag와 Trans_quant_Bypass_flag 어느 것도 세트되어 있지 않으면, 고 처리율 장차 코딩은 그 데이터의 블록에 사용되지 않는다).
배경으로서, Transform_skip_flag는 대응하는 블록이 변환되는지 여부를 지시한다. 공지의 스킴에서, Transform_skip_flag는 대응하는 블록이 변환되는 경우 영과 같다. Transform_skip_flag이 1과 같은 경우, 대응하는 블록은 변환되지 않는다, 즉 잔차 데이터는 잔차 샘플을 나타낸다.
배경으로서, Trans_quant_Bypass_flag는 대응하는 블록이 변환 및 양자화되는지의 여부를 지시한다. Trans_quant_Bypass_flag가 1이면, 대응하는 블록은 변환 및 양자화되지 않는다, 즉 잔차 데이터는 잔차 샘플을 나타낸다. 또한, 변환은 레귤러 코딩 모드에서 사용되만 무손실 코딩 모드에서 사용되지 않기 때문에, 인코딩이 무손실 코딩 모드에 의한 것인 경우, Trans_quant_Bypass_flag는 1이다.
이해해야 할 것은, 예에서, 하나 이상의 레벨 코딩 단계, 예컨대 Greater_than_1 및/또는 Greater_than_2를 인코딩될 데이터의 블록에 대해 선택적으로 건너뛸 수 있다는 것이다. 예에서, 데이터 블록의 Transform_skip_flag 검사는 하나 이상의 레벨 코딩 단계를 건너뛰는지의 여부를 판정하기 위해 사용된다. 예에서, 데이터의 블록이 무손실 코딩 모드를 사용하여 인코딩될 것이면 하나 이상의 레벨 코딩 단계를 건너뛸 수 있다. 이해해야 할 것은, 하나 이상의 레벨 코딩 단계를 건너뛸 경우, 처리율 이득이 실현될 수 있다는 것이다.
예에서, 다른 제2 코딩 기술이 사용되면, 전자 디바이스(4121)는 대응하는 지시자, 예컨대, 다른 제2 코딩 기술과 연관된 플래그를 값 1로 설정할 수 있다(이것은 물론 설계 선호도에 따라 상기 플래그의 디폴트 값을 변경하거나 상기 플래그를 디폴트 값 그대로 두는 것을 포함할 수 있다). 그러나, 일부 예에서, 디코딩 측은 블록에 대한 Transform_skip_flag 및/또는 Trans_quant_Bypass_flag를 검사하여, Transform_skip_flag와 Trans_quant_Bypass_flag 중 어느 하나가 1이면, 인코딩 측이 그 블록에 대해 제2 코딩 기술을 사용하였다고 추론할 수 있기 때문에, 그러한 명시적인 시그널링은 필요하지 않다.
도 43은 디코딩 측의 고 처리율 잔차 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 4310에서, 전자 디바이스(4122)가 비트 스트림을 취득한다. 블록 4311에서, 취득된 비트 스트림으로부터 이진 심볼을 복원한다.
판정 블록 4312에서, 전자 디바이스(4122)가 이진 심볼이 고 처리율 잔차 코딩을 사용하여 인코딩될 것인지를 판정한다. 예에서, 판정 블록 4312는 복원된 이진 심볼이 변환된 계수를 나타내는지를 판정하는 것, 예컨대, 복원된 이진 심볼과 연관된 Transform_skip_flag가 세트되어 있는지를 판정하는 것, rans_quant_bypass_flag가 세트되어 있는지를 판정하는 것, 및/또는 비트 스트림이 무손실 코딩 모드를 사용하여 코딩되었는지를 판정하는 것을 포함한다. 판정 블록 4312에서 조건이 충족되면, 블록 4313에서, 전자 디바이스(4122)가 제1 코딩 기술을 사용하여 TQC의 블록을 취득한다.
판정 블록 4312에서 조건이 충족되지 않으면, 블록 4314에서, 전자 디바이스(4122)가 제2 코딩 기술을 사용하여 잔차 샘플을 취득한다. 전자 디바이스(4122)는 블록 4315에서, 취득된, TQC의 블록 또는 취득된 잔차 샘플을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원한다.
예에서, 제1 코딩 기술과 제2 코딩 기술 중 제1 코딩 기술만이 Absolute-3 코딩 기술을 포함한다. 예에서, 제2 코딩 기술은 Absolute-1 또는 Absolute-2 코딩 기술을 포함한다.
예에서, 제1 코딩 기술은 Greater_than_1 flag 및 Greater_than_2 flag의 코딩, 즉 GR1 코딩 단계와 GR2 코딩 단계를 포함하고, 제2 코딩 기술은 어떤 Greater_than_1 flag 및/또는 Greater_than_2 flag 어느 것도 코딩하지 않는다, 즉 GR1 코딩 단계를 포함하지 않고/않거나 GR2 코딩 단계를 포함하지 않는다.
예에서, 제1 코딩 기술은 Absolute-3 값을 코딩하기 위해 골롬-라이스(G-R) 코딩 방법을 포함하고, 제2 코딩 기술은 Absolute-1 또는 Absolute-2 값을 코딩하기 위해 G-R 코딩 방법을 포함한다. 예에서, G-R 코딩 방법은 라이스 파라미터를, 블록 유형, 블록 크기, 및 색 정보(루마/크로마)를 포함하는 그룹에서 선택되는 하나 이상에 기초하여 미리 정해진 값으로 초기화하는 것을 포함한다. 예에서, 미리 정의된 라이스 파라미터는 텍스처(루마/크로마)에 의존할 수 있다. 예를 들어, 미리 정해진 라이스 파라미터 값은 루바 블록에 대해 2이고 크로마 블록에 대해 1이다. 예에서, 동일한 G-R 코딩이 Absolute-1 또는 Absolute-2 코딩 및 Absolute-3 코딩에 사용된다.
예에서, 시스템은 비트 스트림을 취득하고; 취득된 비트 스트림으로부터 이진 심볼을 복원하고; 이진 심볼이 고 처리율 잔차 코딩 모드를 사용하여 디코딩될 것인지를 판정하고; 이진 심볼이 고 처리율 잔차 코딩 모드를 사용하여 디코딩될 것이 아니라는 판정에 응답하여, 제1 코딩 기술을 사용하여 변환 및 양자화된 계수(TQC)를 취득하고; 이진 심볼이 고 처리율 잔차 코딩 모드를 사용하여 디코딩될 것이라는 판정에 응답하여, 제2 다른 코딩 기술을 사용하여 잔차 샘플을 취득하고; 취득된 TQC의 블록 또는 취득된 잔차 샘플, 또는 취득된 TQC의 블록 또는 취득된 잔차 샘플을 대표하는 비디오 데이터를 메모리 디바이스에 저장하도록 구성된, 디코더의 제1 전자 디바이스를 포함한다.
예에서, 제1 코딩 기술과 제2 코딩 기술 중 제1 코딩 기술만 이 Absolute-3 코딩 기술을 포함한다. 예에서, 제2 코딩 기술은 Absolute-1 또는 Absolute-2 코딩 기술을 포함한다.
예에서, 제1 전자 디바이스는 복원된 이진 심볼이 변환된 계수를 나타내는지를 판정하고; 복원된 이진 심볼이 변환된 계수를 나타내지 않는다는 판정에 응답하여 제2 다른 코딩 기술을 사용하도록 구성된다. 예에서, 제1 전자 디바이스는 복원된 이진 심볼과 연관된 변환 스킵 플래그(transform skip flag) 또는 변환 양자화 바이패스 플래그(transform quantization bypass flag)가 세트되어 있는지를 판정하고; 변환 건너뛰기 플래그 또는 변환 양자화 바이패스 플래그가 세트되어 있다는 판정에 응답하여, 제2 다른 코딩 기술을 사용하도록 구성된다. 예에서, 제1 전자 디바이스는 복원된 이진 심볼과 연관된 변환 스킵 플래그 또는 변환 양자화 바이패스 플래그가 세트되어 있는지를 판정하고; 변환 스킵 플래그 또는 변환 양자화 바이패스 플래그가 세트되어 있다는 판정에 응답하여, 제2 다른 코딩 기술을 사용하도록 구성된다. 예에서, 비트 스트림이 무손실 코딩 모드를 사용하여 코딩되었는지를 판정하고; 비트 스트림이 무손실 코딩 모드를 사용하여 코딩되었다는 판정에 응답하여 제2 상이한 코딩 기술을 사용한다.
예에서, 제1 코딩 기술은 Greater_than_1 플래그 및 Greater_than_2 플래그를 코딩하는 것을 포함하고, 제2 코딩 기술은 Greater_than_1 플래그 및/또는 Greater_than_2 플래그 어느 것도 코딩하지 않는다.
예에서, 비트 스트림은 컨텍스트 적응적 이진 산술 코딩(CABAC) 기반 인코더로부터 유래한다.
예에서, 제1 코딩 기술은 Absolute-3 값을 코딩하기 위해 골롬-라이스(G-R) 코딩 방법을 포함하고, 제2 코딩 기술은 Absolute-1 또는 Absolute-2 값을 코딩하기 위해 G-R 코딩 방법을 포함한다.
예에서, G-R 코딩 방법은 라이스 파라미터를, 블록 유형, 블록 크기, 및 색 정보(루마/크로마)를 포함하는 그룹에서 선택되는 하나 이상에 기초하여 미리 정해진 값으로 초기화하는 것을 포함한다. 예에서, 전자 디바이스(4121)는 비트 스트림 또는 비트 스트림의 초기화 정보에 기초한 블록에 대해 미리 정해진 값을 결정할 수 있다. 초기화 정보는 비트 스트림 또는 현재 블록에 대해, 즉 블록 단위로, 라이스 파라미터의 초기 값을 포함할 수 있다. 초기화 정보가 블록에 대해 하나 이상의 라이스 파라미터를 포함하면, 초기화 정보는 또한 제1 값 또는 제2 값을 사용하여 기준을 지시할 수 있다, 즉 그 값은 2와 1일 수 있으며, 조건은 루마 블록에 대해 2 및/또는 크로마 블록에 대해 1일 수 있다. 예에서,추가적인 정보가 추가적인 신택스 요소를 포함할 수 있다.
예에서, 전자 디바이스(4121)는 현재 블록의 영이 아닌 계수의 수의 결정에 응답하여 미리 정해진 값을 결정할 수 있다. 예를 들어, 전자 디바이스(4121)는, 영이 아닌 계수의 수가 임계값보다 크면, 미리 정해진 제1 값을 사용하고, 영이 아닌 계수의 수가 임계값 미만이면, 미리 정해진 제1 값과는 다른 미리 정해진 제2 값을 사용할 수 있다.
도 44는 디코딩 측의 고 처리율 잔차 코딩 방법의 일 구성을 나타낸 흐름도이다.
블록 4410에서, 전자 디바이스(4122)가 비트 스트림을 취득한다. 블록 4411에서, 전자 디바이스(4122)가 취득된 비트 스트림으로부터 이진 심볼을 복원한다.
판정 블록 4412에서, 전자 디바이스(4122)가, 이진 심볼이 고 처리율 잔차 코딩을 사용하여 디코딩될 것인지를 판정한다. 예에서, 판정 블록 4412는 복원된 이진 심볼의 변환 계수를 나타내는지를 판정하는 것, 예컨대, 복원된 이진 심볼과 연관된 Transform_skip_flag가 세트되어 있는지를 판정하는 것을 포함한다.
판정 블록 4412에서 조건이 충족되지 않으면, 블록 4413에서, 전자 디바이스(4122)가 라이스 파라미터 갱신 함수를 적용하여 TQC의 블록을 취득한다. 예에서, 블록 4413에서, 전자 디바이스(4122)는 초기 라이스 파라미터 값을 사용하여 초기 레벨 값을 디코딩하고, 다음 레벨 값, 등을 디코딩하기 전에 초기 라이스 파라미터 값을 증가시킬 것인지를 판정하기 위해, 도 38에서 설명한 라이스 파라미터 갱신 함수와 같은, 라이스 파라미터 갱신 함수를 적용할 수 있다.
판정 블록 4412에서 조건이 충족되면, 전자 디바이스(4122)는 레벨 값들을 상이하게 디코딩한다. 예를 들어, 전자 디바이스(4122)는 취득된 비트 스트림으로부터 라이스 파라미터를 디코딩할 수 있다. 또는 전자 디바이스(4122)는 디코딩된 라이스 파라미터 값을 사용하여 블록에 대해 모든 레벨ㄹ 값을 디코딩할 수 있다.
예에서, 블록 4414에서, 전자 디바이스(4122)가, 비트 스트림이 라이스 파라미터 갱신 함수의 최대값보다 큰 라이스 파라미터 값을 시그널링하는지를 판정한다. 비트 스트림이 상기 최대값보다 큰 라이스 파라미터 값을 시그널링하면, 블록 4417에서, 전자 디바이스(4122)가 라이스 파라미터 갱신 함수의 최대값보다 큰 라이스 파라미터 값을 사용한다. 예를 들어, 블록 4413에 적용되는 라이스 파라미터 갱신 함수는 영에서 최대 4까지의 범위일 수 있다(도 28에 의해 설명된 라이스 파라미터 갱신 함수가 사용되는 경우). 그러나, 비트 스트림은 라이스 파라미터 갱신 함수의 최대값, 예컨대, 5보다 큰 라이스 파라미터 값을 시그널링할 수 있다.
비트 스트림이 최대값보다 큰 라이스 파라미터 값을 시그널링하지 않으면, 블록 4416에서 전자 디바이스(4122)는, 블록 4413에 적용된 라이스 파리미터 갱신 함수의 최대값 이하인 라이스 파라미터 값, 예컨대 0-4를 사용할 수 있다. 블록 4416에서 사용되는 라이스 파라미터 값은 취득된 비트 스트림에 의해 시그널링될 수 있다. 전자 디바이스(4122)는 디코딩된 라이스 파라미터를 사용하여 블록에 대해 모든 레벨 값을 디코딩할 수 있다.
블록 4418에서, 전자 디바이스(4122)가 취득된, TQC의 블록 또는 취득된 잔차 샘플을 메모리 디바이스에 저장 및/또는 비디오 데이터를 복원할 수 있다.
블록 4414가 전자 디바이스(4122)에 의해 수행될 것인지를 제어하기 위해 플래그 또는 다른 지시자가 사용될 수 있다. 인코더 측의 전자 디바이스(4121)는, 블록 4414가 전자 디바이스(4121)에 의해 수행될 수 있도록, 플래그 또는 다른 지시자의 값을 1로 세트할 수 있다(이것은 물론 설계 선호도에 따라 상기 플래그의 디폴트 값을 변경하거나 상기 플래그를 디폴트 값 그대로 두는 것을 포함할 수 있다). 플래그는 비트 스트림에서 임의의 레벨, 시퀀스 레벨, 슬라이스 레벨, 코딩 유닛(Coding Unit ,CU) 레벨, 예측 유닛(Prediction Unit, PU) 레벨, 또는 변환 유닛(Transform Unit, TU) 레벨, 등에 위치할 수 있다. 예에서, 전자 디바이스(4121)는 콘텐츠의 비트 심도(bit depth)가 임계값보다 크고, 플래그가 1로 세트되어 있는 경우에만 블록 4414를 수행할 수 있다.
판정 블록 4414가 수행되지 않을 경우(예컨대, 블록이 변환 스킵 블록이 아니고, 플래그가 영으로 세트되어 있거나, 비트 심도가 미리 설정된 임계값 이하임), 라이스 파라미터 값은 비트 스트림에서 시그널링되지 않을 수 있거나, 라이스 파라미터 값은 라이스 파라미터 갱신 함수의 범위내 일 수 있다. 변환 스킵 블록이 수신되지만 플래그가 영이거나 비트 심도가 미리 설정된 임계값 이하이면, 전자 디바이스(4122)는 라이스 파라미터 갱신 함수를 적용하여 잔차 샘플을 취득할 수 있다. 예에서, 상기 라이스 파라미터 갱신 함수는 도 28에서 설명한 라이스 파라미터 갱신 함수와 다를 수 있으며, 예를 들어, 최대 라이스 파라미터 값은 4보다 클 수 있다, 예컨대, 6 이상일 수 있다.
도 45a는 라이스 파라미터 갱신 함수를 적용하는 일 구성을 나타낸 흐름도이다.
블록 4510에서, 전자 디바이스(4122)가 라이스 파라미터를 초기화한다. 블록 4511에서, 전자 디바이스(4122)가 초기화된 라이스 파라미터를 사용하여 레벨 값을 디코딩한다.
판정 블록 4512에서, 전자 디바이스(4122)가 제1 라이스 파라미터 갱신 함수를 적용할 것인지를 판정한다. 예에서, 상기 제1 라이스 파라미터 갱신 함수는 도 28에서 설명한 라이스 파라미터 갱신 함수와 동일하다. 판정 블록 4512에서 조건이 충족되면, 블록 4514에서, 전자 디바이스(4122)가 제1 라이스 파라미터 갱신 함수를 적용한다.
예에서, 판정 블록 4512는 복원된 이진 심볼이 변환된 계수를 나타내는지를 판정하는 것, 예컨대, 복원된 이진 심볼과 연관된 Transform_skip_flag이 세트되어 있는지를 결정하는 것을 포함한다. 이러한 예에서, 복원된 이진 심볼과 연관된 Transform_skip_flag이 세트되어 있다는, 예컨대 값이 1이라는 판정에 응답하여 제1 라이스 파라미터 갱신 함수가 적용된다.
제1 라이스 파라미터 갱신 함수가 전자 디바이스(4122)에 의해 적용될 것인지를 제어하는 데, 플래그 또는 다른 지시자가 사용될 수 있다. 인코더 측의 전자 디바이스(4121)는 플래그 또는 다른 지시자를 값 1로 설정하여(이것은 물론 설계 선호도에 따라 상기 플래그의 디폴트 값을 변경하거나 상기 플래그를 디폴트 값 그대로 두는 것을 포함할 수 있음), 전자 디바이스(4122)가 제2 다른 라이스 파라미터 갱신 함수를 사용하도록 할 수 있다. 플래그는 비트 스트림에서 임의의 레벨, 시퀀스 레벨, 슬라이스 레벨, 코딩 유닛(CU) 레벨, 예측 유닛(PU) 레벨, 또는 변환 유닛(TU) 레벨, 등에 위치할 수 있다. 예에서, 전자 디바이스(4121)는, 콘텐츠의 비트 심도가 임계값보다 크고, 플래그가 1로 설정되어 있는 경우에만 제2 라이스 파라미터 갱신 함수를 적용하도록 결정할 수 있다.
판정 블록 4512에서 조건이 충족되면, 블록 4513에서, 전자 디바이스(4122)가 제1 라이스 파라미터 갱신 함수와는 다른 제2 라이스 파라미터 갱신 함수를 적용한다. 제2 라이스 파라미터 갱신 함수는 제1 라이스 파라미터 갱신 함수와는 다른 최대값, 예컨대 더 큰 최대값을 가질 수 있다. 예에서, 제2 라이스 파라미터 갱신 함수는 6 이상의 최대값을 가진다.
예를 들어, 도 45b는 최대값이 8인 다른 제2 라이스 파라미터 갱신 함수에 대한 테이블(4800)을 보여준다. 테이블(4900)에서, 심볼은 Absolute-1, Absolute-2, 또는 Absolute-3에 대응할 수 있다. 최대 라이스 파라미터 값이 N인 다른 테이블에서, 임계값은 4, 7, 13, 25, 49, 97, 193, 385, ...(3*2N+1)일 수 있다.
도 44 및 도 45와 관련하여 설명한 구성과는 다른 전자 디바이스(4121) 및 전자 디바이스(4122)의 구성의 다른 예에서, HEVC가 최대 라이스 파라미터 값이 4인 라이스 파라미터 갱신 함수를 적용하는 것과 유사한 방식으로, 전자 디바이스(4122)는 최대 라이스 파라미터 값이 6 이상인 라이스 파라미터 갱신 함수를 적용한다. 전자 디바이스(4121) 및 전자 디바이스(4122)의 구성의 또 다른 예에서, 전자 디바이스(4121)는, 전자 디바이스(4122)가 최대 라이스 파라미터 값이 6 이상인 라이스 파라미터 갱신 함수 또는 최대 라이스 파라미터 값이 4인 라이스 파라미터 갱신 함수를 적용하는지를 제어하기 위해 플래그 또는 다른 지시자를 설정한다. 플래그 또는 다른 지시자가 1로 설정되면, 전자 디바이스(4122)는 최대 라이스 파라미터 값이 6 이상인 라이스 파라미터 갱신 함수를 적용한다. 플래그 또는 다른 지시자가 0으로 설정되면, 전자 디바이스(4122)는 최대 라이스 파라미터 값이 4인 라이스 파라미터 갱신 함수를 적용한다. 전자 디바이스(4121)와 전자 디바이스(4122)의 구성의 또 다른 예에서, 콘텐츠의 비트 심도가 임계값보다 크고 플래그가 1로 설정되어 있는 경우에만, 전자 디바이스(4122)는 최대 라이스 파라미터 값이 6 이상인 라이스 파라미터 갱신 함수를 적용한다.
(고 비트 심도 코딩을 위한 수정된 변환 스킵 모드)
배경으로서, HEVC에 따른 디코딩에서, 엔트로피 디코딩 뒤에는 역양자화가 이어지고, 이 뒤에는 역 변환 스킵이 이어질 수 있다. 공지의 엔트로피 디코딩 또는 여기서 설명한 엔트로피 디코딩 중 어느 것을 사용하는 시스템에서, 역변환은 변환 스킵 블록에 대해 수행되지 않는다. 이 대신에, 스케일링(scaling)이 역약장화의 결과에 대해 적용될 수 있다. 스케일링 작업(scaling operation)은 유도된 변수 TS_Shift에 기초하여 결정된다. HEVC에서 역변환 스킵 작업은 아래의 의사 코드(pseudo-code)에 대응한다:
Figure pct00005
공지의 스케일링 작업은 TS_Shift를 MAX_TDR-Bit_Depth-Log2TrSize로 결정하는 것을 포함한다. Max_TDR는 변환의 최대 동적 범위이고, 이는 공지의 시스템에서 15일 수 있다. Bit_Depth는 샘플 값의 비트 심도이고, 이는 공지의 시스템에서 0 내지 16의 범위일 수 있다. Log2TrSize는 변환 크기의 Log2이고, 이는 변환 스킵이 4x4 블록에 적용되는 공지의 시스템에서 2일 수 있다(TrSize는 블록의 크기를 의미한다). 고 비트 심도 코딩(higher bit-depth coding)의 경우, TS_Shift=MAX_TDR-Bit_Depth-Log2TrSize인 스케일링 연산을 적용한 뒤에 정밀도 손실이 관찰되었다.
이 기술분야에 공지된, 관찰되는 정밀도 손실 없이 고 비트 심도 코딩을 지원하기 위해, TS_Shift는 MAX[(MAX_TDR-Bit_Depth-Log2TrSize), 0]로 결정될 수 있다. MAX 연산은 괄호 안의 값, MAX_TDR-Bit_Depth-Log2TrSize와 0 중 최대값을 돌려준다. 따라서, TS_Shift는 음이 아닌 정수, 예컨대, 영보다 작지 않은 정수이다.
다른 예에서, 이 기술분야에 공지된, 관찰되는 정밀도 손실 없이 고 비트 심도 코딩을 지원하기 위해, TS_Shift는 MAX_TDR-Bit_Depth-Log2TrSize+A로 결정될 수 있다. 인코더는 변수 A를 선택하여 TS_Shift가 영보다 작을 수 있는지의 여부를 제어할 수 있다. 디코더는 MAX_TDR-Bit_Depth-Log2TrSize+A를 사용하여 TS_Shift를 결정하기 위해 비트 스트림으로부터 값 A를 디코딩할 수 있다.
예에서, 입력 비디오 데이터의 비트 심도가 14 비트 이상이면, 인코더는 A를 1로 설정할 수 있고, 다른 비트 심도에 대해서는 A는 0으로 설정된다. 또한, 입력 비디오 데이터의 비트 심도가 14 비트 이상이지만 16비트 미만이면, 인코더는 A를 3으로 설정할 수 있고, 다른 비트 심도에 대해서는 A는 0으로 설정된다.
도 46은 인코더 및 디코더의 예를 나타낸 블록도이다.
시스템(4600)은 디코더(4612)에 의해 디코딩될 인코딩된 블록을 생성하기 위한 인코더(4611)를 포함한다. 인코더(4611)와 디코더(4612)는 네트워크를 통해 통신할 수 있다.
인코더(4611)는 수정된 변환 스킵 모드를 사용하여 인코딩하도록 구성된 전자 디바이스(4621)를 포함한다. 전자 디바이스(4621)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 47에 도시된 작업을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장한다.
디코더(4612)는 수정된 변환 스킵 모드를 사용하여 디코딩하도록 구성된 전자 디바이스(4622)를 포함한다. 전자 디바이스(4622)는 프로세서 및 프로세서와 전자 통신하는 메모리를 포함할 수 있고, 메모리는 도 48에 도시된 작업을 수행하기 위해 실행 가능한 명령어들을 저장한다.
도 47은 수정된 변환 스킵 모드를 사용하는 방법의 일 구성을 나타낸 흐름도이다.
블록 4701에서, 전자 디바이스(4621)가 산술 기반 인코더, 예컨대 CABAC 기반 인코더를 사용하여 인코딩될 데이터의 블록을 취득한다. 판정 블록 4702에서, 전자 디바이스(4621)가 블록의 인코딩이 수정된 변환 스킵 모드를 사용하여 디코딩될 것인지를 판정한다.
블록의 인코딩이 수정된 변환 스킵 모드를 사용하여 디코딩될 것이면, 블록 4703에서, 전자 디바이스(4621)가 수정된 변환 스킵 모드를 채용하도록 디코더(4612)에 시그널링하여 TS_Shift를 결정한다. 예에서, 신호는 생성된 비트 스트림 내의 플래그일 수 있다. 플래그는 비트 스트림에서 임의의 레벨, 시퀀스 레벨, 슬라이스 레벨, CU 레벨, PU 레벨, 또는 TU 레벨, 등에 위치할 수 있다. TS_Shift는 수정된 변환 스킵 모드에서 MAX_TDR - Bit_Depth - Log2TrSize + A로 계산될 것이면, 전자 디바이스(4621)는 또한 플래그의 설정에 더해 A의 값을 시그널링할 수 있다.
블록의 인코딩이 수정된 변환 스킵 모드를 사용하여 디코딩될 것이 아니면, 블록 4704에서, 전자 디바이스(4621)는 수정된 변환 스킵 모드를 채용하도록 디코더(4612)에 시그널링하지 않고 TS_Shift를 결정한다.
블록 4705에서, 전자 디바이스(4621)는 데이터의 블록을 인코딩하고 생성된 비트 스트림을 네트워크를 통해 송신 및/또는 생성된 비트 스트림을 메모리 디바이스에 저장한다.
도 48은 디코딩 측에서 수정된 변환 스킵 모드를 사용하는 방법의 일 구성을 나타낸 흐름도이다.
블록 4801에서, 전자 디바이스(4622)가 비트 스트림을 취득한다. 블록 4802에서, 전자 디바이스(4622)가 이진 심볼을 복원한다.
판정 블록 4803에서, 전자 디바이스(4622)가 이진 심볼이 수정된 변환 스킵 모드를 사용하여 디코딩될 것인지를 판정한다. 예에서, 전자 디바이스(4622)는 취득된 비트 스트림 내의 플래그가 세트되어 있는지를 판정한다.
이진 심볼이 수정된 변환 스킵 모드를 사용하여 디코딩될 것이면, 블록 4804에서, 전자 디바이스(4622)가 제1 알고리즘을 사용하여 TS_Shift를 결정하고, 비디오 데이터를 복원한다. 예에서, 제1 알고리즘은 MAX[(MAX_TDR-Bit_Depth-Log2TrSize), 0]이다. 다른 예에서, 제1 알고리즘은 MAX_TDR-Bit_Depth-Log2TrSize+A이다. 후자의 경우에, 전자 디바이스(4622)는 또한 인코더(4611)로부터의 신호에 기초하여 값 A를 결정할 수 있다. 또는, 후자의 경우에, 전자 디바이스(4622)는 취득된 비트 스트림의 속성에 기초하여 A의 값을 추론할 수 있다. 예를 들어, 전자 디바이스(4622)는 비트 스트림의 비트 심도가 14 비트 이상인지를 판정하고, 그렇다면, 값 1이 A에 사용된다. 그러나, 그 검사 결과가 비트 스트림이 14비트보다 작다는 것을 지시하면, 값 0이 A에 사용된다. 다른 예에서, 전자 디바이스(4622)는 비트 스트림의 비트 심도가 14 비트 이상이지만 16 비트 이하인지를 판정하고, 그렇다면, 값 3이 A에 사용된다. 그러나, 검사 결과가, 비트 스트림의 비트 심도가 14 비트보다 작거나 16 비트보다 크면, 값 0이 A에 사용된다.
이진 심볼이 수정된 변환 스킵 모드를 사용하여 디코딩될 것이 아니면, 블록 4805에서, 전자 디바이스(4622)가 제2 알고리즘을 사용하여 TS_Shift를 결정하고, 비디오 데이터를 복원한다. 예를 들어, TS_Shift는 MAX_TDR-Bit_Depth-Log2TrSize로 결정된다. 블록 4806에서, 전자 디바이스(4622)가 복원된 비디오 데이터를 메모리 디바이스에 저장한다.
HEVC 규격(specification) 내에서, 역양자화된 입력 d[x][y]의 세트에 대한 역 변환 스킵 프로세스의 출력 r[x][y]은 다음과 같이 지정되어 있다:
Figure pct00006
TS_Shift를 MAX[(MAX_TDR-Bit_Depth-Log2TrSize), 0]로 결정하는 것은 아래의 수정된 역변환 스킵 프로세스와 연관될 수 있다:
Figure pct00007
입력으로 역양자화된 계수 d[x][y]를 취하여 잔차 샘플 값 r[x][y]을 출력하는 역변환 스킵 시프트 프로세스를 위한 전반적인 스케일링 연산은, 초기의 왼쪽 비트 시프트 연산과 나중의 오른쪽 비트 시프트 연산을 포함할 수 있다. 일부 시스템에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 작거나 같아야 하는 것이 바람직할 수 있다. 만약 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 많으면, 그 결과 출력은 영(0)으로 설정된 최하위 비트(least significant bit)들의 서브세트를 포함할 수 있다. 이것은 역변환 스킵 프로세스에서 충실도(fidelity)의 손실에 해당한다. 구현예에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 작거나 같아야 한다는 제약은 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 최소 개수를 제한함으로써 달성된다. 예를 들어, 오른쪽 비트 시프트의 양은 MAX(오른쪽 비트 시프트의 양에 대한 하한, 오른쪽 비트 시프트 양에 대한 유도된 값)으로 계산될 수 있다. 다른 구현예에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 작거나 같아야 한다는 제약은, 왼쪽 시프트 연산에 의해 시프트되는 비트의 최대 수를 제한함으로써 달성된다. 예를 들어, 왼쪽 비트 시프트의 양은 MIN(왼쪽 비트 시프의 양에 대한 상한, 왼쪽 비트 시프트의 양에 대한 유도된 값)으로 계산될 수 있다. MIN 연산은 괄호 안의 값 중 최소 값을 돌려준다. 에를 들어, MIN(x,y)의 결과는 x<=y이면 x이고, 그렇지 않으면 그 결과는 y이다. 다른 구현예에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 작거나 같아야 한다는 제약은, 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 최소 수와 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 최대 수를 모두 제한함으로써 달성된다. 다른 구현예에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 수는 오른쪽 비트 시프트 연산에 의해 시프트되는 비트의 수보다 작거나 같아야 한다는 제약은, 기타 적절한 메커니즘에 의해 달성된다.
왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 최대 수를 제한할 때, 역양자화된 입력 d[x][y] (주: d[x][y]는 스케일링된 변환 계수라고도 할 수 있음)의 세트에 대한 역 변환 스킵 프로세스의 출력 r[x][y]은 다음과 같이 지정될 수 있다:
a. 변수 bdShift는 다음과 같이 유도된다:
bdShift=(cIdx==0)?20 - BitDepthY:20-BitDepthC
b. 잔차 샘플 r의 (nTbS)x(nTbS) 배열은 다음과 같이 유도된다:
- transform_skip_flag_sh[xTbY][yTbY][cIdx]가 1이면, x=0..nTbS-1, y=0..nTbS-1인 잔차 샘플 배열 값 r[x][y]은 다음과 같이 유도된다:
r[x][y]=(d[x][y]<< MIN(7, bdShift))
- 그렇지 않고 (transform_skip_flag_sh[xTbY][yTbY][cIdx]가 0)이면, 스케일링된 변환 계수에 대한 변환 프로세스는 변환 블록 위치 (xTbY, yTbY), 변환 블록의 크기 nTbS, 색 성분 변수 cIdx, 및 스케일링된 변환 계수 d의 (nTbS)x(nTbS) 배열을 입력으로 하여 호출되고, 그 출력은 잔차 샘플 r의 (nTbS)x(nTbS) 배열이다.
c. x=0..nTbS-1, y=0..nTbS-1인 잔차 샘플 값 r[x][y]는 다음과 같이 수정된다:
r[x][y]=(r[x][y]+(1<<(bdShift-1)))>>bdShift
여기서,
(xTbY, yTbY)는 현재 픽처의 왼쪽 위 루마 샘플(top-left luma sample)에 상대적인 현재의 루마 변환 블록의 왼쪽 위 샘플를 지정하는 루마 위치에 대응하고,
cIdx는 현재 블록의 색 성분을 지정하고,
nTbS는 현재의 변환 블록의 크기를 지정하고,
BitDepthY와 BitDepthC는 각각 루마 소스 비트 심도와 크로마 소스 비트 심도를 지시한다.
transform_skip_flag_sh[x0][y0][cIdx]는, 변환이 연관된 변환 블록에 적용되는지의 여부를 지정한다: 배열 인덱스 x0, y0는 픽처의 왼쪽 위 루마 샘플에 상대적인 고려된 변환 블록의 왼쪽 위 루마 샘플의 위치 (x0, y0)를 지정한다. 배열 인덱스 cIdx는 색 성분에 대한 지시자를 지정하고; 이는 루마에 대해서는 0이고, Cb에 대해서는 1이고, Cr에 대해서는 2이다. transform_skip_flag_sh[x0][y0][cIdx]이 1일 때, 변환이 현재의 변환 블록에 적용되지 않는다는 것을 지정한다. transform_skip_flag_sh[x0][y0][cIdx]이 0일 때, 변환이 현재의 변환 블록에 적용되거나 다른 신택스 요소에 의존하지 않는다는 것을 지정한다. transform_skip_flag_sh[x0][y0][cIdx]가 존재하지 않을 때, 이것은 0과 동일하다고 추론된다.
실시예에서, 왼쪽 비트 시프트 연산에 의해 시프트되는 비트의 최대 수가 제한될 때, 왼쪽 비트 시프트의 양에 대한 유도된 값은 비트 스트림 내의 시그널링된 과거 데이터, 예를 들어 현재의 변환 블록의 크기에 기초하여 결정된다. 왼쪽 비트 시프트의 양에 대한 유도된 값을 derivedTSLeftShift로 표기하면, 역양자화된 입력 d[x][y](스케일링된 변환 계수라고도 함)의 세트에 대한 역변환 스킵 프로세스의 출력 r[x][y]은 다음과 같이 지정될 수 있다:
a. 변수 bdShift는 다음과 같이 유도된다:
bdShift=(cIdx==0)?20-BitDepthY:20-BitDepthC
b. 잔차 샘플 r의 (nTbS)x(nTbS) 배열은 다음과 같이 유도된다:
- transform_skip_flag_sh[xTbY][yTbY][cIdx]가 1이면, x=0..nTbS-1, y=0..nTbS-1인 잔차 샘플 배열 값 r[x][y]는 다음과 같이 유도된다:
r[x][y]=(d[x][y]<<MIN(derivedTSLeftShift, bdShift))
- 그렇지 않고 (transform_skip_flag_sh[xTbY][yTbY][cIdx]가 0)이면, 스케일링된 변환 계수에 대한 변환 프로세스는 변환 블록 위치 (xTbY, yTbY), 변환 블록의 크기 nTbS, 색 성분 변수 cIdx, 및 스케일링된 변환 계수 d의 (nTbS)x(nTbS) 배열을 입력으로 하여 호출되고, 그 출력은 잔차 샘플 r의 (nTbS)x(nTbS) 배열이다.
c. x=0..nTbS-1, y=0..nTbS-1인 잔차 샘플 값 r[x][y]는 다음과 같이 수정된다:
r[x][y]=(r[x][y]+(1<<(bdShift-1)))>>bdShift
예에서, transform_skip_flag_sh[xTbY][yTbY][x]는 Transform_skip_flag에 대응한다.
이상에서 설명한 시스템과 장치는 전용 프로세서 시스템, 마이크로 컨트롤러, 프로그래머블 로직 디바이스, 마이크로프로세서, 또는 이들의 임의 조합을 사용하여, 여기서 설명한 작업(operation)의 일부 또는 전부를 수행할 수 있다. 이상에서 설명한 작업의 일부는 소프트웨어로 구현될 수 있고 다른 작업들은 하드웨어로 구현될 수 있다. 여기서 설명한 하나 이상의 작업, 프로세스, 및/또는 방법은 도시된 도면을 참조하여 여기서 설명한 것과 실질적으로 유사한 장치, 기기, 및/또는 시스템에 의해 수행될 수 있다.
처리 디바이스는 메모리에 저장된 명령어 또는 "코드"를 실행할 수 있다. 메모리는 데이터도 저장할 수 있다. 처리 디바이스는, 아날로그 프로세서, 디지털 프로세서, 마이크로프로세서, 멀티코어 프로세서, 프로세서 어레이, 네트워크 프로세서, 등을 포함할 수 있지만, 이에 한정되지 않는다. 처리 디바이스는 통합된 제어 시스템 또는 시스템 관리자의 일부일 수 있거나, 또는
무선 송신을 통해 로컬로 또는 원격으로 네트워킹된 시스템과 인터페이싱하도록 구성된 휴대형 전자 디바이스로서 제공될 수 있다.
프로세서 메모리, 예를 들어, 집적회로 마이크로프로세서 등 내에 배치된 RAM 또는 FLASH 메모리는 처리 디바이스와 함께 통합될 수 있다. 다른 예에서, 메모리는, 외부 디스크 드라이브, 스토리지 어레이, 휴대형 FLASH 키폽(key fob) 등의, 독립적인 디바이스를 포함할 수 있다. 메모리와 처리 디바이스는 작동 가능하게 서로 연결되거나, 또는 서로 통신할 수 있다. 관련 메모리(associated memory)는 권한 설정, 또는 미설정에 의해 디자인(ROM)에 의해 "읽기 전용"할 수 있다. 메모리의 다른 예는 고체 상태의 반도체 디바이스로 구현될 수 있는 WORM, EPROM, EEPROM, FLASH 등을 포함할 수 있지만, 이에 한정되지 않을 수 있다. 다른 메모리는, 종래의 회전 디스크 드라이브와 같이, 움직이는 부분을 포함할 수 있다. 이러한 모든 메모리들은 "기계로 판독 가능할" 수 있고, 처리 디바이스에 판독 가능할 수 있다.
조작 명령어 또는 커맨드는 저장된 컴퓨터 소프트웨어("컴퓨터 프로그램" 또는 "코드"라고도 알려져 있음)의 유형의 형태로 구현되거나 실시될 수 있다. 프로그램, 또는 코드는 디지털 메모리에 저장될 수 있고, 처리 디바이스에 의해 판독될 수 있다. "컴퓨터로 판독 가능한(computer-readable) 저장 매체"(또는, 대안으로는, "기계로 판독 가능한(machine-readable) 저장 매체")는, 메모리가 컴퓨터 프로그램 또는 다른 데이터와 유사한 디지털 정보를, 적어도 일시적으로 저장할 수 있는 한, 그리고 저장된 정보가 적절한 처리 디바이스로 "판독"될 수 있는 한, 장래의 새로운 기술은 물론, 전술한 모든 유형의 메모리를 포함할 수 있다. 용어는 "컴퓨터로 판독 가능"은 완전한 메인프레임, 미니 컴퓨터, 데스크톱 또는 심지어 노트북 컴퓨터를 의미하는 "컴퓨터"의 역사적 사용에 한정되지 않을 수 있습니다. 오히려, "컴퓨터로 판독 가능"은 프로세서, 처리 디바이스, 또는 임의의 컴퓨팅 시스템에 의해 판독 가능할 수 있는 저장 매체를 포함할 수 있다. 이러한 매체는 컴퓨터 또는 프로세서에 의해 로컬 및/또는 원격으로 액세스할 수 있는 임의의 이용 가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 및 탈착 가능한 매체 및 탈착 불가능한 매체, 또는 그 임의 조합을 포함할 수 있다.
컴퓨터로 판독 가능한 저장 매체에 저장된 프로그램은 컴퓨터 프로그램 제품을 포함할 수 있다. 예를 들어, 저장 매체는 컴퓨터 프로그램을 저장 또는 전송하기 위한 편리한 수단으로 사용될 수 있다. 편의상, 작업은 다양한 상호접속 또는 연결된 기능 블록 또는 다이어그램으로 설명될 수 있다. 그러나, 이들 기능 블록 또는 다이어그램이, 경계가 불분명한 단일 논리 디바이스, 프로그램, 또는 작업에 동등하게 집성될 수 있는 경우가 있을 수 있다.
당업자는 본원에 개시된 개념들은 여러 가지 방법으로 특정 애플리케이션에 맞춰질 수 있다는 것을 인식할 것이다. 특히, 당업자는, 도시된 예가 본 명세서를 읽으면 명백해질, 많은 다른 구현예 중 하나일 뿐임을 인식할 것이다.
명세서는 여러 곳에서, "일", "하나", "다른", 또는 "일부" 예(들)를 참조할 수 있지만, 이것은 반드시 그러한 각각의 참조가 동일한 예(들)에 대한 것, 또는 특징이 단일 예에만 적용된다는 것을 의미하지 않는다.

Claims (2)

  1. 디코더의 전자 디바이스를 포함하는 시스템으로서,
    상기 전자 디바이스는, 비트 스트림을 취득하고, 상기 취득된 비트 스트림으로부터 이진 심볼을 복원하도록 구성되고,
    상기 이진 심볼은 비디오 데이터의 복원을 위해 역양자화 및 역변환되며,
    높은 비트 심도 코딩(higher bit depth coding)을 위해 역변환이 변환 블록에 적용되지 않으면,
    스케일링 연산(scaling operation)이 TS_Shift에 기초하여 역양자화된 계수 값에 대해,
    Residue=(Dequantized coefficient values)<<TS_Shift
    와 같이 수행되고,
    Residues는 bdShift에 기초하여,
    Residue=(Residue+(1<<(bdShift-1)))>>bdShift
    와 같이 계산되며,
    위 식에서, TS_Shift는 스케일링 연산을 위한 왼쪽 비트 시프트(left bit shift)이고, bdShift는 스케일링 연산을 위한 오른쪽 비트 시프트(right bit shift)이고, TS_Shift는 bdShift 이하인,
    시스템.
  2. 제1항에 있어서,
    상기 블록이 4x4 블록인, 시스템.
KR1020167003699A 2013-07-15 2014-07-14 Hevc의 cabac를 위한 변환 스킵된 블록의 수정된 코딩 KR101871869B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/942,616 US10616581B2 (en) 2012-01-19 2013-07-15 Modified coding for a transform skipped block for CABAC in HEVC
US13/942,616 2013-07-15
US201361858010P 2013-07-24 2013-07-24
US61/858,010 2013-07-24
PCT/JP2014/003723 WO2015008478A1 (en) 2013-07-15 2014-07-14 Modified coding for a transform skipped block for cabac in hevc

Publications (2)

Publication Number Publication Date
KR20160031532A true KR20160031532A (ko) 2016-03-22
KR101871869B1 KR101871869B1 (ko) 2018-06-27

Family

ID=52345954

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167003699A KR101871869B1 (ko) 2013-07-15 2014-07-14 Hevc의 cabac를 위한 변환 스킵된 블록의 수정된 코딩

Country Status (5)

Country Link
EP (1) EP3014879B1 (ko)
JP (2) JP6139774B2 (ko)
KR (1) KR101871869B1 (ko)
CN (1) CN105993173B (ko)
WO (1) WO2015008478A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017196128A1 (ko) * 2016-05-12 2017-11-16 엘지전자(주) 계수 유도 복원을 이용하여 비디오 신호를 처리하는 방법 및 장치
WO2021006700A1 (ko) * 2019-07-10 2021-01-14 엘지전자 주식회사 영상 코딩 시스템에서 레지듀얼 코딩 방법에 대한 플래그를 사용하는 영상 디코딩 방법 및 그 장치
KR20220013029A (ko) * 2019-09-24 2022-02-04 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 잔차 및 계수를 코딩하는 방법 및 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10142629B2 (en) * 2015-12-28 2018-11-27 Mediatek Inc. Method and apparatus for entropy coding in image compression
WO2017199800A1 (ja) * 2016-05-20 2017-11-23 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
CN112118456B (zh) * 2019-06-20 2022-03-25 腾讯美国有限责任公司 莱斯参数选择方法、装置、计算机设备及存储介质
CN114365490A (zh) * 2019-09-09 2022-04-15 北京字节跳动网络技术有限公司 高精度图像和视频编解码的系数缩放
KR102308373B1 (ko) 2021-06-08 2021-10-06 주식회사 스누아이랩 얼굴인식을 위한 비디오 디블러링장치 및 그 장치의 구동방법
CN117561710A (zh) * 2021-06-29 2024-02-13 Oppo广东移动通信有限公司 编解码方法、编码器、解码器以及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130343448A1 (en) * 2012-06-26 2013-12-26 Research In Motion Limited Modified coding for transform skipping

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101303725A (zh) * 2008-04-30 2008-11-12 浙江大学 一种基于纠错编码的脆弱水印生成和认证方法
US8718135B2 (en) * 2008-09-19 2014-05-06 The Hong Kong University Of Science And Technology Method and system for transcoding based robust streaming of compressed video
WO2011126272A2 (en) * 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Method and apparatus for encoding video by using dynamic-range transformation, and method and apparatus for decoding video by using dynamic-range transformation
GB2492333B (en) * 2011-06-27 2018-12-12 British Broadcasting Corp Video encoding and decoding using transforms
CN102256125B (zh) * 2011-07-14 2013-06-05 北京工业大学 面向高效视频编码hevc基于上下文的自适应算数编码方法
US10616581B2 (en) * 2012-01-19 2020-04-07 Huawei Technologies Co., Ltd. Modified coding for a transform skipped block for CABAC in HEVC
US9264713B2 (en) * 2012-07-11 2016-02-16 Qualcomm Incorporated Rotation of prediction residual blocks in video coding with transform skipping
WO2016108188A1 (en) * 2014-12-31 2016-07-07 Nokia Technologies Oy Inter-layer prediction for scalable video coding and decoding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130343448A1 (en) * 2012-06-26 2013-12-26 Research In Motion Limited Modified coding for transform skipping

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
B. Bross, et al. High Efficiency Video Coding (HEVC) text specification draft 10 (for FDIS & Last Call). JCT-VC of ITU-T and ISO/IEC. JCTVC-L1003 Ver.34, Mar. 19, 2013. pp.1-298* *
K. Sharman, et al. AHG5: Range Extensions and High Bit Depths. JCT-VC of ITU-T and ISO/IEC. JCTVC-M0178 Ver.3, Apr. 22, 2013. pp.1-21 *
S-H. Kim, et al. AHG18: Modified scaling factor for transform-skip blocks to support higher bit depths greater than equal to 14. JCT-VC of ITU-T and ISO/IEC. JCTVC-N0275 Ver.1, Jul. 16, 2013. pp.1-3 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017196128A1 (ko) * 2016-05-12 2017-11-16 엘지전자(주) 계수 유도 복원을 이용하여 비디오 신호를 처리하는 방법 및 장치
US10911783B2 (en) 2016-05-12 2021-02-02 Lg Electronics Inc. Method and apparatus for processing video signal using coefficient-induced reconstruction
WO2021006700A1 (ko) * 2019-07-10 2021-01-14 엘지전자 주식회사 영상 코딩 시스템에서 레지듀얼 코딩 방법에 대한 플래그를 사용하는 영상 디코딩 방법 및 그 장치
CN114402605A (zh) * 2019-07-10 2022-04-26 Lg电子株式会社 图像编码系统中使用残差编码方法的标志的图像解码方法以及用于其的装置
KR20220013029A (ko) * 2019-09-24 2022-02-04 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 잔차 및 계수를 코딩하는 방법 및 장치

Also Published As

Publication number Publication date
JP6139774B2 (ja) 2017-05-31
CN105993173A (zh) 2016-10-05
WO2015008478A1 (en) 2015-01-22
EP3014879B1 (en) 2018-06-20
JP2017169211A (ja) 2017-09-21
JP2016530737A (ja) 2016-09-29
JP6526099B2 (ja) 2019-06-05
EP3014879A4 (en) 2016-06-15
CN105993173B (zh) 2019-06-14
KR101871869B1 (ko) 2018-06-27
EP3014879A1 (en) 2016-05-04

Similar Documents

Publication Publication Date Title
KR101871869B1 (ko) Hevc의 cabac를 위한 변환 스킵된 블록의 수정된 코딩
EP3270591B1 (en) Modified coding for a transform skipped block for cabac in hevc
US10785483B2 (en) Modified coding for a transform skipped block for CABAC in HEVC
US8581753B2 (en) Lossless coding technique for CABAC in HEVC
US10701362B2 (en) High throughput significance map processing for CABAC in HEVC
US8552890B2 (en) Lossless coding with different parameter selection technique for CABAC in HEVC
US20170332102A1 (en) GOLOMB-RICE/EG Coding Technique for CABAC in HEVC
US9860527B2 (en) High throughput residual coding for a transform skipped block for CABAC in HEVC
JP7047777B2 (ja) 画像データ符号化及び復号化
JP6426227B2 (ja) Hevcにおけるcabacに対する変換スキップブロックに対する高スループット残差符号化
CN113994680A (zh) 用于图片的子部分的独立cabac
WO2020260874A1 (en) Image data encoding and decoding
GB2585044A (en) Image data encoding and decoding

Legal Events

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