KR20170035855A - 컨텍스트 기반의 산술 복호화 장치 및 방법 - Google Patents

컨텍스트 기반의 산술 복호화 장치 및 방법 Download PDF

Info

Publication number
KR20170035855A
KR20170035855A KR1020170034922A KR20170034922A KR20170035855A KR 20170035855 A KR20170035855 A KR 20170035855A KR 1020170034922 A KR1020170034922 A KR 1020170034922A KR 20170034922 A KR20170034922 A KR 20170034922A KR 20170035855 A KR20170035855 A KR 20170035855A
Authority
KR
South Korea
Prior art keywords
context
tuple
msb
current
decoding
Prior art date
Application number
KR1020170034922A
Other languages
English (en)
Other versions
KR101882948B1 (ko
Inventor
주기현
김중회
오은미
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170035855A publication Critical patent/KR20170035855A/ko
Application granted granted Critical
Publication of KR101882948B1 publication Critical patent/KR101882948B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/18Vocoders using multiple modes
    • G10L19/20Vocoders using multiple modes using sound class specific coding, hybrid encoders or object based coding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/0017Lossless audio signal coding; Perfect reconstruction of coded audio signal by transmission of coding error
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/002Dynamic bit allocation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/008Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
    • 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
    • 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
    • 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]

Abstract

컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법이 개시된다. 컨텍스트 기반의 산술복호화 장치는 복호화하고자 하는 현재 N-튜플의 컨텍스트를 결정하는 N-튜플 컨텍스트 결정부; 상기 N-튜플 컨텍스트에 기초하여 탈출 코드에 대해 복호화를 수행하는 탈출 코드 복호화부; 상기 현재 N-튜플을 구성하는 상위 비트(MSB) 심볼에 대응하는 상위 비트 컨텍스트를 결정하는 MSB 컨텍스트 결정부; 상기 N-튜플 컨텍스트 및 상기 상위 비트 컨텍스트를 이용하여 확률 모델을 결정하는 확률 모델 매핑부; 상기 결정된 확률 모델에 기초하여 상위 비트에 대해 복호화를 수행하는 MSB 복호화부; 및 상기 탈출 코드에 대한 복호화 과정에서 도출된 하위 비트의 비트 깊이에 기초하여 하위 비트를 복호화하는 하위비트 복호화부를 포함할 수 있다.

Description

