KR20180087771A - 엔트로피 인코더 및 이를 포함하는 비디오 인코더 - Google Patents

엔트로피 인코더 및 이를 포함하는 비디오 인코더 Download PDF

Info

Publication number
KR20180087771A
KR20180087771A KR1020170012257A KR20170012257A KR20180087771A KR 20180087771 A KR20180087771 A KR 20180087771A KR 1020170012257 A KR1020170012257 A KR 1020170012257A KR 20170012257 A KR20170012257 A KR 20170012257A KR 20180087771 A KR20180087771 A KR 20180087771A
Authority
KR
South Korea
Prior art keywords
binary
encoding
value
values
context
Prior art date
Application number
KR1020170012257A
Other languages
English (en)
Inventor
박창수
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170012257A priority Critical patent/KR20180087771A/ko
Priority to US15/699,374 priority patent/US10291913B2/en
Publication of KR20180087771A publication Critical patent/KR20180087771A/ko

Links

Images

Classifications

    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/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

Abstract

엔트로피 인코더는 이진화기, 이진 버퍼, 복수의 이진 인코딩 회로들 및 비트 발생기를 포함한다. 이진화기는 복수의 신택스 요소들에 기초하여 복수의 이진 값들을 발생한다. 이진 버퍼는 복수의 이진 값들을 순차적으로 저장하고, 저장 상태에 따라 복수의 이진 값들 중 적어도 일부를 출력한다. 복수의 이진 인코딩 회로들은 이진 버퍼에서 하나의 이진 값이 출력되는 경우에 하나의 컨텍스트 값을 기초로 하나의 이진 값에 대한 부호화를 수행하고, 이진 버퍼에서 두 개 이상의 이진 값들이 출력되는 경우에 두 개 이상의 컨텍스트 값들을 기초로 두 개 이상의 이진 값들에 대한 멀티-이진 부호화를 수행한다. 비트 발생기는 복수의 이진 인코딩 회로들에서 출력되는 비트 값들에 기초하여 비트 스트림을 발생한다.

Description

엔트로피 인코더 및 이를 포함하는 비디오 인코더{ENTROPY ENCODER AND VIDEO ENCODER INCLUDING THE SAME}
본 발명은 영상 압축에 관한 것으로서, 더욱 상세하게는 컨텍스트 기반 적응적 이진 산술 부호화(context-based adaptive binary arithmetic coding; CABAC)를 이용하는 엔트로피 인코더 및 상기 엔트로피 인코더를 포함하는 비디오 인코더에 관한 것이다.
HD(High Definition) 영상 및 UHD(Ultra High Definition) 영상과 같은 고해상도, 고품질의 영상에 대한 수요가 증가하고 있으며, 고해상도, 고품질의 영상을 처리하기 위해 고성능의 영상 압축 및 복원 기술들이 활용되고 있다. 엔트로피 부호화(entropy coding)의 일종인 CABAC은 알고리즘이 상대적으로 복잡하여 처리 시간이 길다. 최근에는 CABAC을 이용하여 고해상도, 고품질의 영상을 효율적으로 압축할 수 있는 다양한 방안에 대한 연구가 진행되고 있다.
본 발명의 일 목적은 멀티-이진(multi-bin) 부호화를 빠르고 효율적으로 수행할 수 있는 엔트로피 인코더를 제공하는 것이다.
본 발명의 다른 목적은 상기 엔트로피 인코더를 포함하는 비디오 인코더를 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 엔트로피 인코더는 이진화기(binarizer), 이진 버퍼(bin buffer), 복수의 이진 인코딩 회로들 및 비트 발생기를 포함한다. 상기 이진화기는 복수의 신택스 요소(syntax element)들에 기초하여 복수의 이진 값(bin)들을 발생한다. 상기 이진 버퍼는 상기 복수의 이진 값들을 순차적으로 저장하고, 저장 상태에 따라 상기 복수의 이진 값들 중 적어도 일부를 출력한다. 상기 복수의 이진 인코딩 회로들은 상기 이진 버퍼에서 하나의 이진 값이 출력되는 경우에 하나의 컨텍스트 값(context)을 기초로 상기 하나의 이진 값에 대한 부호화를 수행하고, 상기 이진 버퍼에서 두 개 이상의 이진 값들이 출력되는 경우에 두 개 이상의 컨텍스트 값들을 기초로 상기 두 개 이상의 이진 값들에 대한 멀티-이진(multi-bin) 부호화를 수행한다. 상기 비트 발생기는 상기 복수의 이진 인코딩 회로들에서 출력되는 비트 값(bit)들에 기초하여 비트 스트림을 발생한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 비디오 인코더는 모드 결정 블록, 압축 블록 및 엔트로피 인코더를 포함한다. 상기 모드 결정 블록은 현재 영상 및 참조 영상에 기초하여 예측 영상 및 인코딩 정보를 발생한다. 상기 압축 블록은 상기 현재 영상 및 상기 예측 영상을 기초로 상기 현재 영상을 부호화하여 인코딩 데이터를 발생한다. 상기 엔트로피 인코더는 상기 인코딩 데이터 및 상기 인코딩 정보를 부호화하여 비트 스트림을 발생한다. 상기 엔트로피 인코더는 이진화기(binarizer), 이진 버퍼(bin buffer), 복수의 이진 인코딩 회로들 및 비트 발생기를 포함한다. 상기 이진화기는 상기 인코딩 데이터 및 상기 인코딩 정보에 기초하여 복수의 이진 값(bin)들을 발생한다. 상기 이진 버퍼는 상기 복수의 이진 값들을 순차적으로 저장하고, 저장 상태에 따라 상기 복수의 이진 값들 중 적어도 일부를 출력한다. 상기 복수의 이진 인코딩 회로들은 상기 이진 버퍼에서 하나의 이진 값이 출력되는 경우에 하나의 컨텍스트 값(context)을 기초로 상기 하나의 이진 값에 대한 부호화를 수행하고, 상기 이진 버퍼에서 두 개 이상의 이진 값들이 출력되는 경우에 두 개 이상의 컨텍스트 값들을 기초로 상기 두 개 이상의 이진 값들에 대한 멀티-이진(multi-bin) 부호화를 수행한다. 상기 비트 발생기는 상기 복수의 이진 인코딩 회로들에서 출력되는 비트 값(bit)들에 기초하여 상기 비트 스트림을 발생한다.
상기와 같은 본 발명의 실시예들에 따른 엔트로피 인코더는, 이진화를 수행하는 상기 이진화기와 이진 산술 부호화를 수행하는 상기 인코딩 엔진들 사이에 상기 이진 버퍼가 배치될 수 있으며, 상기 이진화기와 상기 인코딩 엔진들을 분리하여 독립적으로 구동할 수 있다. 이 경우, 상기 인코딩 엔진들에 포함되는 인코딩 회로들의 개수를 독립적으로 결정할 수 있고, 상기 이진화기에서 발생되는 상기 이진 값들의 개수가 상기 인코딩 회로들의 개수와 독립적일 수 있으며, 다양한 종류의 이진 시퀀스들을 효율적으로 병렬 처리할 수 있고, 멀티-이진 부호화 및 멀티-바이패스 부호화를 효율적으로 수행할 수 있다. 따라서, 엔트로피 인코더 및 이를 포함하는 비디오 인코더의 성능 및 압축 효율이 향상될 수 있다.
도 1은 본 발명의 실시예들에 따른 엔트로피 인코더를 나타내는 순서도이다.
도 2 내지 8은 본 발명의 실시예들에 따른 엔트로피 인코더의 구체적인 동작을 설명하기 위한 도면들이다.
도 9는 본 발명의 실시예들에 따른 비디오 인코더를 나타내는 순서도이다.
도 10은 본 발명의 실시예들에 따른 비디오 인코딩 및 디코딩 시스템을 나타내는 블록도이다.
도 11은 본 발명의 실시예들에 따른 전자 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 엔트로피 인코더를 나타내는 순서도이다.
도 1을 참조하면, 엔트로피 인코더(entropy encoder)(10)는 이진화기(binarizer)(100), 이진 버퍼(bin buffer, BIN BUF)(200), 이진 인코딩 엔진(bin encoding engine)(300) 및 비트 발생기(bit generator, BIT GEN)(600)를 포함한다. 엔트로피 인코더(10)는 컨텍스트 모델러(context modeler)(400), 바이패스 인코딩 엔진(bypass encoding engine)(500), 제1 선택기(selector)(250) 및 제2 선택기(650)를 더 포함할 수 있다.
본 발명의 실시예들에 따른 엔트로피 인코더(10)는 컨텍스트 기반 적응적 이진 산술 부호화(context-based adaptive binary arithmetic coding; CABAC)에 기초하여 동작할 수 있다.
이진화기(100)는 복수의 신택스 요소(syntax element)들(SE)에 기초하여 복수의 이진 값(bin)들(BN)을 발생한다. 신택스 요소들(SE) 각각은 엔트로피 인코더(10)에 의해 부호화될 심볼(symbol)을 나타낼 수 있고, 도 9를 참조하여 후술하는 것처럼 인코딩 영상 데이터, 움직임 벡터(motion vector) 등을 포함할 수 있다. 이진 값들(BN) 각각은 "0" 또는 "1" 의 값을 가질 수 있다. 예를 들어, 신택스 요소들(SE)이 비이진 값들(non-binary valued syntax elements)인 경우에, 이진화기(100)는 신택스 요소들(SE)을 이진화하여 이진 값들(BN)을 발생할 수 있다. 예를 들어, 하나의 신택스 요소가 하나의 이진 값 또는 여러 개의 이진 값들로 이진화될 수도 있고, 여러 개의 신택스 요소들이 하나의 이진 값으로 이진화될 수도 있다.
이진 버퍼(200)는 복수의 이진 값들(BN)을 순차적으로 저장하고, 저장 상태에 따라 복수의 이진 값들(BN) 중 적어도 일부를 출력한다. 예를 들어, 이진 버퍼(200)에 저장되어 있는 이진 값들의 개수 및/또는 인코딩 엔진들(300, 500)에 포함된 인코딩 회로들의 개수에 따라서, 이진 버퍼(200)는 하나의 이진 값을 출력할 수도 있고 두 개 이상의 이진 값들을 출력할 수도 있다.
일 실시예에서, 복수의 이진 값들(BN)을 저장하기에 이진 버퍼(200)의 저장 용량이 부족한 경우에, 이진화기(100)는 복수의 이진 값들(BN)의 발생을 일시적으로 정지할 수 있다. 예를 들어, 이진화기(100)는 상기 이진 버퍼(200)의 저장 용량을 나타내는 상태 신호(SS)를 수신할 수 있고, 상태 신호(SS)에 기초하여 복수의 이진 값들(BN)을 계속적으로 발생하거나 복수의 이진 값들(BN)의 발생을 일시적으로 정지할 수 있다.
이진 인코딩 엔진(300)은 복수의 이진 인코딩 회로들(BIN ENC1, BIN ENC2, ..., BIN ENCM)(310a, 310b, ..., 310m)을 포함한다. 예를 들어, 이진 인코딩 엔진(300)은 M(M은 2 이상의 자연수)개의 이진 인코딩 회로들(310a~310m)을 포함할 수 있다.
이진 인코딩 회로들(310a~310m)은 이진 버퍼(200)에서 출력되는 이진 값들(BN)에 대한 부호화를 수행한다. 구체적으로, 이진 버퍼(200)에서 하나의 이진 값이 출력되는 경우에, 이진 인코딩 회로들(310a~310m)은 하나의 컨텍스트 값(context)을 기초로 상기 하나의 이진 값에 대한 부호화를 수행하고, 하나의 비트 값(bit)을 발생할 수 있다. 이진 버퍼(200)에서 두 개 이상의 이진 값들이 출력되는 경우에, 이진 인코딩 회로들(310a~310m)은 두 개 이상의 컨텍스트 값들을 기초로 상기 두 개 이상의 이진 값들에 대한 부호화를 수행하고, 두 개 이상의 비트 값들을 발생할 수 있다.
상술한 것처럼, 컨텍스트 값들(CTX)을 이용하여 이진 인코딩 엔진(300)에 의해 수행되는 부호화를 정규(regular) 부호화라고 부를 수 있다. 예를 들어, 상기 정규 부호화 중에서 상기 하나의 이진 값을 부호화하는 것을 싱글-이진(single-bin) 부호화라고 부를 수 있고, 이 때 이진 인코딩 회로들(310a~310m) 중 하나만이 이용될 수 있다. 상기 정규 부호화 중에서 상기 두 개 이상의 이진 값들을 부호화하는 것을 멀티-이진(multi-bin) 부호화라고 부를 수 있고, 이 때 이진 인코딩 회로들(310a~310m)의 일부 또는 전부가 이용될 수 있다.
일 실시예에서, 이진 버퍼(200)에 현재 저장되어 있는 저장 이진 값들의 개수가 이진 인코딩 회로들(310a~310m)의 개수보다 적은 경우에, 이진 버퍼(200)는 상기 저장 이진 값들을 모두 출력할 수 있고, 이 때 이진 인코딩 회로들(310a~310m)의 일부가 상기 정규 부호화를 수행할 수 있다. 상기 저장 이진 값들의 개수가 상기 이진 인코딩 회로들(310a~310m)의 개수보다 많거나 같은 경우에, 이진 버퍼(200)는 상기 저장 이진 값들 중 상기 이진 인코딩 회로들(310a~310m)의 개수와 동일한 M개의 이진 값들을 출력할 수 있고, 이 때 이진 인코딩 회로들(310a~310m) 전부가 상기 정규 부호화를 수행할 수 있다. 이진 인코딩 회로들(310a~310m) 중 두 개 이상이 이용되는 경우에, 두 개 이상의 이진 인코딩 회로들은 하나의 클럭 사이클 동안에 병렬적으로 상기 정규 부호화를 수행할 수 있다.
일 실시예에서, 이진 버퍼(200)에서 출력되는 상기 M개의 이진 값들은, 상기 저장 이진 값들 중 이진 버퍼(200)에 저장된 지 오래된 이진 값들일 수 있다. 다시 말하면, 이진 버퍼(200)는 먼저 저장된 이진 값을 먼저 출력하는 선입선출(first-in first-out; FIFO) 방식으로 구현될 수 있다.
이진 버퍼(200) 및 이진 인코딩 회로들(310a~310m)의 동작에 대해서는 도 2 내지 5를 참조하여 상세하게 후술하도록 한다.
이진화기(100)는 복수의 신택스 요소들(SE)에 기초하여 복수의 컨텍스트 인덱스(context index)들(CI)을 더 발생할 수 있고, 이진 버퍼(200)는 복수의 컨텍스트 인덱스들(CI)을 더 저장할 수 있다. 컨텍스트 모델러(400)는 복수의 이진 값들(BN) 및 복수의 컨텍스트 인덱스들(CI)에 기초하여, 복수의 이진 값들(BN)을 부호화하기 위한 컨텍스트 모델들을 나타내는 복수의 컨텍스트 값들(CTX)을 선택할 수 있다. 상술한 것처럼, 이진 인코딩 엔진(300)은 컨텍스트 값들(CTX)을 이용하여 상기 정규 부호화를 수행할 수 있다. 또한, 이진 인코딩 엔진(300)은 상기 정규 부호화를 수행한 이후에 컨텍스트 값들(CTX)을 업데이트할 수 있고, 컨텍스트 모델러(400)는 업데이트된 컨텍스트 값들(UCTX)을 저장할 수 있다.
바이패스 인코딩 엔진(500)은 복수의 바이패스 인코딩 회로들(BYPASS ENC1, BYPASS ENC2, ..., BYPASS ENCM, ..., BYPASS ENCN)(510a, 510b, ..., 510m, ..., 510n)을 포함할 수 있다. 예를 들어, 바이패스 인코딩 엔진(500)은 N(N은 M보다 큰 자연수)개의 바이패스 인코딩 회로들(510a~510n)을 포함할 수 있다.
바이패스 인코딩 회로들(510a~510n)은 컨텍스트 값들(CTX) 없이 이진 버퍼(200)에서 출력되는 이진 값들(BN)에 대한 부호화를 수행할 수 있다. 컨텍스트 값들(CTX)을 이용하지 않는 것을 제외하면, 바이패스 인코딩 회로들(510a~510n)의 부호화 동작은 이진 인코딩 회로들(310a~310m)의 부호화 동작과 실질적으로 동일할 수 있다. 구체적으로, 이진 버퍼(200)에서 하나의 이진 값이 출력되는 경우에, 바이패스 인코딩 회로들(510a~510n)은 컨텍스트 값 없이 상기 하나의 이진 값에 대한 부호화를 수행할 수 있고, 이 때 바이패스 인코딩 회로들(510a~510n) 중 하나만이 이용될 수 있다. 이진 버퍼(200)에서 두 개 이상의 이진 값들이 출력되는 경우에, 바이패스 인코딩 회로들(510a~510n)은 컨텍스트 값들 없이 상기 두 개 이상의 이진 값들에 대한 부호화를 수행할 수 있고, 이 때 바이패스 인코딩 회로들(510a~510n)의 일부 또는 전부가 이용될 수 있다.
상술한 것처럼, 컨텍스트 값들(CTX) 없이 바이패스 인코딩 엔진(500)에 의해 수행되는 부호화를 바이패스 부호화라고 부를 수 있다. 예를 들어, 상기 바이패스 부호화 중에서 상기 하나의 이진 값을 부호화하는 것을 싱글-바이패스(single-bypass) 부호화라고 부를 수 있다. 상기 바이패스 부호화 중에서 상기 두 개 이상의 이진 값들을 부호화하는 것을 멀티-바이패스(multi-bypass) 부호화라고 부를 수 있다.
일 실시예에서, 바이패스 인코딩 회로들(510a~510n)의 개수는 이진 인코딩 회로들(310a~310m)의 개수와 다를 수 있다. 예를 들어, 도 1에 도시된 것처럼, 바이패스 인코딩 회로들(510a~510n)의 개수는 이진 인코딩 회로들(310a~310m)의 개수보다 많을 수 있다. 다른 예에서, 도시하지는 않았지만, 상기 바이패스 인코딩 회로들의 개수는 상기 이진 인코딩 회로들의 개수보다 적을 수 있다. 다른 실시예에서, 도시하지는 않았지만, 상기 바이패스 인코딩 회로들의 개수는 상기 이진 인코딩 회로들의 개수와 동일할 수 있다.
이진 버퍼(200) 및 바이패스 인코딩 회로들(510a~510n)의 동작에 대해서는 도 6 내지 8을 참조하여 상세하게 후술하도록 한다.
일 실시예에서, 이진 인코딩 엔진(300) 및 바이패스 인코딩 엔진(500)의 일부 또는 전부는 하드웨어의 형태로 구현될 수 있다.
제1 선택기(250)는 선택 신호(SEL)에 기초하여 이진 인코딩 엔진(300) 및 바이패스 인코딩 엔진(500) 중 하나와 이진 버퍼(200)를 연결할 수 있다. 예를 들어, 상기 정규 부호화를 수행하고자 하는 제1 동작 모드에서, 제1 선택기(250)는 이진 버퍼(200)와 이진 인코딩 엔진(300)을 전기적으로 연결할 수 있다. 상기 바이패스 부호화를 수행하고자 하는 제2 동작 모드에서, 제1 선택기(250)는 이진 버퍼(200)와 바이패스 인코딩 엔진(500)을 전기적으로 연결할 수 있다.
일 실시예에서, 제1 선택기(250)는 복수의 스위치들을 포함할 수 있다. 예를 들어, 도 1에 도시된 것처럼 바이패스 인코딩 회로들(510a~510n)의 개수가 이진 인코딩 회로들(310a~310m)의 개수보다 많은 경우에, 제1 선택기(250)는 M개의 이진 인코딩 회로들(310a~310m) 또는 M개의 바이패스 인코딩 회로들(510a~510m)을 이진 버퍼(200)와 연결하는 M개의 스위치들, 및 (N-M)개의 바이패스 인코딩 회로들(예를 들어, 510n)을 이진 버퍼(200)와 선택적으로 연결하는 (N-M)개의 스위치들을 포함할 수 있다.
제2 선택기(650)는 선택 신호(SEL)에 기초하여 이진 인코딩 엔진(300) 및 바이패스 인코딩 엔진(500) 중 하나와 비트 발생기(600)를 연결할 수 있다. 제2 선택기(650)의 동작 및 구조는 제1 선택기(250)의 동작 및 구조와 유사할 수 있다.
실시예에 따라서, 선택 신호(SEL)는 이진화기(100)로부터 제공될 수도 있고, 엔트로피 인코더(10)의 외부로부터 제공될 수도 있다.
비트 발생기(600)는 이진 인코딩 엔진(300) 또는 바이패스 인코딩 엔진(500)에서 출력되는(즉, 이진 인코딩 회로들(310a~310m) 또는 바이패스 인코딩 회로들(510a~510n)에서 출력되는) 비트 값들(BT)에 기초하여 비트 스트림(BS)을 발생한다. 예를 들어, 비트 발생기(600)는 이진 값들(BN)의 입력 배열에 대응하도록 비트 값들(BT)의 출력 배열을 설정하여 비트 스트림(BS)을 발생할 수 있다.
한편, 도시하지는 않았지만, 신택스 요소들(SE)이 이진 값들(binary valued syntax elements)인 경우에, 이진화기(100)가 신택스 요소들(SE)을 이진화하는 동작이 생략될 수도 있다.
CABAC은 엔트로피 부호화(entropy coding)의 일종이며, H.264/MPEG-4 파트 10 AVC (Advanced Video Coding), HEVC (High Efficiency Video Coding)/H.265 등의 표준에서 사용되고 있다. CABAC에서는 각 심볼의 부호화 과정마다 동적으로 통계적 특성을 적용하고 그 결과에 따라 심볼의 상대적 확률을 업데이트하므로, CABAC에 의해 부호화된 비트 스트림의 압축 효율이 크게 향상될 수 있다.
일반적으로, CABAC을 이용하여 데이터 심볼들을 부호화하는 경우에, 이진화(binarization), 컨텍스트 모델링(context modeling), 이진 산술 부호화(binary arithmetic coding), 컨텍스트 업데이트(context updating) 등과 같은 여러 개의 단위 동작들 중 적어도 하나가 수행될 수 있다.
본 발명의 실시예들에 따른 엔트로피 인코더(10)에서는, 이진화를 수행하는 이진화기(100)와 이진 산술 부호화를 수행하는 인코딩 엔진들(300, 500) 사이에 이진 버퍼(200)가 배치될 수 있으며, 이진화기(100)와 인코딩 엔진들(300, 500)을 분리하여 독립적으로 구동할 수 있다. 이 경우, 인코딩 엔진들(300, 500)에 포함되는 인코딩 회로들(310a~310m, 510a~510n)의 개수를 독립적으로 결정할 수 있고, 이진화기(100)에서 발생되는 이진 값들(BN)의 개수가 인코딩 회로들(310a~310m, 510a~510n)의 개수와 독립적일 수 있으며, 다양한 종류의 이진 시퀀스(bin sequence)들을 효율적으로 병렬 처리할 수 있고, 멀티-이진 부호화 및 멀티-바이패스 부호화를 효율적으로 수행할 수 있다. 따라서, 엔트로피 인코더(10)의 성능 및 압축 효율이 향상될 수 있다.
도 2 내지 8은 본 발명의 실시예들에 따른 엔트로피 인코더의 구체적인 동작을 설명하기 위한 도면들이다.
도 2, 3, 4a, 4b 및 5는 상기 정규 부호화를 수행하고자 하는 상기 제1 동작 모드에서 엔트로피 인코더(도 1의 10)의 동작을 나타낸다. 상기 제1 동작 모드에서, 제1 및 제2 선택기들(도 1의 250, 650)에 의해 이진 인코딩 엔진(도 1의 300)이 이진 버퍼(200) 및 비트 발생기(600)와 연결될 수 있다. 도 2, 3, 4a, 4b 및 5의 예에서, 이진 인코딩 엔진(도 1의 300)이 네 개의 이진 인코딩 회로들(310a, 310b, 310c, 310d)을 포함하는 것으로 도시하였다.
도 2를 참조하면, 하나의 클럭 사이클 동안에 하나의 신택스 요소(SE1)에 대한 이진화가 수행될 수 있고, 하나의 클럭 사이클 동안에 하나의 이진 값(BN1)에 대한 이진 산술 부호화가 수행될 수 있다. 즉, 도 2는 싱글-이진 부호화의 일 예를 나타낼 수 있다.
구체적으로, 이진화기(100)는 제1 신택스 요소(SE1)를 이진화하여 제1 이진 값(BN1) 및 제1 컨텍스트 인덱스(CI1)를 발생할 수 있다. 이진 버퍼(200)는 제1 이진 값(BN1) 및 제1 컨텍스트 인덱스(CI1)를 저장할 수 있다. 이진 버퍼(200)에 현재 저장되어 있는 이진 값의 개수(즉, 1개)가 이진 인코딩 회로들(310a~310d)의 개수(즉, 4개)보다 적으므로, 이진 버퍼(200)는 저장된 모든 이진 값(즉, BN1) 및 이에 대응하는 모든 컨텍스트 인덱스(즉, CI1)를 출력할 수 있다. 컨텍스트 모델러(400)는 제1 이진 값(BN1) 및 제1 컨텍스트 인덱스(CI1)를 기초로 컨텍스트 모델링하여 제1 컨텍스트 값(CTX1)을 선택할 수 있다.
이진 인코딩 회로들(310a~310d) 중 제1 이진 인코딩 회로(310a)는 제1 컨텍스트 값(CTX1), 제1 범위(range)(R1) 및 제1 로우 값(또는 하단 값, 하한)(low)(L1)을 기초로 제1 이진 값(BN1)을 부호화하여 제1 비트 값(BT1)을 발생할 수 있다. 예를 들어, 제1 범위(R1) 및 제1 로우 값(L1)은 각각 초기 범위 및 초기 로우 값일 수 있고, 확률 구간을 나타낼 수 있다. 제1 컨텍스트 값(CTX1)은 MPS(most probable symbol)와 LPS(least probable symbol)의 확률을 나타낼 수 있다. 제1 이진 값(BN1)은 "0" 또는 "1"의 값을 가질 수 있다. 상기 확률 구간 및 상기 MPS와 LPS의 확률에 기초하여 제1 이진 값(BN1)이 제1 비트 값(BT1)으로 부호화될 수 있다.
또한, 제1 비트 값(BT1)을 발생함과 동시에, 제1 이진 인코딩 회로(310a)는 제1 컨텍스트 값(CTX1)을 업데이트하여(즉, 변경하여) 업데이트된 제1 컨텍스트 값(UCTX1)을 발생할 수 있으며, 제1 범위(R1) 및 제1 로우 값(L1)을 업데이트하여(즉, 변경하여) 업데이트된 제1 범위(R2) 및 업데이트된 제1 로우 값(L2)을 발생할 수 있다. 상술한 것처럼, CABAC에서는 각 심볼의 부호화 과정마다 동적으로 통계적 특성을 적용하고 그 결과에 따라 심볼의 상대적 확률을 업데이트하므로, 제1 비트 값(BT1)을 발생함과 동시에 제1 비트 값(BT1)을 발생하는데 사용하였던 제1 컨텍스트 값(CTX1), 제1 범위(R1) 및 제1 로우 값(L1)이 업데이트될 수 있다.
비트 발생기(600)는 제1 비트 값(BT1)을 포함하는 비트 스트림(BS)을 출력할 수 있다.
한편, 도 2의 예에서, 제2 내지 제4 이진 인코딩 회로들(310b~310d)은 구동하지 않을 수 있다.
도 3을 참조하면, 도 2의 동작이 수행된 이후에, 하나의 클럭 사이클 동안에 하나의 신택스 요소(SE2)에 대한 이진화가 수행될 수 있고, 하나의 클럭 사이클 동안에 복수의 이진 값들(BN2, BN3, BN4, BN5)에 대한 이진 산술 부호화가 수행될 수 있다. 즉, 도 3은 멀티-이진 부호화의 일 예를 나타낼 수 있다.
구체적으로, 이진화기(100)는 제2 신택스 요소(SE2)를 이진화하여 제2, 제3, 제4, 제5 및 제6 이진 값들(BN2, BN3, BN4, BN5, BN6) 및 제2, 제3, 제4, 제5 및 제6 컨텍스트 인덱스들(CI2, CI3, CI4, CI5, CI6)을 발생할 수 있다. 이진 버퍼(200)는 제2 내지 제6 이진 값들(BN2~BN6) 및 제2 내지 제6 컨텍스트 인덱스들(CI2~CI6)을 저장할 수 있다.
일 실시예에서, 이진 버퍼(200)는 원형 버퍼(circular buffer 또는 ring buffer)일 수 있다. 예를 들어, 도 2 및 3에 도시된 것처럼, 제1 이진 값(BN1) 및 제1 컨텍스트 인덱스(CI1)가 이진 버퍼(200) 내의 첫 번째 저장 공간에 저장된 이후에, 이진 버퍼(200) 내의 상기 첫 번째 저장 공간의 다음 저장 공간들인 두 번째 내지 여섯 번째 저장 공간들에 제2 내지 제6 이진 값들(BN2~BN6) 및 제2 내지 제6 컨텍스트 인덱스들(CI2~CI6)이 순차적으로 저장될 수 있다. 예를 들어, 도 8에 도시된 것처럼, 이진 버퍼(200) 내의 모든 저장 공간들이 이용된 이후에는, 다시 첫 번째 저장 공간부터 순차적으로 이용될 수 있다.
이진 버퍼(200)에 현재 저장되어 있는 이진 값들의 개수(즉, 5개)가 이진 인코딩 회로들(310a~310d)의 개수보다 많으므로, 이진 버퍼(200)는 저장된 모든 이진 값들(즉, BN2~BN6) 중 이진 인코딩 회로들(310a~310d)의 개수와 동일한 개수의 이진 값들(즉, BN2~BN5) 및 이에 대응하는 컨텍스트 인덱스들(즉, CI2~CI5)을 출력할 수 있으며, 이 때 이진 값들(BN2~BN5) 및 컨텍스트 인덱스들(CI2~CI5)을 먼저 저장된 순서대로 출력할 수 있다. 컨텍스트 모델러(400)는 제2 내지 제5 이진 값들(BN2~BN5) 및 제2 내지 제5 컨텍스트 인덱스들(CI2~CI5)에 기초하여 제2 내지 제5 컨텍스트 값들(CTX2, CTX3, CTX4, CTX5)을 선택할 수 있다.
제1 이진 인코딩 회로(310a)는 제2 컨텍스트 값(CTX2), 제2 범위(R2) 및 제2 로우 값(L2)을 기초로 제2 이진 값(BN2)을 부호화하여 제2 비트 값(BT2)을 발생할 수 있다. 예를 들어, 제2 범위(R2) 및 제2 로우 값(L2)은 업데이트된 제1 범위(R2) 및 업데이트된 제1 로우 값(L2)과 각각 실질적으로 동일할 수 있다. 다시 말하면, 제2 범위(R2) 및 제2 로우 값(L2)은 이전 부호화 과정에서 마지막으로 업데이트된 범위 및 로우 값일 수 있다. 또한, 제2 비트 값(BT2)을 발생함과 동시에, 제1 이진 인코딩 회로(310a)는 제2 컨텍스트 값(CTX2)을 업데이트하여 업데이트된 제2 컨텍스트 값(UCTX2)을 발생할 수 있으며, 제2 범위(R2) 및 제2 로우 값(L2)을 업데이트하여 업데이트된 제2 범위(R3) 및 업데이트된 제2 로우 값(L3)을 발생할 수 있다.
제2 이진 인코딩 회로(310b)는 제3 컨텍스트 값(CTX3), 제3 범위(R3) 및 제3 로우 값(L3)을 기초로 제3 이진 값(BN3)을 부호화하여 제3 비트 값(BT3)을 발생할 수 있고, 제3 컨텍스트 값(CTX3), 제3 범위(R3) 및 제3 로우 값(L3)을 업데이트하여 업데이트된 제3 컨텍스트 값(UCTX3), 업데이트된 제3 범위(R4) 및 업데이트된 제3 로우 값(L4)을 발생할 수 있다. 예를 들어, 제3 범위(R3) 및 제3 로우 값(L3)은 업데이트된 제2 범위(R3) 및 업데이트된 제2 로우 값(L3)과 각각 실질적으로 동일할 수 있다. 예를 들어, 제2 컨텍스트 값(CTX2)과 제3 컨텍스트 값(CTX3)이 동일한 경우에 업데이트된 제2 컨텍스트 값(UCTX2)이 제3 컨텍스트 값(CTX3)으로 제공될 수 있다.
제3 및 제4 이진 인코딩 회로들(310c, 310d)의 동작은 제2 이진 인코딩 회로(310b)의 동작과 실질적으로 동일할 수 있다. 제3 이진 인코딩 회로(310c)는 제4 컨텍스트 값(CTX4), 제4 범위(R4) 및 제4 로우 값(L4)을 기초로 제4 이진 값(BN4)을 부호화하여 제4 비트 값(BT4)을 발생할 수 있고, 제4 컨텍스트 값(CTX4), 제4 범위(R4) 및 제4 로우 값(L4)을 업데이트하여 업데이트된 제4 컨텍스트 값(UCTX4), 업데이트된 제4 범위(R5) 및 업데이트된 제4 로우 값(L5)을 발생할 수 있다. 제4 이진 인코딩 회로(310d)는 제5 컨텍스트 값(CTX5), 제5 범위(R5) 및 제5 로우 값(L5)을 기초로 제5 이진 값(BN5)을 부호화하여 제5 비트 값(BT5)을 발생할 수 있고, 제5 컨텍스트 값(CTX5), 제5 범위(R5) 및 제5 로우 값(L5)을 업데이트하여 업데이트된 제5 컨텍스트 값(UCTX5), 업데이트된 제5 범위(R6) 및 업데이트된 제5 로우 값(L6)을 발생할 수 있다.
비트 발생기(600)는 제2 내지 제5 비트 값들(BT2~BT5)을 포함하는 비트 스트림(BS)을 출력할 수 있다.
일 실시예에서, 도 3의 이진 인코딩 회로들(310a~310d)이 비트 값들(BT2~BT5)을 발생하는 동작들은 하나의 클럭 사이클 동안에 병렬적으로 처리될 수 있다. 예를 들어, 도 4a에 도시된 것처럼, 시간 t1 내지 t2 동안에 제1 이진 인코딩 회로(310a)의 부호화 동작(EN1)이 수행될 수 있고, 시간 t2 내지 t3 동안에 제2 이진 인코딩 회로(310b)의 부호화 동작(EN2)이 수행될 수 있고, 시간 t3 내지 t4 동안에 제3 이진 인코딩 회로(310c)의 부호화 동작(EN3)이 수행될 수 있으며, 시간 t4 내지 t5 동안에 제4 이진 인코딩 회로(310d)의 부호화 동작(EN4)이 수행될 수 있다. 도 4a의 예에서, 시간 t1부터 t5까지의 구간이 하나의 클럭 사이클에 포함될 수 있다.
일 실시예에서, 도 3의 이진 인코딩 회로들(310a~310d)이 비트 값들(BT2~BT5)을 발생하는 동작들은 하나의 클럭 사이클 동안에 병렬적으로 처리될 수 있고, 부분적으로 중첩하여 처리될 수 있다. 예를 들어, 도 4b에 도시된 것처럼, 시간 t1' 내지 t3' 동안에 제1 이진 인코딩 회로(310a)의 부호화 동작(EN1')이 수행될 수 있고, 시간 t2' 내지 t4' 동안에 제2 이진 인코딩 회로(310b)의 부호화 동작(EN2')이 수행될 수 있고, 시간 t3' 내지 t5' 동안에 제3 이진 인코딩 회로(310c)의 부호화 동작(EN3')이 수행될 수 있으며, 시간 t4' 내지 t6' 동안에 제4 이진 인코딩 회로(310d)의 부호화 동작(EN4')이 수행될 수 있다. 시간 t2' 내지 t3' 동안에 제1 및 제2 이진 인코딩 회로들(310a, 310b)의 부호화 동작들(EN1', EN2')이 중첩하여 수행될 수 있고, 시간 t3' 내지 t4' 동안에 제2 및 제3 이진 인코딩 회로들(310b, 310c)의 부호화 동작들(EN2', EN3')이 중첩하여 수행될 수 있으며, 시간 t4' 내지 t5' 동안에 제3 및 제4 이진 인코딩 회로들(310c, 310d)의 부호화 동작들(EN3', EN4')이 중첩하여 수행될 수 있다. 도 4b의 예에서, 시간 t1'부터 t6'까지의 구간이 하나의 클럭 사이클에 포함될 수 있다.
도 5를 참조하면, 도 3의 동작이 수행된 이후에, 하나의 클럭 사이클 동안에 복수의 신택스 요소들(SE3, SE4)에 대한 이진화가 수행될 수 있고, 하나의 클럭 사이클 동안에 복수의 이진 값들(BN6, BN7)에 대한 이진 산술 부호화가 수행될 수 있다.
구체적으로, 이진화기(100)는 제3 및 제4 신택스 요소들(SE3, SE4)을 이진화하여 제7 이진 값(BN7) 및 제7 컨텍스트 인덱스(CI7)를 발생할 수 있고, 이진 버퍼(200)는 제7 이진 값(BN7) 및 제7 컨텍스트 인덱스(CI7)를 저장할 수 있다. 이진 버퍼(200)에 현재 저장되어 있는 이진 값들의 개수(즉, 2개)가 이진 인코딩 회로들(310a~310d)의 개수보다 적으므로, 이진 버퍼(200)는 저장된 모든 이진 값들(즉, BN6, BN7) 및 이에 대응하는 모든 컨텍스트 인덱스들(즉, CI6, CI7)을 먼저 저장된 순서대로 출력할 수 있다. 컨텍스트 모델러(400)는 제6 및 제7 이진 값들(BN6, BN7) 및 제6 및 제7 컨텍스트 인덱스들(CI6, CI7)에 기초하여 제6 및 제7 컨텍스트 값들(CTX6, CTX7)을 선택할 수 있다.
도 5의 예에서, 이전에 발생되었던 이진 값(BN6)과 현재 발생된 이진 값(BN7)이 함께 부호화될 수 있다. 제1 이진 인코딩 회로(310a)는 제6 컨텍스트 값(CTX6), 제6 범위(R6) 및 제6 로우 값(L6)을 기초로 제6 이진 값(BN6)을 부호화하여 제6 비트 값(BT6)을 발생할 수 있고, 제6 컨텍스트 값(CTX6), 제6 범위(R6) 및 제6 로우 값(L6)을 업데이트하여 업데이트된 제6 컨텍스트 값(UCTX6), 업데이트된 제6 범위(R7) 및 업데이트된 제6 로우 값(L7)을 발생할 수 있다. 제2 이진 인코딩 회로(310b)는 제7 컨텍스트 값(CTX7), 제7 범위(R7) 및 제7 로우 값(L7)을 기초로 제7 이진 값(BN7)을 부호화하여 제7 비트 값(BT7)을 발생할 수 있고, 제7 컨텍스트 값(CTX7), 제7 범위(R7) 및 제7 로우 값(L7)을 업데이트하여 업데이트된 제7 컨텍스트 값(UCTX7), 업데이트된 제7 범위(R8) 및 업데이트된 제7 로우 값(L8)을 발생할 수 있다.
비트 발생기(600)는 제6 및 제7 비트 값들(BT6, BT7)을 포함하는 비트 스트림(BS)을 출력할 수 있다.
한편, 도 5의 예에서, 제3 및 제4 이진 인코딩 회로들(310c, 310d)은 구동하지 않을 수 있다. 실시예에 따라서, 이진 인코딩 회로들(310a, 310b)이 비트 값들(BT6, BT7)을 발생하는 동작들은, 도 4a에 도시된 것처럼 하나의 클럭 사이클 동안에 병렬적으로 처리될 수도 있고, 도 4b에 도시된 것처럼 하나의 클럭 사이클 동안에 병렬적으로 처리되면서 부분적으로 중첩하여 처리될 수도 있다.
도 2의 예에서 제1 이진 인코딩 회로(310a)가 이용되고 도 5의 예에서 제1 및 제2 이진 인코딩 회로들(310a, 310b)이 이용되는 것으로 도시하였으나, 이진 버퍼(200)에서 이진 인코딩 회로들(310a~ 310d)의 개수보다 적은 개수의 이진 값들이 출력되는 경우에 이진 인코딩 회로들(310a~ 310d) 중 부호화를 위해 이용되는 이진 인코딩 회로들은 실시예에 따라서 다양하게 변경될 수 있다.
한편, 편의상 도 2의 동작이 완료된 이후에 이진 값(BN1) 및 컨텍스트 인덱스(CI1)가 이진 버퍼(200)에서 삭제되고 도 3의 동작이 완료된 이후에 이진 값들(BN2~BN5) 및 컨텍스트 인덱스들(CI2~CI5)이 이진 버퍼(200)에서 삭제되는 것으로 도시하였으나, 출력된 이진 값들 및 컨텍스트 인덱스들은 삭제되지 않고 이진 버퍼(200)에 남아 있을 수도 있으며, 이후에 다른 이진 값들 및 컨텍스트 인덱스들이 덮어쓰기될 수 있다.
도 2, 3 및 5를 참조하여 상술한 것처럼, 상기 정규 부호화를 수행하고자 하는 상기 제1 동작 모드에서, 하나의 클럭 사이클 동안에 이진화기(100)에서 발생되는 이진 값들의 개수는 이진 인코딩 회로들(310a~310d)의 개수와 독립적일 수 있으며, 따라서 다양한 종류의 이진 시퀀스들을 효율적으로 병렬 처리할 수 있다. 하나의 클럭 사이클 동안에, 이진화기(100)에서 평균적으로 발생되는 이진 값들의 개수를 I(I는 자연수)라 하고 이진 인코딩 엔진(300)이 최대한 처리할 수 있는 이진 값들의 개수를 J(J는 자연수)라 할 때, I가 J보다 큰 경우에 이진 인코딩 엔진(300)의 사용률(utilization)이 100%가 될 수 있으며, 멀티-이진 부호화를 효율적으로 수행할 수 있다.
도 6, 7 및 8은 상기 바이패스 부호화를 수행하고자 하는 상기 제2 동작 모드에서 엔트로피 인코더(도 1의 10)의 동작을 나타낸다. 상기 제2 동작 모드에서, 제1 및 제2 선택기들(도 1의 250, 650)에 의해 바이패스 인코딩 엔진(도 1의 500)이 이진 버퍼(200) 및 비트 발생기(600)와 연결될 수 있다. 도 6, 7 및 8의 예에서, 바이패스 인코딩 엔진(도 1의 500)이 여섯 개의 바이패스 인코딩 회로들(510a, 510b, 510c, 510d, 510e, 510f)을 포함하는 것으로 도시하였다.
컨텍스트 값 없이 부호화가 수행되는 것을 제외하면, 도 6, 7 및 8의 상기 바이패스 부호화는 도 2, 3 및 5의 상기 정규 부호화와 실질적으로 동일할 수 있다. 이진 값들의 "0"과 "1"의 빈도가 비슷하면, 확률 추정을 이용하지 않는(즉, 컨텍스트 모델링 없는) 바이패스 부호화를 수행하여 부호화 속도를 향상시킬 수 있다.
도 6을 참조하면, 하나의 클럭 사이클 동안에 하나의 신택스 요소(SEA)에 대한 이진화가 수행될 수 있고, 하나의 클럭 사이클 동안에 하나의 이진 값(BBN1)에 대한 이진 산술 부호화가 수행될 수 있다. 즉, 도 2는 싱글-바이패스 부호화의 일 예를 나타낼 수 있다.
구체적으로, 이진화기(100)는 제1 신택스 요소(SEA)를 이진화하여 제1 이진 값(BBN1)을 발생할 수 있고, 이 때 컨텍스트 인덱스는 발생되지 않을 수 있다. 이진 버퍼(200)는 제1 이진 값(BBN1)을 저장할 수 있다. 현재 저장되어 있는 이진 값의 개수(즉, 1개)가 바이패스 인코딩 회로들(510a~510f)의 개수(즉, 6개)보다 적으므로, 이진 버퍼(200)는 저장된 모든 이진 값(즉, BBN1)을 출력할 수 있다.
바이패스 인코딩 회로들(510a~510f) 중 제1 바이패스 인코딩 회로(510a)는 제1 범위(RA) 및 제1 로우 값(LA)을 기초로 제1 이진 값(BBN1)을 부호화하여 제1 비트 값(BBT1)을 발생할 수 있고, 제1 범위(RA) 및 제1 로우 값(LA)을 업데이트하여 업데이트된 제1 범위(RB) 및 업데이트된 제1 로우 값(LB)을 발생할 수 있다. 예를 들어, 제1 범위(RA) 및 제1 로우 값(LA)은 각각 초기 범위 및 초기 로우 값일 수 있다.
비트 발생기(600)는 제1 비트 값(BBT1)을 포함하는 비트 스트림(BS)을 출력할 수 있다.
한편, 도 6의 예에서, 제2 내지 제6 바이패스 인코딩 회로들(510b~510f)은 구동하지 않을 수 있다.
도 7을 참조하면, 하나의 클럭 사이클 동안에 하나의 신택스 요소(SEB)에 대한 이진화가 수행될 수 있고, 하나의 클럭 사이클 동안에 복수의 이진 값들(BBN2, BBN3, BBN4)에 대한 이진 산술 부호화가 수행될 수 있다. 즉, 도 7은 멀티-바이패스 부호화의 일 예를 나타낼 수 있다.
구체적으로, 이진화기(100)는 제2 신택스 요소(SEB)를 이진화하여 제2, 제3 및 제4 이진 값들(BBN2, BBN3, BBN4)을 발생할 수 있고, 이진 버퍼(200)는 제2 내지 제4 이진 값들(BBN2~BBN4)을 순차적으로 저장할 수 있다. 현재 저장되어 있는 이진 값의 개수(즉, 3개)가 바이패스 인코딩 회로들(510a~510f)의 개수보다 적으므로, 이진 버퍼(200)는 저장된 모든 이진 값들(즉, BBN2~BBN4)을 순차적으로 출력할 수 있다.
제1 바이패스 인코딩 회로(510a)는 제2 범위(RB) 및 제2 로우 값(LB)을 기초로 제2 이진 값(BBN2)을 부호화하여 제2 비트 값(BBT2)을 발생할 수 있고, 제2 범위(RB) 및 제2 로우 값(LB)을 업데이트할 수 있다. 제2 바이패스 인코딩 회로(510b)는 제3 범위(RC) 및 제3 로우 값(LC)을 기초로 제3 이진 값(BBN3)을 부호화하여 제3 비트 값(BBT3)을 발생할 수 있고, 제3 범위(RC) 및 제3 로우 값(LC)을 업데이트할 수 있다. 제3 바이패스 인코딩 회로(510c)는 제4 범위(RD) 및 제4 로우 값(LD)을 기초로 제4 이진 값(BBN4)을 부호화하여 제4 비트 값(BBT4)을 발생할 수 있고, 제4 범위(RD) 및 제4 로우 값(LD)을 업데이트하여 업데이트된 제4 범위(RE) 및 업데이트된 제4 로우 값(LE)을 발생할 수 있다. 현재 바이패스 인코딩 회로에서 이용되는 범위 및 로우 값은 이전 바이패스 인코딩 회로에서 업데이트된 범위 및 로우 값일 수 있다.
비트 발생기(600)는 제2 내지 제4 비트 값들(BBT2~BBT4)을 포함하는 비트 스트림(BS)을 출력할 수 있다.
한편, 도 7의 예에서, 제4 내지 제6 바이패스 인코딩 회로들(510d~510f)은 구동하지 않을 수 있다.
도 8을 참조하면, 하나의 클럭 사이클 동안에 하나의 신택스 요소(SEC)에 대한 이진화가 수행될 수 있고, 하나의 클럭 사이클 동안에 복수의 이진 값들(BBN5, BBN6, BBN7, BBN8, BBN9, BBN10)에 대한 이진 산술 부호화가 수행될 수 있다. 즉, 도 8은 멀티-바이패스 부호화의 다른 예를 나타낼 수 있다.
구체적으로, 이진화기(100)는 제3 신택스 요소(SEC)를 이진화하여 제5, 제6, 제7, 제8, 제9, 제10 및 제11 이진 값들(BBN5, BBN6, BBN7, BBN8, BBN9, BBN10, BBN11)을 발생할 수 있고, 이진 버퍼(200)는 제5 내지 제11 이진 값들(BBN5~BBN11)을 순차적으로 저장할 수 있다. 현재 저장되어 있는 이진 값의 개수(즉, 7개)가 바이패스 인코딩 회로들(510a~510f)의 개수보다 적으므로, 이진 버퍼(200)는 저장된 모든 이진 값들(즉, BBN5~BBN11) 중 바이패스 인코딩 회로들(510a~510f)의 개수와 동일한 개수의 이진 값들(즉, BBN5~BBN10)을 순차적으로 출력할 수 있다.
제1 바이패스 인코딩 회로(510a)는 제5 범위(RE) 및 제5 로우 값(LE)을 기초로 제5 이진 값(BBN5)을 부호화하여 제5 비트 값(BBT5)을 발생할 수 있고, 제5 범위(RE) 및 제5 로우 값(LE)을 업데이트할 수 있다. 제2 바이패스 인코딩 회로(510b)는 제6 범위(RF) 및 제6 로우 값(LF)을 기초로 제6 이진 값(BBN6)을 부호화하여 제6 비트 값(BBT6)을 발생할 수 있고, 제6 범위(RF) 및 제6 로우 값(LF)을 업데이트할 수 있다. 제3 바이패스 인코딩 회로(510c)는 제7 범위(RG) 및 제7 로우 값(LG)을 기초로 제7 이진 값(BBN7)을 부호화하여 제7 비트 값(BBT7)을 발생할 수 있고, 제7 범위(RG) 및 제7 로우 값(LG)을 업데이트할 수 있다. 제4 바이패스 인코딩 회로(510d)는 제8 범위(RH) 및 제8 로우 값(LH)을 기초로 제8 이진 값(BBN8)을 부호화하여 제8 비트 값(BBT8)을 발생할 수 있고, 제8 범위(RH) 및 제8 로우 값(LH)을 업데이트할 수 있다. 제5 바이패스 인코딩 회로(510e)는 제9 범위(RI) 및 제9 로우 값(LI)을 기초로 제9 이진 값(BBN9)을 부호화하여 제9 비트 값(BBT9)을 발생할 수 있고, 제9 범위(RI) 및 제9 로우 값(LI)을 업데이트할 수 있다. 제6 바이패스 인코딩 회로(510f)는 제10 범위(RJ) 및 제10 로우 값(LJ)을 기초로 제10 이진 값(BBN10)을 부호화하여 제10 비트 값(BBT10)을 발생할 수 있고, 제10 범위(RJ) 및 제10 로우 값(LJ)을 업데이트하여 업데이트된 제10 범위(RK) 및 업데이트된 제10 로우 값(LK)을 발생할 수 있다. 현재 바이패스 인코딩 회로에서 이용되는 범위 및 로우 값은 이전 바이패스 인코딩 회로에서 업데이트된 범위 및 로우 값일 수 있다.
비트 발생기(600)는 제5 내지 제10 비트 값들(BBT5~BBT10)을 포함하는 비트 스트림(BS)을 출력할 수 있다.
한편, 도시하지는 않았지만, 도 8의 동작이 수행된 이후에, 현재 발생된 이진 값(BBN11)과 다음에 발생될 이진 값이 함께 부호화될 수 있다.
한편, 도 7의 예에서 바이패스 인코딩 회로들(510a~510c)이 비트 값들(BBT2~BBT4)을 발생하는 동작들 및 도 8의 예에서 바이패스 인코딩 회로들(510a~510f)이 비트 값들(BBT5~BBT10)을 발생하는 동작들은, 도 4a 및 4b를 참조하여 상술한 것처럼 하나의 클럭 사이클 동안에 병렬적으로 처리될 수 있다.
도 6, 7 및 8을 참조하여 상술한 것처럼, 상기 바이패스 부호화를 수행하고자 하는 상기 제2 동작 모드에서, 하나의 클럭 사이클 동안에 이진화기(100)에서 발생되는 이진 값들의 개수는 바이패스 인코딩 회로들(510a~510c)의 개수와 독립적일 수 있으며, 따라서 다양한 종류의 이진 시퀀스들을 효율적으로 병렬 처리할 수 있고, 멀티-바이패스 부호화를 효율적으로 수행할 수 있다.
도 2 내지 8을 참조하여, 특정 개수의 신택스 요소들 및 이진 값들과, 특정 개수의 이진 인코딩 회로들(310a~310d) 및 바이패스 인코딩 회로들(510a~510c)에 기초하여 본 발명의 실시예들에 따른 엔트로피 인코더(10)의 동작을 설명하였으나, 본 발명의 실시예들에 따른 엔트로피 인코더는 임의의 개수의 신택스 요소들에 기초하여 임의의 개수의 이진 값들을 발생할 수 있고, 임의의 개수의 이진 인코딩 회로들 및 바이패스 인코딩 회로들을 포함하여 구현될 수 있으며, 이진 버퍼(200)를 이용하여 다양한 종류의 이진 시퀀스들을 효율적으로 병렬 처리하도록 구현될 수 있다.
한편, 본 발명의 엔트로피 인코더의 구동 방법은, 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 포함하는 제품 등의 형태로 구현될 수도 있다. 상기 컴퓨터로 판독 가능한 프로그램 코드는 다양한 컴퓨터 또는 다른 데이터 처리 장치의 프로세서로 제공될 수 있다. 상기 컴퓨터로 판독 가능한 매체는 컴퓨터로 판독 가능한 신호 매체 또는 컴퓨터로 판독 가능한 기록 매체일 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 명령어 실행 시스템, 장비 또는 장치 내에 또는 이들과 접속되어 프로그램을 저장하거나 포함할 수 있는 임의의 유형적인 매체일 수 있다.
도 9는 본 발명의 실시예들에 따른 비디오 인코더를 나타내는 순서도이다.
도 9를 참조하면, 비디오 인코더(700)는 모드 결정 블록(mode decision block, MD)(710), 압축 블록(compression block)(720) 및 엔트로피 인코더(entropy encoder, EC)(730)를 포함한다. 비디오 인코더(700)는 복원 블록(reconstruction block)(740) 및 저장 블록(storage block, STG)(750)을 더 포함할 수 있다.
본 발명의 실시예들에 따른 비디오 인코더(700)는 비디오 데이터를 영상(picture) 단위로 부호화(coding)한다. 예를 들어, 상기 복수의 입력 영상들은 순차 스캔 방식(progressive scan form)에서의 프레임(frame)에 상응할 수도 있고 비월 스캔 방식(interlaced scan form)에서의 필드(field)에 상응할 수도 있다.
모드 결정 블록(710)은 현재 영상(CP) 및 참조 영상(REF)에 기초하여 예측 영상(PRE) 및 인코딩 정보(INF)를 발생한다. 예를 들어, 모드 결정 블록(710)은 현재 영상(CP)에 대한 예측 동작을 수행할 수 있고, 상기 예측 동작은 다른 영상을 참조하지 않는 예측을 나타내는 인트라 예측(intra prediction) 및 다른 영상을 참조하는 예측을 나타내는 인터 예측(inter prediction)을 포함할 수 있다. 인코딩 정보(INF)는 상기 예측 동작의 결과를 나타내는 정보들, 예를 들어 움직임 벡터, 영상 순번을 나타내는 영상 순서 카운트, 영상의 부호화 모드 또는 예측 모드를 나타내는 영상 타입 등을 포함할 수 있다.
모드 결정 블록(710)은 상기 움직임 벡터를 획득하는 움직임 추정부(motion estimation unit, ME)(712), 상기 움직임 벡터에 기초하여 보상 동작을 수행하는 움직임 보상부(motion compensation unit, MC)(714) 및 인트라 예측을 수행하는 인트라 예측부(intra prediction unit, INTP)(716)를 포함할 수 있다. 움직임 추정부(712) 및 움직임 보상부(714)를 인터 예측부라고 부를 수 있으며, 상기 인터 예측부는 상기 인터 예측을 수행할 수 있다.
압축 블록(720)은 현재 영상(CP) 및 예측 영상(PRE)을 기초로 현재 영상(CP)을 부호화하여 인코딩 데이터(ECD)를 발생한다. 압축 블록(720)은 감산부(subtractor)(722), 변환부(transform unit, T)(724) 및 양자화부(quantization unit, Q)(726)를 포함할 수 있다. 감산부(722)는 현재 영상(CP)에서 예측 영상(PRE)을 감산하여 잔차 영상(RES)을 발생할 수 있다. 변환부(724) 및 양자화부(726)는 잔차 영상(RES)을 변환 및 양자화하여 인코딩 데이터(ECD)를 발생할 수 있다.
일 실시예에서, 변환부(724)는 상기 잔차 블록에 대하여 공간적 변환(spatial transform)을 수행할 수 있다. 이러한 공간적 변환 방법으로는 이산 여현 변환(discrete cosine transform; DCT), 웨이브렛 변환(wavelet transform) 등이 사용될 수 있다. 양자화(quantization)는 임의의 값으로 표현되는 상기 변환 계수를 일정 구간으로 나누어 불연속적인 값(discrete value)으로 나타내는 작업을 나타낸다. 이러한 양자화 방법으로는 스칼라 양자화, 벡터 양자화 등의 방법이 있다. 한편, 공간적 변환 방법으로 웨이브렛 변환을 이용하는 경우에는 양자화 방법으로서 주로 엠베디드 양자화(embedded quantization) 방법을 이용할 수 있다. 이러한 엠베디드 양자화 방법으로는 EZW(embedded zerotrees wavelet algorithm), SPIHT(set partitioning in hierarchical trees), EZBC(embedded zeroblock coding) 등이 있다. 이와 같은 엔트로피 인코딩 이전 단계까지의 부호화 과정을 손실 부호화 과정이라고 한다.
엔트로피 인코더(730)는 인코딩 데이터(ECD) 및 인코딩 정보(INF)를 무손실 부호화하여 비트 스트림(EP)을 발생한다. 엔트로피 인코더(730)는 도 1의 엔트로피 인코더(10)일 수 있다. 예를 들어, 인코딩 데이터(ECD) 및 인코딩 정보(INF)는 도 1의 신택스 요소들(SE)에 대응할 수 있다. 엔트로피 인코더(730)는 CABAC에 기초하여 동작할 수 있고, 이진화기(100)와 인코딩 엔진들(300, 500) 사이에 이진 버퍼(200)가 배치되어 이진화기(100)와 인코딩 엔진들(300, 500)을 분리하여 독립적으로 구동할 수 있다. 또한, 인코딩 엔진들(300, 500)에 포함되는 인코딩 회로들(310a~310m, 510a~510n)의 개수를 독립적으로 결정할 수 있고, 이진화기(100)에서 발생되는 이진 값들(BN)의 개수가 인코딩 회로들(310a~310m, 510a~510n)의 개수와 독립적일 수 있으며, 다양한 종류의 이진 시퀀스들을 효율적으로 병렬 처리할 수 있다. 따라서, 엔트로피 인코더(730)의 성능 및 압축 효율이 향상될 수 있다.
복원 블록(740)은 인코딩 데이터(ECD)를 복호화하여 재구성 영상(CP')을 복원할 수 있다. 복원 블록(740)은 역양자화부(inverse quantization unit)(742), 역변환부(inverse transform unit)(744) 및 가산부(adder)(746)를 포함할 수 있다. 역양자화부(742) 및 역변환부(744)는 인코딩 데이터(ECD)를 역양자화 및 역변환하여 잔차 영상(RES')를 발생할 수 있다. 가산부(746)는 예측 영상(PRE)과 잔차 영상(RES')을 가산하여 재구성 영상(CP')을 발생할 수 있다. 복원 블록(740)의 동작은 압축 블록(720)의 동작의 역에 해당할 수 있다. 재구성 영상(CP')은 저장 블록(750)에 저장되어 참조 영상으로서 이용될 수 있다.
한편, 도시하지는 않았지만, 비디오 인코더(700)는 엔트로피 인코더(730)의 후단에 배치되는 버퍼(encoded picture buffer)를 더 포함할 수도 있고, 가산부(746)와 저장부(750) 사이에 배치되는 디블록킹(deblocking) 필터 및/또는 SAO(sample adaptive offset) 필터를 더 포함할 수도 있다.
도 10은 본 발명의 실시예들에 따른 비디오 인코딩 및 디코딩 시스템을 나타내는 블록도이다.
도 10을 참조하면, 비디오 인코딩 및 디코딩 시스템(800)은 유/무선의 채널(830)을 통해 서로 통신할 수 있는 제1 장치(810) 및 제2 장치(820)를 포함할 수 있다.
제1 및 제2 장치들(810, 820)은 각각 소스(source) 장치 및 목적지(destination) 장치라고 부를 수 있다. 도시의 편의상, 비디오 인코딩 및 디코딩 시스템(800)의 동작과 관련성이 적은 제1 및 제2 장치들(810, 820)의 구성요소들은 생략하였다.
제1 장치(810)는 비디오 데이터를 제공하는 비디오 소스(812), 상기 비디오 데이터를 부호화하는 비디오 인코더(814), 및 상기 부호화된 비디오 데이터를 채널(530)을 통해 전송하는 송신부(816)를 포함할 수 있다. 비디오 인코더(814)는 본 발명의 실시예들에 따른 비디오 인코더일 수 있다. 제2 장치(820)는 상기 부호화된 비디오 데이터를 수신하는 수신부(822), 상기 부호화된 비디오 데이터를 복호화하는 비디오 디코더(824), 및 상기 복호화된 비디오 데이터에 기초하여 영상을 표시하는 표시 장치(826)를 포함할 수 있다.
한편, 본 발명의 실시예들에 따른 비디오 인코더는 비디오 디코더와 하나로 통합되어 구현될 수 있다. 상기와 같이 비디오 인코더 및 비디오 디코더가 통합되어 구현된 구성요소를 비디오 코덱(codec)이라 부를 수 있다.
도 11은 본 발명의 실시예들에 따른 전자 시스템을 나타내는 블록도이다.
도 11을 참조하면, 전자 시스템(1000)은 비디오 소스(1010) 및 비디오 코덱(1020)을 포함한다. 전자 시스템(1000)은 프로세서(1030), 통신부(connectivity)(1040), 저장 장치(1050), 입출력 장치(1060) 및 전원 공급 장치(1070)를 더 포함할 수 있다.
비디오 소스(1010)는 복수의 입력 영상들(INP)을 제공한다. 예를 들어, 비디오 소스(1010)는 촬상 장치, 저장 장치 등을 포함할 수 있다.
비디오 코덱(1020)은 본 발명의 실시예들에 따른 비디오 인코더 및 비디오 디코더를 포함할 수 있다. 상기 비디오 인코더는 복수의 입력 영상들(INP)에 대한 부호화 동작을 수행할 수 있다.
프로세서(1030)는 특정 계산들 또는 태스크들과 같은 다양한 컴퓨팅 기능들을 실행할 수 있다. 통신부(1040)는 외부 장치와 통신을 수행할 수 있고, 송신부(1042) 및 수신부(1044)를 포함할 수 있다. 저장 장치(1050)는 전자 시스템(1000)에 의해 처리되는 데이터를 저장할 수 있다. 입출력 장치(1060)는 키보드, 터치 스크린 등과 같은 입력 장치 및 디스플레이(1062) 등과 같은 출력 장치를 포함할 수 있다. 전원 공급 장치(1070)는 구동 전압을 제공할 수 있다.
본 발명은 비디오 데이터를 부호화하는 임의의 장치 및 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들에 따른 엔트로피 인코더 및 비디오 인코더는 MPEG(Moving Picture Expert Group), H.261, H.262/MPEG-2 파트 2, H.263, MPEG-4, H.264/MPEG-4 파트 10 AVC, HEVC/H.265 등의 다양한 비디오 부호화 표준에 따르는 임의의 장치 및 시스템에 적용될 수 있으며, CATV(Cable TV on optical networks, copper, etc.), DBS(Direct broadcast satellite video services), DSL(Digital subscriber line video services), DTTB(Digital terrestrial television broadcasting), ISM(Interactive storage media (optical disks, etc.)), MMM(Multimedia mailing), MSPN(Multimedia services over packet networks), RTC(Real-time conversational services (video conferencing, videophone, etc.)), RVS(Remote video surveillance), SSM(Serial storage media (digital VTR, etc.)) 등의 기술분야에서 유용하게 이용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 복수의 신택스 요소(syntax element)들에 기초하여 복수의 이진 값(bin)들을 발생하는 이진화기(binarizer);
    상기 복수의 이진 값들을 순차적으로 저장하고, 저장 상태에 따라 상기 복수의 이진 값들 중 적어도 일부를 출력하는 이진 버퍼(bin buffer);
    상기 이진 버퍼에서 하나의 이진 값이 출력되는 경우에 하나의 컨텍스트 값(context)을 기초로 상기 하나의 이진 값에 대한 부호화를 수행하고, 상기 이진 버퍼에서 두 개 이상의 이진 값들이 출력되는 경우에 두 개 이상의 컨텍스트 값들을 기초로 상기 두 개 이상의 이진 값들에 대한 멀티-이진(multi-bin) 부호화를 수행하는 복수의 이진 인코딩 회로들; 및
    상기 복수의 이진 인코딩 회로들에서 출력되는 비트 값(bit)들에 기초하여 비트 스트림을 발생하는 비트 발생기를 포함하는 엔트로피 인코더.
  2. 제 1 항에 있어서, 상기 이진 버퍼는,
    상기 이진 버퍼에 현재 저장되어 있는 저장 이진 값들의 개수가 상기 복수의 이진 인코딩 회로들의 개수보다 적은 경우에, 상기 저장 이진 값들을 모두 출력하고,
    상기 저장 이진 값들의 개수가 상기 복수의 이진 인코딩 회로들의 개수보다 많거나 같은 경우에, 상기 저장 이진 값들 중 상기 복수의 이진 인코딩 회로들의 개수와 동일한 M(M은 2 이상의 자연수)개의 이진 값들을 출력하는 것을 특징으로 하는 엔트로피 인코더.
  3. 제 2 항에 있어서,
    상기 M개의 이진 값들은 상기 저장 이진 값들 중 상기 이진 버퍼에 저장된 지 오래된 이진 값들인 것을 특징으로 하는 엔트로피 인코더.
  4. 제 1 항에 있어서,
    하나의 클럭 사이클 동안에 상기 이진화기에서 발생되는 이진 값들의 개수는, 상기 복수의 이진 인코딩 회로들의 개수와 독립적인 것을 특징으로 하는 엔트로피 인코더.
  5. 제 1 항에 있어서,
    상기 이진화기는 상기 복수의 신택스 요소들에 기초하여 복수의 컨텍스트 인덱스(context index)들을 더 발생하고,
    상기 이진 버퍼는 상기 복수의 컨텍스트 인덱스들을 더 저장하며,
    상기 복수의 이진 값들 및 상기 복수의 컨텍스트 인덱스들에 기초하여, 상기 복수의 이진 값들을 부호화하기 위한 컨텍스트 모델들을 나타내는 복수의 컨텍스트 값들을 선택하는 컨텍스트 모델러(modeler)를 더 포함하는 것을 특징으로 하는 엔트로피 인코더.
  6. 제 5 항에 있어서,
    상기 이진화기는 제1 및 제2 이진 값들 및 제1 및 제2 컨텍스트 인덱스들을 발생하고,
    상기 이진 버퍼는 상기 제1 및 제2 이진 값들 및 상기 제1 및 제2 컨텍스트 인덱스들을 저장 및 출력하고,
    상기 컨텍스트 모델러는 상기 제1 및 제2 이진 값들 및 상기 제1 및 제2 컨텍스트 인덱스들에 기초하여 제1 및 제2 컨텍스트 값들을 선택하며,
    상기 복수의 이진 인코딩 회로들 중 제1 이진 인코딩 회로는 상기 제1 컨텍스트 값, 제1 범위 및 제1 로우 값을 기초로 상기 제1 이진 값을 부호화하여 제1 비트 값을 발생하고, 상기 제1 컨텍스트 값, 상기 제1 범위 및 상기 제1 로우 값을 업데이트하며,
    상기 복수의 이진 인코딩 회로들 중 제2 이진 인코딩 회로는 상기 제2 컨텍스트 값, 제2 범위 및 제2 로우 값을 기초로 상기 제2 이진 값을 부호화하여 제2 비트 값을 발생하고, 상기 제2 컨텍스트 값, 상기 제2 범위 및 상기 제2 로우 값을 업데이트하는 것을 특징으로 하는 엔트로피 인코더.
  7. 제 6 항에 있어서,
    상기 제2 범위는 상기 업데이트된 제1 범위와 동일하고,
    상기 제2 로우 값은 상기 업데이트된 제1 로우 값과 동일한 것을 특징으로 하는 엔트로피 인코더.
  8. 제 6 항에 있어서,
    상기 제1 이진 인코딩 회로가 상기 제1 비트 값을 발생하는 동작 및 상기 제2 이진 인코딩 회로가 상기 제2 비트 값을 발생하는 동작은 하나의 클럭 사이클 동안에 병렬적으로 처리되는 것을 특징으로 하는 엔트로피 인코더.
  9. 제 1 항에 있어서,
    컨텍스트 값 없이 상기 이진 버퍼에서 출력되는 적어도 하나의 이진 값에 대한 부호화를 수행하는 복수의 바이패스(bypass) 인코딩 회로들을 더 포함하는 것을 특징으로 하는 엔트로피 인코더.
  10. 현재 영상 및 참조 영상에 기초하여 예측 영상 및 인코딩 정보를 발생하는 모드 결정 블록;
    상기 현재 영상 및 상기 예측 영상을 기초로 상기 현재 영상을 부호화하여 인코딩 데이터를 발생하는 압축 블록; 및
    상기 인코딩 데이터 및 상기 인코딩 정보를 부호화하여 비트 스트림을 발생하는 엔트로피 인코더를 포함하고,
    상기 엔트로피 인코더는,
    상기 인코딩 데이터 및 상기 인코딩 정보에 기초하여 복수의 이진 값(bin)들을 발생하는 이진화기(binarizer);
    상기 복수의 이진 값들을 순차적으로 저장하고, 저장 상태에 따라 상기 복수의 이진 값들 중 적어도 일부를 출력하는 이진 버퍼(bin buffer);
    상기 이진 버퍼에서 하나의 이진 값이 출력되는 경우에 하나의 컨텍스트 값(context)을 기초로 상기 하나의 이진 값에 대한 부호화를 수행하고, 상기 이진 버퍼에서 두 개 이상의 이진 값들이 출력되는 경우에 두 개 이상의 컨텍스트 값들을 기초로 상기 두 개 이상의 이진 값들에 대한 멀티-이진(multi-bin) 부호화를 수행하는 복수의 이진 인코딩 회로들; 및
    상기 복수의 이진 인코딩 회로들에서 출력되는 비트 값(bit)들에 기초하여 상기 비트 스트림을 발생하는 비트 발생기를 포함하는 비디오 인코더.
KR1020170012257A 2017-01-25 2017-01-25 엔트로피 인코더 및 이를 포함하는 비디오 인코더 KR20180087771A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170012257A KR20180087771A (ko) 2017-01-25 2017-01-25 엔트로피 인코더 및 이를 포함하는 비디오 인코더
US15/699,374 US10291913B2 (en) 2017-01-25 2017-09-08 Entropy encoder, video encoder including the same and electronic system including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170012257A KR20180087771A (ko) 2017-01-25 2017-01-25 엔트로피 인코더 및 이를 포함하는 비디오 인코더

Publications (1)

Publication Number Publication Date
KR20180087771A true KR20180087771A (ko) 2018-08-02

Family

ID=62906872

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170012257A KR20180087771A (ko) 2017-01-25 2017-01-25 엔트로피 인코더 및 이를 포함하는 비디오 인코더

Country Status (2)

Country Link
US (1) US10291913B2 (ko)
KR (1) KR20180087771A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11108406B2 (en) * 2019-06-19 2021-08-31 Intel Corporation System, apparatus and method for dynamic priority-aware compression for interconnect fabrics

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4513841B2 (ja) 2007-08-28 2010-07-28 ソニー株式会社 符号化装置、符号化方法、符号化方法のプログラム及び符号化方法のプログラムを記録した記録媒体
US7522076B1 (en) 2007-10-16 2009-04-21 Mediatek Inc. Parallel context adaptive binary arithmetic coding
US8542727B2 (en) 2007-12-31 2013-09-24 Intel Corporation Systems and apparatuses for performing CABAC parallel encoding and decoding
US8138956B2 (en) 2008-06-02 2012-03-20 Mediatek Inc. CABAC encoder and CABAC encoding method
US10349070B2 (en) 2010-09-30 2019-07-09 Texas Instruments Incorporated Simplified binary arithmetic coding engine
RS64604B1 (sr) * 2011-06-16 2023-10-31 Ge Video Compression Llc Entropijsko kodiranje razlika vektora kretanja
US20130083856A1 (en) 2011-06-29 2013-04-04 Qualcomm Incorporated Contexts for coefficient level coding in video compression
EP2988511A1 (en) 2011-08-04 2016-02-24 MediaTek Inc. Method and apparatus for reordered binarization of syntax elements in cabac
US20130272373A1 (en) 2011-11-15 2013-10-17 Intel Corporation Video encoder with 2-bin per clock cabac encoding
US9503717B2 (en) 2012-01-09 2016-11-22 Texas Instruments Incorporated Context adaptive binary arithmetic coding (CABAC) with scalable throughput and coding efficiency
WO2013106987A1 (en) 2012-01-16 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of bypass coding and reducing contexts for some syntax elements
US9681133B2 (en) 2012-03-29 2017-06-13 Intel Corporation Two bins per clock CABAC decoding
US9392292B2 (en) 2013-09-27 2016-07-12 Apple Inc. Parallel encoding of bypass binary symbols in CABAC encoder
JP6159240B2 (ja) 2013-12-09 2017-07-05 日本電信電話株式会社 二値算術符号化装置、二値算術符号化方法及び二値算術符号化プログラム

Also Published As

Publication number Publication date
US20180213231A1 (en) 2018-07-26
US10291913B2 (en) 2019-05-14

Similar Documents

Publication Publication Date Title
US11843794B2 (en) CABAC decoder with decoupled arithmetic decoding and inverse binarization
US20230016033A1 (en) Video intra prediction using hybrid recursive filters
EP3709519B1 (en) Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
EP3484161B1 (en) Separately coding the position of a last significant coefficient of a video block in video coding
RU2576590C2 (ru) Вывод позиции в порядке сканирования последнего значимого коэффициента преобразования при кодировании видеосигнала
JP6162150B2 (ja) ビデオコーディング用の残差4分木(rqt)コーディング
RU2645291C2 (ru) Кодирование параметра квантования (qp) при кодировании видео
US9854253B2 (en) Method for motion vector difference (MVD) and intra block copy vector difference (BVD) coding of screen content video data
CN112352429B (zh) 对视频数据进行编解码的方法、设备和存储介质
US20110206289A1 (en) Guaranteed-Rate Tiled Image Data Compression
EP3164993B1 (en) Method for palette mode coding
US20120163448A1 (en) Coding the position of a last significant coefficient of a video block in video coding
CN113615177A (zh) 进行帧内预测的编码器、解码器和对应方法
CN103190147A (zh) 用于视频译码的语法元素的联合译码
KR20050021445A (ko) 비디오 데이타의 인트라코딩 방법 및 장치
WO2012078762A1 (en) Codeword adaptation for variable length coding
JP7450747B2 (ja) 混成nalユニットタイプに基づく画像符号化/復号化方法及び装置、並びにビットストリームを伝送する方法
JP2024038212A (ja) 混成nalユニットタイプに基づく画像符号化/復号化方法及び装置、並びにビットストリームを伝送する方法
US10291913B2 (en) Entropy encoder, video encoder including the same and electronic system including the same
KR20130085088A (ko) 스케일러블 비디오 코딩에서의 고속 모드 결정 방법 및 그 장치
US20130188740A1 (en) Method and apparatus for entropy encoding/decoding
JP7436703B2 (ja) Dpbパラメータをシグナリングする画像符号化/復号化方法及び装置、並びにビットストリームを保存したコンピュータ可読記録媒体

Legal Events

Date Code Title Description
A201 Request for examination