컨텍스트 기반의 산술 복호화 장치 및 방법{APPARATUS AND METHOD FOR ARITHMETIC DECODING BASED CONTEXT}
본 발명은 오디오 신호의 부호화(coding) 및 복호화(decoding) 방법에 관한 것으로서, 특히 무손실(lossless) 부호화 및 복호화 방법에 관한 것이다.
오디오(audio) 신호는 주로 주파수 도메인에서 부호화 및 복호화를 수행한다. 대표적인 예로 AAC(Advanced Audio Coding)를 들 수 있다. AAC 코덱이 그 예인데, AAC 코덱은 주파수 도메인으로 변환하기 위한 MDCT(Modified Discrete Cosine Transform)을 수행하고, 심리음향 관점에서 신호의 마스킹 정도를 이용하여 주파수 스펙트럼 양자화를 수행한다. 수행된 양자화 결과를 더 압축하기 위해서 무손실 압축 방식을 적용하는데, AAC에서는 Huffman coding을 사용한다. 무손실 압축 방식으로 Huffman coding 방식 대신에 Arithmetic coding을 적용한 BSAC (Bit-sliced Arithmetic Coding) 코덱도 사용될 수 있다.
음성(speech) 신호는 주로 시간 도메인에서 부호화 및 복호화를 수행한다. 시간 도메인에서 압축하는 음성 코덱의 대부분은 CELP 계열이다. CELP(Code Excitation Linear Prediction)는 음성 부호화 기술로 현재 거의 주로 사용되는 G.729, AMR-NB, AMR-WB, iLBC EVRC 등이 CELP 기반의 음성 부호화기이다. 이러한 코딩 기법은 음성 신호가 선형예측 (linear prediction)을 통해 얻을 수 있다는 가정 하에서 개발된다. 음성을 부호화 하는데 있어서, 선형예측 계수와 여기 신호(excitation signal)가 필요하다. 일반적으로 선형 예측 계수는 LSP를 이용하여 부호화되고, 여기 신호는 몇 개의 코드북(codebook)을 이용하여 부호화될 수 있다. CELP를 기반으로 발전한 부호화 기법으로는 ACELP, CS-CELP 등이 있다.
전송율에 대한 제약과 심리 음향 관점에서 저주파수 대역과 고주파수 대역의 민감도의 차이로 인하여, 저주파수 대역은 음성/음악의 주파수 상의 미세 구조에 민감하고, 고주파수 대역은 미세 구조에 저주파수 대역에 비해 덜 민감하다는 사실에 근거하여, 저주파수 대역은 많은 비트를 할당하여 미세 구조를 자세히 코딩하고, 고주파수 대역은 적은 비트를 할당하여 코딩하는 방식이 적용되고 있다. 이러한 기술은 저주파수 대역은 AAC와 같은 코덱을 사용하여 미세 구조를 자세히 코딩하는 방식을 적용하고, 고주파수는 에너지 정보 및 조절 정보로 표현하는 방식이 SBR (Spectral Band Replication) 기술이다. SBR은 QMF(Quadrature Mirror Filter) 도메인에서 저주파수 신호를 복사하여 고주파수 신호를 생성하는 방식이다.
사용 비트를 줄이는 방식에 대해서는 스테레오 신호에 대해서도 적용된다. 더욱 상세하게는, 스테레오 신호를 모노 신호로 변환한 후에 스테레오 정보를 표현하는 파라미터를 추출하여, 스테레오 파라미터 및 모노 신호를 압축한 데이터를 전송하여 전송된 파라미터를 이용해서 복호화기에서 스테레오 신호를 복호화할 수 있다. 이런 스테레오 정보를 압축 하는 방식으로 Parametric Stereo (PS) 기술이 있고, 스테레오뿐만 아니라 멀티 채널 신호의 파라미터를 추출하여 전송하는 방식으로 MPEG surround 기술이 있다.
또한, 위에서 설명한 무손실 부호화의 대상을 좀 더 구체적으로 살펴보면 양자화된 스펙트럼의 양자화 된 값을 한 개의 심볼로 보고 무손실 부호화를 수행할 수 있다. 그리고 양자화된 스펙트럼의 값을 비트플레인 상에서 매핑시켜서 비트를 묶는 방법으로 부호화 하는 경우도 있다.
Context 기반 무손실 부호화를 수행하는 경우에 이전 frame의 정보를 사용하여 무손실 부호화를 수행하는 것이 가능하다.
MPEG-D USAC(Unified Speech and Audio Coding)는 음성과 오디오를 하나의 코덱으로 효율적으로 부호화하기 위한 기술이다. USAC는 주파수 도메인 부호화 혹은 가중 선형 예측 변환(weighted Linear Prediction Transform) 에서는 양자화된 주파수 성분을 무손실 부호화하는데 있어서 이전 프레임의 양자화 샘플과 이미 복호화된 주변 양자화 샘플을 이용하여 문맥을 계산한 뒤 이를 확률 모델 결정에 사용한다.
부호화 및 복호화 효율(coding efficiency)을 높이고 메모리의 필요 공간을 줄일 수 있는 장치 및 방법을 제공한다.
본 발명의 일실시예에 따른 산술부호화 장치는 부호화하고자 하는 현재 N-튜플의 컨텍스트를 결정하는 N-튜플 컨텍스트 결정부, 상기 N-튜플 컨텍스트에 기초하여 탈출 코드에 대해 부호화를 수행하는 탈출 코드 부호화부, 상기 현재 N-튜플을 구성하는 상위 비트(MSB) 심볼에 대응하는 상위 비트 컨텍스트를 결정하는 MSB 컨텍스트 결정부, 상기 N-튜플 컨텍스트 및 상기 상위 비트 컨텍스트를 이용하여 확률 모델을 결정하는 확률 모델 매핑부, 상기 결정된 확률 모델에 기초하여 상위 비트에 대해 부호화를 수행하는 MSB 부호화부 및 상기 탈출 코드에 대한 부호화 과정에서 도출된 하위 비트의 비트 깊이에 기초하여 하위 비트를 부호화하는 하위비트 부호화부를 포함할 수 있다.
본 발명의 일실시예에 따른 산술 부호화 장치는 현재 프레임이 리셋 프레임인 경우, 컨텍스트 리셋을 수행하는 컨텍스트 리셋부 및 상기 현재 프레임이 리셋 프레임이 아닌 경우, 현재 프레임의 길이와 이전 프레임의 길이 간에 주파수 인덱스를 매핑하기 위해 컨텍스트를 매핑하는 컨텍스트 매핑부를 더 포함할 수 있다.
본 발명의 일실시예에 따른 산술 부호화 장치는 상기 상위 비트를 부호화할 때 사용할 복수 개의 상위 비트 컨텍스트 중 1개의 컨텍스트 모드를 부호화하는 컨텍스트 모드 부호화부를 더 포함할 수 있다.
본 발명의 일실시예에 따른 산술복호화 장치는 복호화하고자 하는 현재 N-튜플의 컨텍스트를 결정하는 N-튜플 컨텍스트 결정부, 상기 N-튜플 컨텍스트에 기초하여 탈출 코드에 대해 복호화를 수행하는 탈출 코드 복호화부, 상기 현재 N-튜플을 구성하는 상위 비트(MSB) 심볼에 대응하는 상위 비트 컨텍스트를 결정하는 MSB 컨텍스트 결정부, 상기 N-튜플 컨텍스트 및 상기 상위 비트 컨텍스트를 이용하여 확률 모델을 결정하는 확률 모델 매핑부, 상기 결정된 확률 모델에 기초하여 상위 비트에 대해 복호화를 수행하는 MSB 복호화부 및 상기 탈출 코드에 대한 복호화 과정에서 도출된 하위 비트의 비트 깊이에 기초하여 하위 비트를 복호화하는 하위비트 복호화부를 포함할 수 있다.
본 발명의 일실시예에 따른 산술 복호화 장치는 현재 프레임이 리셋 프레임인 경우, 컨텍스트 리셋을 수행하는 컨텍스트 리셋부 및 상기 현재 프레임이 리셋 프레임이 아닌 경우, 현재 프레임의 길이와 이전 프레임의 길이 간에 주파수 인덱스를 매핑하기 위해 컨텍스트를 매핑하는 컨텍스트 매핑부를 더 포함할 수 있다.
본 발명의 일실시예에 따른 산술 복호화 장치는 상기 상위 비트를 복호화할 때 사용할 복수 개의 상위 비트 컨텍스트 중 1개의 컨텍스트 모드를 복호화하는 컨텍스트 모드 복호화부를 더 포함할 수 있다.
본 발명의 일실시예에 따른 컨텍스트 기반의 산술 복호화 방법은 복호화하고자 하는 현재 N-튜플의 주변에 위치한 주변 N-튜플에 기초한 N-튜플 컨텍스트를 이용하여 상기 현재 N-튜플의 상위 비트(MSB)를 복호화하는 단계; 및 상기 상위 비트의 부호 정보에 기초한 하위비트 컨텍스트를 이용하여 상기 현재 N-튜플의 하위 비트(LSB)를 복호화하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 컨텍스트 기반의 산술 복호화 방법은 복호화하고자 하는 현재 N-튜플의 주변에 위치한 주변 N-튜플에 기초한 N-튜플 컨텍스트를 이용하여 상기 현재 N-튜플의 상위 비트를 복호화하는 단계; 및 상기 상위 비트의 부호 정보 및 하위 비트의 비트 깊이에 기초한 하위비트 컨텍스트를 이용하여 상기 현재 N-튜플의 하위 비트를 복호화하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 컨텍스트 기반의 산술 복호화 방법은 특정 서브셋 상태인지 여부를 고려하여 복호화하고자 하는 현재 N-튜플의 주변에 위치한 주변 N-튜플에 기초한 (1) N-튜플 컨텍스트를 이용하거나 또는 (2) 상기 N-튜플 컨텍스트 및 추가 컨텍스트를 이용하여 상기 현재 N-튜플의 상위 비트를 복호화하는 단계; 및 상기 상위 비트의 부호 정보에 기초한 하위비트 컨텍스트를 이용하여 상기 현재 N-튜플의 하위 비트(LSB)를 복호화하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 컨텍스트 기반의 산술 복호화 방법은 특정 상태인지 여부를 고려하여 복호화하고자 하는 현재 N-튜플의 주변에 위치한 주변 N-튜플에 기초한 (1) N-튜플의 컨텍스트를 이용하거나 또는 (2) 상기 N-튜플의 컨텍스트 및 추가 컨텍스트를 이용하여 상기 현재 N-튜플의 상위 비트를 복호화하는 단계; 및 상기 상위 비트의 부호 정보 및 하위 비트의 비트 깊이에 기초한 하위 비트 컨텍스트를 이용하여 상기 현재 N-튜플의 하위 비트를 복호화하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 컨텍스트 기반의 산술 복호화 방법은 복호화하고자 하는 현재 N-튜플의 컨텍스트 템플릿을 복호화하는 단계; 상기 현재 N-튜플에 대한 N-튜플 컨텍스트를 결정하는 단계; 상기 N-튜플 컨텍스트에 기초하여 탈출 코드에 대해 복호화를 수행하는 단계; 상기 복호화된 컨텍스트 템플릿에 기초하여 상기 현재 N-튜플을 구성하는 상위 비트(MSB) 심볼에 대응하는 상위 비트 컨텍스트를 결정하는 단계; 상기 N-튜플 컨텍스트 및 상기 상위 비트 컨텍스트를 이용하여 확률 모델을 결정하는 단계; 상기 결정된 확률 모델에 기초하여 상위 비트를 복호화하는 단계; 및 상기 탈출 코드에 대한 복호화 과정에서 도출된 하위 비트의 비트 깊이에 기초하여 하위 비트를 복호화하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 컨텍스트 기반의 산술 복호화 방법은 복호화하고자 하는 현재 1-튜플의 주변에 위치한 주변 1-튜플에 기초한 1-튜플 컨텍스트를 이용하여 상기 현재 1-튜플의 상위 비트(MSB)를 복호화하는 단계; 상기 상위 비트(MSB)를 복호화할 때, 상기 현재 1-튜플의 lev0 추정을 수행하기 위해 사용되는 주변 1-튜플의 절대값을 사용하여 lev0 추정을 수행하는 단계; 및 상기 현재 1-튜플의 하위 비트(LSB)를 복호화하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 컨텍스트 기반의 산술 복호화 방법은 복호화하고자 하는 현재 2-튜플의 주변에 위치한 주변 2-튜플에 기초한 2-튜플 컨텍스트 또는 추가 컨텍스트 중 적어도 하나를 이용하여 상기 현재 2-튜플의 상위 비트를 복호화하는 단계; 및 상기 현재 2-튜플의 상위 비트가 복호화되면, 상기 현재 2-튜플의 하위 비트를 복호화하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따르면, 부호화 및 복호화 효율(coding efficiency)을 높이고 메모리의 필요 공간을 줄일 수 있다.
도 1a는 USAC 부호화기를 도시한 도면이다.
도 1b는 USAC 복호화기를 도시한 도면이다.
도 2는 산술 부호화 장치(제1예)의 세부 구성을 도시한 도면이다.
도 3은 산술 복호화 장치(제1예)의 세부 구성을 도시한 도면이다.
도 4는 N-튜플, MSB, LSB를 설명하기 위한 도면이다.
도 5는 컨텍스트와 확률 모델을 도시한 도면이다.
도 6은 MSB 복호화 방식(제1예)을 도시한 도면이다.
도 7은 LSB 복호화 방식(제1예)을 도시한 도면이다.
도 8은 부호 분리를 이용한 MSB 복호화 방식을 도시한 도면이다.
도 9는 LSF를 이용한 부호화 및 복호화 방식을 도시한 도면이다.
도 10은 산술 부호화 장치(제2예)의 세부 구성을 도시한 도면이다.
도 11은 산술 복호화 장치(제2예)의 세부 구성을 도시한 도면이다.
도 12는 컨텍스트와 확률 모델을 도시한 도면이다.
도 13은 MSB 복호화 방식(제2예)을 도시한 도면이다.
도 14는 LSB 복호화 방식(제2예)을 도시한 도면이다.
도 15는 컨텍스트 모드를 도시한 도면이다.
도 16은 N-튜플에 대한 컨텍스트 기반의 산술 복호화 방법을 도시한 플로우차트이다.
도 17은 N-튜플에 대한 컨텍스트 기반의 산술 부호화 방법을 도시한 플로우차트이다.
도 18은 컨텍스트 모드를 구현하는 일례를 도시한 도면이다.
도 19는 산술 부호화 장치(제3예)의 세부 구성을 도시한 도면이다.
도 20은 산술 복호화 장치(제3예)의 세부 구성을 도시한 도면이다.
도 21은 1-튜플, MSB, LSB를 도시한 도면이다.
도 22는 컨텍스트 템플릿의 일례를 도시한 도면이다.
도 23은 Spectral Noiseless Coding의 과정을 도시한 도면이다.
도 24는 1-튜플에 대한 컨텍스트 기반의 산술 복호화 방법을 도시한 플로우차트이다.
도 25는 2-튜플을 도시한 도면이다.
도 26은 2-튜플에 대한 컨텍스트 템플릿을 도시한 도면이다.
도 27은 산술 부호화 장치(제4예)의 세부 구성을 도시한 도면이다.
도 28은 산술 복호화 장치(제4예)의 세부 구성을 도시한 도면이다.
도 29는 2-튜플에 대한 컨텍스트 기반의 산술 복호화 방법을 도시한 플로우차트이다.
도 30은 2-튜플을 산술 부호화/복호화하는 과정을 설명하기 위한 도면이다.
이하, 첨부된 도면들에 기재된 내용들을 참조하여 본 발명에 따른 실시예를 상세하게 설명한다. 다만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1a는 USAC 부호화기를 도시한 도면이고, 도 1b는 USAC 복호화기를 도시한 도면이다.
MPEG-D USAC 부호화기는 크게 3가지의 동작 모드로 구성된다. 첫번째 스테레오인 경우 MPEG surround를 사용하여, 스테레오 신호를 파라미터로 표현하는 방식으로 적용하고 고주파 대역은 eSBR을 사용하고, 저주파 대역은 코어 부호화 방식으로 적용하는 모드이다. 두번째는 스테레오인 경우 고주파 대역은 두 채널에 대해서 eSBR을 적용하는 방식, 그리고 두채널의 저주파 대역은 코어 부호화를 사용하여 부호화 하는 방식이다. 세번째는 모노 신호의 경우 eSBR을 사용해서 고주파 대역을 부호화 하고, 저주파 신호의 경우 코어 부호화를 사용해서 부호화 한다.
코어부호화는 먼저 두가지의 모드로 구성된다. 주파수 도메인(FD)에서 부호화기에 적합한 신호는 MDCT를 사용하여 주파수 도메인으로 변환하여 부호화를 수행하고, 다른 신호는 wLPT 또는 ACELP를 사용해서 부호화를 수행한다. wLPT(weighted LP transform coding)의 경우에 weighted LP 신호를 MDCT를 사용해서 주파수 도메인으로 변환하여 부호화를 수행한다. MDCT로 변환된 두가지 모드의 신호는 양자화를 수행하여 양자화된 스펙트럼을 추출하고, 양자화 된 스펙트럼은 Arithmetic Coding을 수행하여 무손실 부호화를 수행한다. 복호화는 부호화의 역과정이다.
저주파 대역에서 USAC(Unified Speech & Audio Coding) 부호화기 및 USAC 복호화기는 주파수 도메인(Frequency Domain: FD) 또는 선형예측 도메인(Linear Prediction Domain: LPD)의 2가지 코딩 모드 중 어느 하나를 선택하여 신호에 대해 부호화 및 복호화를 각각 수행할 수 있다.
이 때, 주파수 도메인에 대해 USAC 부호화기 및 USAC 복호화기는 MDCT(Modified Discrete Cosine Transform) 도메인에서 스펙트럼을 양자화 및 noiseless 코딩을 수행할 수 있다. 그리고, 선형예측 도메인에 대해 USAC 부호화기 및 USAC 복호화기는 ACELP(Algebraic Code Excited Linear Prediction) 또는 wLPT(weighted LP Transfom)에 따라 선택적으로 부호화 및 복호화를 수행할 수 있다.
이 때, USAC 부호화기 및 USAC 복호화기는 LP(Linear Prediction), Adaptive Codebook 또는 Fixed-Codebook을 통해 ACELP에 따른 부호화 및 복호화를 수행할 수 있다. 그리고, USAC 부호화기 및 USAC 복호화기는 weighted LP residual 신호를 MDCT를 통해 주파수 도메인으로 변환하고, 변환된 신호를 양자화 및 noiseless 코딩을 수행하여 wLPT에 따른 부호화 및 복호화를 수행할 수 있다.
고주파 대역에서, USAC 부호화기는 eSBR(enhanced Spectral band replication)을 통해 고주파 신호를 파라미터를 이용하여 부호화할 수 있다. 그러면, USAC 복호화기는 부호화된 정보를 복호화하고, 복호화된 정보를 기초로 고주파 신호를 생성할 수 있다.
USAC 부호화기는 MPS(Mpeg Surround)를 이용하요 스테레오 정보를 파라미터로 표현하여 부호화를 수행하고, USAC 복호화기는 복호화된 정보를 기초로 스테레오 신호를 생성할 수 있다.
이하에서 설명하는 본 발명은 USAC 부호화기 및 USAC 복호화기에서 Noiseless 코딩에 관한 것으로, FD 또는 wLPT를 통해 양자화된 스펙트럼 데이터를 무손실 부호화 및 복호화를 수행하는 것과 관련된다. USAC 부호화기에서 산술 부호화 장치(100)가 컨텍스트 기반의 산술 부호화를 수행하고, USAC 부호화기에서 산술 복호화 장치(101)가 컨텍스트 기반의 산술 복호화를 수행할 수 있다.
도 2는 산술 부호화 장치(제1예)의 세부 구성을 도시한 도면이다.
산술 부호화 장치(100)는 컨텍스트 리셋부(201), 컨텍스트 맵핑부(202), N-튜플 컨텍스트 결정부(203), MSB 컨텍스트 결정부(204), 탈출코드 부호화부(205), 확률 매핑부(206), MSB 부호화부(207), LSB 부호화부(208) 및 컨텍스트 업데이트부(209)를 포함할 수 있다. 이 때, 탈출코드 부호화부(205)는 실시예에 따라 제외될 수 있다.
여기서, 컨텍스트 리셋부(201), 컨텍스트 맵핑부(202)는 프레임 단위로 동작하고, N-튜플 컨텍스트 결정부(203), 컨텍스트 결정부(204), 탈출코드 부호화부(205), 확률 매핑부(206), MSB 부호화부(207), LSB 부호화부(208)는 프레임에서 주파수 단위로 동작할 수 있다. 즉, 산술 부호화 장치(100)는 동일한 프레임에 대해 주파수 인덱스를 증가시켜 부호화할 수 있다.
부호화하고자 하는 현재 프레임이 리셋 프레임인 경우, 컨텍스트 리셋부(201)는 이전 프레임의 주파수 스펙트럼을 0으로 초기화할 수 있다. 그리고, 부호화하고자 하는 현재 프레임이 리셋 프레임이 아닌 경우, 컨텍스트 맵핑부(202)는 현재 프레임의 주파수 스펙트럼의 길이가 이전 프레임의 주파수 스펙트럼의 길이가 다른 경우, 이전 프레임의 길이를 현재 프레임의 길이로 정렬할 수 있다.
N-튜플 컨텍스트 결정부(203)는 부호화하고자 하는 현재 N-튜플(4-tuple)(210)에 대해 주변에 위치한 주변 N-튜플들(neighborhood N-tuples)(211, 212, 213, 214)의 양자화된 스펙트럼값을 이용하여 상기 현재 N-튜플(210)에 대한 컨텍스트를 결정할 수 있다. 현재 N-튜플(210)은 이미 부호화된 4개의 주변 N-튜플들(211, 212, 213, 214)을 통해 부호화될 수 있다.
여기서, N-튜플은 양자화된 주파수 스펙트럼을 주파수가 증가하는 순서대로 연속된 N개의 주파수 스펙트럼 단위로 묶은 집합을 의미한다. N은 특정 숫자에 한정되지 않고, 시스템의 구성에 따라 변경될 수 있다. 이하의 실시예의 N-튜플은 임의의 개수 N 단위로 묶은 집합을 구성할 수 있으며, 집합을 구성하는 양자화된 주파수 스펙트럼의 개수인 N-튜플로 표현할 수 있다. 일례로, N-튜플은 4개의 주파수 스펙트럼 단위로 묶은 집합인 4-튜플로 사용될 수 있다. 본 발명의 일실시예에서는 N이 4인 경우에 대해 설명되고 있으나, N은 특정 숫자에 한정되지 않는다. N-튜플에 대해서는 도 4에서 보다 구체적으로 설명하기로 한다.
그리고, N-튜플 컨텍스트 결정부(203)는 현재 N-튜플(210)에 대해 주변 N-튜플(212) 및 주변 N-튜플(214)의 양자화된 스펙트럼값 모두가 -4~3이 될 때까지 스케일링 다운을 수행할 수 있다. 그러면, N-튜플 컨텍스트 결정부(203)는 스케일링 다운한 횟수에 기초하여 lev 0을 추정할 수 있다. lev에 대해서는 도 4에서 구체적으로 설명하기로 한다.
또한, N-튜플 컨텍스트 결정부(203)는 lev 0만큼 스케일링 다운해서 상위 비트(Most Significant Bit: MSB)를 추출하고, 추출된 MSB가 -4와 3 사이의 값을 가질 때까지 스케일링 다운을 수행할 수 있다.
MSB 컨텍스트 결정부(204)는 부호화하고자 하는 MSB에 대해 현재 N-튜플(210)의 주변 N-튜플(212) 및 주변 N-튜플(214)로부터 MSB 컨텍스트를 결정할 수 있다. 구체적으로, 부호화하고자 하는 MSB에 대해 이전 프레임의 동일 주파수의 MSB와 현재 프레임의 이전 주파수의 MSB를 MSB 컨텍스트로 결정할 수 있다.
탈출코드 부호화부(205)는 현재 N-튜플(210)에 대한 컨텍스트에 기초한 확률 모델을 이용하여 탈출 코드를 부호화할 수 있다.
확률 매핑부(206)는 현재 N-튜플(210)에 대한 컨텍스트와 MSB 컨텍스트를 이용하여 최종적인 확률 모델을 매핑 할 수 있다.
MSB 부호화부(207)는 현재 N-튜플(210)에 대한 컨텍스트와 MSB 컨텍스트르 이용하여 현재 N-튜플(210)의 MSB를 순차적으로 산술 부호화 할 수 있다.
LSB 부호화부(208)는 lev에 해당하는 비트 깊이까지 하위 비트(Least Significant Bit: LSB)를 비트 단위로 산술 부호화 할 수 있다.
컨텍스트 업데이트부(209)는 다음 N-튜플을 부호화하기 위해 양자화된 샘플을 업데이트 할 수 있다. 그러면, MSB 컨텍스트 결정부(204)는 다음 N-튜플에 대해 업데이트된 양자화된 샘플을 이용하여 MSB 컨텍스트를 결정할 수 있다.
도 3은 산술 복호화 장치(제1예)의 세부 구성을 도시한 도면이다.
산술 복호화 장치(101)는 컨텍스트 리셋부(301), 컨텍스트 맵핑부(302), N-튜플 컨텍스트 결정부(303), 컨텍스트 결정부(304), 탈출코드 복호화부(305), 확률 매핑부(306), MSB 복호화부(307), LSB 복호화부(308), 양자화된 샘플 생성부(309) 및 컨텍스트 업데이트부(310)를 포함할 수 있다.
여기서, 컨텍스트 리셋부(301), 컨텍스트 맵핑부(303)는 프레임 단위로 동작하고, N-튜플 컨텍스트 결정부(303), MSB 컨텍스트 결정부(304), 탈출코드 복호화부(305), 확률 매핑부(306), MSB 복호화부(307), LSB 복호화부(308)는 프레임에서 주파수 단위로 동작할 수 있다. 즉, 산술 복호화 장치(101)는 동일한 프레임에 대해 주파수 인덱스를 증가시켜 복호화할 수 있다.
복호화하고자 하는 현재 프레임이 리셋 프레임인 경우, 컨텍스트 리셋부(301)는 이전 프레임의 주파수 스펙트럼을 0으로 초기화할 수 있다. 그리고, 복호화하고자 하는 현재 프레임이 리셋 프레임이 아닌 경우, 컨텍스트 맵핑부(303)는 현재 프레임의 주파수 스펙트럼의 길이가 이전 프레임의 주파수 스펙트럼의 길이가 다른 경우, 이전 프레임의 길이를 현재 프레임의 길이로 정렬할 수 있다.
N-튜플 컨텍스트 결정부(303)는 복호화하고자 하는 현재 N-튜플(4-tuple)(311)에 대해 주변에 위치한 주변 N-튜플들(neighborhood 4-tuples)(312, 313, 314, 315)의 양자화된 스펙트럼값을 이용하여 상기 현재 N-튜플(311)에 대한 컨텍스트를 결정할 수 있다. 현재 N-튜플(311)은 이미 복호화된 4개의 주변 N-튜플들(312, 313, 314, 315)을 통해 복호화될 수 있다. N-튜플에 대해서는 도 4에서 구체적으로 설명하기로 한다.
그리고, N-튜플 컨텍스트 결정부(303)는 현재 N-튜플(311)에 대해 주변 N-튜플(313) 및 주변 N-튜플(315) 양자화된 스펙트럼값 모두가 -4~3이 될 때까지 스케일링 다운을 수행할 수 있다. 그러면, N-튜플 컨텍스트 결정부(303)는 스케일링 다운한 횟수에 기초하여 lev0을 추정할 수 있다. lev에 대해서는 도 4에서 구체적으로 설명하기로 한다.
MSB 컨텍스트 결정부(304)는 복호화된 MSB를 바탕으로 컨텍스트로 사용할 MSB 들을 결정할 수 있다.
탈출코드 복호화부(305)는 현재 상기 N-튜플 컨텍스트 결정부(303)에서 결정된 컨텍스트에 기초한 확률 모델을 이용하여 탈출 코드를 복호화할 수 있다. 또한 코어의 코딩 모드의 컨텍스트레 기초한 확률 모델을 이용하여 탈출 코드를 복호화 할수 있다.
확률 매핑부(306)는 현재 N-튜플(311)에 대한 컨텍스트와 MSB 컨텍스트를 이용하여 최종적인 확률 모델을 매핑 할 수 있다.
MSB 복호화부(307)는 현재 N-튜플(311)에 대한 컨텍스트와 MSB 컨텍스트를 이용하여 현재 N-튜플(311)의 MSB를 순차적으로 산술 복호화 할 수 있다.
LSB 복호화부(308)는 lev에 해당하는 비트 깊이까지 하위 비트(Least Significant Bit: LSB)를 비트 단위로 산술 복호화 할 수 있다.
양자화된 샘플 생성부(309)는 산술 복호화된 MSB와 LSB를 이용하여 현재 N-튜플에 대한 양자화된 샘플을 생성할 수 있다. MSB 값들을 lev 만큼 레프트 쉬프트 업해주고 LSB의 값 들을 비트 깊이에 맞추어 부가해주는 과정으로 생성할 수 있다.
컨텍스트 업데이트부(310)는 다음 N-튜플을 복호화하기 위해 양자화된 샘플을 업데이트 할 수 있다. 그러면, MSB 컨텍스트 결정부(304)는 다음 N-튜플에 대해 업데이트된 양자화된 샘플을 이용하여 MSB 컨텍스트를 결정할 수 있다.
*도 4는 N-튜플, MSB, LSB를 설명하기 위한 도면이다.
도 4의 상단에 시간(time)과 주파수(frequency)에 따른 N-튜플들이 도시되어 있다. 현재 N-튜플(401)은 부호화하거나 복호화하고자 하는 N-튜플을 의미할 수 있다. 그리고, 4개의 주변 N-튜플(402, 403, 404, 405)은 이미 부호화 및 복호화 된 것으로, 현재 N-튜플(401)에 대한 컨텍스트를 결정할 때 이용될 수 있다. 이 때, 주변 N-튜플(403, 404, 405)은 이전 프레임에 대응하고, 주변 N-튜플(402)은 현재 N-튜플(401)과 동일한 현재 프레임에 대응할 수 있다.
도 4의 하단에 주파수 인덱스(frequency index)와 비트 깊이(bit-depth)에 따른 상위 비트(MSB)와 하위 비트(LSB)가 도시되어 있다. 이 때, MSB는 부호 정보를 포함하는 비트를 의미할 수 있다. 본 발명의 일실시예에서는 MSB를 부호 정보를 포함하는 유효한 3비트로 정의하였다. MSB에 대한 정의는 시스템의 구성에 따라 변경될 수 있다.
도 4를 살펴보면, LSB는 MSB보다 비트 깊이가 더 큰 비트를 의미할 수 있다. 이 때, LSB는 lev값을 가질 수 있다. Lev는 컨텍스트의 MSB 조합에 의해 결정되는 값으로, 비트 깊이가 0이라는 말은 MSB 바로 아래 위치한 LSB를 의미한다. N-튜플은 MSB에 대응하고, 주파수 인덱스에 따라 심볼로 구분될 수 있다. 일례로, 도 4에서는 N-튜플이 4개의 심볼로 구성됨을 알 수 있다. 이후, 현재 N-튜플(401)은 4개의 심볼을 주파수에 따라 분리하여 부호화되거나 또는 복호화될 수 있다. 다시 말해서, MSB는 심볼 단위로 복호화되거나 또는 부호화될 수 있다. 이 때, 튜플은 심볼에 대응하는 것으로 정의될 수 있다. 도 4에서는 N-튜플에 포함된 심볼을 4개로 표현하였으나, 장치에 따라 심볼의 개수를 변경될 수 있다.
도 5는 컨텍스트와 확률 모델을 도시한 도면이다.
도 5를 살펴보면, 4개의 심볼로 구성된 현재 N-튜플(501)과 4개의 주변 N-튜플들(502, 503, 504, 505)이 도시되어 있다. 도 2 및 도 3에서 N-튜플 컨텍스트 결정부(203, 303)은 현재 N-튜플(501)에 대해 4개의 주변 N-튜플들(502, 503, 504, 505)의 양자화된 스펙트럼값을 사용하여 현재 N-튜플(501)의 컨텍스트를 결정할 수 있다.
그리고, MSB 컨텍스트 결정부(204, 304)는 현재 N-튜플(501)을 구성하는 심볼 A, B, C, D 각각에 대응하는 컨텍스트를 주변 N-튜플들(502, 503, 504, 505)에서 결정할 수 있다. 앞서 설명하였듯이, 심볼은 MSB를 의미한다. 일례로, MSB 컨텍스트 결정부(204, 304)는 현재 N-튜플(501)을 구성하는 심볼에 대해 이전 프레임의 동일 주파수의 심볼과 현재 프레임의 이전 주파수의 심볼을 컨텍스트로 결정할 수 있다. 다시 말해서, MSB 컨텍스트 결정부(204, 304)는 부호화 또는 복호화하고자 하는 MSB에 대해 이전 프레임의 동일 주파수의 MSB와 현재 프레임의 이전 주파수의 MSB를 각각 컨텍스트로 결정할 수 있다.
확률 매핑부(206, 306)는 N-튜플의 컨텍스트와 MSB 컨텍스트를 이용하여 최종적인 확률 모델을 매핑할 수 있다. 예를 들어, 현재 N-튜플(501)의 심볼 A(MSB A)에 대한 확률 모델을 매핑하기 위해, 확률 매핑부(206, 306)는 현재 N-튜플(501)의 컨텍스트인 주변 N-튜플(502, 503, 504, 505)과 MSB A의 컨텍스트인 주변 N-튜플(504)의 MSB A0와 주변 N-튜플(502)의 MSB D1을 확률 모델로 매핑할 수 있다. 현재 N-튜플(501)을 구성하는 MSB A, B, C, D 각각의 확률 모델은 도 5에서 확인할 수 있다.
이 때, A, B, C, D가 가질 수 있는 MSB는 부호 정보를 포함하는 상위 3비트일 경우 총 8가지(-4, -3, -2, -1, 0, 1, 2, 3)일 수 있다. 그러면, 확률 매핑부(206, 306)는 총 8가지의 MSB에 대해 확률값을 할당할 수 있다. 구체적으로 확률 매핑부(206, 306)는 이전 프레임의 동일 주파수의 MSB값 (A0, B0, C0, D0)의 8가지 경우와 현재 프레임의 이전 주파수의 MSB값(D1, A, B, C)의 8가지 경우를 조건으로 하여 확률 모델을 매핑할 수 있다. 그러면, 확률 테이블은 prob[8][8][8]일 수 있다. 이 확률 테이블은 prob[64][8]일 수 있다.
예를 들어, 이전 프레임의 동일 주파수의 MSB값이 -4이고, 현재 프레임의 이전 주파수의 MSB 값이 -3일 때의 확률 모델은 prob[-4+4][-3+4]로 선택될 수 있다. 그리고, 선택된 확률 모델 p={p(-4),p(-3),p(-2),p(-1), p(0), p(1), p(2), p(3)}으로 구성될 수 있다. 그러면, 현재 N-튜플(501)에 대해 최종적인 확률 테이블은 prob[32][64*8]로 구성될 수 있다. 이 때, 확률 매핑부(206, 306)는 FD 또는 wLPT(TCX)의 모드 정보를 고려하여 각 모드 정보에 대응하는 확률 테이블을 구성할 수 있다.
또한, 확률 매핑부(206, 306)는 확률 모델 중 같은 값이 중복되는 경우 메모리 사용의 효율성을 높이기 위해 확률 모델 매핑 테이블을 사용할 수 있다. 확률 모델 매핑 테이블은 인덱스를 별도로 표현하는 것을 의미한다. 예를 들어, 확률 모델 매핑 테이블은 unsigned short map[2048], unsigned short prob[748][8] 등과 같이 표현 가능하다. 즉, 상기 표현은 발생할 수 있는 조건이 2048가지이며, 총 확률 모델이 748가지인 것을 의미한다. 그러면, 총 컨텍스트의 개수는 32*8**=2048가지이며, 확률 모델은 748가지이다. 결국, unsigned short[32][64*8]은 32*64*8*0.5=8192 word인 반면, 확률 모델 매핑 테이블을 사용하면, 2048*0.5+748*0.5=4016 word이므로 메모리가 절감될 수 있다.
도 6은 MSB 복호화 방식(제1예)을 도시한 도면이다.
산술 복호화 장치(101)는 현재 N-튜플에 포함된 4개의 MSB를 통해 LSB의 비트 깊이(bit depth)를 결정할 수 있다(S601). LSB의 비트 깊이는 LSB 복호화할 때, 사용될 수 있다. 그리고, 산술 복호화 장치(101)는 현재 N-튜플에 포함된 4개의 MSB에 대해 확률 모델 집합을 선택할 수 있다(S602). 이 후, 산술 복호화 장치(101)는 탈출 코드 여부에 대한 확률 모델을 선택하여(S603), MSB에 대해 산술 복호화를 수행할 수 있다. 산술 복호화 장치(101)는 탈출 코드인지 여부를 ari_pk_mod_esc[32][2] 테이블을 이용하여 디코딩할 수 있다(S605). 만약, 탈출 코드인 경우, 단계(604)로 되돌아가고, 탈출코드가 아닌 경우, 단계(S606)이 수행된다.
산술 복호화 장치(101)는 FD 또는 TCX(wLPT) 모드인 경우, 이전 프레임의 동일주파수의 MSB와 동일 프레임의 이전 주파수의 MSB를 이용하여 MSB 심볼의 확률 모델을 맵핑할 수 있다(S607). 확률 모델이 맵핑된 결과를 통해, 산술 복호화 장치(101)는 현재 N-튜플에 포함된 4개의 MSB에 대해 산술 복호화를 수행할 수 있다(S606).
도 7은 LSB 복호화 방식(제1예)을 도시한 도면이다.
산술 복호화 장치(101)는 MSB 복호화를 통해 도출된 비트 깊이 인덱스(Bit Depth Index: bdi)를 셋팅할 수 있다(S701). 이 때, 산술 복호화 장치(101)는 비트 깊이 인덱스가 LSB의 lev인 N보다 작은지 여부를 판단할 수 있다(S702). 만약, 비트 깊이 인덱스가 N보다 작은 경우, 산술 복호화 장치(101)는 비트 깊이 인덱스 및 MSB 부호에 따른 확률 모델을 결정할 수 있다(S703). 그리고, 비트 깊이 인덱스가 N보다 큰 경우, 산술 복호화 장치(101)는 MSB 부호에 따른 확률 모델을 결정할 수 있다(S705). 그러면, 산술 복호화 장치(101)는 LSB의 비트 단위로 산술 복호화를 수행하고(S704), MSB에 해당하는 LSB 중 비트 깊이 인덱스에 해당하는 비트값(1 또는 0)을 출력할 수 있다. 이 때, 산술 복호화 장치(101)는 이전에 부호화 또는 복호화된 MSB 값이 0, 양수, 음수인 경우를 분리하여 산술 부호화를 수행할 수 있다.
일례로, 산술 복호화 장치(101)는 비트 깊이가 N(5)보다 작은 경우 비트 깊이 정보를 컨텍스트로 사용하고, 이외의 경우는 MSB가 양수, 0, 음수의 3가지 경우만 구분한다. 산술 복호화 장치(101)는 산술 복호화를 수행한 후 비트 깊이 인덱스를 1증가시켜, 그 다음 비트 깊이에 대응하는 LSB를 산술 복호화 할 수 있다.
도 8은 부호 분리를 이용한 MSB 복호화 방식을 도시한 도면이다.
부호(sign) 분리는 MSB의 심볼에 대한 표현 방식만 바뀌는 것을 의미한다. 도 8에서 단계(S801) 내지 단계(S805)는 앞서 도 6의 단계(S601) 내지 단계(S605)에 대응한다. 단계(S805)에서 복호화하려는 MSB가 탈출 코드인 경우, 산술 복호화 장치(101)는 Magnitude 산술 복호화를 수행할 수 있다(S806). 이 때, 산술 부호화 장치(100)는 부호 복호화가 필요한 지 여부를 판단할 수 있다(S808). 만약, 부호 복호화가 필요한 경우, 산술 부호화 장치(100)는 부호에 대해 산술 복호화를 수행하고(S810), 부호 복호화가 필요하지 않은 경우, MSB 값으로 변환할 수 있다(S809). -4, 0은 부호가 고정된 값이기 때문에 부호를 복호화하지 않는다. 변환된 MSB값은 MSB 심볼의 확률 모델을 맵핑할 때(S807) 사용될 수 있다. 도 8에 따르면, 동일한 주파수 인덱스의 MSB Magnitude를 먼저 복호화하고, 부호를 복호환 후, 다음 주파수 인덱스의 부호화를 수행할 수 있다.
MSB 복호화를 수행할 때, 사용되는 컨텍스트는 이전과 동일한 방식이 사용되거나 또는 변경된 심볼이 사용될 수 있다. 즉, 산술 복호화 장치(101)는 MSB를 복호화할 때 이전 프레임의 동일 주파수의 MSB와 현재 프레임의 이전 주파수의 MSB를 사용할 수 있다. 이 때, 확률 모델은 Magnitude가 [32][8][8][5]이고, 부호가 [32][8][8][2]를 나타낼 수 있다. 그리고, 산술 복호화 장치(101)는 변경된 심볼을 사용할 수 있으며, 변경된 심볼의 확률 모델은 Magnitude가 [32][5][5][5]이고, 부호가 [32][5][5][2]를 나타낼 수 있다.
도 9는 LSF를 이용한 부호화 및 복호화 방식을 도시한 도면이다.
wLPT 모드에서는 추가적으로 LPC(Linear Predictive Coding) 정보를 이용하여 컨텍스트가 결정될 수 있다. 이 때, LPC 계수는 양자화하기 유리한 LSF로 변환될 수 있다. LSF 간의 차이는 스펙트럼 피크와 연관성이 높고, LSF 간격이 좁으면 스펙트럼 피크가 발생할 수 있다. 그리고, LSF 간격이 좁으면, LP 필터링 이후에도 스펙트럼 envelop이 높게 나올 확률이 높아 양자화된 샘플의 MSB가 클 가능성이 높다.
도 9에서 상단의 도면은 MSB 부호화 방식을 나타내고, 하단의 도면은 MSB 복호화 방식을 나타낸다.
산술 부호화 장치(100)는 LSF(Line Spectrum Frequency) 부호화를 수행할 수 있다(S901). 산술 부호화 장치(100)는 LSF 부호화를 통해 도출된 양자화된 LSF를 이용하여 N-튜플에 해당하는 컨텍스트를 생성할 수 있다(S902). 그리고, 산술 부호화 장치(100)는 양자화된 MDCT 스펙트럼과 기존 컨텍스트를 이용하여 확률 모델을 결정하고(S902), MSB에 대해 산술 부호화를 수행할 수 있다(S904). 산술 부호화된 MSB과 양자화된 LSF이 비트스트림에 포함될 수 있다.
그리고, 산술 복호화 장치(101)는 압축된 비트스트림으로부터 LSF 부호화를 수행할 수 있다(S905). 산술 복호화 장치(101)는 LSF 부호화를 통해 도출된 양자화된 LSF를 이용하여 N-튜플에 해당하는 컨텍스트를 생성할 수 있다(S907). 그리고, 산술 복호화 장치(101)는 양자화된 MDCT 스펙트럼과 기존 컨텍스트를 이용하여 확률 모델을 결정하고(S906), MSB에 대해 산술 복호화를 수행할 수 있다(S904).
LSF를 이용하여 컨텍스트를 결정하는 경우, 현재 비트 스트림 구조가 변경될필요가 있다. 즉, 현재 비트스트림 구조가 acelp_core_mode, lpd_mode, ACELP or TCX data, LPC data 순서로 구성된 경우, 수정된 비트스트림 구조는 acelp_core_mode, lpd_mode, LPC data, ACELP or TCX data 순서로 구성될 수 있다.
도 10은 산술 부호화 장치(제2예)의 세부 구성을 도시한 도면이다.
산술 부호화 장치(100)는 컨텍스트 리셋부(1001), 컨텍스트 맵핑부(1002), N-튜플 컨텍스트 결정부(1003), MSB 컨텍스트 결정부(1004), 탈출코드 부호화부(1005), 확률 매핑부(1006), MSB 부호화부(1007), LSB 부호화부(1008), 컨텍스트 모드 부호화부(1009) 및 컨텍스트 업데이트부(1010)를 포함할 수 있다. 도 10의 산술부호화 장치(100)는 도 2의 산술부호화 장치(100)에 비해 컨텍스트 모드 부호화부(1009)를 더 포함하고 있다.
부호화하고자 하는 현재 프레임이 리셋 프레임이 아닌 경우, 컨텍스트 맵핑부(1002)는 현재 프레임의 주파수 스펙트럼의 길이가 이전 프레임의 주파수 스펙트럼의 길이가 다른 경우, 이전 프레임의 길이를 현재 프레임의 길이로 정렬할 수 있다. 또한, 컨텍스트 맵핑부(1002)는 이전 프레임의 부호화된 MSB 값들에 대해 추가적으로 맵핑을 수행할 수 있다..
N-튜플 컨텍스트 결정부(1003)는 부호화하고자 하는 현재 N-튜플(4-tuple)(1011)에 대해 주변에 위치한 주변 N-튜플들(neighborhood 4-tuples)(1012, 1013, 1014, 1015)의 양자화된 스펙트럼값을 이용하여 상기 현재 N-튜플(1011)에 대한 컨텍스트를 결정할 수 있다. 현재 N-튜플(1011)은 이미 부호화된 4개의 주변 N-튜플들(1012, 1013, 1014, 1015)을 통해 부호화될 수 있다.
그리고, N-튜플 컨텍스트 결정부(1003)는 현재 N-튜플(1010)에 대해 주변 N-튜플(1013) 및 주변 N-튜플(1014)의 양자화된 스펙트럼값 모두가 -4~3이 될 때까지 스케일링 다운을 수행할 수 있다. 그러면, N-튜플 컨텍스트 결정부(1003)는 스케일링 다운한 횟수에 기초하여 lev 0을 추정할 수 있다. lev에 대해서는 도 4에서 구체적으로 설명하기로 한다. 또한, N-튜플 컨텍스트 결정부(1003)는 lev 0만큼 스케일링 다운해서 상위 비트(Most Significant Bit: MSB)를 추출하고, 추출된 MSB가 -4와 3 사이의 값을 가질 때까지 스케일링 다운을 수행할 수 있다. 추가적인 스케일링다운 횟수는 탈출코드에 대한 부호화 회수를 결정한다.
MSB 컨텍스트 결정부(1004)는 부호화하고자 하는 MSB에 대해 현재 N-튜플(1011)의 주변 N-튜플(1013) 및 주변 N-튜플(1015)로부터 MSB 컨텍스트를 결정할 수 있다. 구체적으로, MSB 컨텍스트 결정부(1004)는 부호화하고자 하는 MSB에 대해 이전 프레임의 동일 주파수의 MSB와 현재 프레임의 이전 주파수의 MSB를 MSB 컨텍스트로 결정할 수 있다.
여기서, 컨텍스트 모드 부호화부(1009)는 MSB를 부호화할 때 사용할 복수 개의 컨텍스트 중 최종 전송된 1개의 컨텍스트 모드에 대해 부호화를 수행할 수 있다. 복수 개의 컨텍스트는 복호화 할 심볼 주변의 MSB들을 의미한다. 컨텍스트 모드는 비트 패킹(bit-packing)에 의해 전송되는 방법도 있고, 산술부호화를 수행하여 전송되는 방법도 있다. 컨텍스트 모드 전송은 프레임 별로 1번 전송된다. 컨텍스트 모드 부호화부(1009)는 후보 개수를 모두 표현할 수 있는 비트를 할당하여 비트 패킹을 수행할 수 있다. 컨텍스트 모드 부호화부(1009)는 도 16에서 구체적으로 설명된다. 그러면, MSB 컨텍스트 결정부(1004)는 컨텍스트 모드에 따라 적절한 MSB 컨텍스트를 선택할 수 있다.
탈출코드 부호화부(1005)는 현재 N-튜플(1010)에 대한 컨텍스트에 기초한 확률 모델을 이용하여 탈출 코드를 부호화할 수 있다. 즉, 탈출코드 부호화부(1005)는 탈출코드인지 여부를 산술복호화한 후, 탈출 코드가 아닌 경우, MSB 산술 부호화가 수행될 수 있다. 탈출 코드 부호화시 사용되는 컨텍스트는 N-튜플의 컨텍스트 및 코어의 코딩 모드(FD 또는 wLPD)가 사용될 수 있다. 탈출 코드이면 1로, 탈출 코드가 아니면 0으로 부호화되고, 탈출 코드로 부호화되면 lev 0값을 +2만큼씩 증가시켜 LSB의 비트 깊이 lev에 대해 업데이트 할 수 있다.
확률 매핑부(1006)는 현재 N-튜플(1011)에 대한 컨텍스트와 MSB 컨텍스트를 이용하여 최종적인 확률 모델을 매핑 할 수 있다. 확률 매핑부(1006)는 매핑 테이블과 확률 테이블을 이용할 수 있다. 확률 모델을 매핑하는 과정은 MSB를 복호화 할 때 적용할 확률 모델을 확률 테이블에서 찾아오는 과정이다. 즉, 확률 모델을 모든 경우에 대해서 전부 가지고 있으면, 메모리의 크기에 대한 부담이 있기 때문에, 메모리를 줄일 목적으로 확률 매핑부(1006)는 컨텍스트에 따라 확률 모델을 찾도록 매핑 테이블을 사용할 수 있다. 매핑 테이블은 각 확률의 컨텍스트에 해당되는 총 배열에 확률 테이블의 인덱스를 할당하여 구성될 수 있다. 확률 테이블은 MSB 복호화 시에 사용되는 모든 확률 값으로 구성된다.
MSB 부호화부(1007)는 현재 N-튜플(1010)에 대한 컨텍스트와 MSB 컨텍스트르 이용하여 현재 N-튜플(1010)의 MSB를 순차적으로 산술 부호화 할 수 있다.
LSB 부호화부(1008)는 lev에 해당하는 비트 깊이까지 하위 비트(Least Significant Bit: LSB)를 비트 단위로 산술 부호화 할 수 있다. LSB 부호화는 비트 단위로 처리되며, LSB 부호화부(1008)는 MSB 로부터의 거리를 의미하는 비트-깊이 정보와 MSB의 부호 정보 (양수/음수/0)를 컨텍스트로 이용하여 LSB에 대해 산술부호화를 수행한다.
컨텍스트 업데이트부(1010)는 다음 N-튜플을 부호화하기 위해 양자화된 샘플을 업데이트 할 수 있다. 그러면, MSB 컨텍스트 결정부(1004)는 다음 N-튜플에 대해 업데이트된 양자화된 샘플을 이용하여 MSB 컨텍스트를 결정할 수 있다.
도 11은 산술 복호화 장치(제2예)의 세부 구성을 도시한 도면이다.
산술 복호화 장치(101)는 컨텍스트 리셋부(1101), 컨텍스트 맵핑부(1102), 컨텍스트 모드 복호화부(1103), N-튜플 컨텍스트 결정부(1104), MSB 컨텍스트 결정부(1105), 탈출코드 복호화부(1106), 확률 매핑부(1107), MSB 복호화부(1108), LSB 복호화부(1109), 양자화된 샘플 생성부(1110) 및 컨텍스트 업데이트부(1111)를 포함할 수 있다. 도 11의 산술복호화 장치(101)는 도 3의 산술복호화 장치(101)에 비해 컨텍스트 모드 복호화부(1103)를 더 포함하고 있다.
도 2 및 도 11의 산술 복호화 장치(101)는 상위 비트와 하위 비트를 분리하여 복호화할 수 있다. 즉, 산술 복호화 장치(101)는 상위 비트만 복호화 하거나, 하위 비트만 복호화하거나 또는 상위 비트 및 하위 비트를 함께 복호화할 수 있다.
복호화하고자 하는 현재 프레임이 리셋 프레임이 아닌 경우, 컨텍스트 맵핑부(1102)는 현재 프레임의 주파수 스펙트럼의 길이가 이전 프레임의 주파수 스펙트럼의 길이가 다른 경우, 이전 프레임의 길이를 현재 프레임의 길이로 정렬할 수 있다. 또한, 컨텍스트 맵핑부(1102)는 이전 프레임의 복호화된 MSB 값들에 대해 추가적으로 맵핑을 수행할 수 있다. 즉, 컨텍스트 맵핑부(1102)는 MSB 컨텍스트의 여러 조합의 후보들을 입력받아 복호화를 수행하고, 복호화된 결과의 비트량이 가장 적은 컨텍스트 모드를 선택하여 복호화할 수 있다.
컨텍스트 모드 복호화부(1103)는 MSB를 복호화할 때 사용할 복수 개의 컨텍스트 중 최종 전송된 1개의 컨텍스트 모드에 대해 복호화를 수행할 수 있다. 복수개의 컨텍스트는 복호화 할 심볼 주변의 MSB들을 의미한다. 컨텍스트 모드는 비트 패킹(bit-packing)에 의해 전송되는 방법도 있고, 산술복호화를 수행하여 전송되는 방법도 있다. 컨텍스트 모드 전송은 프레임 별로 1번 전송된다. 컨텍스트 모드 복호화부(1103)는 후보 개수를 모두 표현할 수 있는 비트를 할당하여 비트 패킹을 수행할 수 있다. 컨텍스트 모드 복호화부(1103)는 도 16에서 구체적으로 설명된다. 그러면, MSB 컨텍스트 결정부(1104)는 컨텍스트 모드에 따라 적절한 MSB 컨텍스트를 선택할 수 있다.
N-튜플 컨텍스트 결정부(1104)는 복호화하고자 하는 현재 N-튜플(4-tuple)(1112)에 대해 주변에 위치한 주변 N-튜플들(neighborhood 4-tuples)(1113, 1114, 1115, 1116)의 양자화된 스펙트럼값을 이용하여 상기 현재 N-튜플(1112)에 대한 컨텍스트를 결정할 수 있다. 현재 N-튜플(1111)은 이미 복호화된 4개의 주변 N-튜플들(1113, 1114, 1115, 1116)을 통해 복호화될 수 있다.
그리고, N-튜플 컨텍스트 결정부(1104)는 현재 N-튜플(1112)에 대해 주변 N-튜플(1114) 및 주변 N-튜플(1116)의 양자화된 스펙트럼값 모두가 -4~3이 될 때까지 스케일링 다운을 수행할 수 있다. 그러면, N-튜플 컨텍스트 결정부(1104)는 스케일링 다운한 횟수에 기초하여 lev 0을 추정할 수 있다. lev에 대해서는 도 4에서 구체적으로 설명하기로 한다.
MSB 컨텍스트 결정부(1105)는 복호화하고자 하는 MSB에 대해 현재 N-튜플(1111)의 주변 N-튜플(1114) 및 주변 N-튜플(1116)로부터 MSB 컨텍스트를 결정할 수 있다. 구체적으로, MSB 컨텍스트 결정부(1105)는 복호화하고자 하는 MSB에 대해 이전 프레임의 동일 주파수의 MSB와 현재 프레임의 이전 주파수의 MSB를 MSB 컨텍스트로 결정할 수 있다.
확률 매핑부(1106)는 현재 N-튜플(1111)에 대한 컨텍스트와 MSB 컨텍스트를 이용하여 최종적인 확률 모델을 매핑 할 수 있다. 확률 매핑부(1106)는 매핑 테이블과 확률 테이블을 이용할 수 있다. 확률 모델을 매핑하는 과정은 MSB를 복호화 할 때 적용할 확률 모델을 확률 테이블에서 찾아오는 과정이다. 즉, 확률 모델을 모든 경우에 대해서 전부 가지고 있으면, 메모리의 크기에 대한 부담이 있기 때문에, 메모리를 줄일 목적으로 확률 매핑부(1106)는 컨텍스트에 따라 확률 모델을 찾도록 매핑 테이블을 사용할 수 있다. 매핑 테이블은 각 확률의 컨텍스트에 해당되는 총 배열에 확률 테이블의 인덱스를 할당하여 구성될 수 있다. 확률 테이블은 MSB 복호화 시에 사용되는 모든 확률 값으로 구성된다.
탈출코드 복호화부(1107)는 현재 N-튜플(1111)에 대한 컨텍스트에 기초한 확률 모델을 이용하여 탈출 코드를 복호화할 수 있다. 즉, 탈출코드 복호화부(1107)는 탈출코드인지 여부를 산술복호화한 후, 탈출 코드가 아닌 경우, MSB 산술 복호화가 수행될 수 있다. 탈출 코드 복호화시 사용되는 컨텍스트는 N-튜플의 컨텍스트 및 코어의 코딩 모드(FD 또는 wLPD)가 사용될 수 있다. 탈출 코드이면 1로, 탈출 코드가 아니면 0으로 복호화되고, 탈출 코드로 복호화되면 lev 0값을 +2만큼씩 증가시켜 LSB의 비트 깊이 lev에 대해 업데이트 할 수 있다.
MSB 복호화부(1108)는 현재 N-튜플(1112)에 대한 컨텍스트와 MSB 컨텍스트를 이용하여 현재 N-튜플(1112)의 MSB를 순차적으로 산술 복호화 할 수 있다.
본 발명의 일실시예에서 N-튜플은 복수 개의 양자화된 주파수 스펙트럼으로 구성된 집합을 의미할 수 있다. 그리고, 산술 복호화 장치(101)는 복수 개의 양자화된 주파수 스펙트럼으로 구성된 집합을 부호 비트를 포함한 상위 비트와 하위 비트로 분리하여 복호화할 수 있다.
그러면, N-튜플 컨텍스트 결정부(1104)는 현재 복호화할 집합(현재 N-튜플)의 주변에 위치한 집합들(주변 N-튜플들)의 양자화된 주파수 스펙트럼값을 이용하여 제1 컨텍스트(N-튜플 컨텍스트)를 결정할 수 있다.
탈출 코드 복호화부(1107)는 현재 복호화할 집합(현재 N-튜플)의 주변에 위치한 집합들(주변 N-튜플들)에 기초하여 하위 비트의 비트 깊이를 추정할 수 있다. 그리고, 탈출 코드 복호화부(1107)는 주변에 위치한 집합들에 대한 코어의 복호화 모드를 컨텍스트로 사용하여 탈출 코드 여부를 표현하는 심볼을 복호화할 수 있다. 그러면, 탈출 코드 복호화부(1107)는 탈출 코드가 복호화되는 횟수에 기초하여 추정된 하위 비트의 비트 깊이를 업데이트 할 수 있다.
그리고, MSB 컨텍스트 결정부(1105)는 현재 복호화할 상위 비트 심볼(현재 N-튜플의 MSB 심볼) 주변의 복호화된 상위 비트 심볼(주변 N-튜플의 MSB 심볼)을 이용하여 제2 컨텍스트(MSB 컨텍스트)를 결정할 수 있다. 이 때, 컨텍스트 모드 복호화부(1103)는 컨텍스트로 사용될 복호화된 상위 비트 심볼(주변 N-튜플의 MSB 심볼)에 대한 현재 복호화할 상위 비트 심볼(현재 N-튜플의 MSB 심볼)의 상대적 위치 정보(컨텍스트 모드)를 복호화할 수 있다. 그러면, MSB 컨텍스트 결정부(1105)는 상대적인 위치 정보를 이용하여 제2 컨텍스트를 생성할 수 있다. 이 때, 상대적인 위치 정보는 코어 복호화 모드를 컨텍스트로 사용하여 산술 복호화를 통해 복호화될 수 있다. 또는. 상대적인 위치 정보는 복수 개의 주파수 대역에서 상위 비트 심볼(현재 N-튜플의 MSB 심볼)의 복호화시에 사용될 제2 컨텍스트에 대응하는 값으로 표현될 수 있다.
결국, MSB 복호화부(1108)는 생성된 제1 컨텍스트 및 제2 컨텍스트를 이용하여 상위 비트를 복호화할 수 있다.
LSB 복호화부(1109)는 lev에 해당하는 비트 깊이까지 하위 비트(Least Significant Bit: LSB)를 비트 단위로 산술 복호화 할 수 있다. LSB 복호화는 비트 단위로 처리되며, LSB 복호화부(1109)는 MSB 로부터의 거리를 의미하는 비트-깊이 정보와 MSB의 복호 정보 (양수/음수/0)를 컨텍스트로 이용하여 LSB에 대해 산술복호화를 수행한다.
앞서 설명하였듯이, 산술 복호화 장치(101)는 LSB 복호화부(1109)와 MSB 복호화부(1108)를 분리하여 복호화할 수 있다. 이 때, LSB 복호화부(1109)는 상위 비트(MSB)의 부호 정보를 이용하여 제3 컨텍스트를 생성할 수 있다. 그리고, LSB 복호화부(1109)는 하위 비트의 비트 깊이 정보를 이용하여 제4 컨텍스트를 생성할 수 있다. 그러면, LSB 복호화부(1109)는 생성된 제3 컨텍스트와 제4 컨텍스트를 이용하여 하위 비트를 비트 단위로 복호화 할 수 있다.
일례로, 제3 컨텍스트를 이용하는 경우, LSB 복호화부(1109)는 하위 비트와 동일한 주파수 위치에 대응하는 상위 비트 심볼의 부호가 양수인지, 음수인지 0인지 여부에 기초하여 하위 비트를 비트 단위로 복호화할 수 있다. 그리고, LSB 복호화부(1109)는 제4 컨텍스트만 이용하여 하위 비트를 복호화 할 수도 있다.
양자화된 샘플 생성부(1110)는 산술 복호화된 MSB와 LSB를 이용하여 현재 N-튜플(1111)에 대한 양자화된 샘플을 생성할 수 있다.
컨텍스트 업데이트부(1111)는 다음 N-튜플을 복호화하기 위해 양자화된 샘플을 업데이트 할 수 있다. 또한 복호화된 MSB 값도 업데이트 할 수 있다.
도 12는 컨텍스트와 확률 모델을 도시한 도면이다.
도 12을 살펴보면, 4개의 심볼로 구성된 현재 N-튜플(1201)과 4개의 주변 N-튜플들(1202, 1203, 1204, 1205)이 도시되어 있다. N-튜플 컨텍스트 결정부(1103, 1204)는 현재 N-튜플(1201)에 대해 4개의 주변 N-튜플들(1202, 1203, 1204, 1205)의 양자화된 스펙트럼값을 현재 N-튜플(1201)의 컨텍스트로 결정할 수 있다.
그리고, MSB 컨텍스트 결정부(1103, 1204)는 컨텍스트 모드 정보에 기초하여 현재 N-튜플(1201)을 구성하는 심볼 A, B, C, D 각각에 대응하는 컨텍스트를 주변 N-튜플들(1202, 1203, 1204, 1205)에서 결정할 수 있다. 앞서 설명하였듯이, 심볼은 MSB를 의미한다. 일례로, MSB 컨텍스트 결정부(1103, 1204)는 현재 N-튜플(1201)을 구성하는 심볼에 대해 이전 프레임의 동일 주파수의 심볼과 현재 프레임의 이전 주파수의 심볼을 컨텍스트로 결정할 수 있다. 다시 말해서, MSB 컨텍스트 결정부(1103, 1204)는 부호화 또는 복호화하고자 하는 MSB에 대해 이전 프레임의 동일 주파수의 MSB와 현재 프레임의 이전 주파수의 MSB를 각각 컨텍스트로 결정할 수 있다.
확률 매핑부(1106, 1206)는 컨텍스트 모드에 따라 N-튜플의 컨텍스트와 MSB 컨텍스트를 이용하여 최종적인 확률 모델을 매핑할 수 있다. 예를 들어, 현재 N-튜플(1201)의 심볼 A(MSB A)에 대한 확률 모델을 매핑하기 위해, 확률 매핑부(1106, 1206)는 컨텍스트 모드(Mode 0,1,2,3)에 따라 현재 N-튜플(1201)의 컨텍스트인 주변 N-튜플(1202, 1203, 1204, 1205)과 MSB A의 컨텍스트인 주변 N-튜플(1204)의 MSB와 주변 N-튜플(1202)의 MSB를 컨텍스트로 사용하는 확률 모델로 매핑 할 수 있다. 현재 N-튜플(1201)을 구성하는 MSB A, B, C, D 각각의 확률 모델은 도 12에서 확인할 수 있다. 그리고, 현재 N-튜플(1201)의 MSB B의 컨텍스트는 컨텍스트 모드에 따라 주변 N-튜플(1204)의 MSB와 주변 N-튜플(1202)의 MSB를 확률 모델로 매핑할 수 있다. 도 5와의 차이점은 현재 MSB에 대한 컨텍스트가 컨텍스트 모드에 따라 다르게 결정되는 것이다.
도 13은 MSB 복호화 방식(제2예)을 도시한 도면이다.
산술 복호화 장치(101)는 현재 N-튜플에 포함된 4개의 MSB(양자화된 샘플)를 통해 LSB의 초기 비트 깊이(bit depth)인 lev 0를 결정할 수 있다(S1301). LSB의 비트 깊이는 LSB 복호화할 때 사용될 수 있다. 그리고, 산술 복호화 장치(101)는 현재 N-튜플에 포함된 4개의 MSB에 대해 확률 모델 집합을 선택할 수 있다(S1302). 이 후, 산술 복호화 장치(101)는 FD 또는 wLPD에 따라 탈출 코드 여부에 대한 확률 모델을 선택하여(S1303), MSB에 대해 산술 복호화를 수행할 수 있다(S1304). 산술 복호화 장치(101)는 탈출 코드인지 여부를 ari_pk_mod_esc[32][2] 테이블을 이용하여 디코딩할 수 있다(S1305). 만약, 탈출 코드인 경우, 단계(1304)로 되돌아가고, 탈출코드가 아닌 경우, 단계(S1301)이 수행된다.
산술 복호화 장치(101)는 현재 N-튜플에 포함된 4개의 MSB에 대해 컨텍스트 모드 정보에 따라 MSB 심볼의 확률 모델을 맵핑할 수 있다(S1307). 그리고, 산술 복호화 장치(101)는 MSB 산술 복호화를 수행할 수 있다(S1306). 현재 N-튜플에 4개의 MSB가 포함되어 있으므로, 4번의 loop가 수행될 수 있다.
도 14는 LSB 복호화 방식(제2예)을 도시한 도면이다.
산술 복호화 장치(101)는 MSB 복호화를 통해 도출된 비트 깊이 인덱스(Bit Depth Index: bdi)를 셋팅할 수 있다(S1401). 이 때, 산술 복호화 장치(101)는 비트 깊이 인덱스가 LSB의 lev인 N보다 작은지 여부를 판단할 수 있다(S1402). 만약, 비트 깊이 인덱스가 N보다 작은 경우, 산술 복호화 장치(101)는 비트 깊이 인덱스 및 MSB 부호에 따른 확률 모델을 결정할 수 있다(S1403). 그리고, 비트 깊이 인덱스가 N보다 큰 경우, 산술 복호화 장치(101)는 MSB 부호에 따른 확률 모델을 결정할 수 있다(S1405). 그러면, 산술 복호화 장치(101)는 LSB의 비트 단위로 산술 복호화를 수행하고(S1404), MSB에 해당하는 LSB 중 비트 깊이 인덱스에 해당하는 비트값(1 또는 0)을 출력할 수 있다. 이 때, 산술 복호화 장치(101)는 이전에 부호화 또는 복호화된 MSB 값이 0, 양수, 음수인 경우를 분리하여 산술 부호화를 수행할 수 있다.
일례로, 산술 복호화 장치(101)는 비트 깊이가 N(5)보다 작은 경우 비트 깊이 정보를 컨텍스트로 사용하고, 이외의 경우는 MSB가 양수, 0, 음수의 3가지 경우만 구분한다. 산술 복호화 장치(101)는 산술 복호화를 수행한 후 비트 깊이 인덱스를 1증가시켜, 그 다음 비트 깊이에 대응하는 LSB를 산술 복호화 할 수 있다.
도 15는 컨텍스트 모드를 도시한 도면이다.
도 15에서, A, B, C, D, A0, B0, C0, D0, A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3 는 이미 복호화가 되었거나 또는 복호화 될 MSB 값이며, 부호 비트를 포함하여 3비트로 표현되고, -4~3까지의 값만을 가질 수 있다.
MSB 복호화 과정은 N-튜플에 대해 심볼 단위로 복호화가 수행될 수 있다. 즉, 주파수 인덱스에 따라 A, B, C, D를 순서대로 복호화를 수행할 수 있다. A, B, C, D의 MSB 값을 복호화 할 때, 현재 N-튜플의 컨텍스트와 이미 복호화된 주변 N-튜플에 대응하는 MSB 중 2개를 MSB 컨텍스트를 이용하여 산술 복호화를 수행한다. 예를 들어, 현재 N-튜플(1501)의 상위 비트 A를 복호화 할 때 N-튜플 컨텍스트를 결정하고, 주변 N-튜플(1504)의 MSB A0와 주변 N-튜플(1502)의 MSB D1값으로 MSB 컨텍스트를 구성하여 A를 복호화하는 확률 모델을 구성하여 산술 복호화를 수행한다. 이때 MSB 컨텍스트는 A0, D1만으로 구성되는 것이 아니라, 현재 N-튜플(1501)의 상위 비트 A 주변의 여러 개의 MSB값 2개를 조합하여 사용하는 것이 가능하다. D1, C1 또는 D1, B1 또는 B0, D1 등으로 구성할 수 있다.
이와 같이, MSB 컨텍스트를 구성한 경우에는 복호화할 때 사용할 컨텍스트모드가 결정되어야 한다. 컨텍스트 모드는 총 가능한 경우를 비트 패킹(bit packing)을 통해 표현될 수 있다. 또한 사용 빈도수를 고려하여 산술복호화 해서 복호화 할 수 있도록 표현하는 것도 가능하다.
또한, 컨텍스트 모드는 프레임 별로 한번만 전송해서, 전체 프레임에 동일한 MSB 컨텍스트를 사용하도록 표현할 수도 있다. 그리고, 프레임별 2번 전송해서 저주파 대역과 고주파 대역에 해당되는 MSB 컨텍스트를 다른 것을 사용하도록 표현할 수도 있다. 여기에서 프레임은 FD 모드인 경우 한 프레임에 해당되며, wLPT 모드인 경우는 wLPT를 사용하는 단위를 의미한다. 예를 들어 MSB 컨텍스트가 4 종류로 사용되고, 프레임별로 2번 전송한다고 했을 때, 도 15과 같이 총 15가지의 context mode를 구성할 수 있다. 또한 코어의 부호화 모드 FD 또는 wLPT 모드로 부호화 되었는지에 따라서 컨텍스트 모드를 몇 개의 set으로 구분해서 표현할 수 있으며, 주파수 스펙트럼 개수에 따라 컨텍스트 모드의 set을 다르게 구성할 수도 있다.
현재 N-튜플(1501)의 상위 비트 심볼 A를 복호화 하는 N-튜플의 컨텍스트와 MSB 컨텍스트가 결정되면, MSB 값을 복호화 하게 된다. 확률 모델을 모든 경우에 대해서 사용하게 되면, 확률 모델의 총 경우의 수가 많아지기 때문에 메모리가 늘어나는 문제점이 있다. 이를 방지하기 위해, 대표되는 확률 모델을 사용할 수 있도록 확률 매핑 테이블과 확률 테이블을 사용하여 확률을 표현할 수 있다. 예를 들어 N_pki 값이 32이고, MSB 컨텍스트의 경우가 4가지 이며, MSB 값이 -4~3까지의 값을 갖는다면, 총 확률의 경우의 수가 32*8*8*4=4096 가지가 되며, 최종 복호화 될 심볼이 8가지가 되므로 총 확률 테이블을 병합하지 않으면 65536의 확률 테이블을 이용할 수 밖에 없다. 이를 방지하기 위해서 병합 가능한 확률 모델을 병합을 수행하여 확률 테이블의 경우의 수를 줄이고, 32*8*8*4의 매핑 테이블을 구성하면 사용해야 할 메모리의 양을 줄일 수 있다.
도 16은 N-튜플에 대한 컨텍스트 기반의 산술 복호화 방법을 도시한 플로우차트이다.
도 16에 도시된 방법은 도 3 및 도 12의 산술 복호화 장치(101)의 동작에 대응될 수 있다.
산술 복호화 장치(101)는 현재 프레임이 리셋 프레임인지 여부를 판단할 수 있다(S1601). 만약, 리셋 프레임인 경우, 산술 복호화 장치(101)는 컨텍스트 리셋을 수행할 수 있다. 그리고, 프레임 리셋이 아닌 경우, 산술 복호화 장치(101)는 컨텍스트를 맵핑할 수 있다. 구체적으로, 산술 복호화 장치(101)는 현재 프레임의 길이가 이전 프레임과 다를 경우에 2 프레임간 주파수 인덱스를 매핑 시켜 주기 위해서 이전 프레임의 길이를 현재 프레임의 길이로 정규화하여 컨텍스트를 맵핑시킬 수 있다. 단계(S1601) 내지 단계(S1603)는 프레임 단위에 따라 수행될 수 있다.
산술 복호화 장치(101)는 MSB 컨텍스트를 결정하기 위해 컨텍스트 모드를 복호화할 수 있다(S1604). 이후, 산술 복호화 장치(101)는 현재 N-튜플에 대해 N-튜플 컨텍스트를 결정할 수 있다(S1605). 이 때, 초기 LSB 비트 깊이인 lev 0을 추정할 수 있다.
산술 복호화 장치(101)는 N-튜플의 컨텍스트(pki)와 FD/wLPT에 기초하여 탈출 코드에 대해 복호화할 수 있다(S1606). 탈출 코드가 복호화 될 때마다, lev 0이 업데이트 되고, 탈출 코드가 아닌 것이 복호화되면, MSB 복호화를 수행한다(S1609).
그리고, 산술 복호화 장치(101)는 현재 복호화할 MSB에 해당하는 MSB 컨텍스트를 결정할 수 있다(S1607). 이후, 산술 복호화 장치(101)는 MSB 복호화를 수행할 확률 모델을 결정하게 되는데 N-튜플 컨텍스트 및 MSB 컨텍스트를 기반으로 부합되는 확률 모델을 결정할 수 있다(S1608).
산술 복호화 장치(101)는 확률 모델을 기반으로 MSB 복호화를 수행한다(S1609).
산술 복호화 장치(101)는 탈출 코드를 복호화하는 과정을 통해 도출된 LSB의 비트 깊이 만큼의 비트를 복호화할 수 있다(S1610). 산술 복호화 장치(101)는 MSB와 LSB를 통해 양자화된 샘플을 생성하고(S1611), 다음 N-튜플을 복호화하기 위해 컨텍스트를 업데이트할 수 있다(S1612). 그러면, 산술 복호화 장치(101)는 주파수 인덱스를 증가시켜(S1613), 다음 N-튜플에 대해 복호화를 수행할 수 있다.
도 17은 N-튜플에 대한 컨텍스트 기반의 산술 부호화 방법을 도시한 플로우차트이다.
도 17에 도시된 방법은 도 2 및 도 11의 산술 부호화 장치(100)의 동작에 대응될 수 있다.
산술 부호화 장치(101)는 현재 프레임이 리셋 프레임인지 여부를 판단할 수 있다(S1701). 만약, 리셋 프레임인 경우, 산술 부호화 장치(101)는 컨텍스트 리셋을 수행할 수 있다. 그리고, 프레임 리셋이 아닌 경우, 산술 부호화 장치(101)는 컨텍스트를 맵핑할 수 있다. 구체적으로, 산술 부호화 장치(101)는 현재 프레임의 길이가 이전 프레임과 다를 경우에 2 프레임간 주파수 인덱스를 매핑 시켜 주기 위해서 이전 프레임의 길이를 현재 프레임의 길이로 정규화하여 컨텍스트를 맵핑시킬 수 있다. 단계(S1701) 내지 단계(S1703)는 프레임 단위에 따라 수행될 수 있다.
산술 부호화 장치(101)는 MSB 컨텍스트를 결정하기 위해 컨텍스트 모드를 부호화할 수 있다(S1704). 이후, 산술 부호화 장치(101)는 현재 N-튜플에 대해 N-튜플 컨텍스트를 결정할 수 있다(S1705). 이 때, 초기 LSB 비트 깊이인 lev 0을 추정할 수 있다.
산술 부호화 장치(101)는 N-튜플의 컨텍스트(pki)와 FD/wLPT에 기초하여 탈출 코드에 대해 부호화할 수 있다(S1706). 탈출 코드가 부호화 될 때마다, lev 0이 업데이트 되고, 탈출 코드가 아닌 것이 부호화되면, MSB 부호화를 수행한다(S1709).
그리고, 산술 부호화 장치(101)는 현재 부호화할 MSB에 해당하는 MSB 컨텍스트를 결정할 수 있다(S1707). 이후, 산술 부호화 장치(101)는 MSB 부호화를 수행할 확률 모델을 결정하게 되는데 N-튜플 컨텍스트 및 MSB 컨텍스트를 기반으로 부합되는 확률 모델을 결정할 수 있다(S1708).
산술 부호화 장치(101)는 확률 모델을 기반으로 MSB 부호화를 수행한다(S1709).
산술 부호화 장치(101)는 탈출 코드를 부호화하는 과정을 통해 도출된 LSB의 비트 깊이 만큼의 비트를 부호화할 수 있다(S1710). 산술 부호화 장치(101)는 MSB와 LSB를 통해 양자화된 샘플을 생성하고(S1711), 다음 N-튜플을 부호화하기 위해 컨텍스트를 업데이트할 수 있다(S1712).
그러면, 산술 부호화 장치(101)는 주파수 인덱스를 증가시켜(S1713), 다음 N-튜플에 대해 복호화를 수행할 수 있다.
도 18은 컨텍스트 모드를 구현하는 일례를 도시한 도면이다.
컨텍스트 모드는 현재 복호화 할 MSB 심볼 주변의 MSB 값들을 사용해서 복호화를 수행할 때 사용할 컨텍스트의 MSB 값들의 상대적인 위치 정보를 의미한다. 이 상대적인 위치 정보는 MSB 컨텍스트 템플릿(MSB context template)으로 표현될 수 있다. 이 때, 산술복호화 장치(101)는 MSB를 복호화할 때, 사용할 복수 개의 상위 비트 컨텍스트 중 1개의 컨텍스트 템플릿 인덱스를 복호화할 수 있다. 그러면, 산술 복호화 장치(101)는 컨텍스트 템플릿 인덱스에 따라 컨텍스트 템플릿을 결정하여 상위 비트 컨텍스트를 결정할 수 있다.
*컨텍스트 템플릿 0~3은 상대적인 위치 정보를 의미하며, 'c'는 현재 복호화할 MSB 심볼이며, p0, p1, cp0, cp1, cp2는 이미 복호화된 MSB 심볼이다. 컨텍스트 템플릿 0의 경우에는 이전 프레임의 동일한 주파수 위치의 MSB 심볼과 동일 프레임의 이전 주파수 위치의 MSB 심볼을 MSB 컨텍스트로 사용하는 예이다.
컨텍스트 템플릿은 낮은 주파수 대역과 높은 주파수 대역에 대해서 다른 값을 가질 수 있다. 일례로, 컨텍스트 템플릿을 동시에 표현하기 위해서 컨텍스트 템플릿 인덱스(Context Template Index)가 사용될 수 있다. 이 때, 컨텍스트 템플릿 인덱스는 주파수 대역별로 결정될 수 있다. 그리고, 컨텍스트 템플릿 인덱스는 코어의 복호화 모드를 컨텍스트로 사용하여 산술 복호화될 수 있다.
일례로, 컨텍스트 템플릿 인덱스는 아래 수식과 같이 표현될 수 있다.
Figure pat00001
상기 수식의 ct_l과 ct_h는 각각 저주파 대역의 컨텍스트 템플릿 값과 고주파 대역의 컨텍스트 템플릿 값을 의미하며, 총 4가지의 경우를 가지는 예를 표현한다. ctidx는 컨텍스트 템플릿 인덱스를 의미한다.
LSB 복호화부는 아래 수식을 통해 하위 비트를 복호화할 수 있다.
Figure pat00002
x는 현재 복호화 하는 LSB 값과 동일한 주파수 위치에 해당되는 MSB 값이고, l은 LSB의 비트 깊이를 의미한다. 또한, a0, b0, c0, d0는 복호화 될 MSB 심볼을 의미한다.
도 19는 산술 부호화 장치(제3예)의 세부 구성을 도시한 도면이다.
산술 부호화 장치(100)는 컨텍스트 리셋부(1901), 컨텍스트 맵핑부(1902), 1-튜플 컨텍스트 결정부(1903), MSB 컨텍스트 결정부(1904), 확률 매핑부(1905), 탈출코드 부호화부(1906), MSB 부호화부(1907), LSB 부호화부(1908), 컨텍스트 템플릿 부호화부(1909) 및 컨텍스트 업데이트부(1910)를 포함할 수 있다.
도 19의 산술 부호화 장치(100)는 도 10의 산술 부호화 장치(100)와 비교했을 때, 1-튜플 컨텍스트 결정부(1903)의 차이가 존재한다. 즉, 도 10의 산술 부호화 장치(100)는 N-튜플 컨텍스트를 이용하는 동작을 수행하나, 도 19의 산술 부호화 장치(100)는 1-튜플 컨텍스트를 이용하는 동작을 수행할 수 있다.
컨텍스트 리셋부(1901)와 컨텍스트 맵핑부(1902)는 프레임 단위에 따라 동작할 수 있다. 현재 프레임이 리셋 프레임인 경우, 컨텍스트 리셋부(1901)는 컨텍스트 리셋을 수행할 수 있다. 부호화하고자 하는 현재 프레임이 리셋 프레임이 아닌 경우, 컨텍스트 맵핑부(1902)는 현재 프레임의 주파수 스펙트럼의 길이가 이전 프레임의 주파수 스펙트럼의 길이가 다른 경우, 이전 프레임의 길이를 현재 프레임의 길이로 정렬할 수 있다. 또한, 컨텍스트 맵핑부(1902)는 이전 프레임의 부호화된 MSB 값들에 대해 추가적으로 맵핑을 수행할 수 있다..
1-튜플 컨텍스트 결정부(1903)는 부호화하고자 하는 현재 1-튜플(1-tuple)(1911)에 대해 주변에 위치한 주변 1-튜플들(neighborhood 1-tuples)(1912~1918)의 양자화된 스펙트럼값을 이용하여 현재 1-튜플(1911)에 대한 컨텍스트를 결정할 수 있다. 일례로, 1-튜플 컨텍스트 결정부(1903)는 이미 부호화된 7개의 주변 1-튜플들(1912~1918)을 이용하여 현재 1-튜플(1911)에 대한 컨텍스트를 결정할 수 있다.
그리고, 1-튜플 컨텍스트 결정부(1903)는 현재 1-튜플(1911)에 대해 7개의 양자화된 스펙트럼인 주변 1-튜플(1912~1918)을 이용하여 64개의 상태(state)로 매핑을 수행할 수 있다. 또한, 1-튜플 컨텍스트 결정부(1903)는 7개의 양자화된 스펙트럼을 추가로 양자화할 수 있다. 구체적으로, 1-튜플 컨텍스트 결정부(1903)는 training과정에서 (0 -> 0), (-1 or 1 -> 1), (2 or -2->2), (3이상 or -4 이하->3)으로 각각 매핑(mapping)시켜서 양자화된 스펙트럼의 정보를 줄일 수 있다. 그런 후, 1-튜플 컨텍스트 결정부(1903)는 매핑된 양자화 스펙트럼이 발생할 수 있는 모든 가능한 경우의 수를 상위 비트 심볼들의 발생 확률이 비슷한 경우들끼리 묶어서 1개의 state를 구성함으로써 복수 개의 상태(state)를 생성할 수 있다.
이렇게 구성된 매핑 관계는 해쉬 테이블(hash table)을 통해 수행될 수 있다. 이 때, 1-튜플 컨텍스트 결정부(1903)는 현재 1-튜플(1911)의 주변에 위치한 7개의 양자화된 스펙트럼인 주변 1-튜플들(1912~1918)를 training 과정에서 구성된 해쉬 테이블에 입력하여 상태를 결정할 수 있다. 또한 추가적인 양자화된 샘플을 해쉬 테이블의 입력으로 사용하여 상태(state)를 결정할 수 있다.
또한 현재 1-튜플(1911)의 컨텍스트를 결정하기 위해 코어의 부호화 모드 정보가 추가적으로 고려될 수 있다. 1-튜플 컨텍스트 결정부(1903)는 코어의 부호화 모드 정보가, FD 모드인지 wLPT 모드인지를 판단하여 training 과정에 반영할 수 있다. 1-튜플 컨텍스트 결정부(1903)는 이미 부호화된 주변 1-tuple들과 코어 부호화 모드 정보해쉬 테이블에 입력하여 상태를 결정할 수 있다.
1-튜플 컨텍스트 결정부(1903)는 추가적으로 현재 양자화된 스펙트럼인 현재 1-튜플(1911)의 scaling down 횟수를 예측하여 상위 비트 정보 및 하위 비트 정보를 추출할 수 있다. Scaling down 횟수는 주변 1-tuple을 사용하여 예측을 수행한다. 이 때, 1-튜플 컨텍스트 결정부(1903)는 7개의 주변 1-튜플들(1912~1918) 중 적어도 하나를 사용하여 현재 1-튜플(1911)의 scaling down 횟수를 예측할 수 있다.
예를 들어, 현재 프레임의 이전 주파수에 대응하는 주변 1-튜플(1917 또는 1918)을 사용하여 예측을 수행할 경우, 1-튜플 컨텍스트 결정부(1903)는 주변 1-튜플(1917 또는 1918)의 값이 현재 1-튜플(1911)의 상위 비트를 표현하는 비트수로 표현 가능한 영역에 도달할 때까지 1/2 scaling down을 수행하며, 표현 가능한 영역에 도달할 때의 scaling down 횟수를 결정할 수 있다.. 이 때, 상위 비트를 부호 정보를 포함한 3비트로 정의된 경우, 1-튜플 컨텍스트 결정부(1903)는 주변 1-튜플(1917 또는 1918)의 값이 -4~3까지의 값을 가질 때까지 1/2 scaling down을 수행하여 현재 1-튜플(1911)에 대한 scaling down 횟수를 예측할 수 있다. 예측한 scaling down 횟수는 전술한 lev0 추정과 동일한 의미이다.
그리고, 일실시예로, 1-튜플 컨텍스트 결정부(1903)는 현재 1-튜플(1911)에 대해 현재 프레임의 이전 주파수에 대응하는 2개의 주변 1-튜플(1917, 1918)을 사용하여 lev0 추정을 수행할 수 있다. 복수의 주변 1-튜플을 사용하는 경우, lev0 추정의 정확도가 향상될 수 있다.
또 다른 일 실시예로, 1-튜플 컨텍스트 결정부(1903)는 현재 1-튜플(1911)에 대해 현재 프레임의 이전 주파수에 대응하는 1개 이상의 주변 1-튜플(1917 또는 1918)을 사용하여 lev0 추정을 수행하고, 현재 1-튜플(1911)에 대해 현재 프레임의 이전 주파수에 대응하는 1개 이상의 주변 1-튜플의 절대값을 비교함으로써 scaling down 횟수를 결정할 수 있다. 구체적으로, 1-튜플 컨텍스트 결정부(1903)는 현재 1-튜플(1911)에 대해 현재 프레임의 이전 주파수에 대응하는 1개 이상의 주변 1-튜플의 값을 절대값으로 변경하고, 변경된 절대값에 대해 1/2 scaling down을 수행하면서, scaling down된 값들이 특정 임계치에 도달하는 경우, scaling down을 멈추고 최종적으로 scaling down된 값을 lev0 추정치로 정할 수 있다.
예를 들어 상위 비트(MSB)를 부호 정보를 포함한 3비트로 정의하는 경우. 1-튜플 컨텍스트 결정부(1903)는 현재 1-튜플(1911)에 대해 현재 프레임의 이전 주파수에 대응하는 2개의 주변 1-튜플(1917, 1918)의 절대값을 산출한 후, 2개의 절대값을 1/2 scaling down을 수행하면서 4이하의 값에 도달하는 경우 scaling down을 멈추고 최종적으로 scaling down된 값을 lev0 추정치로 사용할 수 있다.
또한, 일실시예로 1-튜플 컨텍스트 결정부(1903)는 현재 1-튜플(1911)에 대해 현재 프레임의 이전 주파수에 대응하는 1개의 주변 1-튜플(1917) 또는 2개의 주변 1-튜플들(1917 및 1918)을 선택적으로 사용하여 lev0을 추정할 수 있다.
예를 들어, 상기 설명한 방법은 코어의 모드에 따라 lev0을 추정하는 것으로, 1-튜플 컨텍스트 결정부(1903)는 FD 모드인 경우는 1개의 주변 1-튜플을 사용하고, wLPT 모드인 경우는 2개의 주변 1-튜플을 사용하여 lev0을 추정할 수 있다.. wLPT 모드는 FD 모드에 비교하여 상대적으로 주파수 스펙트럼이 평탄할 가능성이 높기 때문에, wLPT 모드일 때는 현재 1-튜플(1911)에 대해 주변에 위치한 1개의 주변 1-튜플을 사용하는 것보다 여러 개의 주변 1-튜플을 사용하는 것이 lev0을 효과적으로 추정할 수 있다.
또한 1-튜플 컨텍스트 결정부(1903)는 FD 모드에서 부호화를 수행할 때 사용되는 툴에 기초하여 lev0 추정에 사용되는 주변 1-튜플의 개수를 추정할 수 있다. 예를 들어, FD 모드에서 부호화를 수행할 때 사용되는 툴은 TNS(Temporal Noise Shaping), TW-MDCT(Time Warped MDCT) 등이 있다. 이 때, FD 모드에서 TW-MDCT 툴을 사용하여 부호화가 수행된 경우, 1-튜플 컨텍스트 결정부(1903)는 2개의 주변 1-튜플(1917, 1918)을 이용하여 lev0을 추정할 수 있다.
또한. 1-튜플 컨텍스트 결정부(1903)는 프레임 별로 전송된 정보를 기초로 1개의 주변 1-튜플(1917)을 사용하거나, 또는 2개의 주변 1-튜플(1917, 1918)을 사용하는 방식을 결정하여 lev0을 추정할 수 있다. 예를 들어, 1-튜플 컨텍스트 결정부(1903)는 산술복호화 방식을 적용하여 프레임 별로 전송된 주변 1-튜플의 개수에 따라 lev0을 추정할 수 있다. 구체적으로, 1-튜플 컨텍스트 결정부(1903)는 산술 복호화 시에 FD 모드 혹은 wLPT 모드에 따라 주변 1-튜플의 사용 개수에 대한 빈도수에 근거하여 확률 모델을 생성하고, 생성된 확률 모델을 컨텍스트로 적용하여 산술 복호화를 수행할 수 있다.
MSB 컨텍스트 결정부(1904)는 1-튜플 컨텍스트 결정부(1903)에서 매핑된 전체 상태(state) 중 서브셋인 특정 상태인 경우 추가적인 컨텍스트를 생성할 수 있다. 이 때, 생성된 추가적인 컨텍스트는 MSB 부호화부(1907)에서 현재 1-튜플(1911)의 상위 비트를 부호화할 때 확률 모델을 선택하는 과정에서 전체 상태(state)와 결합되어 사용될 수 있다. 그리고, 전체 상태(state) 중 특정 상태를 제외한 나머지 상태에 대해서, MSB 부호화부(1907)는 전체 상태(state)만을 이용하여 확률 모델을 선택할 수 있다.
일례로, MSB 컨텍스트 결정부(1904)를 통해 생성되는 MSB 컨텍스트는 다음과 같다. 컨텍스트 템플릿에 대해서는 도 22에서 구체적으로 설명된다.
(1) 현재 프레임에서 이전 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(1917 또는 1918)의 상위 비트(MSB) 값 또는 이전 프레임에서 현재 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(1914)의 상위 비트(MSB) 값
(2) 컨텍스트 템플릿(Context template)과 결합된 양자화된 스펙트럼의 상위 비트 값
(3)현재 프레임에서 이전 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(1917 또는 1918)을 추가적으로 양자화 하여 추출된 값 또는 이전 프레임에서 현재 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(1914)을 추가적으로 양자화 하여 추출된 값
(4) 컨텍스트 템플릿(Context template)과 결합된 양자화된 스펙트럼을 추가적으로 양자화하여 추출된 값
(5) 이전 프레임의 양자화된 스펙트럼인 주변 1-튜플(1912~1916)을 추가적으로 양자화하여 추출된 값
(6) 현재 프레임에서 이전 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(1917 또는 1918)을 변경하여 추출된 값 또는 이전 프레임에서 현재 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(1914)을 변경하여 추출된 값
(7) 컨텍스트 템플릿(Context template)과 결합된 양자화된 스펙트럼을 변경하여 추출된 값
MSB 컨텍스트 결정부(1904)는 양자화된 스펙트럼을 추가적으로 양자화하는 방법은 다음과 같다. 첫번째로, MSB 컨텍스트 결정부(1904)는 양자화된 스펙트럼을 FD(Frequency Domain), wLPT (weighted Linear Prediction Transform) 모드에 따라 추가적으로 양자화할 수 있다. 두번째로, MSB 컨텍스트 결정부(1904)는 특정 방식(-4~3 -> -4~3까지의 값을 직접 사용하고, 4이상인 경우 3으로 매핑하고, -5이하인 경우 -4로 매핑함)을 첫번째 양자화된 스펙트럼의 컨텍스트로 결정하기 위해 추가적으로 양자화할 수 있다.
MSB 값을 사용하는 경우, MSB 부호화부(1907)는 현재 프레임 또는 이전 프레임에 대해 무손실 부호화된 양자화된 스펙트럼인 주변 1-튜플(1912~1918)의 상위 비트(MSB) 값들 중 선택하여 현재 1-튜플(1911)을 복호화할 수 있다.
MSB 컨텍스트 결정부(1904)가 양자화된 스펙트럼을 변경하는 방법은 다음과 같다.
MSB 컨텍스트 결정부(1904)는 현재 프레임에 대해 무손실 부호화할 현재 주파수 스펙트럼인 현재 1-튜플(1911)의 lev0 추정치를 기준으로 주변 1-튜플(1912-1918)을 lev0만큼 scaling down 하여 양자화된 주파수 스펙트럼 값을 추출할 수 있다. MSB 컨텍스트 결정부(1904)는 Scaling down 수행 후에 추출한 양자화된 주파수 스펙트럼 값을 사용하거나 또는 양자화된 주파수 스펙트럼 값이 현재 1-튜플(1911)의 상위 비트를 표현하는 비트수로 표현할 수 있는 영역을 벗어난 경우 양자화된 주파수 스펙트럼 값을 최소값 또는 최대값으로 셋팅하여 사용할 수 있다.
탈출코드 부호화부(1905)는 상기 추정된 lev0 횟수만큼 무손실 부호화할 현재 1-튜플(1911)을 1/2 scaling down을 수행하여 변경된 값이 현재 N-튜플(1911)의 상위 비트를 정의하는 비트수로 표현할 수 있는 값을 초과하는 경우 탈출코드 부호화를 수행할 수 있다.
탈출 코드를 부호화하는 방식은 (1) 탈출코드인지 아닌지에 대한 정보를 부호화하는 방식과, (2) 탈출 코드를 상위 비트 심볼에 포함시켜 부호화하는 방식을 포함한다. 구체적으로, (1) 탈출코드인지 아닌지에 대한 정보를 부호화하는 방식은 탈출 코드에 1을 할당하고, 탈출 코드가 아닌 경우를 0으로 할당하여 0 또는 1을 부호화하는 것을 의미한다. 만약, 탈출 코드가 아닌 0이 부호화되면 MSB 부호화부(1907)가 현재 1-튜플(1911)의 상위 비트를 부호화할 수 있다. 그리고, (2) 탈출 코드를 상위비트 심볼에 포함시켜 부호화하는 방식은 상위 비트 심볼의 개수가 8가지인 경우 8가지의 상위 비트 심볼과 탈출 코드를 동일 레벨의 심볼로 표현하여 총 9개 중 1개를 부호화하는 방식을 의미한다.. 예를 들어, 탈출코드 부호화부(1905)는 0~7은 MSB 심볼, 9은 탈출 코드로 설정하여 9개의 심볼을 부호화할 수 있다.
탈출코드 부호화부(1905)는 예측된 1/2 scaling down 횟수만큼 현재 부호화할 양자화된 스펙트럼인 현재 1-튜플(1911)을 scaling down 했을 때, 현재 1-튜플(1911)의 값이 -4~3 사이에 있게 되면 탈출 코드(Escape code)를 부호화 하지 않는다. 만약, 현재 1-튜플(1911)을 scaling down 했을 때, 현재 1-튜플(1911)의 값이 -4~3의 범위에 속하지 않는 경우, 탈출코드 부호화부(1905)는 현재 1-튜플(1911)의 값이 -4~3 범위에 속하도록 현재 1-튜플(1911)을 추가적으로 scaling down을 수행하고, scaling down 횟수만큼 탈출 코드를 부호화할 수 있다. 이 때 scaling down 과정에서 손실된 데이터는 하위 비트로 포함되여 LSB 부호화부(1908)에서 부호화될 수 있다.
확률 매핑부(1906)는 현재 1-튜플(1911)에 대한 컨텍스트와 MSB 컨텍스트를 이용하여 최종적인 확률 모델을 매핑 할 수 있다. 확률 매핑부(1906)는 매핑 테이블과 확률 테이블을 이용할 수 있다. 확률 모델을 매핑하는 과정은 MSB를 복호화 할 때 적용할 확률 모델을 확률 테이블에서 찾아오는 과정이다. 즉, 확률 모델을 모든 경우에 대해서 전부 가지고 있으면, 메모리의 크기에 대한 부담이 있기 때문에, 메모리를 줄일 목적으로 확률 매핑부(1906)는 컨텍스트에 따라 확률 모델을 찾도록 매핑 테이블을 사용할 수 있다. 매핑 테이블은 각 확률의 컨텍스트에 해당되는 총 배열에 확률 테이블의 인덱스를 할당하여 구성될 수 있다. 확률 테이블은 MSB 복호화 시에 사용되는 모든 확률 값으로 구성된다.
MSB 부호화부(1907)는 (ⅰ) 1-튜플 컨텍스트 결정부(1903)에서 생성된 전체 상태(state)만을 이용하여 현재 1-튜플(1910)의 MSB를 부호화하거나, 또는 (ⅱ) 1-튜플 컨텍스트 결정부(1903)에서 생성된 전체 상태(state) 중 특정 상태의 서브셋과 MSB 컨텍스트 결정부(1904)에서 결정된 추가적인 컨텍스트를 이용하여 확률 모델을 선택함으로써 현재 1-튜플(1910)의 상위 비트(MSB)를 산술 부호화할 수 있다.
LSB 부호화부(1908)는 현재 1-튜플(1911)의 하위 비트(LSB)의 비트 깊이 만큼의 잔여 비트를 컨텍스트를 이용하여 산술 부호화할 수 있다. 이 때, 컨텍스트는 현재 1-튜플(1911)의 현재 주파수에 대응하는 주변 1-튜플(1914)의 상위 비트의 부호 정보(음수, 0, 양수)를 포함할 수 있다. 또한 주변 1-튜플(1914)의 상위 비트의 부호 정보는 .0을 제외한 음수, 양수로 구성된 부호 정보를 포함할 수 있다.. 그러면, LSB 부호화부(1908)는 주변 1-튜플(1914)의 상위 비트의 부호 정보에 따라 확률 모델을 선택한 후, 하위 비트(LSB)를 부호화할 수 있다.
또한, LSB 부호화부(1908)는 주변 1-튜플(1914)의 상위 비트의 부호 정보 및 하위 비트의 비트 깊이에 따라 결정된 컨텍스트를 이용하여 하위 비트를 부호화할 수 있다. 이 때, 하위 비트의 비트 깊이는 인덱스(레벨) 정보로 표현될 수 있다.
컨텍스트 템플릿 부호화부(1909)는 현재 1-튜플(1911)의 상위 비트(MSB)를 부호화할 때 사용할 복수 개의 컨텍스트 중 최종 전송된 1개의 컨텍스트 템플릿에 대해 부호화를 수행할 수 있다. 복수 개의 컨텍스트는 MSB 컨텍스트 결정부(1904)에서 MSB 컨텍스트를 결정하기 위해 추출되는 값을 의미한다. 컨텍스트 템플릿은 부호화할 현재 1-튜플(1911) 대비 주변 1-튜플의 상대적인 위치를 표현하는 것으로, 컨텍스트 템플릿에 의해 결정된 위치에서 MSB 컨텍스트로 사용될 값이 추출될 수 있다.. 컨텍스트 템플릿은 비트 패킹(bit-packing)에 의해 전송되는 방법도 있고, 산술부호화를 수행하여 전송되는 방법도 있다. 컨텍스트 템플릿 전송은 프레임 별로 1번 전송된다. 컨텍스트 템플릿 부호화부(1909)는 후보 개수를 모두 표현할 수 있는 비트를 할당하여 비트 패킹을 수행할 수 있다. 그러면, MSB 컨텍스트 결정부(1904)는 컨텍스트 템플릿에 따라 적절한 MSB 컨텍스트를 선택할 수 있다.
컨텍스트 업데이트부(1910)는 다음 1-튜플을 부호화하기 위해 양자화된 샘플을 업데이트 할 수 있다. 그러면, MSB 컨텍스트 결정부(1904)는 다음 1-튜플에 대해 업데이트된 양자화된 샘플을 이용하여 MSB 컨텍스트를 결정할 수 있다.
도 20은 산술 복호화 장치(제3예)의 세부 구성을 도시한 도면이다.
도 20의 산술 복호화 장치(100)는 도 19의 산술 부호화 장치(100)와 서로 대응되며, 각각의 구성 요소가 수행하는 동작 방식도 동일하다.
산술 복호화 장치(101)는 컨텍스트 리셋부(2001), 컨텍스트 맵핑부(2002), 컨텍스트 템플릿 복호화부(2003), 1-튜플 컨텍스트 결정부(2004), MSB 컨텍스트 결정부(2005), 확률 매핑부(2006), 탈출코드 복호화부(2007), MSB 복호화부(2008), LSB 복호화부(2009), 양자화된 샘플 생성부(2010) 및 컨텍스트 업데이트부(2011) 를 포함할 수 있다.
도 20의 산술 복호화 장치(100)는 도 11의 산술 복호화 장치(100?)와 비교했을 때, 1-튜플 컨텍스트 결정부(2007)의 차이가 존재한다. 즉, 도 10의 산술 복호화 장치(100)는 N-튜플 컨텍스트를 이용하는 동작을 수행하나, 도 20의 산술 복호화 장치(100)는 1-튜플 컨텍스트를 이용하는 동작을 수행할 수 있다.
컨텍스트 리셋부(2001)와 컨텍스트 맵핑부(2002)는 프레임 단위에 따라 동작할 수 있다. 현재 프레임이 리셋 프레임인 경우, 컨텍스트 리셋부(2001)는 컨텍스트 리셋을 수행할 수 있다. 복호화하고자 하는 현재 프레임이 리셋 프레임이 아닌 경우, 컨텍스트 맵핑부(2002)는 현재 프레임의 주파수 스펙트럼의 길이가 이전 프레임의 주파수 스펙트럼의 길이가 다른 경우, 이전 프레임의 길이를 현재 프레임의 길이로 정렬할 수 있다. 또한, 컨텍스트 맵핑부(2002)는 이전 프레임의 복호화된 MSB 값들에 대해 추가적으로 맵핑을 수행할 수 있다.
컨텍스트 템플릿 복호화부(2003)는 현재 1-튜플(2012)의 상위 비트(MSB)를 복호화할 때 사용할 복수 개의 컨텍스트 중 최종 전송된 1개의 컨텍스트 템플릿에 대해 복호화를 수행할 수 있다. 복수 개의 컨텍스트는 MSB 컨텍스트 결정부(2005)에서 MSB 컨텍스트를 결정하기 위해 추출되는 값을 의미한다. 컨텍스트 템플릿은 복호화할 현재 1-튜플(2012) 대비 주변 1-튜플의 상대적인 위치를 표현하는 것으로, 컨텍스트 템플릿에 의해 결정된 위치에서 MSB 컨텍스트로 사용될 값이 추출될 수 있다. 컨텍스트 템플릿은 비트 패킹(bit-packing)에 의해 전송되는 방법도 있고, 산술복호화를 수행하여 전송되는 방법도 있다. 컨텍스트 템플릿 전송은 프레임 별로 1번 전송된다. 컨텍스트 템플릿 복호화부(2003)는 후보 개수를 모두 표현할 수 있는 비트를 할당하여 비트 패킹을 수행할 수 있다. 그러면, MSB 컨텍스트 결정부(2005)는 컨텍스트 템플릿에 따라 적절한 MSB 컨텍스트를 선택할 수 있다.
1-튜플 컨텍스트 결정부(2004)는 복호화하고자 하는 현재 1-튜플(1-tuple)(2012)에 대해 주변에 위치한 주변 1-튜플들(neighborhood 1-tuples)(2013~2019)의 양자화된 스펙트럼값을 이용하여 현재 1-튜플(2012)에 대한 컨텍스트를 결정할 수 있다. 일례로, 1-튜플 컨텍스트 결정부(2004)는 이미 복호화된 7개의 주변 1-튜플들(2013~2019)을 이용하여 현재 1-튜플(2012)에 대한 컨텍스트를 결정할 수 있다.
*그리고, 1-튜플 컨텍스트 결정부(2004)는 현재 1-튜플(2012)에 대해 7개의 양자화된 스펙트럼인 주변 1-튜플(2013~2019)을 이용하여 64개의 상태(state)로 매핑을 수행할 수 있다. 또한, 1-튜플 컨텍스트 결정부(2004)는 7개의 양자화된 스펙트럼을 추가로 양자화할 수 있다. 구체적으로, 1-튜플 컨텍스트 결정부(2004)는 training과정에서 (0 -> 0), (-1 or 1 -> 1), (2 or -2->2), (3이상 or -4 이하->3)으로 각각 매핑(mapping)시켜서 양자화된 스펙트럼의 정보를 줄일 수 있다. 그런 후, 1-튜플 컨텍스트 결정부(2004)는 매핑된 양자화 스펙트럼이 발생할 수 있는 모든 가능한 경우의 수를 상위 비트 심볼들의 발생 확률이 비슷한 경우들끼리 묶어서 1개의 state를 구성함으로써 복수 개의 상태(state)를 생성할 수 있다.
이렇게 구성된 매핑 관계는 해쉬 테이블(hash table)을 통해 수행될 수 있다. 이 때, 1-튜플 컨텍스트 결정부(2004)는 현재 1-튜플(2012)의 주변에 위치한 7개의 양자화된 스펙트럼인 주변 1-튜플들(2013~2019)를 training 과정에서 구성된 해쉬 테이블에 입력하여 상태를 결정할 수 있다. 또한 추가적인 양자화된 샘플을 해쉬 테이블의 입력으로 사용하여 상태(state)를 결정할 수 있다.
또한 현재 1-튜플(2012)의 컨텍스트를 결정하기 위해 코어의 복호화 모드 정보가 추가적으로 고려될 수 있다. 1-튜플 컨텍스트 결정부(2004)는 코어의 복호화 모드 정보가, FD 모드인지 wLPT 모드인지를 판단하여 training 과정에 반영할 수 있다. 1-튜플 컨텍스트 결정부(2004)는 이미 복호화된 주변 1-tuple들과 코어 복호화 모드 정보해쉬 테이블에 입력하여 상태를 결정할 수 있다.
1-튜플 컨텍스트 결정부(2004)는 추가적으로 현재 양자화된 스펙트럼인 현재 1-튜플(2012)의 scaling down 횟수를 예측하여 상위 비트 정보 및 하위 비트 정보를 추출할 수 있다. Scaling down 횟수는 주변 1-tuple을 사용하여 예측을 수행한다. 이 때, 1-튜플 컨텍스트 결정부(2004)는 7개의 주변 1-튜플들(2013~2019) 중 적어도 하나를 사용하여 현재 1-튜플(2012)의 scaling down 횟수를 예측할 수 있다.
예를 들어, 현재 프레임의 이전 주파수에 대응하는 주변 1-튜플(2018 또는 2019)을 사용하여 예측을 수행할 경우, 1-튜플 컨텍스트 결정부(2004)는 주변 1-튜플(2018 또는 2019)의 값이 현재 1-튜플(2012)의 상위 비트를 표현하는 비트수로 표현 가능한 영역에 도달할 때까지 1/2 scaling down을 수행하며, 표현 가능한 영역에 도달할 때의 scaling down 횟수를 결정할 수 있다.. 이 때, 상위 비트를 부호 정보를 포함한 3비트로 정의된 경우, 1-튜플 컨텍스트 결정부(2004)는 주변 1-튜플(2018 또는 2019)의 값이 -4~3까지의 값을 가질 때까지 1/2 scaling down을 수행하여 현재 1-튜플(2012)에 대한 scaling down 횟수를 예측할 수 있다. 예측한 scaling down 횟수는 전술한 lev0 추정과 동일한 의미이다.
그리고, 일실시예로, 1-튜플 컨텍스트 결정부(2004)는 현재 1-튜플(2012)에 대해 현재 프레임의 이전 주파수에 대응하는 2개의 주변 1-튜플(2018, 2019)을 사용하여 lev0 추정을 수행할 수 있다. 복수의 주변 1-튜플을 사용하는 경우, lev0 추정의 정확도가 향상될 수 있다.
또 다른 일 실시예로, 1-튜플 컨텍스트 결정부(2004)는 현재 1-튜플(2012)에 대해 현재 프레임의 이전 주파수에 대응하는 1개 이상의 주변 1-튜플(2018 또는 2019)을 사용하여 lev0 추정을 수행하고, 현재 1-튜플(2012)에 대해 현재 프레임의 이전 주파수에 대응하는 1개 이상의 주변 1-튜플의 절대값을 비교함으로써 scaling down 횟수를 결정할 수 있다. 구체적으로, 1-튜플 컨텍스트 결정부(2004)는 현재 1-튜플(2012)에 대해 현재 프레임의 이전 주파수에 대응하는 1개 이상의 주변 1-튜플의 값을 절대값으로 변경하고, 변경된 절대값에 대해 1/2 scaling down을 수행하면서, scaling down된 값들이 특정 임계치에 도달하는 경우, scaling down을 멈추고 최종적으로 scaling down된 값을 lev0 추정치로 정할 수 있다.
예를 들어 상위 비트(MSB)를 부호 정보를 포함한 3비트로 정의하는 경우. 1-튜플 컨텍스트 결정부(2004)는 현재 1-튜플(2012)에 대해 현재 프레임의 이전 주파수에 대응하는 2개의 주변 1-튜플(2018, 2019)의 절대값을 산출한 후, 2개의 절대값을 1/2 scaling down을 수행하면서 4이하의 값에 도달하는 경우 scaling down을 멈추고 최종적으로 scaling down된 값을 lev0 추정치로 사용할 수 있다.
또한, 일실시예로 1-튜플 컨텍스트 결정부(2004)는 현재 1-튜플(2012)에 대해 현재 프레임의 이전 주파수에 대응하는 1개의 주변 1-튜플(2018) 또는 2개의 주변 1-튜플들(2018 및 2019)을 선택적으로 사용하여 lev0을 추정할 수 있다.
예를 들어, 상기 설명한 방법은 코어의 모드에 따라 lev0을 추정하는 것으로, 1-튜플 컨텍스트 결정부(2004)는 FD 모드인 경우는 1개의 주변 1-튜플을 사용하고, wLPT 모드인 경우는 2개의 주변 1-튜플을 사용하여 lev0을 추정할 수 있다.. wLPT 모드는 FD 모드에 비교하여 상대적으로 주파수 스펙트럼이 평탄할 가능성이 높기 때문에, wLPT 모드일 때는 현재 1-튜플(2012)에 대해 주변에 위치한 1개의 주변 1-튜플을 사용하는 것보다 여러 개의 주변 1-튜플을 사용하는 것이 lev0을 효과적으로 추정할 수 있다.
또한 1-튜플 컨텍스트 결정부(2004)는 FD 모드에서 복호화를 수행할 때 적용되는 툴에 기초하여 lev0 추정에 사용되는 주변 1-튜플의 개수를 추정할 수 있다. 예를 들어, FD 모드에서 복호화를 수행할 때 적용되는 툴은 TNS(Temporal Noise Shaping), TW-MDCT(Time Warped MDCT) 등이 있다. 이 때, FD 모드에서 TW-MDCT 툴을 사용하여 복호화가 수행된 경우, 1-튜플 컨텍스트 결정부(2004)는 2개의 주변 1-튜플(2018, 2019)을 이용하여 lev0을 추정할 수 있다.
또한. 1-튜플 컨텍스트 결정부(2004)는 프레임 별로 전송된 정보를 기초로 1개의 주변 1-튜플(2018)을 사용하거나, 또는 2개의 주변 1-튜플(2018, 2019)을 사용하는 방식을 결정하여 lev0을 추정할 수 있다. 예를 들어, 1-튜플 컨텍스트 결정부(2004)는 산술복호화 방식을 적용하여 프레임 별로 전송된 주변 1-튜플의 개수에 따라 lev0을 추정할 수 있다. 구체적으로, 1-튜플 컨텍스트 결정부(2004)는 산술 복호화 시에 FD 모드 혹은 wLPT 모드에 따라 주변 1-튜플의 사용 개수에 대한 빈도수에 근거하여 확률 모델을 생성하고, 생성된 확률 모델을 컨텍스트로 적용하여 산술 복호화를 수행할 수 있다.
MSB 컨텍스트 결정부(2005)는 1-튜플 컨텍스트 결정부(2004)에서 매핑된 전체 상태(state) 중 서브셋인 특정 상태인 경우 추가적인 컨텍스트를 생성할 수 있다. 이 때, 생성된 추가적인 컨텍스트는 MSB 복호화부(2008)에서 현재 1-튜플(2012)의 상위 비트를 복호화할 때 확률 모델을 선택하는 과정에서 전체 상태(state)와 결합되어 사용될 수 있다. 그리고, 전체 상태(state) 중 특정 상태를 제외한 나머지 상태에 대해서, MSB 복호화부(2008)는 전체 상태(state)만을 이용하여 확률 모델을 선택할 수 있다.
일례로, MSB 컨텍스트 결정부(2005)를 통해 생성되는 MSB 컨텍스트는 다음과 같다. 컨텍스트 템플릿에 대해서는 도 22에서 구체적으로 설명된다.
(1) 현재 프레임에서 이전 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(2018 또는 2019)의 상위 비트(MSB) 값 또는 이전 프레임에서 현재 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(2015)의 상위 비트(MSB) 값
(2) 컨텍스트 템플릿(Context template)과 결합된 양자화된 스펙트럼의 상위 비트 값
(3)현재 프레임에서 이전 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(2018 또는 2019)을 추가적으로 양자화 하여 추출된 값 또는 이전 프레임에서 현재 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(2015)을 추가적으로 양자화 하여 추출된 값
(4) 컨텍스트 템플릿(Context template)과 결합된 양자화된 스펙트럼을 추가적으로 양자화하여 추출된 값
(5) 이전 프레임의 양자화된 스펙트럼인 주변 1-튜플(2013~2017)을 추가적으로 양자화하여 추출된 값
(6) 현재 프레임에서 이전 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(2018 또는 2019)을 변경하여 추출된 값 또는 이전 프레임에서 현재 주파수에 대응하는 양자화 스펙트럼인 주변 1-튜플(2015)을 변경하여 추출된 값
(7) 컨텍스트 템플릿(Context template)과 결합된 양자화된 스펙트럼을 변경하여 추출된 값
MSB 컨텍스트 결정부(2005)는 양자화된 스펙트럼을 추가적으로 양자화하는 방법은 다음과 같다. 첫번째로, MSB 컨텍스트 결정부(2005)는 양자화된 스펙트럼을 FD(Frequency Domain), wLPT (weighted Linear Prediction Transform) 모드에 따라 추가적으로 양자화할 수 있다. 두번째로, MSB 컨텍스트 결정부(2005)는 특정 방식(-4~3 -> -4~3까지의 값을 직접 사용하고, 4이상인 경우 3으로 매핑하고, -5이하인 경우 -4로 매핑함)을 첫번째 양자화된 스펙트럼의 컨텍스트로 결정하기 위해 추가적으로 양자화할 수 있다.
MSB 값을 사용하는 경우, MSB 복호화부(2008)는 현재 프레임 또는 이전 프레임에 대해 무손실 복호화된 양자화된 스펙트럼인 주변 1-튜플(2013~2019)의 상위 비트(MSB) 값들 중 선택하여 현재 1-튜플(2012)을 복호화할 수 있다.
MSB 컨텍스트 결정부(2005)가 양자화된 스펙트럼을 변경하는 방법은 다음과 같다.
MSB 컨텍스트 결정부(2005)는 현재 프레임에 대해 무손실 복호화할 현재 주파수 스펙트럼인 현재 1-튜플(2012)의 lev0 추정치를 기준으로 주변 1-튜플(2013~2019)을 lev0만큼 scaling down 하여 양자화된 주파수 스펙트럼 값을 추출할 수 있다. MSB 컨텍스트 결정부(2005)는 Scaling down 수행 후에 추출한 양자화된 주파수 스펙트럼 값을 사용하거나 또는 양자화된 주파수 스펙트럼 값이 현재 1-튜플(2012)의 상위 비트를 표현하는 비트수로 표현할 수 있는 영역을 벗어난 경우 양자화된 주파수 스펙트럼 값을 최소값 또는 최대값으로 셋팅하여 사용할 수 있다.
탈출코드 복호화부(2007)는 상기 추정된 lev0 횟수만큼 무손실 복호화할 현재 1-튜플(2012)을 1/2 scaling down을 수행하여 변경된 값이 현재 N-튜플(2012)의 상위 비트를 정의하는 비트수로 표현할 수 있는 값을 초과하는 경우 탈출코드 복호화를 수행할 수 있다.
탈출 코드를 복호화하는 방식은 (1) 탈출코드인지 아닌지에 대한 정보를 복호화하는 방식과, (2) 탈출 코드를 상위 비트 심볼에 포함시켜 복호화하는 방식을 포함한다. 구체적으로, (1) 탈출코드인지 아닌지에 대한 정보를 복호화하는 방식은 탈출 코드에 1을 할당하고, 탈출 코드가 아닌 경우를 0으로 할당하여 0 또는 1을 복호화하는 것을 의미한다. 만약, 탈출 코드가 아닌 0이 복호화되면 MSB 복호화부(2008)가 현재 1-튜플(2012)의 상위 비트를 복호화할 수 있다. 그리고, (2) 탈출 코드를 상위비트 심볼에 포함시켜 복호화하는 방식은 상위 비트 심볼의 개수가 8가지인 경우 8가지의 상위 비트 심볼과 탈출 코드를 동일 레벨의 심볼로 표현하여 총 9개 중 1개를 복호화하는 방식을 의미한다. 예를 들어, 탈출코드 복호화부(2007)는 0~7은 MSB 심볼, 9은 탈출 코드로 설정하여 9개의 심볼을 복호화할 수 있다.
탈출코드 복호화부(2007)는 예측된 1/2 scaling down 횟수만큼 현재 복호화할 양자화된 스펙트럼인 현재 1-튜플(2012)을 scaling down 했을 때, 현재 1-튜플(2012)의 값이 -4~3 사이에 있게 되면 탈출 코드(Escape code)를 복호화 하지 않는다. 만약, 현재 1-튜플(2012)을 scaling down 했을 때, 현재 1-튜플(2012)의 값이 -4~3의 범위에 속하지 않는 경우, 탈출코드 복호화부(2007)는 현재 1-튜플(2012)의 값이 -4~3 범위에 속하도록 현재 1-튜플(2012)을 추가적으로 scaling down을 수행하고, scaling down 횟수만큼 탈출 코드를 복호화할 수 있다. 이 때 scaling down 과정에서 손실된 데이터는 하위 비트로 포함되여 LSB 복호화부(2009)에서 복호화될 수 있다.
확률 매핑부(2006)는 현재 1-튜플(2012)에 대한 컨텍스트와 MSB 컨텍스트를 이용하여 최종적인 확률 모델을 매핑 할 수 있다. 확률 매핑부(2006)는 매핑 테이블과 확률 테이블을 이용할 수 있다. 확률 모델을 매핑하는 과정은 MSB를 복호화 할 때 적용할 확률 모델을 확률 테이블에서 찾아오는 과정이다. 즉, 확률 모델을 모든 경우에 대해서 전부 가지고 있으면, 메모리의 크기에 대한 부담이 있기 때문에, 메모리를 줄일 목적으로 확률 매핑부(2006)는 컨텍스트에 따라 확률 모델을 찾도록 매핑 테이블을 사용할 수 있다. 매핑 테이블은 각 확률의 컨텍스트에 해당되는 총 배열에 확률 테이블의 인덱스를 할당하여 구성될 수 있다. 확률 테이블은 MSB 복호화 시에 사용되는 모든 확률 값으로 구성된다.
MSB 복호화부(2008)는 (ⅰ) 1-튜플 컨텍스트 결정부(2004)에서 생성된 전체 상태(state)만을 이용하여 현재 1-튜플(2012)의 MSB를 복호화하거나, 또는 (ⅱ) 1-튜플 컨텍스트 결정부(2004)에서 생성된 전체 상태(state) 중 특정 상태의 서브셋과 MSB 컨텍스트 결정부(2005)에서 결정된 추가적인 컨텍스트를 이용하여 확률 모델을 선택함으로써 현재 1-튜플(2012)의 상위 비트(MSB)를 산술 복호화할 수 있다.
LSB 복호화부(2009)는 현재 1-튜플(2012)의 하위 비트(LSB)의 비트 깊이 만큼의 잔여 비트를 컨텍스트를 이용하여 산술 복호화할 수 있다. 이 때, 컨텍스트는 현재 1-튜플(2012)의 현재 주파수에 대응하는 주변 1-튜플(2015)의 상위 비트의 복호 정보(음수, 0, 양수)를 포함할 수 있다. 또한 주변 1-튜플(2015)의 상위 비트의 부호 정보는 .0을 제외한 음수, 양수로 구성된 부호 정보를 포함할 수 있다. 그러면, LSB 복호화부(2008)는 주변 1-튜플(2015)의 상위 비트의 복호 정보에 따라 확률 모델을 선택한 후, 하위 비트(LSB)를 복호화할 수 있다.
또한, LSB 복호화부(2009)는 주변 1-튜플(2014)의 상위 비트의 부호 정보 및 하위 비트의 비트 깊이에 따라 결정된 컨텍스트를 이용하여 하위 비트를 복호화할 수 있다. 이 때, 하위 비트의 비트 깊이는 인덱스(레벨) 정보로 표현될 수 있다.
양자화된 샘플 생성부(2010)는 산술 복호화된 MSB와 LSB를 이용하여 현재 N-튜플(2012)에 대한 양자화된 샘플을 생성할 수 있다.
컨텍스트 업데이트부(2011)는 다음 1-튜플을 복호화하기 위해 양자화된 샘플을 업데이트 할 수 있다. 그러면, MSB 컨텍스트 결정부(2005)는 다음 1-튜플에 대해 업데이트된 양자화된 샘플을 이용하여 MSB 컨텍스트를 결정할 수 있다.
도 21은 1-튜플, MSB, LSB를 도시한 도면이다.
도 21의 상단에 시간(time)과 주파수(frequency)에 따른 1-튜플들이 도시되어 있다. 여기서, 1-튜플은 양자화된 주파수 스펙트럼을 주파수가 증가하는 순서대로 연속된 1개의 주파수 스펙트럼 단위로 묶은 집합을 의미한다. 도 4에서는 N-튜플을 위주로 설명하였으나, 도 21에서는 1-튜플에 대해서 설명하기로 한다.
현재 1-튜플(2101)은 부호화하거나 복호화하고자 하는 1-튜플을 의미할 수 있다. 그리고, 7개의 주변 1-튜플들(2102~2108)은 이미 부호화 및 복호화 된 것으로, 현재 1-튜플(2101)에 대한 컨텍스트를 결정할 때 이용될 수 있다. 이 때, 주변 1-튜플(2102~2106)은 이전 프레임에 대응하고, 주변 1-튜플(2107, 2018)은 현재 1-튜플(2101)과 동일한 현재 프레임에 대응할 수 있다.
도 21의 하단에 주파수 인덱스(freque1cy index)와 비트 깊이(bit-depth)에 따른 상위 비트(MSB)(2109)와 하위 비트(LSB)(2110)가 도시되어 있다. 이 때, MSB(2109)는 부호 정보를 포함하는 상위 비트를 의미할 수 있다. 본 발명의 일실시예에서는 MSB(2109)를 부호 정보를 포함하는 유효한 3비트로 정의하였다. MSB에 대한 정의는 시스템의 구성에 따라 변경될 수 있다.
도 21를 살펴보면, LSB(2110)는 MSB(2109)보다 비트 깊이가 더 큰 비트를 의미할 수 있다. 이 때, LSB(2110)는 lev값을 가질 수 있다. Lev는 컨텍스트의 MSB 조합에 의해 결정되는 값으로, 비트 깊이가 0이라는 말은 MSB(2109) 바로 아래 위치한 LSB(2110)를 의미한다. 1-튜플은 MSB(2109)에 대응하고, 주파수 인덱스에 따라 심볼로 구분될 수 있다. 일례로, 도 21에서는 1-튜플이 1개의 심볼로 구성됨을 알 수 있다. 이후, 현재 1-튜플(2101)은 1개의 심볼을 주파수에 따라 분리하여 부호화되거나 또는 복호화될 수 있다. 다시 말해서, MSB(2109)는 심볼 단위로 복호화되거나 또는 부호화될 수 있다. 이 때, 튜플은 심볼에 대응하는 것으로 정의될 수 있다. 도 21에서는 1-튜플에 포함된 심볼을 1개로 표현하였으나, 장치에 따라 심볼의 개수를 변경될 수 있다.
도 22는 컨텍스트 템플릿의 일례를 도시한 도면이다.
도 19에서, MSB 컨텍스트 결정부(1904)는 컨텍스트 템플릿을 이용하여 MSB 컨텍스트를 결정하는 예를 설명한 바 있다. 컨텍스트 템플릿은 도 22와 같이 구성될 수 있다.
현재 1-튜플(2201, 2205, 2209)는 현재 부호화할 튜플을 의미한다. 그리고, 주변 1-튜플(2202, 2207, 2212)는 컨텍스트 템플릿에 따라 MSB 컨텍스트로 사용될 튜플을 의미한다. 컨텍스트 템플릿에 대한 정보는 산술 부호화를 통해 부호화단에서 프레임에 1번씩 전송되며, 발생 빈도에 근거하여 확률 모델을 결정해준다. 또한, 컨텍스트 템플릿은 저주파 대역과 고주파 대역에 따라 다르게 결정될 수 있다.
도 23은 무손실 부호화 복호화의 과정을 도시한 도면이다.
무손실 부호화 복호화은 양자화된 데이터를 손실없이 부호화 장치에서 복호화 장치로 전달하기 위한 코딩 방법을 의미한다. 구체적으로, 무손실 부호화 복호화은 Bit Plane Coding을 사용하여 양자화된 데이터를 전달할 수 있다. 이 때, Bit Plane Coding은 양자화된 데이터를 binary로 표현한 후, 비트 단위 또는 몇 개의 비트로 표현된 값을 전송하는 방식이다. 예를 들어, 양자화된 스펙트럼이 (3,7,1, 0)인 경우, Bit Plane Coding에 의하면, 양자화된 스펙트럼이 binary로 표현된 (11, 1001, 1, 0)의 시퀀스가 전송된다.
복호화 장치에서 전달된 시퀀스를 통해 원래의 양자화된 데이터를 복원하기 위해서는, 시퀀스를 구성하는 각각의 값이 2비트, 4비트, 1비트, 1비트로 표현되었다는 표현 정보가 추가적으로 요구된다. 이러한 표현 비트가 비트 깊이에 해당되는 정보이며, 이 값을 그대로 복호화 장치에 전달하는 경우 정보량이 증가한다. 이러한 정보량의 증가를 피하기 위해, 부호화 장치는 전달하려는 양자화된 스펙트럼의 주변에 위치한 값들을 기준으로 양자화된 스펙트럼의 비트 깊이를 예측하고, 예측한 비트 깊이까지의 값을 복호화 장치에 전송할 수 있다. 만약, 예측한 비트 깊이가 더 많은 비트 깊이의 데이터로 표현되는 경우, 부호화 장치는 잔여 비트의 개수와 잔여 비트를 복호화 장치에 전송할 수 있다.
도 23에서 볼 수 있듯이, (11, 1001, 1, 0)을 코딩하는 경우 부호 정보를 포함하는 3비트를 전송하며, 비트 깊이를 예측한 후 잔여 비트를 전송하는 무손실 부호화 복호화을 이용한다고 가정한다. 전송시 모든 데이터는 컨텍스트 기반에 따라 산술 복호화 방식으로 수행된다. 이 때, 4-튜플인 경우 4개의 spectral line단위로 구성되고, 1-튜플인 경우 1개의 spectral line으로 구성된다. 이하에서는 4-튜플인 경우에 대해서 설명된다.
잔여 비트 깊이가 1로 예측된 경우, 복호화 장치는 비트 깊이인 level 정보를 예측할 수 있다. 그리고, 복호화 장치는 (1,2,0,0)의 상위 비트(MSB: 부호 정보를 포함하는 3비트)를 복호화할 수 있다(MSB 복호화). 이 후, 복호화 장치는 추가적인 잔여 비트(0비트, 1비트, 0비트, 0비트)를 복호화할 수 있다. 이러한 추가적인 잔여 비트가 탈출 코드 횟수에 대응한다. 그러면, 복호화 장치는 복호화된 잔여 비트 개수에 따라 하위 비트(LSB)의 잔여 비트를 복호화할 수 있다(LSB 복호화).
도 24는 1-튜플에 대한 컨텍스트 기반의 산술 복호화 방법을 도시한 플로우차트이다.
도 24의 산술 복호화 방법은 도 20의 산술 복호화 장치가 수행할 수 있다.
산술 복호화 장치(101)는 현재 프레임이 리셋 프레임인지 여부를 판단할 수 있다(S2401). 만약, 리셋 프레임인 경우, 산술 복호화 장치(101)는 컨텍스트 리셋을 수행할 수 있다(S2402). 그리고, 프레임 리셋이 아닌 경우, 산술 복호화 장치(101)는 컨텍스트를 맵핑할 수 있다(S2403). 구체적으로, 산술 복호화 장치(101)는 현재 프레임의 길이가 이전 프레임과 다를 경우에 2 프레임간 주파수 인덱스를 매핑 시켜 주기 위해서 이전 프레임의 길이를 현재 프레임의 길이로 정규화하여 컨텍스트를 맵핑시킬 수 있다. 단계(S2401) 내지 단계(S2403)는 프레임 단위에 따라 수행될 수 있다.
산술 복호화 장치(101)는 현재 1-튜플의 상위 비트(MSB)를 복호화할 때 사용할 복수 개의 컨텍스트 중 최종 전송된 1개의 컨텍스트 템플릿에 대해 복호화를 수행할 수 있다(S2404). 컨텍스트 템플릿에 대해서는 도 22의 설명을 참고할 수 있다. 이후, 산술 복호화 장치(101)는 현재 1-튜플에 대해 1-튜플 컨텍스트를 결정하고, 현재 1-튜플에 대해 lev0을 결정할 수 있다(S2405). 이 때, 산술 복호화 장치(101)는 초기 LSB 비트 깊이인 lev 0을 추정할 수 있다. 현재 1-튜플에 대해 1-튜플 컨텍스트를 결정하는 동작과 lev0을 추정하는 동작에 대해서는 도 20의 설명을 참고할 수 있다.
산술 복호화 장치(101)는 1-튜플의 컨텍스트(pki)와 FD/wLPT에 기초하여 탈출 코드에 대해 복호화할 수 있다(S2406). 탈출 코드가 복호화 될 때마다, lev 0이 업데이트 되고, 탈출 코드가 아닌 것이 복호화되면, MSB 복호화를 수행한다(S2409).
그리고, 산술 복호화 장치(101)는 현재 복호화할 현재 1-튜플의 상위 비트에 대응하는 MSB 컨텍스트를 결정할 수 있다(S2407). 이후, 산술 복호화 장치(101)는 MSB 복호화를 수행할 확률 모델을 결정하게 되는데 1-튜플 컨텍스트 및 MSB 컨텍스트를 기반으로 부합되는 확률 모델을 결정할 수 있다(S2408).
산술 복호화 장치(101)는 확률 모델을 기반으로 MSB 복호화를 수행한다(S2409).
산술 복호화 장치(101)는 탈출 코드를 복호화하는 과정을 통해 도출된 LSB의 비트 깊이 만큼의 비트를 복호화할 수 있다(S2410). 산술 복호화 장치(101)는 MSB와 LSB를 통해 양자화된 샘플을 생성하고(S2411), 다음 1-튜플을 복호화하기 위해 컨텍스트를 업데이트할 수 있다(S2412). 그러면, 산술 복호화 장치(101)는 주파수 인덱스를 증가시켜(S2413), 다음 1-튜플에 대해 복호화를 수행할 수 있다.
도 25는 2-튜플을 도시한 도면이다. 이 때, 2-튜플은 N-튜플에 대한 일실시예를 의미한다.
도 25를 참고하면, 시간(time)과 주파수(freque2cy)에 따른 2-튜플들이 도시되어 있다. 현재 2-튜플(2501)은 부호화하거나 부호화하고자 하는 2-튜플을 의미할 수 있다. 그리고, 25개의 주변 2-튜플(2502, 2503, 2504, 2505)은 이미 부호화 및 부호화 된 것으로, 현재 2-튜플(2501)에 대한 컨텍스트를 결정할 때 이용될 수 있다. 이 때, 주변 2-튜플(2503, 2504, 2505)은 이전 프레임에 대응하고, 주변 2-튜플(2502)은 현재 2-튜플(2501)과 동일한 현재 프레임에 대응할 수 있다.
도 26은 2-튜플에 대한 컨텍스트 템플릿을 도시한 도면이다.
현재 2-튜플(2601)은 현재 부호화할 튜플을 의미한다. 그리고, 주변 2-튜플(2602, 2603)은 컨텍스트 템플릿에 따라 MSB 컨텍스트로 사용될 튜플을 의미한다. 컨텍스트 템플릿에 대한 정보는 산술 부호화를 통해 부호화단에서 프레임에 1번씩 전송되며, 발생 빈도에 근거하여 확률 모델을 결정해준다. 또한, 컨텍스트 템플릿은 저주파 대역과 고주파 대역에 따라 다르게 결정될 수 있다.
도 27은 산술 부호화 장치(제4예)의 세부 구성을 도시한 도면이다.
산술 부호화 장치(100)는 컨텍스트 리셋부(2701), 컨텍스트 맵핑부(2702), 2-튜플 컨텍스트 결정부(2703), 추가 컨텍스트 결정부(2704), 탈출코드 부호화부(2705), 확률 매핑부(2706), MSB 부호화부(2707), LSB 부호화부(2708), 컨텍스트 템플릿 부호화부(2709) 및 컨텍스트 업데이트부(2710)를 포함할 수 있다.
*컨텍스트 리셋부(2701)와 컨텍스트 맵핑부(2702)는 각각 컨텍스트 리셋부(1901)와 컨텍스트 맵핑부(1902)와 동일한 동작을 수행하므로, 구체적인 설명은 생략하기로 한다.
2-튜플 컨텍스트 결정부(2703)는 부호화하고자 하는 현재 2-튜플(2-tuple)(2711)에 대해 주변에 위치한 주변 2-튜플들(neighborhood 2-tuples)(2712~2715)의 양자화된 스펙트럼값을 이용하여 현재 2-튜플(2711)에 대한 컨텍스트를 결정할 수 있다. 일례로, 2-튜플 컨텍스트 결정부(2703)는 이미 부호화된 4개의 주변 2-튜플들(2712~2715)을 이용하여 현재 2-튜플(2711)에 대한 컨텍스트를 결정할 수 있다.
산술 부호화 장치(100)는 입력된 신호에 대해 상위 비트 심볼(MSB symbol)과 하위 잔여비트로 분리하여 부호화를 수행한다. 구체적으로, 산술 부호화 장치(100)는 양자화된 주파수 스펙트럼에 대응하는 현재 2-튜플(2711)을 절대값과 부호정보로 분리하여 부호화를 수행할 수 있다. 이 때, 현재 2-튜플(2711)의 절대값은 상위 비트 심볼과 하위 잔여비트로 분리되어 부호화가 수행된다. 상위 비트 심볼은 절대값이 특정 임계치보다 작은 값이 될 때까지 1/2 scaling down을 수행된다. 그러면, 탈출코드 부호화부(2705)는 Scailing down 횟수만큼 탈출코드 부호화를 수행할 수 있다.
하위 잔여비트는 상위 비트 심볼의 절대값에 대해 scailing down이 수행될 때마다 제거되는 비트를 의미한다. 현재 2-튜플(2711)의 상위 비트(MSB) 부호화가 종료된 후, 하위 잔여비트에 대해 부호화가 수행된다. 현재 프레임에 대해 모든 양자화된 스펙트럼에 대응하는 2-튜플의 부호화가 종료되면, 0이 아닌 양자화된 스펙트럼에 대해서부호 정보가 부호화될 수 있다.
상기 상위 비트 심볼에 대해 scailing down이 수행될 때, 특정 임계치는 4가 설정될 수 있다. 특정 임계치가 4인 경우, 상위 비트는 0,1,2,3의 4가지의 경우가 된다. 산술 부호화 장치(100)는 2-튜플인 2개의 주파수 스펙트럼을 묶어서 처리하기 때문에, 현재 2-튜플(2711)에 대응하는 2개의 양자화된 주파수 스펙트럼의 절대값이 모두 특정 임계치보다 작게 될 때까지 scaling down를 수행할 수 있다.
*산술 부호화 장치(100)는 현재 2-튜플(2711)에 대해 4개의 주변 2-튜플(2712~2715)을 사용하여 컨텍스트 기반의 산술부호화를 수행할 수 있다. 구체적으로, 2-튜플 컨텍스트 결정부(2703)는 이전 프레임에 대응하는 3개의 주변 2-튜플(2712~2714)에 대한 양자화된 스펙트럼을 추가 양자화하여 3개의 주변 2-튜플(2712~2714) 내의 2개의 양자화된 스펙트럼을 2비트로 표현(2튜플을 3*2*2=12 비트)할 수 있다. 그리고, 2-튜플 컨텍스트 결정부(2703)는 현재 프레임의 이전 주파수에 대응하는 1개의 주변 2-튜플(2715)에 대응하는 2개의 양자화된 주파수 스펙트럼을 이용하여 컨텍스트를 생성할 수 있다. 이러한 컨텍스트는 해쉬 테이블(hash table)에 의해 구현될 수 있다.
탈출 코드 부호화부(2705)는 생성된 2-튜플 컨텍스트를 이용하여 탈출 코드 부호화를 수행할 수 있다. 구체적으로, 탈출 코드 부호화부(2705)는 특정 M개의 확률 모델을 훈련(training)을 통해 구성하고, 2-튜플 컨텍스트에 기초하여 M개의 확률 모델 중 어느 하나의 확률 모델을 선택하여 산술 부호화를 수행할 수 있다.
탈출 코드 부호화가 필요없는 경우, 탈출 코드가 아님을 부호화 한 후 MSB 부호화부(2707)는 현재 2-튜플(2711)의 상위 비트 심볼에 대해 부호화를 수행할 수 있다.
Ⅰ. 2-튜플 컨텍스트에 기초하여 현재 2-튜플에 대해 부호화를 수행
일례로, MSB 부호화부(2707)는 현재 2-튜플(2711)의 상위 비트 심볼에 대해 2-튜플 컨텍스트 결정부(2703)에 의해 생성된 2-튜플 컨텍스트에 기초하여 부호화할 수 있다. 이 때, MSB 부호화부(2707)는 2-튜플 컨텍스트에 기초하여 현재 2-튜플(2711)의 2개의 상위 비트 심볼을 묶어서 부호화할 수 있다. 예를 들어, MSB 부호화부(2707)는 0~3의 값을 갖는 상위 비트 심볼 2개를 1개의 심볼로 표현하여 부호화할 수 있다. 이 경우, 총 16가지의 심볼을 통해 1개의 현재 2-튜플(2711)에 대해 1번의 산술 부호화를 수행할 수 있다.
Ⅱ. 일부의 경우, 2-튜플 컨텍스트에 기초하고, 나머지 일부의 경우, 2-튜플 컨텍스트 및 추가 컨텍스트에 기초하여 현재 2-튜플에 대해 부호화를 수행
다른 일례로, MSB 부호화부(2707)는 일부 경우에 대해 2-튜플 컨텍스에 기초하여 현재 2-튜플(2711)의 상위 비트 심볼에 대해 산술 부호화를 수행할 수 있다. 그리고, MSB 부호화부(2707)는 나머지 일부 경우에 대해 2-튜플 컨텍스트 및 추가 컨텍스트에 기초하여 현재 2-튜플(2711)의 상위 비트 심볼에 대해 산술 부호화를 수행할 수 있다. 이 때, 추가 컨텍스트는 현재 2-튜플(2711)에 대해 현재 프레임의 이전 주파수에 대응하는 주변 2-튜플(2715)의 상위 비트 심볼을 의미할 수 있다. 이 경우, MSB 부호화부(2707)는 현재 2-튜플(2711)을 2개의 상위 비트 심볼로 표현하여 2번의 산술 부호화를 수행할 수 있다. 2번의 산술 부호화가 수행될 경우, 추가 컨텍스트로 사용될 상위 비트 심볼은 도 26의 주변 2-튜플(2602 또는 2603)일 수 있다. 즉, MSB 부호화부(2707)는 현재 2-튜플(2711)을 기준으로 컨텍스트 템플릿 정보에 기초하여 주변 2-튜플(2602 또는 2603)을 추가 컨텍스트로 결정할 수 있다.
Ⅲ. 모든 경우, 2-튜플 컨텍스트 및 추가 컨텍스트에 기초하여 현재 2-튜플에 대해 부호화를 수행
또 다른 실시예로, MSB 부호화부(2707)는 모든 경우에 대해 2-튜플 컨텍스트 및 추가 컨텍스트에 기초하여 현재 2-튜플(2711)의 상위 비트 심볼에 대해 산술 부호화를 수행할 수 있다. 2-튜플 컨텍스트 및 추가 컨텍스트에 대한 설명은 이미 설명한 바 있으므로, 이하에서는 생략하기로 한다.
컨텍스트 템플릿 부호화부(2709)는 컨텍스트 템플릿을 부호화할 수 있다. 컨텍스트 템플릿 정보는 입력된 신호를 부호화할 때 전송되어야 한다. 컨텍스트 템플릿은 산술 부호화를 통해 부호화되어 전송되며, 프레임마다 1번씩 전송될 수 있다. 이 때, 프레임은 주파수 도메인(Frequency Domain) 부호화 모드의 경우 1개의 프레임을 의미하며, 선형 예측 도메인(Linear Prediction Domain) 부호화 모드의 경우 슈퍼 프레임 내에 TCX로 부호화된 프레임을 의미한다.
*컨텍스트 템플릿 정보는 저주파 영역과 고주파 영역으로 분리하여 각각 전송된다. 예를 들어, 컨텍스트 템플릿 정보는 다음과 같이 주파수 영역에 따라 다르게 할당될 수 있다. 컨텍스트 템플릿 정보는 2개의 비트를 통해 저주파 영역 및 고주파 영역으로 표현될 수 있다. 이 때, 0, 1, 2, 3의 4가지 경우로 표현될 수 있다. 컨텍스트 템플릿 정보가 0인 경우, 저주파 영역 및 고주파 영역 모두 컨텍스트 템플릿 0이고, 컨텍스트 템플릿 정보가 1인 경우, 저주파 영역은 컨텍스트 템플릿 1이고, 고주파 영역은 컨텍스트 템플릿이 0이다. 또한, 컨텍스트 템플릿 정보가 2인 경우, 저주파 영역은 컨텍스트 템플릿이 0이고, 고주파 영역은 컨텍스트 템플릿이 1이다. 그치고, 컨텍스트 템플릿 정보가 3인 경우, 저주파 영역 및 고주파 영역 모두 컨텍스트 템플릿 1이다.
특정 2-튜플 이후의 모든 주파수의 양자화된 스펙트럼 값이 0인 경우 MSB 부호화부(2707)는 예외 처리를 수행하여 현재 2-튜플(2711)의 상위 비트를 부호화할 수 있다. 예를 들어, 2-튜플의 심볼이 모두 0인 경우, 탈출 코드를 부호화할 가능성이 없기 때문에, 이러한 방식을 적용하여 예외 처리를 수행할 수 있다. 즉, 현재 부호화할 현재 2-튜플(2711)을 0으로 부호화하기 전에 탈출 코드 부호화부(2705)는 탈출 코드를 1번 부호화할 수 있다. 현재 2-튜플(2711)을 0으로 부호화하면, 이후의 모든 양자화된 스펙트럼이 0이 되므로, 현재 2-튜플(2711)의 이후 주파수 대역에서는 부호화가 중단된다.
다른 일례로, 현재 2-튜플(2711) 이후 스펙트럼의 절대값이 0 또는 1인 경우, MSB 부호화부(2707)는 바이너리 산술 부호화를 수행하여 현재 2-튜플(2711)의 상위 비트 심볼을 부호화할 수 있다. 구체적으로, 현재 2-튜플(2711) 이후의 모든 주파수의 양자화된 스펙트럼의 절대값이 0 또는 1인 경우, MSB 부호화부(2707)는 예외 처리를 수행하여 현재 2-튜플(2711)의 상위 비트를 부호화할 수 있다. 예를 들어, 2-튜플의 심볼이 모두 0인 경우, 탈출 코드를 부호화할 가능성이 없기 때문에, 이러한 방식을 적용하여 예외 처리를 수행할 수 있다. 즉, MSB 부호화부(2707)가 현재 부호화할 현재 2-튜플(2711)을 0으로 부호화하기 전에 탈출 코드 부호화부(2705)는 탈출 코드를 2번 부호화할 수 있다. 현재 2-튜플(2711)의 탈출 코드가 2번 부호화 된후 현재 2-튜플(2711)이 0으로 부호화하면, 이후의 모든 양자화된 스펙트럼이 0또는 1이 되므로, 이후의 상위 비트 심볼에 대해서는 바이너리 산술 부호화를 수행하여 부호화 할수 있다. 이 때 상기 특정 2-튜플 이후의 모든 주파수의 양자화된 스펙트럼 값이 0인 경우 MSB 부호화부(2707)는 예외 처리를 수행하는 경우는 탈출 코드가 1번 부호화 된 후에 처리되는 방식을 적용하면 특정 2-튜플 이후의 모든 주파수의 양자화된 스펙트럼의 절대값이 0또는 1인 경우와 구분하여 수행될 수 있다. 이 경우에는 모든 스펙트럼 값이 0또는 1이기 때문에 하위 비트 부호화는 수행될 필요 없다. 이 때 2-튜플 컨텍스트를 기반으로 컨텍스트 기반 바이너리 산술부호화가 사용될 수 있다.
또한, MSB 부호화부(2707)는 현재의 산술 부호화할 바이너리 심볼 주변의 복수개의 양자화된 스펙트럼 값이 0인지 아닌지를 컨텍스트로 사용하여 산술 부호화할 수 있다. 예를 들어, 도 30에서 볼 수 있듯이, MSB 부호화부(2707)는 주변 양자화된 스펙트럼(3002~3005)의 절대값이 0이 아닌지 여부를 컨텍스트로 사용하여 현재 스펙트럼(3001)의 절대값의 상위 비트 심볼을 바이너리 산술 부호화할 수 있다. 다른 예로, 도 30에서 볼 수 있듯이, MSB 부호화부(2707)는 주변 양자화된 스펙트럼(3007~3010)의 절대값이 0이 아닌지 여부를 컨텍스트로 사용하여 현재 스펙트럼(3006)의 절대값의 상위 비트 심볼을 바이너리 산술 부호화할 수 있다. MSB 부호화부(2707)가 2-튜플로 구성된 경우에는 2번의 바이너리 산술 부호화를 수행하여 MSB 부호화를 수행한다.
일례로, 상위 비트 심볼에 대해 부호화가 수행된 후, LSB 부호화부(2708)는 Uniform한 확률에 기반하여 현재 2-튜플(2711)의 하위 잔여 비트를 부호화할 수 있다. LSB 부호화부(2708)는 탈출 코드의 부호화 횟수만큼 현재 2-튜플(2711)의 하위 잔여 비트를 비트 깊이 단위로 2비트씩 추출하여 부호화를 수행할 수 있다. 총 4가지의 심볼이 존재하며, LSB 부호화부(2708)는 이에 대해 산술 부호화를 수행할 수 있다.
다른 일례로, LSB 부호화부(2708)는 비트 깊이를 이용하여 현재 2-튜플(2711)에 대해 컨텍스트 기반의 하위 비트를 부호화할 수 있다. 구체적으로, LSB 부호화부(2708)는 현재 2-튜플(2711)의 하위 잔여 비트를 주파수 인덱스를 기준으로 2개로 분리하고, 비트 깊이 단위로 1비트씩 비트 깊이 정보를 컨텍스트로 사용하여 산술 부호화를 수행할 수 있다.
다른 일례로, LSB 부호화부(2708)는 현재까지 부호화된 절대값이 0인지 또는 0이 아닌지를 고려하여 현재 2-튜플(2711)의 하위 잔여 비트를 부호화할 수 있다. 구체적으로, LSB 부호화부(2708)는 부호화할 현재 2-튜플(2711)의 하위 잔여 비트를 주파수 인덱스 기준으로 2개로 분리하고, 각각의 부호화 중인 절대값이 0인지 또는 0이 아닌지에 대한 정보에 대한 컨텍스트를 이용하여 산술 부호화를 수행할 수 있다.
예를 들어 절대값 3을 부호화 할 때, 하위 잔여 비트를 부호화하기 전에 상위 비트가 0으로 부호화 된 상태이고, 하위 잔여 비트인 11(binary)을 2번 부호화 해야 하는 경우를 가정한다. 첫번째 하위 잔여 비트인 1을 부호화 할 때 현재까지 부호화한 절대값이 상위 비트 부호화 시에 결정된 0이므로, LSB 부호화부(2708)는 0일 경우의 확률 모델을 적용하여 첫번째 하위 잔여 비트를 부호화할 수 있다. 그리고, 두번째 하위 잔여 비트인 1을 부호화할 때 현재까지 부호화한 절대값이 첫번째 하위 잔여 비트를 포함하여 1이므로, LSB 부호화부(2708)는 0이 아닐 경우의 확률 모델을 적용하여 두번째 비트를 부호화할 수 있다.
다른 일례로, LSB 부호화부(2708)는 현재까지 부호화된 절대값이 0인지 또는 0이 아닌지를 고려하여 현재 2-튜플(2711)의 하위 잔여 비트를 부호화할 수 있다. 구체적으로, LSB 부호화부(2708)는 부호화할 현재 2-튜플(2711)의 하위 잔여 비트를 비트 깊이 단위로 2비트씩 추출하여, 부호화 중인 절대값이 0인지 또는 0이 아닌지에 대한 정보에 대한 컨텍스트를 이용하여 산술 부호화를 수행할 수 있다. 부호화할 하위 잔여비트 심볼은 00(2), 01(2), 10(2), 11(2)의 4가지가 될수 있고, 컨텍스트로 사용하는 값은 0인지 아닌지의 2가지 경우를 현재 2-튜플의 조합에 대해서 보기 때문에, 2-튜플의 2개의 절대값이 모두 0인 경우, 낮은 주파수의 값이 0이고 높은 주파수의 값이 0이 아닌 경우, 낮은 주파수의 값이 0이고 높은 주파수의 값이 0이 아닌 경우, 모두 0이 아닌 경우의 4가지 경우가 존재한다. 그런데 모두 0인 경우에는 잔여 비트를 부호화 할 필요가 없기 때문에 이 경우는 제외하고 3가지 경우를 컨텍스트로 사용해 산술 부호화를 수행할 수 있다.
또 다른 일례로, LSB 부호화부(2708)는 부호 정보를 부호화할 수 있다. 구체적으로, LSB 부호화부(2708)는 양자화된 스펙트럼의 절대값의 부호화가 모두 끝난 후, 절대값이 0이 아닌 경우, 비트 팩킹 방식을 적용하여 각각의 양자화된 스펙트럼의 부호 정보를 전송할 수 있다.
도 27에서 설명되지 않은 구성 요소에 대해서는 도 10의 설명을 참고할 수 있다.
도 28은 산술 복호화 장치(제4예)의 세부 구성을 도시한 도면이다.
산술 복호화 장치(101)는 컨텍스트 리셋부(2801), 컨텍스트 맵핑부(2802), 컨텍스트 템플릿 복호화부(2803), 2-튜플 컨텍스트 결정부(2804), 추가 컨텍스트 결정부(2805), 확률 매핑부(2806), 탈출코드 복호화부(2807), MSB 복호화부(2808), LSB 복호화부(2809), 양자화된 샘플 생성부(2810) 및 컨텍스트 업데이트부(2811)를 포함할 수 있다.
컨텍스트 리셋부(2801)와 컨텍스트 맵핑부(2802)는 각각 컨텍스트 리셋부(2001)와 컨텍스트 맵핑부(2002)와 동일한 동작을 수행하므로, 구체적인 설명은 생략하기로 한다.
2-튜플 컨텍스트 결정부(2804)는 복호화하고자 하는 현재 2-튜플(2-tuple)(2812)에 대해 주변에 위치한 주변 2-튜플들(neighborhood 2-tuples)(2813~2816)의 양자화된 스펙트럼값을 이용하여 현재 2-튜플(2812)에 대한 컨텍스트를 결정할 수 있다. 일례로, 2-튜플 컨텍스트 결정부(2803)는 이미 복호화된 4개의 주변 2-튜플들(2813~2816)을 이용하여 현재 2-튜플(2812)에 대한 컨텍스트를 결정할 수 있다.
산술 복호화 장치(100)는 입력된 신호에 대해 상위 비트 심볼(MSB symbol)과 하위 잔여비트로 분리하여 복호화를 수행한다. 구체적으로, 산술 복호화 장치(100)는 양자화된 주파수 스펙트럼에 대응하는 현재 2-튜플(2812)을 절대값과 부호정보로 분리하여 복호화를 수행할 수 있다. 이 때, 현재 2-튜플(2812)의 절대값은 상위 비트 심볼과 하위 잔여비트로 분리되어 복호화가 수행된다. 상위 비트 심볼은 절대값이 특정 임계치보다 작은 값이 될 때까지 1/2 scaling down을 수행된다. 그러면, 탈출코드 복호화부(2807)는 Scailing down 횟수만큼 탈출코드 복호화를 수행할 수 있다.
하위 잔여비트는 상위 비트 심볼의 절대값에 대해 scailing down이 수행될 때마다 제거되는 비트를 의미한다. 현재 2-튜플(2812)의 상위 비트(MSB) 복호화가 종료된 후, 하위 잔여비트에 대해 복호화가 수행된다. 현재 프레임에 대해 모든 양자화된 스펙트럼에 대응하는 2-튜플의 복호화가 종료되면, 0이 아닌 양자화된 스펙트럼에 대해서부호 정보가 복호화될 수 있다.
상기 상위 비트 심볼에 대해 scailing down이 수행될 때, 특정 임계치는 4가 설정될 수 있다. 특정 임계치가 4인 경우, 상위 비트는 0,1,2,3의 4가지의 경우가 된다. 산술 복호화 장치(100)는 2-튜플인 2개의 주파수 스펙트럼을 묶어서 처리하기 때문에, 현재 2-튜플(2812)에 대응하는 2개의 양자화된 주파수 스펙트럼의 절대값이 모두 특정 임계치보다 작게 될 때까지 scaling down를 수행할 수 있다.
산술 복호화 장치(100)는 현재 2-튜플(2812)에 대해 4개의 주변 2-튜플(2813~2816)을 사용하여 컨텍스트 기반의 산술복호화를 수행할 수 있다. 구체적으로, 2-튜플 컨텍스트 결정부(2804)는 이전 프레임에 대응하는 3개의 주변 2-튜플(2813~2815)에 대한 양자화된 스펙트럼을 추가 양자화하여 3개의 주변 2-튜플(2813~2815) 내의 2개의 양자화된 스펙트럼을 2비트로 표현(2튜플을 3*2*2=12 비트)할 수 있다. 그리고, 2-튜플 컨텍스트 결정부(2804)는 현재 프레임의 이전 주파수에 대응하는 1개의 주변 2-튜플(2816)에 대응하는 2개의 양자화된 주파수 스펙트럼을 이용하여 컨텍스트를 생성할 수 있다. 이러한 컨텍스트는 해쉬 테이블(hash table)에 의해 구현될 수 있다.
탈출 코드 복호화부(2807)는 생성된 2-튜플 컨텍스트를 이용하여 탈출 코드 복호화를 수행할 수 있다. 구체적으로, 탈출 코드 복호화부(2807)는 특정 M개의 확률 모델을 훈련(training)을 통해 구성하고, 2-튜플 컨텍스트에 기초하여 M개의 확률 모델 중 어느 하나의 확률 모델을 선택하여 산술 복호화를 수행할 수 있다.
탈출 코드가 아닌 값이 복호화 되면 MSB 복호화부(2808)는 현재 2-튜플(2812)의 상위 비트 심볼에 대해 복호화를 수행할 수 있다.
Ⅰ. 2-튜플 컨텍스트에 기초하여 현재 2-튜플에 대해 복호화를 수행
일례로, MSB 복호화부(2808)는 현재 2-튜플(2812)의 상위 비트 심볼에 대해 2-튜플 컨텍스트 결정부(2804)에 의해 생성된 2-튜플 컨텍스트에 기초하여 복호화할 수 있다. 이 때, MSB 복호화부(2808)는 2-튜플 컨텍스트에 기초하여 현재 2-튜플(2812)의 2개의 상위 비트 심볼을 묶어서 복호화할 수 있다. 예를 들어, MSB 복호화부(2808)는 0~3의 값을 갖는 상위 비트 심볼 2개를 1개의 심볼로 표현하여 복호화할 수 있다. 이 경우, 총 16가지의 심볼을 통해 1개의 현재 2-튜플(2812)에 대해 1번의 산술 복호화를 수행할 수 있다.
Ⅱ. 일부의 경우, 2-튜플 컨텍스트에 기초하고, 나머지 일부의 경우, 2-튜플 컨텍스트 및 추가 컨텍스트에 기초하여 현재 2-튜플에 대해 복호화를 수행
다른 일례로, MSB 복호화부(2808)는 일부 경우에 대해 2-튜플 컨텍스에 기초하여 현재 2-튜플(2812)의 상위 비트 심볼에 대해 산술 복호화를 수행할 수 있다. 그리고, MSB 복호화부(2808)는 나머지 일부 경우에 대해 2-튜플 컨텍스트 및 추가 컨텍스트에 기초하여 현재 2-튜플(2812)의 상위 비트 심볼에 대해 산술 복호화를 수행할 수 있다. 이 때, 추가 컨텍스트는 현재 2-튜플(2812)에 대해 현재 프레임의 이전 주파수에 대응하는 주변 2-튜플(2816)의 상위 비트 심볼을 의미할 수 있다. 이 경우, MSB 복호화부(2808)는 현재 2-튜플(2812)을 2개의 상위 비트 심볼로 표현하여 2번의 산술 복호화를 수행할 수 있다. 2번의 산술 복호화가 수행될 경우, 추가 컨텍스트로 사용될 상위 비트 심볼은 도 26의 주변 2-튜플(2602 또는 2603)일 수 있다. 즉, MSB 복호화부(2808)는 현재 2-튜플(2812)을 기준으로 컨텍스트 템플릿 정보에 기초하여 주변 2-튜플(2602 또는 2603)을 추가 컨텍스트로 결정할 수 있다.
Ⅲ. 모든 경우, 2-튜플 컨텍스트 및 추가 컨텍스트에 기초하여 현재 2-튜플에 대해 복호화를 수행
또 다른 실시예로, MSB 복호화부(2808)는 모든 경우에 대해 2-튜플 컨텍스트 및 추가 컨텍스트에 기초하여 현재 2-튜플(2812)의 상위 비트 심볼에 대해 산술 복호화를 수행할 수 있다. 2-튜플 컨텍스트 및 추가 컨텍스트에 대한 설명은 이미 설명한 바 있으므로, 이하에서는 생략하기로 한다.
컨텍스트 템플릿 복호화부(2803)는 컨텍스트 템플릿을 복호화할 수 있다. 컨텍스트 템플릿 정보는 입력된 신호를 복호화할 때 전송되어야 한다. 컨텍스트 템플릿은 산술 복호화를 통해 복호화되어 전송되며, 프레임마다 1번씩 전송될 수 있다. 이 때, 프레임은 주파수 도메인(Frequency Domain) 복호화 모드의 경우 1개의 프레임을 의미하며, 선형 예측 도메인(Linear Prediction Domain) 복호화 모드의 경우 슈퍼 프레임 내에 TCX로 복호화된 프레임을 의미한다.
*컨텍스트 템플릿 정보는 저주파 영역과 고주파 영역으로 분리하여 각각 전송된다. 예를 들어, 컨텍스트 템플릿 정보는 다음과 같이 주파수 영역에 따라 다르게 할당될 수 있다. 컨텍스트 템플릿 정보는 2개의 비트를 통해 저주파 영역 및 고주파 영역으로 표현될 수 있다. 이 때, 0, 1, 2, 3의 4가지 경우로 표현될 수 있다. 컨텍스트 템플릿 정보가 0인 경우, 저주파 영역 및 고주파 영역 모두 컨텍스트 템플릿 0이고, 컨텍스트 템플릿 정보가 1인 경우, 저주파 영역은 컨텍스트 템플릿 1이고, 고주파 영역은 컨텍스트 템플릿이 0이다. 또한, 컨텍스트 템플릿 정보가 2인 경우, 저주파 영역은 컨텍스트 템플릿이 0이고, 고주파 영역은 컨텍스트 템플릿이 1이다. 그치고, 컨텍스트 템플릿 정보가 3인 경우, 저주파 영역 및 고주파 영역 모두 컨텍스트 템플릿 1이다.
특정 2-튜플 이후의 모든 주파수의 양자화된 스펙트럼 값이 0인 경우 MSB 복호화부(2808)는 예외 처리를 수행하여 현재 2-튜플(2812)의 상위 비트를 복호화할 수 있다. 예를 들어, 2-튜플의 심볼이 모두 0인 경우, 탈출 코드를 복호화할 가능성이 없기 때문에, 이러한 방식을 적용하여 예외 처리를 수행할 수 있다. 즉, 현재 복호화할 현재 2-튜플(2812)을 0으로 복호화하기 전에 탈출 코드 복호화부(2807)는 탈출 코드를 1번 복호화할 수 있다. 현재 2-튜플(2812)을 0으로 복호화하면, 이후의 모든 양자화된 스펙트럼이 0이 되므로, 현재 2-튜플(2812)의 이후 주파수 대역에서는 복호화가 중단된다.
다른 일례로, 현재 2-튜플(2812) 이후 스펙트럼의 절대값이 0 또는 1인 경우, MSB 복호화부(2808)는 바이너리 산술 복호화를 수행하여 현재 2-튜플(2812)의 상위 비트 심볼을 복호화할 수 있다. 구체적으로, 현재 2-튜플(2812) 이후의 모든 주파수의 양자화된 스펙트럼의 절대값이 0 또는 1인 경우, MSB 복호화부(2808)는 예외 처리를 수행하여 현재 2-튜플(2812)의 상위 비트를 복호화할 수 있다. 예를 들어, 2-튜플의 심볼이 모두 0인 경우, 탈출 코드를 복호화할 가능성이 없기 때문에, 이러한 방식을 적용하여 예외 처리를 수행할 수 있다. 즉, MSB 복호화부(2808)가 현재 복호화할 현재 2-튜플(2812)을 0으로 복호화하기 전에 탈출 코드 복호화부(2807)는 탈출 코드를 2번 복호화할 수 있다. 현재 2-튜플(2812)의 탈출 코드가 2번 복호화 된후 현재 2-튜플(2812)이 0으로 복호화하면, 이후의 모든 양자화된 스펙트럼이 0또는 1이 되므로, 이후의 상위 비트 심볼에 대해서는 바이너리 산술 복호화를 수행하여 복호화 할수 있다. 이 때 상기 특정 2-튜플 이후의 모든 주파수의 양자화된 스펙트럼 값이 0인 경우 MSB 복호화부(2808)는 예외 처리를 수행하는 경우는 탈출 코드가 1번 복호화 된 후에 처리되는 방식을 적용하면 특정 2-튜플 이후의 모든 주파수의 양자화된 스펙트럼의 절대값이 0또는 1인 경우와 구분하여 수행될 수 있다. 이 경우에는 모든 스펙트럼 값이 0또는 1이기 때문에 하위 비트 복호화는 수행될 필요 없다. 이 때 2-튜플 컨텍스트를 기반으로 컨텍스트 기반 바이너리 산술복호화가 사용될 수 있다.
또한 MSB 복호화부(2808)는 현재의 산술 복호화할 바이너리 심볼 주변의 복수개의 양자화된 스펙트럼 값이 0인지 아닌지를 컨텍스트로 사용하여 산술 복호화할 수 있다. 예를 들어, 도 30에서 볼 수 있듯이, MSB 복호화부(2808)는 주변 양자화된 스펙트럼(3002~3005)의 절대값이 0이 아닌지 여부를 컨텍스트로 사용하여 현재 양자화된 스펙트럼 (3001)의 절대값의 상위 비트 심볼을 산술 복호화할 수 있다. 다른 예로, 도 30에서 볼 수 있듯이, MSB 복호화부(2808)는 주변 양자화된 스펙트럼 (3007~3010)의 절대값이 0이 아닌지 여부를 컨텍스트로 사용하여 현재 양자화된 스펙트럼(3006)의 절대값의 상위 비트 심볼을 산술 복호화할 수 있다.
일례로, 상위 비트 심볼에 대해 복호화가 수행된 후, LSB 복호화부(2809)는 Uniform한 확률에 기반하여 현재 2-튜플(2812)의 하위 잔여 비트를 복호화할 수 있다. LSB 복호화부(2809)는 탈출 코드의 복호화 횟수만큼 현재 2-튜플(2812)의 하위 잔여 비트를 비트 깊이 단위로 2비트씩 추출하여 복호화를 수행할 수 있다. 총 4가지의 심볼이 존재하며, LSB 복호화부(2809)는 이에 대해 산술 복호화를 수행할 수 있다.
다른 일례로, LSB 복호화부(2809)는 비트 깊이를 이용하여 현재 2-튜플(2812)에 대해 컨텍스트 기반의 하위 비트를 복호화할 수 있다. 구체적으로, LSB 복호화부(2809)는 현재 2-튜플(2812)의 하위 잔여 비트를 주파수 인덱스를 기준으로 2개로 분리하고, 비트 깊이 단위로 1비트씩 비트 깊이 정보를 컨텍스트로 사용하여 산술 복호화를 수행할 수 있다.
다른 일례로, LSB 복호화부(2809)는 현재까지 복호화된 절대값이 0인지 또는 0이 아닌지를 고려하여 현재 2-튜플(2812)의 하위 잔여 비트를 복호화할 수 있다. 구체적으로, LSB 복호화부(2809)는 복호화할 현재 2-튜플(2812)의 하위 잔여 비트를 주파수 인덱스 기준으로 2개로 분리하고, 각각의 복호화 중인 절대값이 0인지 또는 0이 아닌지에 대한 정보에 대한 컨텍스트를 이용하여 산술 복호화를 수행할 수 있다.
예를 들어 절대값 3을 복호화 할 때, 하위 잔여 비트를 복호화하기 전에 상위 비트가 0으로 복호화 된 상태이고, 하위 잔여 비트인 11(binary)을 2번 복호화 해야 하는 경우를 가정한다. 첫번째 하위 잔여 비트인 1을 복호화 할 때 현재까지 복호화한 절대값이 상위 비트 복호화 시에 결정된 0이므로, LSB 복호화부(2809)는 0일 경우의 확률 모델을 적용하여 첫번째 하위 잔여 비트를 복호화할 수 있다. 그리고, 두번째 하위 잔여 비트인 1을 복호화할 때 현재까지 복호화한 절대값이 첫번째 하위 잔여 비트를 포함하여 1이므로, LSB 복호화부(2809)는 0이 아닐 경우의 확률 모델을 적용하여 두번째 비트를 복호화할 수 있다.
다른 일례로, LSB 복호화부(2809)는 현재까지 복호화된 절대값이 0인지 또는 0이 아닌지를 고려하여 현재 2-튜플(2812)의 하위 잔여 비트를 복호화할 수 있다. 구체적으로, LSB 복호화부(2809)는 복호화 중인 현재 2-튜플(2812)의 하위 잔여 비트를 비트 깊이 단위로 2개의 비트씩 복호화 할 수 있다. 이 때 복호화 중인 절대값이 0인지 또는 0이 아닌지에 대한 정보에 대한 컨텍스트를 이용하여 산술 복호화를 수행할 수 있다. 복호화할 하위 잔여비트 심볼은 00(2), 01(2), 10(2), 11(2)의 4가지가 될수 있고, 컨텍스트로 사용하는 값은 0인지 아닌지의 2가지 경우를 현재 2-튜플의 조합에 대해서 보기 때문에, 2-튜플의 2개의 절대값이 모두 0인 경우, 낮은 주파수의 값이 0이고 높은 주파수의 값이 0이 아닌 경우, 낮은 주파수의 값이 0이고 높은 주파수의 값이 0이 아닌 경우, 모두 0이 아닌 경우의 4가지 경우가 존재한다. 그런데 모두 0인 경우에는 잔여 비트를 복호화 할 필요가 없기 때문에 이 경우는 제외하고 3가지 경우를 컨텍스트로 사용해 산술 복호화를 수행할 수 있다. 이렇게 비트 깊이 단위로 복호화된 2비트는 각각 2-튜플의 낮은 주파수의 하위 비트 값 1비트와 높은 주파수의 하위 비트 값 1비트를 의미한다.
또 다른 일례로, LSB 복호화부(2809)는 부호 정보를 복호화할 수 있다. 구체적으로, LSB 복호화부(2809)는 양자화된 스펙트럼의 절대값의 복호화가 모두 끝난 후, 절대값이 0이 아닌 경우, 비트 팩킹 방식을 적용하여 각각의 양자화된 스펙트럼의 부호 정보를 전송할 수 있다.
도 28에서 설명되지 않은 구성 요소에 대해서는 도 11의 설명을 참고할 수 있다.
도 29는 2-튜플에 대한 컨텍스트 기반의 산술 복호화 방법을 도시한 플로우차트이다.
도 29의 산술 복호화 방법은 도 20의 산술 복호화 장치가 수행할 수 있다.
산술 복호화 장치(101)는 현재 프레임이 리셋 프레임인지 여부를 판단할 수 있다(S2901). 만약, 리셋 프레임인 경우, 산술 복호화 장치(101)는 컨텍스트 리셋을 수행할 수 있다(S2902). 그리고, 프레임 리셋이 아닌 경우, 산술 복호화 장치(101)는 컨텍스트를 맵핑할 수 있다(S2903). 구체적으로, 산술 복호화 장치(101)는 현재 프레임의 길이가 이전 프레임과 다를 경우에 2 프레임간 주파수 인덱스를 매핑 시켜 주기 위해서 이전 프레임의 길이를 현재 프레임의 길이로 정규화하여 컨텍스트를 맵핑시킬 수 있다. 단계(S2901) 내지 단계(S2903)는 프레임 단위에 따라 수행될 수 있다.
산술 복호화 장치(101)는 현재 2-튜플의 상위 비트(MSB)를 복호화할 때 사용할 복수 개의 컨텍스트 중 최종 전송된 1개의 컨텍스트 템플릿에 대해 복호화를 수행할 수 있다(S2904). 컨텍스트 템플릿에 대해서는 도 26의 설명을 참고할 수 있다. 이후, 산술 복호화 장치(101)는 현재 2-튜플에 대해 2-튜플 컨텍스트를 결정할 수 있다 (S2905). 현재 2-튜플에 대해 2-튜플 컨텍스트를 결정하는 동작에 대해서는 도 28의 설명을 참고할 수 있다.
산술 복호화 장치(101)는 탈출 코드에 대해 복호화할 수 있다(S2906). 탈출 코드가 복호화 될 때마다, lev 0이 업데이트 되고, 탈출 코드가 아닌 것이 복호화되면, MSB 복호화를 수행한다(S2909).
그리고, 산술 복호화 장치(101)는 현재 복호화할 현재 2-튜플의 상위 비트에 대응하는 MSB 컨텍스트를 결정할 수 있다(S2907). 이후, 산술 복호화 장치(101)는 MSB 복호화를 수행할 확률 모델을 결정하게 되는데 2-튜플 컨텍스트 및 추가 컨텍스트를 기반으로 부합되는 확률 모델을 결정할 수 있다(S2908).
산술 복호화 장치(101)는 2-튜플 컨텍스트에 기초하여 MSB 복호화를 수행한다(S2909). 또는 경우에 따라 산술 복호화 장치(101)는 2-튜플 컨텍스트만 사용하거나 또는 나머지 경우에 대해 2-튜플 컨텍스트 및 추가 컨텍스트를 함께 사용할 수 있다. 그리고, 산술 복호화 장치(101)는 모든 경우에 대해 2-튜플 컨텍스트 및 추가 컨텍스트를 함께 사용할 수 있다.
산술 복호화 장치(101)는 탈출 코드를 복호화하는 과정을 통해 도출된 LSB의 비트 깊이 만큼의 비트를 복호화할 수 있다(S2910). 그런 후, 산술 복호화 장치(101)는 컨텍스트를 업데이트 하고(S2912), 주파수 인덱스를 증가할 수 있다(S2913).
MSB와 LSB 복호화가 모두 수행되면, 산술 복호화 장치(101)는 부호 정보를 복호화할 수 있다. 이 후, 산술 복호화 장치(101)는 양자화된 샘플을 생성할 수 있다(S2915).
도 29에서 설명되지 않은 사항은 도 28을 참고할 수 있다.
이하에서는, 본 발명의 일실시예에 따른 산술 복호화 장치(101)의 동작에 대해 세부적으로 설명하기로 한다.
<Syntax 1>
Figure pat00003
Figure pat00004
arith_map_context(): Function that returns initial state 's' , maps the context from the previous frame and resets if necessary.
ctxt: context template for low and high frequency region as Table X.
Table X. Context templates for low and high freqeuncy region
Figure pat00005
esc: Symbol that indicates whether additional bitplane to decode
IsMSBContext(): Function that returns whether 2-tuple conding or 1-tuple coding with additional MSB context is used depending on the 'pki' as Table X+1
Table X+1. Mapping between pki and IsMSBContext()
Figure pat00006
arith_lut(): Function that returns the index of look-up table for the cumulative frequencies table necessary to decode the codeword acod_m1[lut][a] or acod_m1[lut][b].
lut: Index of look-up table for the cumulative frequencies table necessary to decode the codeword acod_m1[lut][a] or acod_m1[lut][b].
m1: Most significant 2-bits-wise bitplane of the 1-tuple, where 0 <= m1 <= 3
a0,b0: Most significant bitplane of the previous 2-tuple in the current frame
m: Index of the most significant 2-bits-wise plane of the 2-tuple, where 0 <= m <= 15
a,b: 2-tuple corresponding to quantized spectral coefficients
lg: Number of quantized coefficients to decode.
i: Index of 2-tuples.
pki: Index of the cumulative frequencies table used by the arithmetic decoder for decoding ng.
arith_get_pk (): Function that returns the index pki of cumulative frequencies table necessary to decode the codeword acod_m [pki][m].
t: State of context
arith_get_context (): Function that returns the state of the context.
arith_reset_context (): Function that resets the context of the noiseless coder.
s: State of the context combined with predicted bit-plane level.
lev: Level of bit-planes to decode beyond the most significant 2-bits wise plane.
j: Indicate if an ARITH_ESCAPE symbol occurred
ARITH_ESCAPE: Escape symbol that indicates additional bit-planes to decode
r: Bit plane of the 2-tuple less significant than the most significant 2-bits wise plane.
sign: Sign of 'a' or 'b'.
arith_data(): Data element to decode the spectral noiseless coder data
arith_reset_flag: Flag which indicates if the spectral noiseless context must be reset.
acod_m[][]: Arithmetic codeword necessary for arithmetic decoding of the most significant 2-bits-wise plane of the 2-tuple.
acod_m1[][]: Arithmetic codeword necessary for arithmetic decoding of the most significant 2-bits-wise plane of the 1-tuple.
acod_esc[][]: Arithmetic codeword necessary for arithmetic decoding of escape symbol.
일 실시예로, 산술 복호화 장치(101)는 상기 구문(syntax1)으로 양자화된 스펙트럼을 절대값과 부호로 분리하여 복호화 할 수 있다. arith_map_context()는 이전 프레임의 길이와 현재 프레임의 길이가 다른 경우 현재 프레임 길이에 맞추어 이전 프레임의 2-튜플을 정규화를 수행하는 과정이다. 이 때 arith_reset_flag는 현재 프레임은 이전 프레임 2-튜플의 컨텍스트를 초기화 시켜야 하는지의 여부를 의미하고, lg는 현재 프레임의 길이를 의미한다. Arith_map_context에서 항상 컨텍스트 reset을 수행해야 하는 것은 아니며, 상위 구문에서 컨텍스트 초기화를 수행할 수 있다.
acod_ctxt[ctxt] 는 현재의 컨텍스트 템플릿을 복호화 하는 과정으로, 산술 복호화를 통해 복호화 된다. 'ctxt'는 컨텍스트 템플릿 정보를 의미한다. 산술 복호화 장치(101)는 컨텍스트 템플릿 복호화를 수행한 후 2-튜플에 대한 복호화를 수행한다.
2-튜플의 복호화는 모든 2-튜플의 상위 비트 심볼 복호화 및, 하위 잔여 비트 복호화를 수행 한 후 부호 정보를 복호화 한다. 먼저 상위 비트 심볼의 복호화는 초기 비트 깊이 정보인 'lev'의 초기화를 수행한다. 이 과정이 'lev=0;' 구문에 해당된다. arith_get_context() , arith_get_pk() 를 통해 2-튜플 컨텍스트인 'pki'를 추출한다. 전술된 방식을 통해 2-튜플 컨텍스트를 추출하는 과정을 의미한다. 추출된 2-튜플 컨텍스트 기반으로 acod_esc[pki][esc]에서 탈출 코드여부에 대한 복호화를 수행한다. 'esc' 는 현재 'pki' 기반으로 산술 복호화를 통해 독출된 심볼을 의미한다.
상기 독출된 심볼이 ARITH_ESCAPE인지의 여부를 확인하는 과정은 탈출 코드 여부를 확인하는 과정이다. 탈출 코드인 경우에는 'lev' 값을 1씩 증가시키고, 'pki' 값 업데이트를 수행한다. 탈출 코드가 아닌 값이 발생되면, IsMSBContext()를 사용해서 현재 'pki'값이 추가 컨텍스트를 적용하는 값인지를 확인하여 추가 컨텍스트가 필요한 경우에는 lut=arith_lut()를 사용해서 'pki'와 추가 컨텍스트를 통해 적합한 확률 모델의 인덱스를 찾아주고, 이 인덱스에 해당되는 확률 모델을 사용해서 상위 비트 심볼 복호화를 수행한다. 이 때 현재 2-튜플의 2개의 상위 비트 심볼(a,b)을 각각에 적합한 확률을 찾아 acod_m1[lut][a], acod_m1 [lut][b]를 통해 복호화를 수행한다. arith_lut()는 다음과 같은 pseudo code로 표현 가능하다. 'a0'및 'a1'은 이전 2-tuple의 복호화된 상위 비트 심볼들을 의미한다. 'a0'및 'a1'은 주변 2-튜플(2502)의 2개의 상위 비트 심볼로, 주파수 순서로 'a0'가 'a1' 이전 상위 비트 심볼이다. 이 때, 예외 처리를 수행할 때 2-튜플의 상위 비트 심볼 2개를 1개로 표현하는 'm'을 사용하기 때문에 'm'으로 변환하는 과정이 필요하다. 'm'은 아래에서 설명하겠다.
int arith_lut(int c, int p0, int p1, int i, int lg, int pki)
{
/* c: context template */
/* p0 : MSB located in the postion according to context template 0 */
/* p1 : MSB located in the postion according to context template 1 */
/* i : position of the current 2-tuple */
/* lg : frame length */
/* lut : look up table mapping table [context_template][pki][MSB]*/
if (i<lg/4) c0=c&1;
else c0=(c>>1)&1;
if (c0==0) return lut[0][pki][p0];
else return lut[1][pki][p1];
}
IsMSBContext()에서 추가 컨텍스트를 사용하지 않는 경우로 판명이 난 경우에는 acod_m[pki][m]을 통해 2-튜플의 상위 비트 심볼(m)을 'pki' 기반으로 산술 복호화 한다. 이 경우는 1번의 복호화를 수행한후 2-튜플에 포함된 2개의 상위 비트 심볼로 표현해 주는 과정이 필요하며, 이 과정이 b=m/4;a=m-4*b; 이다.
예외 처리 상황이 발생된 경우에는 (m==0 && lev>0)를 만족하는 경우에는 상위 비트 심볼 및 하위 비트 심볼 복호화를 중단하고 이후의 모든 양자화된 주파수 스펙트럼은 0으로 처리한다. lev>0는 한번이라도 탈출 코드가 복호화 되었음을 의미한다.
acod_r[r]을 통해 lev 값이 0이 아닌 경우에는 하위 잔여 비트 산술복호화를 수행한다. r은 2-튜플의 잔여 비트들을 주파수 단위로 비트 깊이 별로 2 비트씩 묶어서 표현한다.
모든 2-튜플에 대해서 복호화가 완료되면, 양자화된 주파수 스펙트럼의 절대값이 독출되면 독출된 절대값이 0이 아닌 경우에는 부호정보 'sign' 를 비트스트림에서 읽어 1의 값이 추출되면 양자화된 스펙트럼의 부호를 음수로 변경한다.
<Syntax 2>
Figure pat00007
Figure pat00008
일 실시예로 산술 복호화 장치(101)는 상기 구문(syntax2)으로 양자화된 스펙트럼을 절대값과 부호로 분리하여 복호화 할 수 있다. arith_map_context()는 이전 프레임의 길이와 현재 프레임의 길이가 다른 경우 현재 프레임 길이에 맞추어 이전 프레임의 2-튜플을 정규화를 수행하는 과정이다. 이 때 arith_reset_flag는 현재 프레임은 이전 프레임 2-튜플의 컨텍스트를 초기화 시켜야 하는지의 여부에 해당되고, lg는 현재 프레임의 길이를 의미한다. Arith_map_context에서 항상 컨텍스트 reset을 수행해야 하는 것은 아니며, 상위 구문에서 컨텍스트 초기화를 수행할 수 있다.
acod_ctxt[ctxt] 는 현재의 컨텍스트 템플릿을 복호화 하는 과정으로 산술 복호화를 통해 복호화 된다. 'ctxt'는 컨텍스트 템플릿 정보를 의미한다. 컨텍스트 템플릿 복호화를 수행한 후 2-튜플에 대한 복호화를 수행한다.
2-튜플의 복호화는 모든 2-튜플의 상위 비트 심볼 복호화 및, 하위 잔여 비트 복호화를 수행 한 후 부호 정보를 복호화 한다. 먼저 상위 비트 심볼의 복호화는 초기 비트 깊이 정보인 'lev'의 초기화를 수행한다. 이 과정이 'lev=0;' 구문에 해당된다. arith_get_context() , arith_get_pk() 를 통해 2-튜플 컨텍스트인 'pki'를 추출한다. 전술된 방식을 통해 2-튜플 컨텍스트를 추출하는 과정을 의미한다. 추출된 2-튜플 컨텍스트 기반으로 acod_m1[pki][e]에서 탈출 코드여부에 대한 복호화를 수행한다. 'esc' 는 현재 'pki' 기반으로 산술 복호화를 통해 독출된 심볼을 의미한다.
상기 독출된 심볼이 ARITH_ESCAPE인지의 여부를 확인하는 과정은 탈출 코드 여부를 확인하는 과정이다. 탈출 코드인 경우에는 'lev' 값을 1씩 증가시키고, 'pki' 값 업데이트를 수행한다. 탈출 코드가 아닌 값이 발생되면, lut=arith_lut()를 사용해서 'pki'와 추가 컨텍스트를 통해 적합한 확률 모델의 인덱스를 찾아주고, 이 인덱스에 해당되는 확률 모델을 사용해서 상위 비트 심볼 복호화를 수행한다. 이 때 현재 2-튜플의 2개의 상위 비트 심볼(a,b)을 각각에 적합한 확률을 찾아 acod_m1[lut][a], acod_m1[lut][b]를 통해 복호화를 수행한다. arith_lut()는 다음과 같은 pseudo code로 표현 가능하다. 'a0'및 'a1'은 이전 2-tuple의 복호화된 상위 비트 심볼들을 의미한다. 'a0'및 'a1'은 주변 2-튜플(2502)의 2개의 상위 비트 심볼로, 주파수 순서로 'a0'가 'a1' 이전 상위 비트 심볼이다.
int arith_lut(int c, int p0, int p1, int i, int lg, int pki)
{
/* c: context template */
/* p0 : MSB located in the postion according to context template 0 */
/* p1 : MSB located in the postion according to context template 1 */
/* i : position of the current 2-tuple */
/* lg : frame length */
/* lut : look up table mapping table [context_template][pki][MSB]*/
if (i<lg/4) c0=c&1;
else c0=(c>>1)&1;
if (c0==0) return luk[0][pki][p0];
else return luk[1][pki][p1];
}
예외 처리 상황이 발생된 경우에는 (a==0 && b==0 && lev>0)를 만족하는 경우에는 상위 비트 심볼 및 하위 비트 심볼 복호화를 중단하고 이후의 모든 양자화된 주파수 스펙트럼은 0으로 처리한다. lev>0는 한번이라도 탈출 코드가 복호화 되었음을 의미한다.
acod_r[r]을 통해 lev 값이 0이 아닌 경우에는 하위 잔여 비트 산술복호화를 수행한다. r은 2-튜플의 잔여 비트들을 주파수 단위로 비트 깊이 별로 2 비트씩 묶어서 표현한다.
모든 2-튜플에 대해서 복호화가 완료되면, 양자화된 주파수 스펙트럼의 절대값이 독출되면 독출된 절대값이 0이 아닌 경우에는 부호정보 'sign'를 비트스트림에서 읽어 1의 값이 추출되면 양자화된 스펙트럼의 부호를 음수로 변경한다.
<Syntax3>
Figure pat00009
Figure pat00010
acod_r[][]: Arithmetic codeword necessary for arithmetic decoding of 'r0' or 'r1'.
r0: Bit plane of the 'a' less significant than the most significant 2-bits wise plane.
r1: Bit plane of the 'b' less significant than the most significant 2-bits wise plane.
일 실시예로, 산술 복호화 장치(101)는 상기 구문(Syntax3)으로 양자화된 스펙트럼을 절대값과 부호로 분리하여 복호화 할 수 있다. Arith_map_context()는 이전 프레임의 길이와 현재 프레임의 길이가 다른 경우 현재 프레임 길이에 맞추어 이전 프레임의 2-튜플을 정규화를 수행하는 과정이다. 이 때 arith_reset_flag는 현재 프레임은 이전 프레임 2-튜플의 컨텍스트를 초기화 시켜야 하는지의 여부에 해당되고, lg는 현재 프레임의 길이를 의미한다. Arith_map_context에서 항상 컨텍스트 reset을 수행해야 하는 것은 아니며, 상위 구문에서 컨텍스트 초기화를 수행할 수 있다.
Acod_ctxt[c] 는 현재의 컨텍스트 템플릿을 복호화 하는 과정으로 산술 복호화를 통해 복호화 된다. 'ctxt'는 컨텍스트 템플릿 정보를 의미한다. 컨텍스트 템플릿 복호화를 수행한 후 2-튜플에 대한 복호화를 수행한다.
2-튜플의 복호화는 모든 2-튜플의 상위 비트 심볼 복호화 및, 하위 잔여 비트 복호화를 수행 한 후 부호 정보를 복호화 한다. 먼저 상위 비트 심볼의 복호화는 초기 비트 깊이 정보인 'lev'의 초기화를 수행한다. 이 과정이 'lev=0;' 구문에 해당된다. Arith_get_context() , arith_get_pk() 를 통해 2-튜플 컨텍스트인 'pki'를 추출한다. 전술된 방식을 통해 2-튜플 컨텍스트를 추출하는 과정을 의미한다. 추출된 2-튜플 컨텍스트 기반으로 acod_esc[pki][esc]에서 탈출 코드여부에 대한 복호화를 수행한다. 'esc' 는 현재 'pki' 기반으로 산술 복호화를 통해 독출된 심볼을 의미한다.
상기 독출된 심볼이 ARITH_ESCAPE인지의 여부를 확인하는 과정은 탈출 코드 여부를 확인하는 과정이다. 탈출 코드인 경우에는 'lev' 값을 1씩 증가시키고, 'pki' 값 업데이트를 수행한다. 탈출 코드가 아닌 값이 발생되면, IsMSBContext()를 사용해서 현재 'pki'값이 추가 컨텍스트를 적용하는 값인지를 확인하여 추가 컨텍스트가 필요한 경우에는 lut=arith_lut()를 사용해서 'pki'와 추가 컨텍스트를 통해 적합한 확률 모델의 인덱스를 찾아주고, 이 인덱스에 해당되는 확률 모델을 사용해서 상위 비트 심볼 복호화를 수행한다. 이 때 현재 2-튜플의 2개의 상위 비트 심볼(a,b)을 각각에 적합한 확률을 찾아 acod_m1[lut][a], acod_m1[lut][b]를 통해 복호화를 수행한다. Arith_lut()는 다음과 같은 pseudo code로 표현 가능하다. 'a0'및 'a1'은 이전 2-tuple의 복호화된 상위 비트 심볼들을 의미한다. 'a0'및 'a1'은 주변 2-튜플(2502)의 2개의 상위 비트 심볼로, 주파수 순서로 'a0'가 'a1' 이전 상위 비트 심볼이다. 이 때 예외 처리를 수행할 때 2-튜플의 상위 비트 심볼 2개를 1개로 표현하는 'm'을 사용하기 때문에 'm'으로 변환하는 과정이 필요하다. 'm'은 아래에서 설명하겠다.
Int arith_lut(int c, int p0, int p1, int I, int lg, int pki)
{
/* c: context template */
/* p0 : MSB located in the postion according to context template 0 */
/* p1 : MSB located in the postion according to context template 1 */
/* I : position of the current 2-tuple */
/* lg : frame length */
/* lut : look up table mapping table [context_template][pki][MSB]*/
if (i<lg/4) c0=c&1;
else c0=(c>>1)&1;
if (c0==0) return luk[0][pki][p0];
else return luk[1][pki][p1];
}
IsMSBContext()에서 추가 컨텍스트를 사용하지 않는 경우로 판명이 난 경우에는 acod_m[pki][m]을 통해 2-튜플의 상위 비트 심볼(m)을 'pki' 기반으로 산술 복호화 한다. 이 경우는 1번의 복호화를 수행한후 2-튜플에 포함된 2개의 상위 비트 심볼로 표현해 주는 과정이 필요하며, 이 과정이 b=m/4;a=m-4*b; 이다.
예외 처리 상황이 발생된 경우에는 (m==0 && lev>0)를 만족하는 경우에는 상위 비트 심볼 및 하위 비트 심볼 복호화를 중단하고 이후의 모든 양자화된 주파수 스펙트럼은 0으로 처리한다. Lev>0는 한번이라도 탈출 코드가 복호화 되었음을 의미한다.
Acod_r[lc][r0], acod_r[lc][r1]을 통해 lev 값이 0이 아닌 경우에는 하위 잔여 비트 산술복호화를 수행한다. R0와 r1은 2-튜플의 잔여 비트들을 주파수 단위 별로 각각 복호화를 수행한다. 복호화를 수행할 때, lc 의 비트 깊이 정보를 컨텍스트로 활용하여 산술복호화를 수행한다. Lc는 비트 깊이를 의미하며 특정 값보다 비트 깊이가 큰 경우에는 동일한 확률 모델을 사용한다. 현재 구문에서는 비트 깊이가 3 보다 큰 경우에는 동일한 확률 모델을 사용하도록 설정되어 있으나, 다른 값을 적용할 수도 있다.
모든 2-튜플에 대해서 복호화가 완료되면, 양자화된 주파수 스펙트럼의 절대값이 독출되면 독출된 절대값이 0이 아닌 경우에는 부호정보 'sign'를 비트스트림에서 읽어 1의 값이 추출되면 양자화된 스펙트럼의 부호를 음수로 변경한다.
<Syntax4>
Figure pat00011
Figure pat00012
acod_r[][]: Arithmetic codeword necessary for arithmetic decoding of 'r0' or 'r1'.
r0: Bit plane of the 'a' less significant than the most significant 2-bits wise plane.
r1: Bit plane of the 'b' less significant than the most significant 2-bits wise plane.
일 실시예로 산술 복호화 장치(101)는 상기 구문(syntax 4)으로 양자화된 스펙트럼을 절대값과 부호로 분리하여 복호화 할 수 있다. arith_map_context()는 이전 프레임의 길이와 현재 프레임의 길이가 다른 경우 현재 프레임 길이에 맞추어 이전 프레임의 2-튜플을 정규화를 수행하는 과정이다. 이 때 arith_reset_flag는 현재 프레임은 이전 프레임 2-튜플의 컨텍스트를 초기화 시켜야 하는지의 여부에 해당되고, lg는 현재 프레임의 길이를 의미한다. Arith_map_context에서 항상 컨텍스트 reset을 수행해야 하는 것은 아니며, 상위 구문에서 컨텍스트 초기화를 수행할 수 있다.
acod_ctxt[ctxt] 는 현재의 컨텍스트 템플릿을 복호화 하는 과정으로 산술 복호화를 통해 복호화 된다. 'ctxt'는 컨텍스트 템플릿 정보를 의미한다. 컨텍스트 템플릿 복호화를 수행한 후 2-튜플에 대한 복호화를 수행한다.
2-튜플의 복호화는 모든 2-튜플의 상위 비트 심볼 복호화 및, 하위 잔여 비트 복호화를 수행 한 후 부호 정보를 복호화 한다. 먼저 상위 비트 심볼의 복호화는 초기 비트 깊이 정보인 'lev'의 초기화를 수행한다. 이 과정이 'lev=0;' 구문에 해당된다. arith_get_context() , arith_get_pk() 를 통해 2-튜플 컨텍스트인 'pki'를 추출한다. 전술된 방식을 통해 2-튜플 컨텍스트를 추출하는 과정을 의미한다. 추출된 2-튜플 컨텍스트 기반으로 acod_esc[pki][esc]에서 탈출 코드여부에 대한 복호화를 수행한다. 'esc' 는 현재 'pki' 기반으로 산술 복호화를 통해 독출된 심볼을 의미한다.
상기 독출된 심볼이 ARITH_ESCAPE인지의 여부를 확인하는 과정은 탈출 코드 여부를 확인하는 과정이다. 탈출 코드인 경우에는 'lev' 값을 1씩 증가시키고, 'pki' 값 업데이트를 수행한다. 탈출 코드가 아닌 값이 발생되면, lut=arith_lut()를 사용해서 'pki'와 추가 컨텍스트를 통해 적합한 확률 모델의 인덱스를 찾아주고, 이 인덱스에 해당되는 확률 모델을 사용해서 상위 비트 심볼 복호화를 수행한다. 이 때 현재 2-튜플의 2개의 상위 비트 심볼(a,b)을 각각에 적합한 확률을 찾아 acod_m1[lut][a], acod_m1[lut][b]를 통해 복호화를 수행한다. arith_lut()는 다음과 같은 pseudo code로 표현 가능하다. 'a0'및 'a1'은 이전 2-tuple의 복호화된 상위 비트 심볼들을 의미한다. 'a0'및 'a1'은 주변 2-튜플(2502)의 2개의 상위 비트 심볼로, 주파수 순서로 'a0'가 'a1' 이전 상위 비트 심볼이다.
int arith_lut(int c, int p0, int p1, int i, int lg, int pki)
{
/* c: context template */
/* p0 : MSB located in the postion according to context template 0 */
/* p1 : MSB located in the postion according to context template 1 */
/* i : position of the current 2-tuple */
/* lg : frame length */
/* lut : look up table mapping table [context_template][pki][MSB]*/
if (i<lg/4) c0=c&1;
else c0=(c>>1)&1;
if (c0==0) return luk[0][pki][p0];
else return luk[1][pki][p1];
}
예외 처리 상황이 발생된 경우에는 (a==0 && b==0 && lev>0)를 만족하는 경우에는 상위 비트 심볼 및 하위 비트 심볼 복호화를 중단하고 이후의 모든 양자화된 주파수 스펙트럼은 0으로 처리한다. lev>0는 한번이라도 탈출 코드가 복호화 되었음을 의미한다.
acod_r[lc][r0], acod_r[lc][r1]을 통해 lev 값이 0이 아닌 경우에는 하위 잔여 비트 산술복호화를 수행한다. r0와 r1은 2-튜플의 잔여 비트들을 주파수 단위 별로 각각 복호화를 수행한다. 복호화를 수행할 때, lc 의 비트 깊이 정보를 컨텍스트로 활용하여 산술복호화를 수행한다. lc는 비트 깊이를 의미하며 특정 값보다 비트 깊이가 큰 경우에는 동일한 확률 모델을 사용한다. 현재 구문에서는 비트 깊이가 3 보다 큰 경우에는 동일한 확률 모델을 사용하도록 설정되어 있으나, 다른 값을 적용할 수도 있다.
모든 2-튜플에 대해서 복호화가 완료되면, 양자화된 주파수 스펙트럼의 절대값이 독출되면 독출된 절대값이 0이 아닌 경우에는 부호정보 'sign'를 비트스트림에서 읽어 1의 값이 추출되면 양자화된 스펙트럼의 부호를 음수로 변경한다.
*<Syntax5>
Figure pat00013
Figure pat00014
acod_r[][]: Arithmetic codeword necessary for arithmetic decoding of 'r0' or 'r1'.
r0: Bit plane of the 'a' less significant than the most significant 2-bits wise plane.
r1: Bit plane of the 'b' less significant than the most significant 2-bits wise plane.
일 실시예로, 산술 복호화 장치(101)는 상기 구문(Syntax5)으로 양자화된 스펙트럼을 절대값과 부호로 분리하여 복호화 할 수 있다. arith_map_context()는 이전 프레임의 길이와 현재 프레임의 길이가 다른 경우 현재 프레임 길이에 맞추어 이전 프레임의 2-튜플을 정규화를 수행하는 과정이다. 이 때 arith_reset_flag는 현재 프레임은 이전 프레임 2-튜플의 컨텍스트를 초기화 시켜야 하는지의 여부에 해당되고, lg는 현재 프레임의 길이를 의미한다. Arith_map_context에서 항상 컨텍스트 reset을 수행해야 하는 것은 아니며, 상위 구문에서 컨텍스트 초기화를 수행할 수 있다.
acod_ctxt[c] 는 현재의 컨텍스트 템플릿을 복호화 하는 과정으로 산술 복호화를 통해 복호화 된다. 'ctxt'는 컨텍스트 템플릿 정보를 의미한다. 컨텍스트 템플릿 복호화를 수행한 후 2-튜플에 대한 복호화를 수행한다.
2-튜플의 복호화는 모든 2-튜플의 상위 비트 심볼 복호화 및, 하위 잔여 비트 복호화를 수행 한 후 부호 정보를 복호화 한다. 먼저 상위 비트 심볼의 복호화는 초기 비트 깊이 정보인 'lev'의 초기화를 수행한다. 이 과정이 'lev=0;' 구문에 해당된다. arith_get_context() , arith_get_pk() 를 통해 2-튜플 컨텍스트인 'pki'를 추출한다. 전술된 방식을 통해 2-튜플 컨텍스트를 추출하는 과정을 의미한다. 추출된 2-튜플 컨텍스트 기반으로 acod_esc[pki][esc]에서 탈출 코드여부에 대한 복호화를 수행한다. 'esc' 는 현재 'pki' 기반으로 산술 복호화를 통해 독출된 심볼을 의미한다.
상기 독출된 심볼이 ARITH_ESCAPE인지의 여부를 확인하는 과정은 탈출 코드 여부를 확인하는 과정이다. 탈출 코드인 경우에는 'lev' 값을 1씩 증가시키고, 'pki' 값 업데이트를 수행한다. 탈출 코드가 아닌 값이 발생되면, IsMSBContext()를 사용해서 현재 'pki'값이 추가 컨텍스트를 적용하는 값인지를 확인하여 추가 컨텍스트가 필요한 경우에는 lut=arith_lut()를 사용해서 'pki'와 추가 컨텍스트를 통해 적합한 확률 모델의 인덱스를 찾아주고, 이 인덱스에 해당되는 확률 모델을 사용해서 상위 비트 심볼 복호화를 수행한다. 이 때 현재 2-튜플의 2개의 상위 비트 심볼(a,b)을 각각에 적합한 확률을 찾아 acod_m1[lut][a], acod_m1[lut][b]를 통해 복호화를 수행한다. arith_lut()는 다음과 같은 pseudo code로 표현 가능하다. 'a0'및 'a1'은 이전 2-tuple의 복호화된 상위 비트 심볼들을 의미한다. 'a0'및 'a1'은 주변 2-튜플(2502)의 2개의 상위 비트 심볼로, 주파수 순서로 'a0'가 'a1' 이전 상위 비트 심볼이다. 이 때 예외 처리를 수행할 때 2-튜플의 상위 비트 심볼 2개를 1개로 표현하는 'm'을 사용하기 때문에 'm'으로 변환하는 과정이 필요하다. 'm'은 아래에서 설명하겠다.
int arith_lut(int c, int p0, int p1, int i, int lg, int pki)
{
/* c: context template */
/* p0 : MSB located in the postion according to context template 0 */
/* p1 : MSB located in the postion according to context template 1 */
/* i : position of the current 2-tuple */
/* lg : frame length */
/* lut : look up table mapping table [context_template][pki][MSB]*/
if (i<lg/4) c0=c&1;
else c0=(c>>1)&1;
if (c0==0) return luk[0][pki][p0];
else return luk[1][pki][p1];
}
IsMSBContext()에서 추가 컨텍스트를 사용하지 않는 경우로 판명이 난 경우에는 acod_m[pki][m]을 통해 2-튜플의 상위 비트 심볼(m)을 'pki' 기반으로 산술 복호화 한다. 이 경우는 1번의 복호화를 수행한후 2-튜플에 포함된 2개의 상위 비트 심볼로 표현해 주는 과정이 필요하며, 이 과정이 b=m/4;a=m-4*b; 이다.
예외 처리 상황이 발생된 경우에는 (m==0 && lev>0)를 만족하는 경우에는 상위 비트 심볼 및 하위 비트 심볼 복호화를 중단하고 이후의 모든 양자화된 주파수 스펙트럼은 0으로 처리한다. lev>0는 한번이라도 탈출 코드가 복호화 되었음을 의미한다.
acod_r[0][r0], acod_r[1][r1]을 통해 lev 값이 0이 아닌 경우에는 하위 잔여 비트 산술복호화를 수행한다. r0와 r1은 2-튜플의 잔여 비트들을 주파수 단위 별로 각각 복호화를 수행한다. 복호화를 수행할 때, 현재까지 복호화된 절대값이 0인지 아닌지의 정보를 컨텍스트로 활용하여 산술복호화를 수행한다.
모든 2-튜플에 대해서 복호화가 완료되면, 양자화된 주파수 스펙트럼의 절대값이 독출되면 독출된 절대값이 0이 아닌 경우에는 부호정보 'sign'를 비트스트림에서 읽어 1의 값이 추출되면 양자화된 스펙트럼의 부호를 음수로 변경한다.
<Syntax6>
Figure pat00015
Figure pat00016
acod_r[][]: Arithmetic codeword necessary for arithmetic decoding of 'r0' or 'r1'.
r0: Bit plane of the 'a' less significant than the most significant 2-bits wise plane.
r1: Bit plane of the 'b' less significant than the most significant 2-bits wise plane.
일 실시예로, 산술 복호화 장치(101)는 상기 구문(Syntax6)으로 양자화된 스펙트럼을 절대값과 부호로 분리하여 복호화 할 수 있다. arith_map_context()는 이전 프레임의 길이와 현재 프레임의 길이가 다른 경우 현재 프레임 길이에 맞추어 이전 프레임의 2-튜플을 정규화를 수행하는 과정이다. 이 때 arith_reset_flag는 현재 프레임은 이전 프레임 2-튜플의 컨텍스트를 초기화 시켜야 하는지의 여부에 해당되고, lg는 현재 프레임의 길이를 의미한다. Arith_map_context에서 항상 컨텍스트 reset을 수행해야 하는 것은 아니며, 상위 구문에서 컨텍스트 초기화를 수행할 수 있다.
acod_ctxt[ctxt] 는 현재의 컨텍스트 템플릿을 복호화 하는 과정으로 산술 복호화를 통해 복호화 된다. 'ctxt'는 컨텍스트 템플릿 정보를 의미한다. 컨텍스트 템플릿 복호화를 수행한 후 2-튜플에 대한 복호화를 수행한다.
2-튜플의 복호화는 모든 2-튜플의 상위 비트 심볼 복호화 및, 하위 잔여 비트 복호화를 수행 한 후 부호 정보를 복호화 한다. 먼저 상위 비트 심볼의 복호화는 초기 비트 깊이 정보인 'lev'의 초기화를 수행한다. 이 과정이 'lev=0;' 구문에 해당된다. arith_get_context() , arith_get_pk() 를 통해 2-튜플 컨텍스트인 'pki'를 추출한다. 전술된 방식을 통해 2-튜플 컨텍스트를 추출하는 과정을 의미한다. 추출된 2-튜플 컨텍스트 기반으로 acod_esc[pki][esc]에서 탈출 코드여부에 대한 복호화를 수행한다. 'esc' 는 현재 'pki' 기반으로 산술 복호화를 통해 독출된 심볼을 의미한다.
상기 독출된 심볼이 ARITH_ESCAPE인지의 여부를 확인하는 과정은 탈출 코드 여부를 확인하는 과정이다. 탈출 코드인 경우에는 'lev' 값을 1씩 증가시키고, 'pki' 값 업데이트를 수행한다. 탈출 코드가 아닌 값이 발생되면, lut=arith_lut()를 사용해서 'pki'와 추가 컨텍스트를 통해 적합한 확률 모델의 인덱스를 찾아주고, 이 인덱스에 해당되는 확률 모델을 사용해서 상위 비트 심볼 복호화를 수행한다. 이 때 현재 2-튜플의 2개의 상위 비트 심볼(a,b)을 각각에 적합한 확률을 찾아 acod_m1[lut][a], acod_m1[lut][b]를 통해 복호화를 수행한다. arith_lut()는 다음과 같은 pseudo code로 표현 가능하다. 'a0'및 'a1'은 이전 2-tuple의 복호화된 상위 비트 심볼들을 의미한다. 'a0'및 'a1'은 주변 2-튜플(2502)의 2개의 상위 비트 심볼로, 주파수 순서로 'a0'가 'a1' 이전 상위 비트 심볼이다.
int arith_lut(int c, int p0, int p1, int i, int lg, int pki)
{
/* c: context template */
/* p0 : MSB located in the postion according to context template 0 */
/* p1 : MSB located in the postion according to context template 1 */
/* i : position of the current 2-tuple */
/* lg : frame length */
/* lut : look up table mapping table [context_template][pki][MSB]*/
if (i<lg/4) c0=c&1;
else c0=(c>>1)&1;
if (c0==0) return luk[0][pki][p0];
else return luk[1][pki][p1];
}
예외 처리 상황이 발생된 경우에는 (a==0 && b==0 && lev>0)를 만족하는 경우에는 상위 비트 심볼 및 하위 비트 심볼 복호화를 중단하고 이후의 모든 양자화된 주파수 스펙트럼은 0으로 처리한다. lev>0는 한번이라도 탈출 코드가 복호화 되었음을 의미한다.
acod_r[0][r0], acod_r[1][r1]을 통해 lev 값이 0이 아닌 경우에는 하위 잔여 비트 산술복호화를 수행한다. r0와 r1은 2-튜플의 잔여 비트들을 주파수 단위 별로 각각 복호화를 수행한다. 복호화를 수행할 때, 현재까지 복호화된 절대값이 0인지 아닌지의 정보를 컨텍스트로 활용하여 산술복호화를 수행한다.
모든 2-튜플에 대해서 복호화가 완료되면, 양자화된 주파수 스펙트럼의 절대값이 독출되면 독출된 절대값이 0이 아닌 경우에는 부호정보 'sign'를 비트스트림에서 읽어 1의 값이 추출되면 양자화된 스펙트럼의 부호를 음수로 변경한다.
<Syntax7>
Figure pat00017
Figure pat00018
Figure pat00019
a1, b1: Most significant bitplane of the previous 2-tuple of the previous 2-tuple in the current frame
GetMBCtx(): Function that returns the index of the cumulative frequencies table necessary to decode the codeword acod_mb[][a] or acod_mb[][b].
bm: Indicate if binary coding mode is activated or not
acod_r[][]: Arithmetic codeword necessary for arithmetic decoding of 'r0' or 'r1'.
r0: Bit plane of the 'a' less significant than the most significant 2-bits wise plane.
r1: Bit plane of the 'b' less significant than the most significant 2-bits wise plane.
일 실시예로, 산술 복호화 장치(101)는 상기 구문(Syntax7)으로 양자화된 스펙트럼을 절대값과 부호로 분리하여 복호화 할 수 있다. Syntax 7은 Syntax 5로부터 파생된 것이다. arith_map_context()는 이전 프레임의 길이와 현재 프레임의 길이가 다른 경우 현재 프레임 길이에 맞추어 이전 프레임의 2-튜플을 정규화를 수행하는 과정이다. 이 때 arith_reset_flag는 현재 프레임은 이전 프레임 2-튜플의 컨텍스트를 초기화 시켜야 하는지의 여부에 해당되고, lg는 현재 프레임의 길이를 의미한다. Arith_map_context에서 항상 컨텍스트 reset을 수행해야 하는 것은 아니며, 상위 구문에서 컨텍스트 초기화를 수행할 수 있다.
acod_ctxt[c] 는 현재의 컨텍스트 템플릿을 복호화 하는 과정으로 산술 복호화를 통해 복호화 된다. 'ctxt'는 컨텍스트 템플릿 정보를 의미한다. 컨텍스트 템플릿 복호화를 수행한 후 2-튜플에 대한 복호화를 수행한다.
2-튜플의 복호화는 모든 2-튜플의 상위 비트 심볼 복호화 및, 하위 잔여 비트 복호화를 수행 한 후 부호 정보를 복호화 한다. 먼저 상위 비트 심볼의 복호화는 바이너리 코딩 모드가 아닌 경우에는 초기 비트 깊이 정보인 'lev'의 초기화를 수행한다. 이 과정이 'lev=0;' 구문에 해당된다. arith_get_context() , arith_get_pk() 를 통해 2-튜플 컨텍스트인 'pki'를 추출한다. 전술된 방식을 통해 2-튜플 컨텍스트를 추출하는 과정을 의미한다. 추출된 2-튜플 컨텍스트 기반으로 acod_esc[pki][esc]에서 탈출 코드여부에 대한 복호화를 수행한다. 'esc' 는 현재 'pki' 기반으로 산술 복호화를 통해 독출된 심볼을 의미한다.
상기 독출된 심볼이 ARITH_ESCAPE인지의 여부를 확인하는 과정은 탈출 코드 여부를 확인하는 과정이다. 탈출 코드인 경우에는 'lev' 값을 1씩 증가시키고, 'pki' 값 업데이트를 수행한다. 탈출 코드가 아닌 값이 발생되면, IsMSBContext()를 사용해서 현재 'pki'값이 추가 컨텍스트를 적용하는 값인지를 확인하여 추가 컨텍스트가 필요한 경우에는 lut=arith_lut()를 사용해서 'pki'와 추가 컨텍스트를 통해 적합한 확률 모델의 인덱스를 찾아주고, 이 인덱스에 해당되는 확률 모델을 사용해서 상위 비트 심볼 복호화를 수행한다. 이 때 현재 2-튜플의 2개의 상위 비트 심볼(a,b)을 각각에 적합한 확률을 찾아 acod_m1[lut][a], acod_m1[lut][b]를 통해 복호화를 수행한다. arith_lut()는 다음과 같은 pseudo code로 표현 가능하다. 'a0'및 'a1'은 이전 2-tuple의 복호화된 상위 비트 심볼들을 의미한다. 'a0'및 'a1'은 주변 2-튜플(2502)의 2개의 상위 비트 심볼로, 주파수 순서로 'a0'가 'a1' 이전 상위 비트 심볼이다. 이 때 예외 처리를 수행할 때 2-튜플의 상위 비트 심볼 2개를 1개로 표현하는 'm'을 사용하기 때문에 'm'으로 변환하는 과정이 필요하다. 'm'은 아래에서 설명하겠다.
int arith_lut(int c, int p0, int p1, int i, int lg, int pki)
{
/* c: context template */
/* p0 : MSB located in the postion according to context template 0 */
/* p1 : MSB located in the postion according to context template 1 */
/* i : position of the current 2-tuple */
/* lg : frame length */
/* lut : look up table mapping table [context_template][pki][MSB]*/
if (i<lg/4) c0=c&1;
else c0=(c>>1)&1;
if (c0==0) return luk[0][pki][p0];
else return luk[1][pki][p1];
}
IsMSBContext()에서 추가 컨텍스트를 사용하지 않는 경우로 판명이 난 경우에는 acod_m[pki][m]을 통해 2-튜플의 상위 비트 심볼(m)을 'pki' 기반으로 산술 복호화 한다. 이 경우는 1번의 복호화를 수행한후 2-튜플에 포함된 2개의 상위 비트 심볼로 표현해 주는 과정이 필요하며, 이 과정이 b=m/4;a=m-4*b; 이다.
바이너리 복호화 모드(binary coding mode) 인 경우에는 bm=1로 setting 된 경우에 해당되며, 이 경우에는 주변의 상위비트 심볼들이 0인지를 컨텍스트로 활용하여 2-튜플을 1개의 상위 비트 심볼씩 복호화를 수행한다. acod_bm[][a], acod_bm[][b]에 해당된다. GetMBCtx() 함수는 바이너리 상위 비트 심볼을 복호화 하는 경우에 확률 모델의 인덱스를 반환해주는 함수로서 다음과 같은 pseudo code로 구현될 수 있다.
int GetMBCtx(int p0,int p1, int p2, int p3)
{
/* p0,p1,p2,p3 : Most significant bitplane at the previous frequency of most significant bitplane to decode. p3 is the lowest frequency position */
/* pidx : look up table index for decoding acod_mb[][a] */
int pidx;
if (p0==0) pidx=0;
else pidx=8;
if (p1!=0) pidx+=4;
if (p2!=0) pidx+=2;
if (p3!=0) pidx+=1;
return pidx;
}
예외 처리 상황이 발생된 경우에는 (m==0 && lev>0)를 만족하는 경우에는 lev=1을 확인 후에 lev이 1인 경우에 상위 비트 심볼 및 하위 비트 심볼 복호화를 중단하고 이후의 모든 양자화된 주파수 스펙트럼은 0으로 처리한다. lev>0는 한번이라도 탈출 코드가 복호화 되었음을 의미한다.
acod_r[0][r0], acod_r[1][r1]을 통해 lev 값이 0이 아닌 경우에는 하위 잔여 비트 산술복호화를 수행한다. r0와 r1은 2-튜플의 잔여 비트들을 주파수 단위 별로 각각 복호화를 수행한다. 복호화를 수행할 때, 현재까지 복호화된 절대값이 0인지 아닌지의 정보를 컨텍스트로 활용하여 산술복호화를 수행한다.
모든 2-튜플에 대해서 복호화가 완료되면, 양자화된 주파수 스펙트럼의 절대값이 독출되면 독출된 절대값이 0이 아닌 경우에는 부호정보 'sign'를 비트스트림에서 읽어 1의 값이 추출되면 양자화된 스펙트럼의 부호를 음수로 변경한다.
<Syntax 8>
Figure pat00020
Figure pat00021
Figure pat00022
acod_r[][]: Arithmetic codeword necessary for arithmetic decoding of ‘r’.
r: Bit plane of the 2-tuple less significant than the most significant 2-bits wise plane..
일 실시예로, 산술 복호화 장치(101)는 상기 구문(Syntax7)으로 양자화된 스펙트럼을 절대값과 부호로 분리하여 복호화 할 수 있다. arith_map_context()는 이전 프레임의 길이와 현재 프레임의 길이가 다른 경우 현재 프레임 길이에 맞추어 이전 프레임의 2-튜플을 정규화를 수행하는 과정이다. 이 때 arith_reset_flag는 현재 프레임은 이전 프레임 2-튜플의 컨텍스트를 초기화 시켜야 하는지의 여부에 해당되고, lg는 현재 프레임의 길이를 의미한다. Arith_map_context에서 항상 컨텍스트 reset을 수행해야 하는 것은 아니며, 상위 구문에서 컨텍스트 초기화를 수행할 수 있다.
acod_ctxt[c] 는 현재의 컨텍스트 템플릿을 복호화 하는 과정으로 산술 복호화를 통해 복호화 된다. ‘ctxt’는 컨텍스트 템플릿 정보를 의미한다. 컨텍스트 템플릿 복호화를 수행한 후 2-튜플에 대한 복호화를 수행한다.
2-튜플의 복호화는 모든 2-튜플의 상위 비트 심볼 복호화 및, 하위 잔여 비트 복호화를 수행 한 후 부호 정보를 복호화 한다. 먼저 상위 비트 심볼의 복호화는 바이너리 코딩 모드가 아닌 경우에는 초기 비트 깊이 정보인 ‘lev’의 초기화를 수행한다. 이 과정이 ‘lev=0;’ 구문에 해당된다. arith_get_context() , arith_get_pk() 를 통해 2-튜플 컨텍스트인 ‘pki’를 추출한다. 전술된 방식을 통해 2-튜플 컨텍스트를 추출하는 과정을 의미한다. 추출된 2-튜플 컨텍스트 기반으로 acod_esc[pki][esc]에서 탈출 코드여부에 대한 복호화를 수행한다. ‘esc’ 는 현재 ‘pki’ 기반으로 산술 복호화를 통해 독출된 심볼을 의미한다.
상기 독출된 심볼이 ARITH_ESCAPE인지의 여부를 확인하는 과정은 탈출 코드 여부를 확인하는 과정이다. 탈출 코드인 경우에는 ‘lev’ 값을 1씩 증가시키고, ‘pki’ 값 업데이트를 수행한다. 탈출 코드가 아닌 값이 발생되면, IsMSBContext()를 사용해서 현재 ‘pki’값이 추가 컨텍스트를 적용하는 값인지를 확인하여 추가 컨텍스트가 필요한 경우에는 lut=arith_lut()를 사용해서 ‘pki’와 추가 컨텍스트를 통해 적합한 확률 모델의 인덱스를 찾아주고, 이 인덱스에 해당되는 확률 모델을 사용해서 상위 비트 심볼 복호화를 수행한다. 이 때 현재 2-튜플의 2개의 상위 비트 심볼(a,b)을 각각에 적합한 확률을 찾아 acod_m1[lut][a], acod_m1[lut][b]를 통해 복호화를 수행한다. arith_lut()는 다음과 같은 pseudo code로 표현 가능하다. ‘a0’및 ‘a1’은 이전 2-tuple의 복호화된 상위 비트 심볼들을 의미한다. ‘a0’및 ‘a1’은 주변 2-튜플(2502)의 2개의 상위 비트 심볼로, 주파수 순서로 ‘a0’가 ‘a1’ 이전 상위 비트 심볼이다. 이 때 예외 처리를 수행할 때 2-튜플의 상위 비트 심볼 2개를 1개로 표현하는 ‘m’을 사용하기 때문에 ‘m’으로 변환하는 과정이 필요하다. ‘m’은 아래에서 설명하겠다.
int arith_lut(int c, int p0, int p1, int i, int lg, int pki)
{
/* c: context template */
/* p0 : MSB located in the postion according to context template 0 */
/* p1 : MSB located in the postion according to context template 1 */
/* i : position of the current 2-tuple */
/* lg : frame length */
/* lut : look up table mapping table [context_template][pki][MSB]*/
if (i<lg/4) c0=c&1;
else c0=(c>>1)&1;
if (c0==0) return luk[0][pki][p0];
else return luk[1][pki][p1];
}
IsMSBContext()에서 추가 컨텍스트를 사용하지 않는 경우로 판명이 난 경우에는 acod_m[pki][m]을 통해 2-튜플의 상위 비트 심볼(m)을 ‘pki’ 기반으로 산술 복호화 한다. 이 경우는 1번의 복호화를 수행한후 2-튜플에 포함된 2개의 상위 비트 심볼로 표현해 주는 과정이 필요하며, 이 과정이 b=m/4;a=m-4*b; 이다.
바이너리 복호화 모드(binary coding mode) 인 경우에는 bm=1로 setting 된 경우에 해당되며, 이 경우에는 주변의 상위비트 심볼들이 0인지를 컨텍스트로 활용하여 2-튜플을 1개의 상위 비트 심볼씩 복호화를 수행한다. acod_bm[][a], acod_bm[][b]에 해당된다. GetMBCtx() 함수는 바이너리 상위 비트 심볼을 복호화 하는 경우에 확률 모델의 인덱스를 반환해주는 함수로서 다음과 같은 pseudo code로 구현될 수 있다.
int GetMBCtx(int p0,int p1, int p2, int p3)
{
/* p0,p1,p2,p3 : Most significant bitplane at the previous frequency of most significant bitplane to decode. p3 is the lowest frequency position */
/* pidx : look up table index for decoding acod_mb[][a] */
int pidx;
if (p0==0) pidx=0;
else pidx=8;
if (p1!=0) pidx+=4;
if (p2!=0) pidx+=2;
if (p3!=0) pidx+=1;
return pidx;
}
예외 처리 상황이 발생된 경우에는 (m==0 && lev>0)를 만족하는 경우에는 lev=1을 확인 후에 lev이 1인 경우에 상위 비트 심볼 및 하위 비트 심볼 복호화를 중단하고 이후의 모든 양자화된 주파수 스펙트럼은 0으로 처리한다. lev>0는 한번이라도 탈출 코드가 복호화 되었음을 의미한다.
acod_r[0][r], acod_r[1][r], acod_r[2][r]를 통해 lev 값이 0이 아닌 경우에는 하위 잔여 비트 산술복호화를 수행한다. r은 2-튜플의 잔여 비트들을 비트 깊이 단위별로 2비트씩 복호화를 수행한다. 2비트는 주파수 단위가 다른 2비트를 의미하며 복호화를 수행할 때, 현재까지 복호화된 절대값이 0인지 아닌지의 정보를 컨텍스트로 활용하여 산술복호화를 수행한다. 이 때 복호화 중이 2-튜플이 모두 0인 경우에는 잔여 비트 복호화가 필요 없기 때문에, 총 3가지 경우의 컨텍스트가 존재할수 있으며 이에 따른 확률 모델이 총 3가지가 존재한다. 이 때, 3가지의 경우는, 현재 복호화 시점까지 2-튜플 내의 저주파수에 대한 절대값이 0이고, 고주파수에 대한 절대값이 0이 아닌 경우, 2-튜플 내의 저주파수에 대한 절대값이 0이 아니고, 고주파수에 대한 절대값이 0인 경우, 및 2-튜플 내의 저주파수 및 고주파수에 대한 절대값이 모두 0이 아닌 경우를 의미한다.
모든 2-튜플에 대해서 복호화가 완료되면, 양자화된 주파수 스펙트럼의 절대값이 독출되면 독출된 절대값이 0이 아닌 경우에는 부호정보 ‘sign’를 비트스트림에서 읽어 1의 값이 추출되면 양자화된 스펙트럼의 부호를 음수로 변경한다.
또한 본 발명의 일실시예에 따른 컨텍스트 기반의 산술 부호화 방법 및 복호화 방법은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명의 일실시예는 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명의 일실시예는 상기 설명된 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 일실시예는 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
100: 산술 부호화 장치
101: 산술 복호화 장치

Claims (5)

  1. 적어도 하나의 프로세서를 포함하며,
    상기 프로세서는
    현재 2-튜플에 이웃하며, 상기 현재 2-튜플보다 앞서 복호화된 2-튜플에 근거하여 상기 현재 2-튜플의 상위 비트를 복호화하고,
    상기 현재 2-튜플의 스펙트럼 계수의 복호화된 비트에 적어도 하나의 넌-제로 비트가 포함되어 있는지에 근거하여 상기 현재 2-튜플의 하위 비트를 복호화하도록 구성되는 컨텍스트 기반의 산술 복호화장치.
  2. 제1 항에 있어서, 상기 프로세서는 상기 현재 2-튜플보다 앞서 복호화된 2-튜플에 근거하여 제1 컨텍스트를 결정하고, 상기 제1 컨텍스트로부터 얻어진 제1 확률 테이블을 이용하여 상기 현재 2-튜플의 상위 비트를 복호화하도록 구성되는 컨텍스트 기반의 산술 복호화장치.
  3. 제1 항에 있어서, 상기 프로세서는 상기 현재 2-튜플의 스펙트럼 계수의 복호화된 비트에 적어도 하나의 넌-제로 비트가 포함되어 있는지에 근거하여 제2 컨텍스트를 결정하고, 상기 제2 컨텍스트로부터 얻어진 제2 확률 테이블을 이용하여 상기 현재 2-튜플의 하위 비트를 복호화하도록 구성되는 컨텍스트 기반의 산술 복호화장치.
  4. 제1 항에 있어서, 상기 프로세서는
    상기 현재 2-튜플보다 앞서 복호화된 2-튜플에 근거하여 제1 컨텍스트를 결정하고, 상기 제1 컨텍스트로부터 얻어진 제1 확률 테이블을 이용하여 상기 현재 2-튜플의 상위 비트를 복호화하고,
    상기 현재 2-튜플의 스펙트럼 계수의 복호화된 비트에 적어도 하나의 넌-제로 비트가 포함되어 있는지에 근거하여 제2 컨텍스트를 결정하고, 상기 제2 컨텍스트로부터 얻어진 제2 확률 테이블을 이용하여 상기 현재 2-튜플의 하위 비트를 복호화하도록 구성되는 컨텍스트 기반의 산술 복호화장치.
  5. 제1 항에 있어서, 상기 스펙트럼 계수의 복호화된 비트는, 상기 현재 2-튜플에서 현재까지 복호화된 상위 비트를 포함하는 것을 특징으로 하는 컨텍스트 기반의 산술 복호화장치.
KR1020170034922A 2009-06-19 2017-03-20 컨텍스트 기반의 산술 복호화 장치 및 방법 KR101882948B1 (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
KR1020090055113 2009-06-19
KR20090055113 2009-06-19
KR20090056301 2009-06-24
KR1020090056301 2009-06-24
KR1020090100457 2009-10-21
KR1020090100457A KR20100136890A (ko) 2009-06-19 2009-10-21 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
KR1020090122733 2009-12-10
KR1020090122733A KR20100136896A (ko) 2009-06-19 2009-12-10 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
KR1020100000281A KR20100136898A (ko) 2009-06-19 2010-01-04 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
KR1020100000281 2010-01-04

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020100000643A Division KR101719735B1 (ko) 2009-06-19 2010-01-05 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20170035855A true KR20170035855A (ko) 2017-03-31
KR101882948B1 KR101882948B1 (ko) 2018-07-30

Family

ID=43510806

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020090100457A KR20100136890A (ko) 2009-06-19 2009-10-21 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
KR1020090122733A KR20100136896A (ko) 2009-06-19 2009-12-10 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
KR1020100000281A KR20100136898A (ko) 2009-06-19 2010-01-04 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
KR1020100000643A KR101719735B1 (ko) 2009-06-19 2010-01-05 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
KR1020170034922A KR101882948B1 (ko) 2009-06-19 2017-03-20 컨텍스트 기반의 산술 복호화 장치 및 방법

Family Applications Before (4)

Application Number Title Priority Date Filing Date
KR1020090100457A KR20100136890A (ko) 2009-06-19 2009-10-21 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
KR1020090122733A KR20100136896A (ko) 2009-06-19 2009-12-10 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
KR1020100000281A KR20100136898A (ko) 2009-06-19 2010-01-04 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
KR1020100000643A KR101719735B1 (ko) 2009-06-19 2010-01-05 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법

Country Status (10)

Country Link
US (3) US9171550B2 (ko)
EP (3) EP3843279A1 (ko)
JP (1) JP5635603B2 (ko)
KR (5) KR20100136890A (ko)
CN (3) CN102460975B (ko)
BR (2) BR122020024930B1 (ko)
CA (2) CA2765863C (ko)
MX (1) MX2011013579A (ko)
RU (2) RU2493652C2 (ko)
WO (1) WO2010147436A2 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100136890A (ko) 2009-06-19 2010-12-29 삼성전자주식회사 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
CN102667921B (zh) 2009-10-20 2014-09-10 弗兰霍菲尔运输应用研究公司 音频编码器、音频解码器、用于将音频信息编码的方法、用于将音频信息解码的方法
MX2012008075A (es) 2010-01-12 2013-12-16 Fraunhofer Ges Forschung Codificador de audio, decodificador de audio, metodo para codificar e informacion de audio, metodo para decodificar una informacion de audio y programa de computacion utilizando una modificacion de una representacion de un numero de un valor de contexto numerico previo.
BR122021002104B1 (pt) * 2010-07-08 2021-11-03 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E. V. Codificador que utiliza cancelamento de serrilhado futuro
ES2937066T3 (es) * 2010-07-20 2023-03-23 Fraunhofer Ges Forschung Decodificador de audio, procedimiento y programa informático para decodificación de audio
US8976861B2 (en) 2010-12-03 2015-03-10 Qualcomm Incorporated Separately coding the position of a last significant coefficient of a video block in video coding
US9042440B2 (en) 2010-12-03 2015-05-26 Qualcomm Incorporated Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
US9338449B2 (en) 2011-03-08 2016-05-10 Qualcomm Incorporated Harmonized scan order for coding transform coefficients in video coding
US9106913B2 (en) 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
RU2464649C1 (ru) * 2011-06-01 2012-10-20 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ обработки звукового сигнала
US9167253B2 (en) 2011-06-28 2015-10-20 Qualcomm Incorporated Derivation of the position in scan order of the last significant transform coefficient in video coding
CN107025909B (zh) 2011-10-21 2020-12-29 三星电子株式会社 能量无损编码方法和设备以及能量无损解码方法和设备
GB2513111A (en) * 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
US9176973B1 (en) 2013-06-14 2015-11-03 Timmes, Inc. Recursive-capable lossless compression mechanism
EP2830055A1 (en) * 2013-07-22 2015-01-28 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Context-based entropy coding of sample values of a spectral envelope
PT3471096T (pt) 2013-10-18 2020-07-06 Ericsson Telefon Ab L M Codificação de posições de picos espectrais
KR101910376B1 (ko) * 2014-06-29 2019-01-04 엘지전자 주식회사 연결된 rom-ram 테이블에 기초하여 산술 코딩을 수행하는 방법 및 장치
EP2980795A1 (en) 2014-07-28 2016-02-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoding and decoding using a frequency domain processor, a time domain processor and a cross processor for initialization of the time domain processor
EP2980794A1 (en) 2014-07-28 2016-02-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoder and decoder using a frequency domain processor and a time domain processor
KR102061316B1 (ko) * 2014-07-28 2019-12-31 니폰 덴신 덴와 가부시끼가이샤 부호화 방법, 장치, 프로그램 및 기록 매체
US9252805B1 (en) * 2015-03-28 2016-02-02 International Business Machines Corporation Parallel huffman decoder
US20160360236A1 (en) * 2015-06-04 2016-12-08 Mediatek Inc. Method and Apparatus for Entropy Transcoding
KR101968456B1 (ko) * 2016-01-26 2019-04-11 돌비 레버러토리즈 라이쎈싱 코오포레이션 적응형 양자화
US10419781B2 (en) * 2016-09-20 2019-09-17 Qualcomm Incorporated Storing and retrieving high bit depth image data
US10194147B2 (en) * 2017-01-19 2019-01-29 Google Llc DC coefficient sign coding scheme
US11227615B2 (en) * 2017-09-08 2022-01-18 Sony Corporation Sound processing apparatus and sound processing method
EP3483880A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Temporal noise shaping
EP3483884A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Signal filtering
WO2019091573A1 (en) 2017-11-10 2019-05-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for encoding and decoding an audio signal using downsampling or interpolation of scale parameters
EP3483878A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio decoder supporting a set of different loss concealment tools
EP3483879A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Analysis/synthesis windowing function for modulated lapped transformation
EP3483883A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio coding and decoding with selective postfiltering
WO2019091576A1 (en) 2017-11-10 2019-05-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoders, audio decoders, methods and computer programs adapting an encoding and decoding of least significant bits
EP3483886A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Selecting pitch lag
EP3483882A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Controlling bandwidth in encoders and/or decoders
GB2574873A (en) * 2018-06-21 2019-12-25 Nokia Technologies Oy Determination of spatial audio parameter encoding and associated decoding
CN110517666B (zh) * 2019-01-29 2021-03-02 腾讯科技(深圳)有限公司 音频识别方法、系统、机器设备和计算机可读介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070059849A (ko) * 2005-12-07 2007-06-12 삼성전자주식회사 오디오 신호의 부호화 및 복호화 방법, 오디오 신호의부호화 및 복호화 장치

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06133284A (ja) 1992-10-15 1994-05-13 Sony Corp エンコーダ及びデコーダ
US5801973A (en) * 1994-07-29 1998-09-01 Discovision Associates Video decompression
GB9509831D0 (en) * 1995-05-15 1995-07-05 Gerzon Michael A Lossless coding method for waveform data
JPH11511283A (ja) * 1995-08-03 1999-09-28 シーゲート テクノロジー,インコーポレイテッド 整合スペクトルヌルエンコーダ/デコーダ
KR100261253B1 (ko) 1997-04-02 2000-07-01 윤종용 비트율 조절이 가능한 오디오 부호화/복호화 방법및 장치
KR100261254B1 (ko) 1997-04-02 2000-07-01 윤종용 비트율 조절이 가능한 오디오 데이터 부호화/복호화방법 및 장치
KR100335609B1 (ko) * 1997-11-20 2002-10-04 삼성전자 주식회사 비트율조절이가능한오디오부호화/복호화방법및장치
KR100335611B1 (ko) * 1997-11-20 2002-10-09 삼성전자 주식회사 비트율 조절이 가능한 스테레오 오디오 부호화/복호화 방법 및 장치
KR100274213B1 (ko) * 1997-11-21 2000-12-15 윤종용 Rll(2,25)코드를 이용한 7/13 채널코딩 및 채널디코딩방법
FI104133B (fi) * 1997-11-28 1999-11-15 Nokia Mobile Phones Ltd Koodaus- ja modulointimenetelmä ja laite sen soveltamiseksi
US6289128B1 (en) * 1998-09-30 2001-09-11 Ricoh Co., Ltd. Method and apparatus for sharing a least significant bit of encoded data between multiple numeric data values
JP3684128B2 (ja) 2000-02-18 2005-08-17 キヤノン株式会社 算術符号化/復号化方法ならびに算術符号化/復号化装置
US6400289B1 (en) * 2000-03-01 2002-06-04 Hughes Electronics Corporation System and method for performing lossless data compression and decompression
JP2003304160A (ja) * 2002-04-11 2003-10-24 Sony Corp Mq−coder方式の算術符号化/復号装置並びに方法
GB2388502A (en) * 2002-05-10 2003-11-12 Chris Dunn Compression of frequency domain audio signals
AU2003235868A1 (en) * 2002-05-10 2003-11-11 Asahi Kasei Kabushiki Kaisha Speech recognition device
KR20040085545A (ko) 2003-03-31 2004-10-08 삼성전자주식회사 통신 시스템에서 오류 정정 부호의 복호 장치 및 방법
US20040208169A1 (en) * 2003-04-18 2004-10-21 Reznik Yuriy A. Digital audio signal compression method and apparatus
US7426462B2 (en) * 2003-09-29 2008-09-16 Sony Corporation Fast codebook selection method in audio encoding
KR100571824B1 (ko) * 2003-11-26 2006-04-17 삼성전자주식회사 부가정보 삽입된 mpeg-4 오디오 bsac부호화/복호화 방법 및 장치
JP2005184232A (ja) * 2003-12-17 2005-07-07 Sony Corp 符号化装置、プログラム、およびデータ処理方法
SE526226C2 (sv) * 2003-12-19 2005-08-02 Ericsson Telefon Ab L M Bildbehandling
KR20050087956A (ko) * 2004-02-27 2005-09-01 삼성전자주식회사 무손실 오디오 부호화/복호화 방법 및 장치
KR100561869B1 (ko) 2004-03-10 2006-03-17 삼성전자주식회사 무손실 오디오 부호화/복호화 방법 및 장치
US7392195B2 (en) * 2004-03-25 2008-06-24 Dts, Inc. Lossless multi-channel audio codec
MX2007000459A (es) * 2004-07-14 2007-07-25 Agency Science Tech & Res Codificacion y descodificacion de senales, basadas en contexto.
US7788106B2 (en) 2005-04-13 2010-08-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Entropy coding with compact codebooks
US7991610B2 (en) * 2005-04-13 2011-08-02 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Adaptive grouping of parameters for enhanced coding efficiency
KR100818268B1 (ko) * 2005-04-14 2008-04-02 삼성전자주식회사 오디오 데이터 부호화 및 복호화 장치와 방법
JP2007028531A (ja) 2005-07-21 2007-02-01 Fuji Xerox Co Ltd 画像符号化装置及び画像符号化方法
KR20070037945A (ko) * 2005-10-04 2007-04-09 삼성전자주식회사 오디오 신호의 부호화/복호화 방법 및 장치
US7372378B2 (en) * 2005-12-01 2008-05-13 Nvidia Corporation Efficient decoding of n-tuple variable bit length symbols
JP2007214814A (ja) 2006-02-08 2007-08-23 Sony Corp 復号化方法、復号化プログラムおよび復号化装置
JP4745865B2 (ja) * 2006-02-28 2011-08-10 富士通セミコンダクター株式会社 符号化装置および方法
US7246462B1 (en) * 2006-03-06 2007-07-24 Grois Inventors Corp, Inc. Reusable device for release of caught fishing accessories
JP2008268384A (ja) * 2007-04-17 2008-11-06 Nec Lcd Technologies Ltd 液晶表示装置
KR100889750B1 (ko) * 2007-05-17 2009-03-24 한국전자통신연구원 오디오 신호의 무손실 부호화/복호화 장치 및 그 방법
JP4981174B2 (ja) * 2007-08-24 2012-07-18 フランス・テレコム 確率テーブルの動的な計算によるシンボルプレーン符号化/復号化
US7623047B2 (en) * 2007-10-30 2009-11-24 Hewlett-Packard Development Company, L.P. Data sequence compression
BR122021007875B1 (pt) * 2008-07-11 2022-02-22 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E. V. Codificador de áudio e decodificador de áudio
US8013866B2 (en) * 2009-03-17 2011-09-06 Empire Technology Development Llc Image display system, image display apparatus, image providing apparatus and method thereof
KR20100136890A (ko) 2009-06-19 2010-12-29 삼성전자주식회사 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070059849A (ko) * 2005-12-07 2007-06-12 삼성전자주식회사 오디오 신호의 부호화 및 복호화 방법, 오디오 신호의부호화 및 복호화 장치

Also Published As

Publication number Publication date
CA2923285C (en) 2018-05-29
EP2443750A4 (en) 2015-04-29
CA2923285A1 (en) 2010-12-23
EP3843279A1 (en) 2021-06-30
US20120221325A1 (en) 2012-08-30
US9171550B2 (en) 2015-10-27
KR20100136890A (ko) 2010-12-29
RU2011151607A (ru) 2013-06-27
RU2493652C2 (ru) 2013-09-20
BRPI1015554B1 (pt) 2021-08-10
WO2010147436A3 (en) 2011-03-03
CN105491378B (zh) 2019-03-15
US8412533B2 (en) 2013-04-02
JP5635603B2 (ja) 2014-12-03
CA2765863A1 (en) 2010-12-23
CN105491378A (zh) 2016-04-13
EP3843278A1 (en) 2021-06-30
RU2649288C2 (ru) 2018-03-30
US9959879B2 (en) 2018-05-01
JP2012531086A (ja) 2012-12-06
CN105427867A (zh) 2016-03-23
CN105427867B (zh) 2019-07-19
CN102460975B (zh) 2016-02-17
KR20100136896A (ko) 2010-12-29
US20100324912A1 (en) 2010-12-23
KR20100136899A (ko) 2010-12-29
CN102460975A (zh) 2012-05-16
KR20100136898A (ko) 2010-12-29
KR101882948B1 (ko) 2018-07-30
MX2011013579A (es) 2012-02-21
RU2013129559A (ru) 2015-01-10
EP2443750A2 (en) 2012-04-25
US20160049160A1 (en) 2016-02-18
KR101719735B1 (ko) 2017-03-27
CA2765863C (en) 2016-05-24
WO2010147436A2 (en) 2010-12-23
BRPI1015554A2 (pt) 2020-08-18
BR122020024930B1 (pt) 2021-07-27

Similar Documents

Publication Publication Date Title
KR101882948B1 (ko) 컨텍스트 기반의 산술 복호화 장치 및 방법
US8515767B2 (en) Technique for encoding/decoding of codebook indices for quantized MDCT spectrum in scalable speech and audio codecs
EP2491553B1 (en) Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using an iterative interval size reduction
AU2011206677B2 (en) Audio encoder, audio decoder, method for encoding and decoding an audio information, and computer program obtaining a context sub-region value on the basis of a norm of previously decoded spectral values

Legal Events

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