KR20130054993A - 오디오 인코더, 오디오 디코더, 오디오 정보를 인코딩하기 위한 방법, 오디오 정보를 디코딩하기 위한 방법 및 최적화된 해시 테이블을 사용하는 컴퓨터 프로그램 - Google Patents

오디오 인코더, 오디오 디코더, 오디오 정보를 인코딩하기 위한 방법, 오디오 정보를 디코딩하기 위한 방법 및 최적화된 해시 테이블을 사용하는 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20130054993A
KR20130054993A KR1020137004188A KR20137004188A KR20130054993A KR 20130054993 A KR20130054993 A KR 20130054993A KR 1020137004188 A KR1020137004188 A KR 1020137004188A KR 20137004188 A KR20137004188 A KR 20137004188A KR 20130054993 A KR20130054993 A KR 20130054993A
Authority
KR
South Korea
Prior art keywords
value
context
hash
ari
values
Prior art date
Application number
KR1020137004188A
Other languages
English (en)
Other versions
KR101573829B1 (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 KR20130054993A publication Critical patent/KR20130054993A/ko
Application granted granted Critical
Publication of KR101573829B1 publication Critical patent/KR101573829B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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 TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/02Speech 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 spectral analysis, e.g. transform vocoders or subband vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/06Determination or coding of the spectral characteristics, e.g. of the short-term prediction coefficients
    • G10L19/07Line spectrum pair [LSP] vocoders

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Mathematical Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Stereo-Broadcasting Methods (AREA)

Abstract

인코딩된 오디오 정보를 기초로 하여 디코딩된 오디오 정보를 제공하기 위한 오디오 디코더는 디코딩된 오디오 정보를 획득하기 위하여, 스펙트럼 값들의 산술적으로 인코딩된 표현을 기초로 하여 복수의 디코딩된 값들을 제공하기 위한 산술 디코더, 및 디코딩된 스펙트럼 값들을 사용하여 시간-도메인 오디오 표현을 제공하기 위한 주파수-도메인-대-시간-도메인 변환기를 포함한다. 산술 디코더는 수치 현재 콘텍스트 값에 의해 설명되는 콘텍스트 상태에 따라, 디코딩된 형태로, 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트 플레인을 표현하는 코드 값의 매핑을 설명하는 매핑 룰을 선택하도록 구성된다. 산술 디코더는 복수의 이전에 디코딩된 스펙트럼 값들에 따라 수치 현재 콘텍스트 값을 결정하도록 구성된다. 산술 디코더는 매핑 룰을 선택하기 위하여, 이것의 엔트리들이 수치 콘텍스트 값들 중에서 중요한 상태 값들 및 수치 콘텍스트 값들의 구간들의 경계들 모두를 정의하는, 해시 테이블을 평가하도록 구성되는데, 상기 해시 테이블 ari_hash_m은 도 22(a), 22(b), 22(c) 및 22(d)에 주어진 것과 같이 정의된다. 산술 디코더는 수치 현재 콘텍스트 값이 해시 테이블의 엔트리에 의해 설명되는 테이블 콘텍스트 값과 동일한지를 결정하거나 또는 수치 현재 콘텍스트 값이 위치하는 해시 테이블의 엔트리들에 의해 설명되는 구간을 결정하기 위하여 해시 테이블을 평가하도록 구성되고, 평가의 결과에 따라 선택된 매핑 룰을 설명하는 매핑 룰 지수 값을 유래하도록 구성된다.

Description

오디오 인코더, 오디오 디코더, 오디오 정보를 인코딩하기 위한 방법, 오디오 정보를 디코딩하기 위한 방법 및 최적화된 해시 테이블을 사용하는 컴퓨터 프로그램{AUDIO ENCODER, AUDIO DECODER, METHOD FOR ENCODING AN AUDIO INFORMATION, METHOD FOR DECODING AN AUDIO INFORMATION AND COMPUTER PROGRAM USING AN OPTIMIZED HASH TABLE}
본 발명에 따른 실시 예들은 인코딩된 오디오 정보를 기초로 하여 디코딩된 오디오 정보를 제공하기 위한 오디오 디코더, 입력 오디오 정보를 기초로 하여 인코딩된 오디오 정보를 제공하기 위한 오디오 인코더, 인코딩된 오디오 정보를 기초로 하여 디코딩된 오디오 정보를 제공하기 위한 방법, 입력 오디오 정보를 기초로 하여 인코딩된 오디오 정보를 제공하기 방법 및 컴퓨터 프로그램에 관한 것이다.
본 발명에 따른 실시 예들은 예를 들면 이른바 통합 음성 및 오디오 코더(unified-speech-and-audio-coder, USAC)와 같은, 오디오 인코더 또는 디코더에서 사용될 수 있는, 개량된 스펙트럼 무잡음 코딩(spectral noiseless coding)에 관한 것이다.
본 발명에 따른 실시 예들은 현재의 통합 음성 및 오디오 코더 사양에 적용하기 위한 스펙트럽 코딩의 업데이트에 관한 것이다.
다음에서, 본 발명의 이해 및 장점을 용이하게 하기 위한 본 발명의 배경기술이 간단히 설명될 것이다. 지난 10년 동안 뛰어난 비트레이트 효율을 갖는 오디오 콘텐츠를 디지털 방식으로 저장하고 분산하기 위한 가능성을 창출하기 위한 많은 노력이 시도되었다. 이러한 방법에 대한 중요한 하나의 성과는 국제 표준 ISO/IEC 14496-3의 정의이다. 이러한 표준의 파트(part) 3은 오디오 콘텐츠의 인코딩 및 디코딩에 관한 것이고, 파트 3의 서브파트 4는 일반적인 오디오 코딩에 관한 것이다. 게다가, 품질을 향상시키거나 및/또는 필요로 하는 비트 레이트를 감소시키기 위한 더 나은 향상들이 제안되어 왔다.
상기 표준에 설명된 개념에 따라, 시간-도메인 오디오 신호는 시간-주파수 표현으로 변환된다. 시간-도메인으로부터 시간-주파수-도메인으로의 변환은 일반적으로 변환 블록(transform block)들을 사용하여 실행되는데, 이는 또한 시간-도메인 샘플들의 "프레임(frame)"으로서 지정된다. 이는 예를 들면, 프레임의 반에 의해 시프트(shift)되는 오버래핑 프레임들을 사용하는 것이 바람직하다고 알려져 왔는데, 그 이유는 오버랩이 아티팩트(artifact)들을 효율적으로 방지하기(또는 적어도 감소시키기) 때문이다. 게다가, 일시적으로 한정된 프레임들의 프로세싱으로부터 기원하는 아티팩티들을 방지하기 위한 윈도우잉(windowing)이 실행되어야만 한다는 것이 알려져 왔다.
시간-도메인으로부터 시간-주파수 도메인으로 입력 오디오 신호의 윈도우잉된 부를 변환하기 위한 많은 경우에 일부 스펙트럼 값들이 복수의 다른 스펙트럼 값보다 상당히 큰 크기(magnitude)를 갖는 것과 같은, 에너지 압축(energy compaction)이 획득된다. 따라서, 많은 경우에 있어서, 스펙트럼 값들의 평균 크기보다 상당히 큰 크기를 갖는 상대적으로 적은 수의 스펙트럼 값들이 존재한다. 에너지 압축을 야기하는 시간-주파수 도메인에 대한 시간-도메인 변환의 일반적인 예는 이른바 변형 이산 코사인 변환(modified-discrete-cosine-transform, MDCT)이다
스펙트럼 값들은 양자화 에러들이 심리 음향적으로 더 중요한 스펙트럼 값들을 위하여 상대적으로 작고, 심리 음향적으로 덜 중요한 스펙트럼 값들을 위하여 상대적으로 큰 것과 같이, 심리 음향 모델(psychoacoustic model)에 따라 자주 스케일링되고(scaled) 양자화된다. 스케일링되고 양자화된 스펙트럼 값들은 그것의 비트레이트-효율적 표현을 제공하기 위하여 인코딩된다.
예를 들면, 국제 표준 ISO/IEC 14496-3-2005(E), 파트 3, 서브파트 4에 양자화된 스펙트럼 계수의 이른바 허프만(huffman) 코딩의 사용법이 설명된다.
그러나, 스퍽트럼 값들의 코딩의 품질은 필요로 하는 비트레이트에 상당한 영향을 갖는다는 것이 알려져 왔다. 또한 때대로 이동식 소지자 장치에서 구현되고, 따라서 사고 전력 소비가 적은, 오디오 디코더의 복잡성은 스펙트럼 값들을 인코딩하기 위한 사용되는 코딩에 의존한다는 것이 알려져 왔다.
이러한 상황과 관련하여, 비트레이트 효율 및 자원(resource) 효율 사이의 향상된 균형(trade-off)을 제공하는, 오디오 콘텐츠의 인코딩 및 디코딩을 위한 개념이 필요성이 존재한다.
본 발명에 따른 일 실시 예는 스펙트럼 값들의 산술적으로(arithmetically) 인코딩된 표현을 기초로 하여 복수의 디코딩된 스펙트럼 값들을 제공하기 위한 오디오 디코더를 생성한다. 오디오 디코더는 또한 디코딩된 오디오 정보를 획득하기 위하여, 디코딩된 스펙트럼 값들을 사용하여 시간-도메인 오디오 표현의 제공을 위한 주파수-도메인-대-시간-도메인 변환기(frequency-domain-to-time-domain converter)를 포함한다. 산술 디코더는 수치 현재 콘텍스트 값(numeric current context value)에 의해 설명되는 콘텍스트 상태에 따라, 인코딩된 형태로, 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인을 표현하는 코드 값의, 디코딩된 형태로, 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인(bit-plane)을 표현하는 심볼 코드 상으로의 매핑을 설명하는 매핑 룰(mapping rule)을 선택하도록 구성된다. 산술 디코더는 복수의 이전에 디코딩된 스펙트럼 값에 따라 수치 현재 콘텍스트 값을 결정하도록 구성된다. 산술 디코더는 매핑 룰을 선택하기 위하여, 이들의 엔트리들이 수치 콘텍스트 값들 사이의 중요한 상태 값 및 수치 콘텍스트 값들의 구간의 경계들 모두를 정의하는, 해시 테이블(hash table)을 평가하도록 구성된다. 산술 디코더는 값 ari_hash_m[i]>>8이 c와 동일하거나 c보다 큰 해시 테이블 지수 값 i를 밝혀내기 위하여 해시 테이블을 평가하도록 구성되는데, 만일 밝혀낸 해시 테이블 지수 값 i가 0보다 크면, 값 ari_hash_m[i]>>8은 c보다 작다. 게다가, 산술 디코더는 ari_hash_m[i]>>8이 c와 동일할 때 ari_hash_m[i]&&0xFF와 동일하거나, 또는 그렇지 않으면 ari_lookup_m[i]와 동일한 확률 모델 지수(probability model index, pki)에 의해 결정되는 매핑 룰을 선택하도록 구성된다. 본 발명의 실시 예에서, 해시 테이블 ari_hash_m은 도 22(a), 22(b), 22(c) 및 22(d)에 주어진 것과 같이 정의된다. 게다가, 매핑 테이블 ari_lookup_m은 도 21에 주어진 것과 같이 정의된다.
도 22(a) 내지 22(d)의 해시 테이블을 갖는 위에서 언급된 알고리즘의 조합은 특히 적절한 방식으로, 도 22(a) 내지 22(d)에 따른 해시 테이블이 수치 콘텍스트 값의 중요한 값들 및 상태 구간들 모두를 정의하는 것과 같이, 매핑 룰의 특히 효율적인 선택을 허용한다. 게다가, 상기 알고리즘 및 도 22(a) 내지 22(d)에 따른 해시 테이블 사이의 상호작용은 특히 뛰어난 결과들을 가져오며 계산적 복잡도는 합리적으로 작게 유지되는 것으로 밝혀졌다. 게다가, 도 21에 의해 정의되는 매핑 테이블은 또한 위에서 설명된 해시 테이블과 함께 조합될 때 상기 알고리즘에 특히 잘 적용된다. 요약하면, 도 22(a) 내지 22(d)에 주어진 것과 같은 해시 테이블 및 위에서 설명된 것과 같은 알고리즘과 관련하여 도 22에 정의되는 것과 같은 매핑 테이블의 사용은 뛰어난 코딩/디코딩 효율 및 낮은 계산적 복잡도를 가져온다.
바람직한 실시 예에서, 산술 디코더는 도 5e에 정의된 것과 같은 알고리즘을 사용하여 해시 테이블을 평가하도록 구성되는데, c는 수치 현재 콘텍스트 값 또는 그것들의 스케일링된(scaled) 버전을 표현하는 변수이고, i는 현재 해시 테이블 지수 값을 설명하는 변수이며, in i_min은 해시 테이블의 첫 번째 엔트리의 해시 테이블 지수 값을 지정하고 c 및 (j>>8) 사이의 비교에 따라 선택적으로 업데이트하도록 개시된 변수이다. 위에서 언급된 알고리즘에서, 상태 "c〈(j>>8)"는 변수 c에 의해 설명되는 상태 값이 테이블 엔트리 ari_hash_m[i]에 의해 설명되는 상태 값보다 작다는 것을 정의한다. 또한, 위에서 설명된 알고리즘에서, "j&0xFF"는 테이블 엔트리 ari_hash_m[i]에 의해 설명되는 매핑 룰 지수 값을 설명한다. 또한 i_max는 해시 테이블의 마지막 엔트리의 해시 테이블 지수 값을 지정하고 c 및 (j>>8) 사이의 비교에 따라 선택적으로 업데이트하기 위하여 초기화된 변수이다. 상태 "c〈(j>>8)"는 변수 c에 의해 설명되는 상태 값이 테이블 엔트리 ari_hash_m[i]에 의해 설명되는 상태 값보다 크다는 것을 정의한다. 상기 알고리즘의 반환 값(return value)은 확률 모델의 지수 pki를 지정하며 매핑 룰 지수 값이다. "ari_hash_m"은 해시 테이블을 지정하고, "ari_hash_m[i]"는 해시 테이블 지수 값 i를 갖는 해시 테이블 "ari_hash_m"의 엔트리를 지정하며, "ari_lookup_m"은 매핑 테이블을 지정하며, "ari_lookup_m[i_max]"는 매핑 지수 값 i_max를 갖는 매핑 테이블 "ari_lookup_m"의 엔트리를 지정한다.
도 22(a) 내지 22(d)의 해시 테이블과 함께 도 5e에 도시된 것과 같이, 위에서 설명된 알고리즘의 조합은 특히 적절한 방식으로, 도 22(a) 내지 22(d)에 따른 해시 테이블이 수치 콘텍스트 값의 중요한 값들 및 상태 구간들 모두를 정의하는 것과 같이, 매핑 룰의 특히 효율적인 선택을 허용하는 것으로 알려졌다. 게다가, 도 5e에 따른 상기 알고리즘 및 도 22(a) 내지 22(d)에 따른 해시 테이블 사이의 상호적용은 검색을 위한 첫 번째 알고리즘과 결합하여 특히 뛰어난 결과들을 가져온다. 게다가, 도 21에 의해 정의되는 매핑 테이블은 또한 위에서 설명된 해시 테이블과 결합하여 주어질 때 상기 알고리즘에 특히 잘 적용된다. 요약하면, 도 22(a) 내지 22(d)에 주어진 것과 같은 해시 테이블 및 도 5e에 정의된 것과 같은 알고리즘과 관련하여 도 22에 정의되는 것과 같은 매핑 테이블의 사용은 뛰어난 코딩/디코딩 효율 및 낮은 계산적 복잡도를 가져온다. 바꾸어 말하면, 도 5e의 이분법(bi-section) 알고리즘은 위에서 정의된 것과 같은, 테이블들 ari_hash_m 및 ari_lookup_m으로 연산하기에 상당히 적합하다.
그러나, 검색 알고리즘의 작은 변화(쉽게 실현 가능한) 또는 심지어 중요한 변화들은 본 발명에 따른 개념의 변화 없이 만들어질 수 있다는 것을 이해하여야 한다.
바꾸어 말하면, 검색 방법은 언급된 방법들에 제한되지 않는다. 비록 이분법 방법(예를 들면, 도 5e에 따라)의 사용이 또한 성능을 향상시킨다 하더라도, 그럼에도 불구하고 복잡도의 일부 증가를 가져오는, 간단한 완결 검색(exhaustive search)을 실행하는 것이 가능할 수 있다.
바람직한 실시 예에서, 산술 디코더는 예를 들면 도 5e에 도시된 알고리즘의 반환 값으로서 제공되는, 매핑 룰 지수 값 pki를 기초로 하여 심볼 코드 상으로의 코드 값의 매핑을 설명하는 매핑 룰을 선택하도록 구성된다. 상기 매핑 룰 지수 값 pki의 사용은 매우 효율적인데, 그 이유는 위에서 설명된 테이블 및 위에서 설명된 알고리즘의 상호작용이 의미 있는 매핑 룰 지수 값을 제공하기 위하여 최적화되기 때문이다.
바람직한 실시 예에서, 산술 디코더는 심볼 코드 상으로의 코드 값의 매핑을 설명하는 매핑 룰을 선택하기 위하여 매핑 룰 지수 값은 테이블 지수 값으로서 사용하도록 구성된다. 테이블 지수 값으로의 매핑 룰 지수 값의 사용은 계산적으로 효율적인 매핑 룰의 메모리 효율 선택을 허용한다.
바람직한 실시 예에서, 산술 디코더는 선택된 매핑 룰으로서, 도 23(a), 23(b), 23(c)에 정의된 것과 같이, 테이블 ari_cf_m[64][17]의 서브-테이블 중의 하나를 선택하도록 구성된다. 이러한 개념은 도 23(a), 23(b), 23(c)에 정의된 것과 같이, 테이블 ari_cf_m[64][17]의 서브-테이블에 의해 정의된 매핑 룰들이 도 21 및 22(a) 내지 22(d)에 따른 테이블과 결합하여 도 5e에 따른 위에서 설명된 알고리즘의 실행에 의해 달성될 수 있는 결과들에 잘 적용된다는 사실을 기초로 한다.
바람직한 일 실시 예에서, 산술 디코더는 도 5c에 따른 알고리즘을 사용하여 수치 이전 콘텍스트 값을 기초로 하여 수치 콘텍스트 값을 획득하도록 구성되는데, 알고리즘은 입력 값으로서, 수치 이전 콘텍스트 값을 나타내는 변수 c의 값, 스펙트럼 값들의 벡터 내에 디코딩하기 위하여 스펙트럼 값들의 두 투플(tuple)의 지수를 나타내는 값 또는 변수 i를 받는다. 값 또는 변수 N은 주파수-도메인-대-시간-도메인-변환기의 재구성 윈도우의 윈도우 길이를 나타낸다. 알고리즘은 출력 값으로서, 수치 현재 콘텍스트 값을 나타내는 업데이트된 값 또는 변수 c를 제공한다. 알고리즘에서, 연산 "c>>4"는 값 또는 변수 c의 4비트 오른쪽으로의 시프트를 설명한다. 게다가, q[0][i+1]은 이전의 오디오 프레임과 관련되고 현재 디코딩되는 두 전체 스펙트럼 값들의 현재 주파수 지수보다, 1이 큰, 더 높은 주파수 지수 i+1과 관련된 콘텍스트 서브 영역 값을 지정한다. 유사하게 q[0][i-1]은 현재 오디오 프레임과 관련되고 현재 디코딩되는 스펙트럼 값들의 두 투플의 현재 주파수 지수보다, 1이 작은, 더 작은 주파수 지수 i-1과 관련된 콘텍스트 서브 영역 값을 지정한다. q[0][i-2]는 현재 오디오 프레임과 관련되고 현재 디코딩되는 스펙트럼 값들의 두 투플의 현재 주파수 지수보다, 2가 작은, 더 작은 주파수 지수 i-2와 관련된 콘텍스트 서브 영역 값을 지정한다. q[0][i-3]은 현재 오디오 프레임과 관련되고 현재 디코딩되는 스펙트럼 값들의 두 투플의 현재 주파수 지수보다, 3이 작은, 더 작은 주파수 지수 i-3과 관련된 콘텍스트 서브 영역 값을 지정한다. 도 21 및 도 22(a) 내지 22(d)의 테이블들과 결합하여 주어질 때 도 5e에 따른 알고리즘은 도 5c의 알고리즘을 사용하여 획득되는 수치 현재 콘텍스트 값 c를 기초로 하여 매핑 룰 지수 값을 제공하기 위하여 잘 적용된다. 도 5c의 알고리즘을 사용하여 수치 현재 콘텍스트 값의 획득은 계산적으로 특히 효율적인데, 그 이유는 도 5c에 따른 알고리즘이 단지 매우 간단한 계산만을 필요로 하기 때문이다.
바람직한 일 실시 예에서, 산술 디코더는 현재 오디오 프레임과 관련되고 도 5l에 따른 알고리즘을 사용하여 현재 디코딩되는 스펙트럼 값들의 두 투플의 현재 주파수 지수와 관련하여 콘텍스트 서브 영역 값 q[1][i]를 업데이트하도록 구성되는데, a는 현재 디코딩되는 스펙트럼 값들의 두 투플의 제 1 스펙트럼 값을 지정하고, b는 현재 디코딩되는 스펙트럼 값들의 두 투플의 제 2 스펙트럼 값을 지정한다. 바람직한 알고리즘은 콘텍스트 서브 영역 값들의 간단한 업데이트를 위하여 매우 적합하다는 것을 알 수 있다.
바람직한 일 실시 예에서, 산술 디코더는 도 5g에 따른 산술 디코딩 알고리즘을 사용하여 디코딩된 스펙트럼 값들의 두 투플을 나타내는 디코딩된 값 m을 제공하도록 구성된다. 상기 산술 디코딩 알고리즘은 위에서 설명된 알고리즘들과 협력을 위하여 매우 적합한 것으로 알려졌다.
본 발명에 따른 또 다른 실시 예는 인코딩된 오디오 정보를 기초로 하여 디코딩된 오디오 정보를 제공하기 위한 디코더를 생성한다. 오디오 디코더는 스펙트럼 값들의 산술적으로 인코딩된 표현을 기초로 하여 복수의 디코딩된 스펙트럼 값들을 제공하기 위한 산술 디코더를 포함한다. 오디오 디코더는 또한 디코딩된 오디오 정보를 획득하기 위하여, 디코딩된 스펙트럼 값들을 사용하여 시간-도메인 오디오 표현을 제공하기 위한 주파수-도메인-대-시간-도메인 변환기를 포함한다. 산술 디코더는 인코딩된 형태로, 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트 플레인을 표현하는 코드 값의, 스펙트럼 값, 또는 수치 현재 콘텍스트 값에 의해 설명되는 콘텍스트 상태에 따라, 디코딩된 형태로, 스펙트럼 값의 가장 중요한 비트-플레인을 표현하는 심볼 상으로의 매핑을 설명하는 매핑 룰을 선택하도록 구성된다. 산술 디코더는 복수의 이전에 디코딩된 스펙트럼 값들에 따라 수치 현재 콘텍스트 값을 결정하도록 구성된다. 산술 디코더는 매핑 룰을 선택하기 위하여, 이들의 엔트리들이 수치 콘텍스트 값들 중에서 중요한 상태 값 및 수치 콘텍스트 값들의 구간의 경계들 모두를 정의하는, 해시 테이블을 평가하도록 구성된다. 해시 테이블 ari_hash_m은 도 22(a), 22(b), 22(c) 및 22(d)에 의해 주어진 것과 같이 정의된다. 산술 디코더는 수치 현재 콘텍스트 값이 해시 테이블의 엔트리에 의해 설명되는 테이블 콘텍스트 값과 동일한지를 결정하기 위하여 또는 수치 콘텍스트 값이 위치하는 해시 테이블의 엔트리에 의해 설명되는 구간을 결정하기 위하여, 그리고 평가의 결과에 따라 선택된 매핑 룰을 설명하는 매핑 룰 지수 값을 끌어내기 위하여 해시 테이블을 평가하도록 구성된다. 도 22(a) 내지 22(d)에 주어진 것과 같은 해시 테이블 ari_hash_m은 해시 테이블의 엔트리들에 의해 설명되는 테이블 콘텍스트 값들 및 해시 테이블의 엔트리들에 의해 설명되는 구간들을 분석하기에 적합하다. 도 22(a) 내지 22(d)에 따른 해시 테이블에 의한 테이블 콘텍스트 값들 및 구간들 모두의 정의는 테이블 콘텍스트 값들을 체크하고 비-테이블 콘텍스트 값들이 놓여 있는 해시 테이블의 엔트리들에 의해 정의되는 어떤 구간을 결정하기 위하여 상기 해시 테이블의 엔트리들을 사용하는 해시 테이블의 평가를 위하여 간단한 개념과 결합하여 얻어질 때 매핑 룰의 선택을 위한 효율적인 메커니즘을 제공한다는 것이 알려져 왔다.
바람직한 일 실시 예에서, 산술 디코더는 수치 현재 콘텍스트 값이 획득된 해시 테이블 지수 값 및 인접한 해시 테이블 엔트리에 의해 지정되는 획득된 해시 테이블 엔트리에 의해 정의되는 구간 내에 위치되는 것과 같이, 테이블 엔트리의 해시 테이블 지수 값을 반복하여 획득하기 위하여 수치 현재 콘텍스트 값, 또는 수치 현재 콘텍스트 값의 스케일링된 버전을 수치상으로 정돈된 일련의 엔트리들 또는 해시 테이블의 서브-엔트리들과 비교하도록 구성된다. 이러한 경우에 있어서, 산술 디코더는 수치 현재 콘텍스트 값 또는 수치 현재 콘텍스트 값의 스케일링된 버전, 및 현재 엔트리 또는 서브-엔트리 사이의 비교의 결과에 따라 해시 테이블의 일련의 엔트리들의 다음 엔트리를 결정하도록 구성된다. 이러한 메커니즘은 도 22(a) 내지 22(d)에 따른 해시 테이블의 특히 효율적인 평가를 허용하는 것으로 인식되어 왔다.
바람직한 일 실시 예에서, 산술 디코더는 만일 수치 현재 콘텍스트 값 또는 그것의 스케일링된 버전이 현재 해시 테이블 지수 값에 의해 지정되는 해시 테이블의 제 1 서브-엔트리와 동일하면 현재 해시 테이블 지수 값에 의해 지정되는 해시 테이블의 서브-엔트리에 의해 정의되는 매핑 룰을 선택하도록 구성된다. 따라서, 도 22(a) 내지 22(d)에 따라 정의되는 것과 같이, 해시 테이블의 엔트리들은 이중 기능을 한다. 해시 테이블의 첫 번째 서브-엔트리(즉, 엔트리의 첫 번째 부)는 수치 (현재) 콘텍스트 값의 특히 중요한 상태들을 확인하기 위하여 사용되고, 반면에 해시 테이블의 두 번째 서브-엔트리(즉, 그러한 엔트리의 두 번째 부분)는 예를 들면, 매핑 룰 지수 값을 정의함으로써, 매핑을 정의한다. 따라서, 해시 테이블의 엔트리들은 매우 효율적인 방식으로 사용된다. 또한, 메커니즘은 해시 테이블의 엔트리들에 의해, 더 정확히는, 해시 테이블의 서브-엔트리들에 의해 설명되는 수치 현재 콘텍스트 값들의 특히 중요한 상태들을 위한 매핑 룰 지수 값들을 제공하는데 특히 효율적이다. 따라서, 도 22(a) 내지 22(d)에 의해 정의되는 것과 같이, 해시 테이블의 완전한 엔트리는 수치 현재 콘텍스트 값의 덜 중요한 상태의 영역들(또는 구간들)의 구간 경계들에 대하여 수치 (현재) 콘텍스트 값의 특히 중요한 상태의 매핑 룰을 정의한다.
바람직한 일 실시 예에서, 산술 디코더는 만일 수치 현재 콘텍스트 값이 해시 테이블의 서브-엔트리와 동일한 것으로 밝혀지지 않으면 매핑 테이블 ari_lookup_m의 엔트리 또는 서브-엔트리에 의해 정의되는 매핑 룰을 선택하도록 구성된다. 이러한 경우에 있어서, 산술 디코더는 반복하여 획득되는 해시 테이블 지수 값에 따라 매핑 테이블의 엔트리 또는 서브-엔트리를 선택하도록 구성된다. 따라서, 특히 효율적인 두 테이블 메커니즘이 생성되는데, 이는 수치 현재 콘텍스트 값의 특히 중요한 상태들 및 수치 현재 콘텍스트 값의 덜 중요한 상태(수치 현재 콘텍스트 값의 덜 중요한 상태는 해시 테이블의 엔트리 또는 서브-엔트리에 의해 분명히, 즉, 개별적으로 설명되지 않는다)들 모두를 위한 매핑 룰 지수 값을 효율적으로 제공하도록 허용한다.
바람직한 일 실시 예에서, 산술 디코더는 만일 수치 현재 콘텍스트 값이 현재 해시 테이블 지수 값에 의해 지정되는 해시 테이블의 엔트리에 의해 정의되는 값과 동일하다고 밝혀지면 획득된 해시 테이블 지수 값에 의해 지정되는 해시 테이블의 엔트리에 의해 정의되는 매핑 룰 지수 값을 선택적으로 제공하도록 구성된다. 따라서, 해시 테이블의 엔트리들의 이중 사용을 허용하는 효율적인 메커니즘이 존재한다.
본 발명의 또 다른 실시 예는 인코딩된 오디오 정보를 기초로 하여 디코딩된 오디오 정보를 제공하기 위한 방법들을 생성한다. 상기 방법들은 이전에 설명된 오디오 디코더의 기능을 만족시킨다. 따라서, 방법들은 결론이 간결성을 위하여 여기에 생략된 것과 같은, 오디오 디코더들과 같은 동일한 발상 및 결과를 기초로 한다. 방법들은 오디오 디코더들의 모든 특징 및 기능들에 의해 추가될 수 있다는 것을 이해하여야 한다.
본 발명에 따른 또 다른 실시 예는 입력 오디오 정보를 기초로 하여 인코딩된 오디오 정보를 제공하기 위한 오디오 인코더를 생성한다. 오디오 인코더는 주파수-도메인 오디오 표현이 스펙트럼 값들의 한 세트를 포함하는 것과 같이, 입력 오디오 정보의 시간-도메인 표현을 기초로 하여 주파수-도메인 오디오 표현을 제공하기 위한 에너지-압축 시간-도메인-대-주파수-도메인 변환기를 포함한다. 오디오 인코더는 또한 가변 길이 코드워드를 사용하여 스펙트럼 값 또는 그것의 미리 처리된 버전을 인코딩하도록 구성되는 산술 인코더를 포함한다. 산술 인코더는 수치 현재 콘텍스트 값에 의해 설명되는 콘텍스트 상태에 따라, 스펙트럼 값 또는 스펙트럼 값의 가장 중요한 비트-플레인의 코드 값 상으로의 매핑을 설명하는 매핑 룰을 선택하도록 구성된다. 산술 인코더는 복수의 이전에 인코딩된 스펙트럼 값들에 따라 수치 현재 콘텍스트 값을 결정하도록 구성된다. 산술 인코더는 또한 매핑 룰을 선택하기 위하여, 이것의 엔트리들이 수치 콘텍스트 값들 중에서 중요한 상태 값들 및 수치 콘텍스트 값들의 구간의 경계들 모두를 정의하는 해시 테이블을 평가하도록 구성된다. 해시 테이블 ari_hash_m은 도 22(a) 내지 22(d)에 주어진 것과 같이 정의된다. 산술 인코더는 수치 현재 콘텍스트 값이 해시 테이블의 엔트리에 의해 설명되는 테이블 콘텍스트 값과 동일한지를 결정하기 위하여 또는 그 안에 수치 콘텍스트 값이 위치하는 해시 테이블의 엔트리들에 의해 설명되는 구간을 결정하기 위하여, 그리고 상기 평가의 결과에 따라 선택된 매핑 룰을 설명하는 매핑 룰 지수 값을 끌어내기 위하여 해시 테이블을 평가하도록 구성된다. 오디오 인코더의 기능성은 동시에 위에서 설명된 오디오 인코더의 기능성인 것을 이해하여야 한다. 따라서, 간결성을 위하여 오디오 디코더의 중요한 발상들의 위의 설명이 참조된다.
게다가, 오디오 인코더는 오디오 인코더의 어떠한 특징 및 기능들이 추가될 수 있다는 것을 이해하여야 한다. 특히, 매핑 룰의 선택과 관련된 어떠한 특징들이 오디오 인코더에서 구현될 수 있으며, 인코딩된 스펙트럼 값들은 디코딩된 스펙트럼 값들 등을 대신한다.
본 발명에 따른 또 다른 실시 예는 입력 오디오 정보를 기초로 하여 인코딩된 오디오 정보를 제공하기 위한 방법을 생성한다. 방법은 동일한 발상을 기초로 하여 이전에 설명된 오디오 인코더의 기능을 실행한다.
본 발명에 따른 또 다른 실시 예는 이전에 설명된 방법들 중 적어도 하나를 실행하기 위한 컴퓨터 프로그램을 생성한다.
본 발명에 따른 실시 예들은 다음의 첨부된 도면들을 참조하여 설명될 것이다.
도 1은 본 발명의 일 실시 예에 따른, 오디오 인코더의 개략적 블록 다이어그램을 도시한다.
도 2는 본 발명의 일 실시 예에 따른, 오디오 디코더의 개략적 블록 다이어그램을 도시한다.
도 3은 스펙트럼 값들을 디코딩하기 위한 알고리즘 "values_decode()"의 슈도-프로그램-코드 표현을 도시한다.
도 4는 상태 연산을 위한 콘텍스트의 개략적 표현을 도시한다.
도 5a는 콘텍스트를 매핑하기 위한 알고리즘 "arith_map__context()"의 슈도-프로그램-코드 표현을 도시한다.
도 5b는 콘텍스트를 매핑하기 위한 또 다른 알고리즘 "arith_map__context()"의 슈도-프로그램-코드 표현을 도시한다.
도 5c는 콘텍스트 상태 값을 획득하기 위한 알고리즘 "arith_get__context()"의 슈도-프로그램-코드 표현을 도시한다.
도 5d는 콘텍스트 상태 값을 획득하기 위한 알고리즘 "arith_get__context()"의 슈도-프로그램-코드 표현을 도시한다.
도 5e는 상태 값(상태 변수 상의)으로부터 누적-주파수-테이블 인덱스 값 "pki"를 끌어내기 위한 알고리즘 "arith_get_pk()"의 슈도-프로그램-코드 표현을 도시한다.
도 5f는 상태 값(상태 변수 상의)으로부터 누적-주파수-테이블 인덱스 값 "pki"를 끌어내기 위한 또 다른 알고리즘 "arith_get_pk()"의 슈도-프로그램-코드 표현을 도시한다.
도 5g는 가변 길이 코드워드로부터 심볼을 산술적으로 디코딩하기 위한 알고리즘 "arith_decode()"의 슈도-프로그램-코드 표현을 도시한다.
도 5h는 가변 길이 코드워드로부터 심볼을 산술적으로 디코딩하기 위한 또 다른 알고리즘 "arith_decode()"의 슈도-프로그램-코드 표현을 도시한다.
도 5i는 가변 길이 코드워드로부터 심볼을 산술적으로 디코딩하기 위한 또 다른 알고리즘 "arith_decode()"의 슈도-프로그램-코드 표현을 도시한다.
도 5j는 통상 값 m으로부터 스펙트럼 값들의 절대 값 a, b를 위한 알고리즘의 슈도-프로그램-코드 표현을 도시한다.
도 5k는 디코딩된 스펙트럼 값들의 어레이 내로 디코딩된 값들 a, b를 입력하기 위한 알고리즘의 슈도-프로그램-코드 표현을 도시한다.
도 5l은 디코딩된 스펙트럼 값들의 절대 값 a, b를 기초로 하여 콘텍스트 서브영역 값들을 획득하기 위한 알고리즘 "arith-update_context()"의 슈도-프로그램-코드 표현을 도시한다.
도 5m은 디코딩된 스펙트럼 값들의 어레이 및 콘텍스트 서브영역 값들의 어레이의 엔트리들을 채우기 위한 알고리즘 "arith_finish()"의 슈도-프로그램-코드 표현을 도시한다.
도 5n은 통상 값 m으로부터 디코딩된 스펙트럼 값들의 절대 값들 a, b를 글어내기 위한 또 다른 알고리즘의 슈도-프로그램-코드 표현을 도시한다.
도 5o는 디코딩된 스펙트럼 값들의 어레이 및 콘텍스트 서브영역 값들의 어레이를 업데이트하기 위한 알고리즘 "arith-update_context()"의 슈도-프로그램-코드 표현을 도시한다.
도 5p는 디코딩된 스펙트럼 값들의 어레이의 엔트리들 및 콘텍스트 서브영역 값들의 어레이의 엔트리들을 채우기 위한 알고리즘 "arith_save_context()"의 슈도-프로그램-코드 표현을 도시한다.
도 5q는 정의들의 범례를 도시한다.
도 5r은 정의들의 또 다른 범례를 도시한다.
도 6a는 통합 음성 및 오디오 코더의 신택스(syntax) 표현을 도시한다.
도 6b는 단일 채널 엘리먼트의 신택스 표현을 도시한다.
도 6c는 채널 쌍 엘리먼트의 신택스 표현을 도시한다.
도 6d는 "ICS" 제어 정보의 신택스 표현을 도시한다.
도 6e는 주파수-도메인 채널 스트림의 신택스 표현을 도시한다.
도 6f는 산술적으로 코딩된 스펙트럼 데이터의 신택스 표현을 도시한다.
도 6g는 한 세트의 스펙트럼 값들을 디코딩하기 위한 신택스 표현을 도시한다.
도 6h는 한 세트의 스펙트럼 값들을 디코딩하기 위한 또 다른 신택스 표현을 도시한다.
도 6i는 데이터 엘리먼트들 및 변수들의 범례를 도시한다.
도 6j는 데이터 엘리먼트들 및 변수들의 또 다른 범례를 도시한다.
도 6k는 통합 음성 및 오디오 코더 단일 채널 엘리먼트 "UsacSingleChannelElement()"의 신택스 표현을 도시한다.
도 6l은 통합 음성 및 오디오 코더 채널 쌍 엘리먼트 "UsacChannePairElement()"의 신택스 표현을 도시한다.
도 6m은 "ICS" 제어 정보의 신택스 표현을 도시한다.
도 6n은 통합 음성 및 오디오 코더 코어 코더 데이터 "UsacCoreCoderData()"의 신택스 표현을 도시한다.
도 6o는 주파수 도메인 채널 스트림 "fd_channel_stream()"의 신택스 표현을 도시한다.
도 6p는 산술적으로 코딩된 스펙트럼 데이터 "ac_spectral_data()"의 신택스 표현을 도시한다.
도 7은 본 발명의 첫 번째 양상에 따른, 오디오 인코더의 개략적 블록 다이어그램을 도시한다.
도 8은 본 발명의 첫 번째 양상에 따른, 오디오 디코더의 개략적 블록 다이어그램을 도시한다.
도 9는 본 발명의 첫 번째 양상에 따른, 수치 현재 콘텍스트 값을 매핑 룰 인덱스 값 상으로 매핑하는 도표를 도시한다.
도 10은 본 발명의 두 번째 양상에 따른, 오디오 디코더의 개략적 블록 다이어그램을 도시한다.
도 11은 본 발명의 두 번째 양상에 따른, 오디오 인코더의 개략적 블록 다이어그램을 도시한다.
도 12는 본 발명의 세 번째 양상에 따른, 오디오 인코더의 개략적 블록 다이어그램을 도시한다.
도 13은 본 발명의 세 번째 양상에 따른, 오디오 디코더의 개략적 블록 다이어그램을 도시한다.
도 14a는 통합 음성 및 오디오 코더 규격 초안의 규격 초안 4에 따라 사용되는 것과 같이, 상태 연산을 위한 콘텍스트의 개략적 표현을 도시한다.
도 14b는 통합 음성 및 오디오 코더 규격 초안의 규격 초안 4에 따라 산술적 코딩 규약에서 사용되는 것과 같은 테이블의 개관을 도시한다.
도 15a는 본 발명에 따른 일 실시 예에서 사용되는 것과 같은, 상태 연산을 위한 콘텍스트의 개략적 표현을 도시한다.
도 15b는 비교 실시 예에 따라 산술적 코딩 규약에서 사용되는 것과 같은 테이블의 개관을 도시한다.
도 16a는 비교 실시 예에 따른, 통합 음성 및 오디오 코더 규격 초안의 규격 초안 5에 따른, 그리고 고급 오디오 코딩 허프만 코딩에 따른, 무잡음 코딩 규약을 위한 판독 전용 메모리 요구의 도표를 도시한다.
도 17은 비교 실시 예에 따른 코딩 규약과 함께 통합 음성 및 오디오 코더 규격 초안의 규격 초안 3 또는 규격 초안 5에 따른 무잡음 코딩의 비교를 위한 배치의 개략적 표현을 도시한다.
도 18은 통합 음성 및 오디오 코더 규격 초안의 규격 초안 3 및 비교 실시 예에 따른 산술적 통합 음성 및 오디오 코더 산술적 코더에 의해 생산되는 평균 비트레이트의 테이블 표현을 도시한다.
도 19는 통합 음성 및 오디오 코더 규격 초안의 규격 초안 3에 따른 산술적 디코더 및 비교 실시 예에 따른 산술적 디코더를 위한 최소 및 최대 비트 저장소 레벨의 테이블 표현을 도시한다.
도 20은 산술적 코더의 서로 다른 버전을 위한 통합 음성 및 오디오 코더 규격 초안의 규격 초안 3에 따른 32-킬로비트 비트스트림을 디코딩하기 위한 평균 복잡성 수의 테이블 표현을 도시한다.
도 21은 본 발명의 일 실시 예에 따른 테이블 "ari_lookup_m[742]"의 콘텐츠의 테이블 표현을 도시한다.
도 22(a) 내지 22(d)는 본 발명의 일 실시 예에 따른 테이블 "ari_hash_m[742]"의 콘텐츠의 테이블 표현을 도시한다.
도 23(a) 내지 23(c)은 본 발명의 일 실시 예에 따른 테이블 "ari_cf_m[64][17]"의 콘텐츠의 테이블 표현을 도시한다.
도 24는 테이블 "ari_cf_r[]"의 콘텐츠의 테이블 표현을 도시한다.
도 25는 상태 연산을 위한 콘텐츠의 개략적 표현을 도시한다.
도 26은 비교 실시 예 및 본 발명에 따른 실시 예를 위한 규격 초안 6 참조 품질 비트스트림의 트랜스코딩을 위한 평균 코딩 실행의 테이블 표현을 도시한다.
도 27은 비교 실시 예("M17588") 및 본 발명에 따른 일 실시 예("재교육된 테이블들")를 위하여 연산 포인트 당 규격 초안 6 참조 품질 비트스트림의 트랜스코딩을 위한 코딩 실행의 테이블 표현을 도시한다.
도 28은 규격 초안 6, 비교 실시 예("M17588") 및 본 발명에 따른 실시 예("새로운 제안")를 위한 무잡음 코더 메모리 요구의 비교의 테이블 표현을 도시한다.
도 29는 본 발명에 따른 실시 예에서 사용되는 것과 같은 테이블들의 특징의 테이블 표현을 도시한다.
도 30은 서로 다른 산술적 코더 버전을 위한 32 kbit/s 규격 초안6 참조 품질 비트스트림을 디코딩하기 위한 평균 복잡도 수의 테이블 표현을 도시한다.
도 31은 서로 다른 산술적 코더 버전을 위한 12 kbit/s 규격 초안 6 참조 품질 비트스트림을 디코딩하기 위한 평균 복잡도 수의 테이블 표현을 도시한다.
도 32는 본 발명의 일 실시 예 및 규격 초안 6에서의 산술적 코더에 의해 생산되는 평균 비트레이트의 테이블 표현을 도시한다.
도 33은 제안된 규약을 사용하여 프레임 기본 상의 최소, 최대 및 평균 비트레이트의 테이블 표현을 도시한다.
도 34는 규격 초안 6 산술적 코더를 사용하는 통합 음성 및 오디오 코딩 코더 및 본 발명의 일 실시 예에 따른 코더에 의해 생산되는 평균 비트레이트의 테이블 표현을 도시한다.
도 35는 본 발명에 따른 일 실 예를 위한 최상 및 최악의 경우의 테이블 표현을 도시한다.
도 36은 본 발명의 실시 예를 위한 비트 저장기 제한의 테이블 표현을 도시한다.
도 37은 본 발명의 일 실시 예에 따른 산술적으로 코딩된 데이터 "arith_data"의 신택스 표현을 도시한다.
도 38은 헬프 엘리먼트들의 정의들의 범례를 도시한다.
도 39는 또 다른 정의들의 범례를 도시한다.
도 40a는 본 발명의 일 실시 예에 따른, 함수 또는 알고리즘 "arith_map_context"의 슈도-프로그램-코드 표현을 도시한다.
도 40b는 본 발명의 일 실시 예에 따른, 함수 또는 알고리즘 "arith_get_context"의 슈도-프로그램-코드 표현을 도시한다.
도 40c는 본 발명의 일 실시 예에 따른, 함수 또는 알고리즘 "arith_map_pk"의 슈도-프로그램-코드 표현을 도시한다.
도 40d는 본 발명의 일 실시 예에 따른, 함수 또는 알고리즘 "arith_decode"의 첫 번째 부의 슈도-프로그램-코드 표현을 도시한다.
도 40e는 본 발명의 일 실시 예에 따른, 함수 또는 알고리즘 "arith_decode"의 두 번째 부의 슈도-프로그램-코드 표현을 도시한다.
도 40f는 본 발명의 일 실시 예에 따라, 하나 또는 그 이상의 덜 중요한 비트를 디코딩하기 위한 함수 또는 알고리즘의 슈도-프로그램-코드 표현을 도시한다.
도 40g는 본 발명의 일 실시 예에 따른, 함수 또는 알고리즘 "arith_update_context"의 슈도-프로그램-코드 표현을 도시한다.
도 40h는 본 발명의 일 실시 예에 따른, 함수 또는 알고리즘 "arith_save_context"의 슈도-프로그램-코드 표현을 도시한다.
도 41(a) 및 41(b)는 본 발명의 일 실시 예에 따른, 테이블 "ari_lookup_m[742]"의 콘텐츠의 테이블 표현을 도시한다.
도 42(a), (b), (c), (d)는 본 발명의 일 실시 예에 따른, 테이블 "ari_hash_m[742]"의 콘텐츠의 테이블 표현을 도시한다.
도 43(a), (b), (c), (d), (e), (f)은 본 발명의 일 실시 예에 따른, 테이블 "ari_cf_m[96][17]"의 콘텐츠의 테이블 표현을 도시한다.
도 44는 본 발명의 일 실시 예에 따른, 테이블 "ari_cf_r[4]"의 테이블 표현을 도시한다.
1. 도 7에 따른 오디오 인코더
도 7은 본 발명의 일 실시 예에 따른, 오디오 인코더의 개략적 블록 다이어그램을 도시한다. 오디오 인코더(700)는 입력 오디오 정보(710)를 수신하도록 구성되고 그것을 기초로 하여, 인코딩된 오디오 정보(712)를 제공하도록 구성된다.
오디오 인코더는 주파수-도메인 오디오 표현(722)이 한 세트의 스펙트럼 값을 포함하는 것과 같이, 입력 오디오 정보(710)의 시간-도메인 표현을 기초로 하여 주파수-도메인 오디오 표현(722)을 제공하도록 구성되는 에너지-압축 시간-도메인-대-주파수-도메인 변환기(720)를 포함한다.
오디오 인코더(700)는 또한 인코딩된 오디오 정보(712, 예를 들면, 복수의 가변-길이 코드워드를 포함할 수 있는)를 획득하기 위하여 가변-길이 코드워드를 사용하여 스펙트럼 값(주파수-도메인 오디오 표현(722)을 형성하는 스펙트럼 값들 세트 밖의), 또는 그것의 미리 처리된 버전을 인코딩하도록 구성되는 산술 인코더(730)를 포함한다.
산술 인코더(730)는 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인의 값을 콘텍스트 상태에 따라 코드 값 상으로(즉, 가변 길이 코드워드 상으로) 매핑하도록 구성된다.
산술 인코더는 (현재) 콘텍스트 상태에 따라 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인의 값의 코드 값 상으로의 매핑을 설명하는 매핑 룰을 선택하도록 구성된다. 산술 인코더는 복수의 이전에 인코딩된(바람직하게는, 그러나 반드시는 아닌, 인접한) 스펙트럼 값들에 따라, 현재 콘텍스트 상태, 또는 현재 콘텍스트 상태를 설명하는 수치 현재 콘텍스트 값을 결정하도록 구성된다.
이러한 목적을 위하여, 산술 인코더는 이것의 엔트리들이 수치 콘텍스트 값들 중에서 중요한 상태 값들 및 수치 콘텍스트 값들의 구간들의 경계들 모두를 정의하는, 해시 테이블을 평가하도록 구성된다.
해시 테이블(또한 다음에서 "ari_hash_m과 같이 지정되는)은 바람직하게는 도 22(a), 22(b), 22(c) 및 22(d)의 테이블 표현에서 주어진 것과 같이 도시된다.
게다가, 산술 인코더는 바람직하게는 해시 테이블("ari_hash_m)을 평가하기 위하여, 수치 현재 콘텍스트 값이 해시 테이블("ari_hash_m)의 엔트리들에 의해 설명되는 테이블 콘텍스트 값과 동일한지를 결정하거나 및/또는 수치 현재 콘텍스트 값이 위치하는 해시 테이블("ari_hash_m)의 엔트리들에 의해 설명되는 구간을 결정하기 위하여, 그리고 평가의 결과에 따라 선택된 매핑 룰을 설명하는 매핑 룰 지수 값(예를 들면, 여기서는 "pki"로서 지정되는)을 끌어내기 위하여 구성된다.
일부 경우에 있어서, 매핑 룰 지수 값은 개별적으로 중요한 상태 값인 수치 (현재) 콘텍스트 값과 관련될 수 있다. 또한 통상의 매핑 룰 지수 값은 구간 경계들(구간 경계들은 바람직하게는 해시 테이블의 엔트리들에 의해 정의된다)에 의해 제한되는 구간 내에 위치하는 서로 다른 수치 현재 콘텍스트 값과 관련될 수 있다.
도시된 것과 같이, 스펙트럼 값(주파수-도메인 오디오 표현(722)의), 또는 스펙트럼 값의 가장 중요한 비트-플레인의 코드 값(인코딩된 오디오 정보(712)의) 상으로의 매핑은 매핑 룰(742)를 사용하여 스펙트럼 값 인코딩(740)에 의해 실행될 수 있다. 상태 트래커(750, state tracker)는 콘텍스트 상태를 트래킹하도록 구성될 수 있다. 상태 트래커(750)는 현재 콘텍스트 상태를 설명하는 정보(754)를 제공한다. 현재 콘텍스트 상태를 설명하는 정보(754)는 바람직하게는 수치 현재 콘텍스트 값의 형태를 취한다. 매핑 룰 선택기(760, mapping rule selector)는 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인의 코드 값 상으로의 매핑을 설명하는, 매핑 룰, 예를 들면, 누적-주파수-테이블을 선택하도록 구성된다. 따라서, 매핑 룰 선택기(760)는 스펙트럼 값 인코딩(740)에 대한 매핑 룰 정보(742)를 제공한다. 매핑 룰 정보(742)는 매핑 룰 지수 값 또는 매핑 룰 지수 값에 따라 선택되는 누적-주파수-테이블의 형태를 취한다. 매핑 룰 선택기(760)는 그것의 엔트리들이 수치 콘텍스트 값들 중에서 중요한 상태 및 수치 콘텍스트 값들의 경계와 구간들 모두를 정의하는 해시 테이블(752)을 포함한다(또는 적어도 평가한다). 바람직하게는, 해시 테이블(762, ari_hash_m[742])의 엔트리들은 도 22(a) 내지 22(d)의 테이블 표현에 주어진 것과 같이 정의된다. 해시 테이블(762)은 매핑 룰을 선택하기 위하여, 즉, 매핑 룰 정보(742)를 제공하기 위하여 평가된다.
바람직하게는, 그러나 반드시는 아닌, 매핑 룰 지수 값은 중요한 상태 값인 수치 콘텍스트 값과 개별적으로 관련될 수 있으며, 통상의 매핑 룰 지수 값은 구간 경계들에 의해 제한되는 구간 내에 위치하는 서로 다른 수치 콘텍스트 값들과 관련될 수 있다.
위를 요약하면, 오디오 인코더(700)는 시간-도메인-대-주파수-도메인 변환기에 의해 제공되는 주파수-도메인 오디오 표현의 산술 인코딩을 실행한다. 산술 인코딩은 이전에 인코딩된 스펙트럼 값들에 따라 매핑 룰(예를 들면, 누적 주파수 테이블)이 선택되는 것과 같이, 콘텍스트 의존형이다. 따라서, 산술 인코딩에 의해 평가되는 확률 분포를 조절하기 위하여 서로에 대하여 및/또는 현재 인코딩된 스펙트럼 값(즉, 현재 인코딩된 스펙트럼 값의 미리 결정된 환경 내의 스펙트럼 값들)에 대한 시간 및/또는 주파수 내의(또는 적어도 미리 결정된 환경 내의) 인접한 스펙트럼 값들이 산술 인코딩에서 고려된다. 적절한 매핑 룰을 선택할 때, 상태 트래커(750)에 의해 제공되는 수치 콘텍스트 현재 값들(754)이 평가된다. 일반적으로 서로 다른 매핑 룰들의 수가 수치 현재 콘텍스트 값들(754)의 가능한 값들의 수보다 작기 때문에, 매핑 룰 선택기(760)는 동일한 매핑 룰들(예를 들면, 매핑 룰 지수 값에 의해 설명되는)을 상대적으로 큰 수의 서로 다른 수치 콘텍스트 값들에 할당한다. 그럼에도 불구하고, 뛰어난 코딩 효율을 획득하기 위하여 특정 매핑 룰이 관련되어야만 하는 특정 스펙트럼 구성들(특정 수치 콘텍스트 값들에 의해 표현되는)이 존재한다.
수치 현재 콘텍스트 값에 따른 매핑 룰의 선택은 만일 단일 해시 테이블의 엔트리들이 중요한 상태 값들 및 수치 (현재) 콘텍스트 값들의 구간들의 경계들 모두를 정의하면 특히 높은 계산 효율성과 함께 실행될 수 있다는 것이 알려졌다. 게다가, 도 22(a), 22(b), 22(c), 22(d)에서 정의되는 것과 같은 해시 테이블의 사용은 특히 높은 코딩 효율을 가져온다는 것이 알려졌다. 이러한 메커니즘은 상기 해시 테이블과 결합하여, 매핑 룰 선택의 요구사항에 잘 적용되는데, 그 이유는 단일의 중요한 상태 값(또는 중요한 수치 콘텍스트 값)이 복수의 중요하지 않은 상태 값들의 왼쪽 편의 구간(통상의 매핑 룰이 관련되는) 및 복수의 중요하지 않은 사태 값들의 오른쪽 편의 구간(통상의 매핑 룰이 관련되는) 사이에 위치되는 많은 경우들이 존재하기 때문이다. 또한, 이것의 엔트리들이 도 22(a), 22(b), 22(c), 22(d)에서 정의되고 중요한 상태 값들 및 수치 (현재) 콘텍스트 값들의 구간들의 경계들 모두를 정의하는 단일 해시 테이블을 사용하는 메커니즘은 예를 들면, 사이에 중요한 상태 값이 없이 중요하지 않은 상태 값들(또한 중요하지 않은 수치 콘텍스트 값들로 지정되는)의 두 개의 인접한 구간이 존재하는, 서로 다른 경우들을 효율적으로 다룰 수 있다. 작게 유지되는 테이블 액세스들의 수에 기인하여 특히 높은 계산 효율성이 달성될 수 있다. 예를 들면, 수치 현재 콘텍스트 값이 상기 해시 테이블의 엔트리들에 의해 정의되는 어떤 중요한 상태 값들과 동일한지, 또는 중요하지 않은 상태 값들의 어느 구간들에서 수치 현재 콘텍스트 값이 위치는지를 알아내기 위하여 단일의 반복 테이블 검색이 대부분의 실시 예들에서 충분하다. 결과적으로, 시간 소모적이고 또한 에너지 소모적인 테이블 액세스들의 수는 작게 유지될 수 있다. 따라서, 해시 테이블(762)을 사용하는, 매핑 룰 선택기(760)는 계산 복잡도와 관련하여 특히 효율적인 매핑 룰 선택기로서 고려될 수 있으며, 뛰어난 인코딩 효율(비트레이트와 관련하여)을 획득하도록 허용한다.
수치 현재 콘텍스트 값(754)으로부터의 매핑 룰 정보(742)의 유래와 관련된 또 다른 설명들이 아래에 설명될 것이다.
2. 도 8에 따른 오디오 디코더
도 8은 오디오 디코더(800)의 개략적 블록 다이어그램을 도시한다. 오디오 디코더(800)는 인코딩된 오디오 정보(810)를 수신하고 이를 기초로 하여, 디코딩된 오디오 정보(812)를 제공하도록 구성된다.
오디오 디코더(800)는 스펙트럼 값들의 산술적으로 인코딩된 표현(821)을 기초로 하여 복수의 스펙트럼 값들(822)을 제공하도록 구성되는 산술 디코더(820)를 포함한다.
오디오 디코더(800)는 또한 디코딩된 스펙트럼 값들(822)을 수신하고 시간 도메인 오디오 표현(812)을 제공하도록 구성되는 주파수-도메인-대-시간-도메인 변환기(850)를 포함하는데, 이는 디코딩된 오디오 정보(812)를 획득하기 위하여, 디코딩된 스펙트럼 값들(822)을 사용하는 디코딩된 오디오 정보를 구성할 수 있다.
산술 디코더(820)는 스펙트럼 값들의 산술적으로 인코딩된 표현(821)의 코드 값을 하나 또는 그 이상의 디코딩된 스펙트럼 값들 또는 하나 또는 그 이상의 디코딩된 스펙트럼 값들의 적어도 일부(예를 들면, 가장 중요한 비트-플레인)를 표현하는 심볼 코드 상으로 매핑하도록 구성되는, 스펙트럼 값 결정기(824, spectral value determinator)를 포함한다. 스펙트럼 값 결정기(824)는 매핑 룰 정보(828a)에 의해 설명될 수 있는, 매핑 룰에 따라 매핑을 실행하도록 구성될 수 있다. 매핑 룰 정보(828a)는 예를 들면, 매핑 룰 지수 값 또는 선택된 누적 주파수 테이블(예를 들면, 매핑 룰 지수 값에 따라 선택된)의 형태를 취할 수 있다.
산술 디코더(820)는 콘텍스트 상태(콘텍스트 상태 정보(826a에 의해 설명될 수 있는)에 따라 코드 값들(스펙트럼 값들의 산술적으로 인코딩된 표현(821)에 의해 설명되는)의 심볼 코드(디코딩된 형태로, 하나 또는 그 이상의 스펙트럼 값들, 또는 그것의 가장 중요한 비트-플레인을 설명하는) 매핑을 설명하는 매핑 룰(예를 들면, 누적 주파수 테이블)을 선택하도록 구성된다.
산술 디코더(820)는 복수의 이전에 디코딩된 스펙트럼 값들에 따라 현재 콘텍스트 상태(수치 현재 콘텍스트 값에 의해 설명되는)를 결정하도록 구성된다. 이러한 목적을 위하여, 상태 트래커(826)가 사용될 수 있는데, 이는 이전에 디코딩된 스펙트럼 값들을 설명하는 정보를 수신하고 이를 기초로 하여, 현재 콘텍스트 상태를 설명하는 수치 현재 콘텍스트 값(826a)을 제공한다.
산술 디코더는 또한 매핑 룰을 선택하기 위하여, 이것의 엔트리들이 수치 콘텍스트 값들 중에서 중요한 상태 값들 및 수치 콘텍스트 값들의 구간들의 경계들 모두를 정의하는, 해시 테이블(829)을 평가하도록 구성된다. 바람직하게는, 해시 테이블(829, ari_hash_m[742])의 엔트리들은 도 22(a) 내지 22(d)의 테이블 표현에서 주어진 것과 같이 정의된다. 해시 테이블(829)은 매핑 룰을 선택하기 위하여, 즉, 매핑 룰 정보(829)를 제공하기 위하여 평가된다.
바람직하게는, 매핑 룰 지수 값은 중요한 상태 값인 수치 콘텍스트 값과 개별적으로 관련되며, 통상의 매핑 룰 지수 값은 구간 경계들에 의해 제한되는 구간 내에 위치하는 서로 다른 수치 콘텍스트 값들과 관련된다. 해시 테이블(829)의 평가는 예를 들면, 매핑 룰 선택기(828)의 부분일 수 있는 해시 테이블 평가기(hash table evaluator)에 의해 실행될 수 있다. 따라서, 예를 들면, 매핑 룰 지수 값 형태의 매핑 룰 정보(828a)는 현재 콘텍스트 상태를 설명하는 수치 현재 콘텍스트 값(826a)을 기초로 하여 획득된다. 매핑 룰 선택기(828)는 예를 들면, 해시 테이블(829)의 평가의 결과에 따라 매핑 룰 지수 값(828a)을 결정할 수 있다. 대안으로서, 해시 테이블(829)의 평가는 매핑 룰 지수 값을 직접 제공할 수 있다.
오디오 신호 디코더(800)의 기능성과 관련하여, 산술 디코더(820)는 현재 콘텍스트 상태(예를 들면, 수치 현재 콘텍스트 값에 의해 설명되는)에 따라 매핑 룰이 선택되고, 차례로 복수의 이전에 디코딩된 스펙트럼 값들에 따라 결정됨에 따라, 디코딩되는 스펙트럼 값들에 평균적으로 잘 적용되는 매핑 룰(예를 들면, 누적 주파수 테이블)을 선택하도록 구성된다는 것을 이해하여야 한다. 따라서, 디코딩되는 인접한 스펙트럼 값들 사이의 통계적 종속성이 이용될 수 있다. 게다가, 산술 디코더(820)는 매핑 룰 선택기(828)를 사용하여 계산 복잡성, 테이블 크기, 및 코딩 효율 사이의 뛰어난 균형과 함께 효율적으로 구현될 수 있다. 이것의 엔트리가 중요한 상태 값들 및 중요하지 않은 상태 값들의 구간들의 구간 경계들 모두를 설명하는, (단일) 해시 테이블을 평가함으로써, 수치 현재 콘텍스트 값(826a)으로부터 매핑 룰 정보(828a)를 끌어내기 위하여 단일의 반복 테이블 검색이 충분할 수 있다. 게다가, 도 22(a), 22(b), 22(c), 22(d)에 정의된 것과 같은 해시 테이블의 사용은 특히 높은 코딩 효율을 가져온다는 것이 알려졌다. 따라서, 상대적으로 많은 수의 서로 다른 가능한 수치 (현재) 콘텍스트 값을 상대적으로 적은 수의 서로 다른 매핑 룰 인덱스 값들 상으로 매핑하는 것이 가능하다. 위에서 설명되고 도 22(a) 내지 22(d)의 테이블 표현에서 정의되는 것과 같은, 해시 테이블을 사용함으로써, 많은 경우에서, 단일의 분리된 중요한 상태 값(중요한 콘텍스트 값)이 중요하지 않은 상태 값들(중요하지 않은 콘텍스트 값들)의 왼쪽 편의 구간 및 중요하지 않은 상태 값들(중요하지 않은 콘텍스트 값들)의 오른쪽 편의 구간 사이에 위치된다는 사실을 이용하는 것이 가능한데, 서로 다른 매핑 룰 지수 값은 왼쪽 편의 구간의 상태 값들(콘텍스트 값들) 및 오른쪽 편의 구간의 상태 값들(콘텍스트 값들)과 비교할 때, 중요한 상태 값(중요한 콘텍스트 값)과 관련된다. 그러나, 해시 테이블(829)의 사용은 또한 사이에 중요한 상태 값들이 없이, 수치 상태 값들의 두 개의 구간이 가까이에 인접하는 상황을 위하여 적절하다.
결론적으로, 해시 테이블(829, ari_hash_m[742])을 평가하는, 매핑 룰 선택기(828)는 현재 콘텍스트 상태에 따라(또는 현재 콘텍스트 상태를 설명하는 수치 현재 콘텍스트 값에 따라) 매핑 룰을 선택할 때(또는 매핑 룰 지수 값을 제공할 때) 특히 뛰어난 효율을 가져오는데, 그 이유는 해싱 매커니즘이 오디오 디코더 내의 일반적인 콘텍스트 시나리오에 잘 적용되기 때문이다.
아래에 또 다른 상세한 설명이 설명될 것이다.
3. 도 9에 따른 콘텍스트 값 해싱 메커니즘
다음에서, 매핑 룰 선택기(760) 및/또는 매핑 룰 선택기(828)에서 구현될 수 있는, 콘텍스트 해싱 메커니즘이 개시될 것이다. 상기 콘텍스트 값 해싱 메커니즘을 구현하기 위하여, 도 22(a) 내지 22(d)의 테이블 표현에서 정의된 것과 같은, 해시 테이블(762) 및/또는 해시 테이블(829)이 사용될 수 있다.
이제 수치 현재 콘텍스트 값 해싱 시나리오를 도시한, 도 9를 참조하여, 더 상세한 설명들이 설명될 것이다. 도 9의 도표에서, 가로좌표(910, abscissa)는 수치 현재 콘텍스트 값의 값들(즉, 수치 콘텍스트 값들)을 설명한다. 세로좌표(912)는 매핑 룰 지수 값을 설명한다. 마킹(914, marking)들은 중요하지 않은 수치 현재 값들(중요하지 않은 상태를 설명하는)을 위한 매핑 룰 지수 값들을 설명한다. 마킹들(916)은 개별 (참(true)) 중요한 상태들을 설명하는 "개별" (참) 중요한 수치 콘텍스트 값들을 위한 매핑 룰 지수 값들을 설명한다. 마킹들(916)은 "부적절한" 중요한 상태를 설명하는 "부적절한" 수치 콘텍스트 값들을 위한 매핑 룰 지수 값들을 설명하는데, "부적절한" 중요한 상태는 동일한 매핑 룰 지수 값이 중요하지 않은 수치 콘텍스트 값들의 인접한 구간들 중 하나와 관련된 중요한 상태이다.
도시된 것과 같이, 해시 테이블 엔트리 "ari_hash_m[i1]"은 c1의 수치 콘텍스트 값을 갖는 개별 (참) 중요 상태를 설명한다. 도시된 것과 같이, 매핑 룰 지수 값 mriv1은 c1의 수치 콘텍스트 값을 갖는 개별 (참) 중요 상태와 관련된다. 따라서, 수치 콘텍스트 값 c1 및 매핑 룰 지수 값 mriv1 모두 해시 테이블 엔트리 "ari_hash_m[i1]"에 의해 설명될 수 있다. 수치 콘텍스 값들의 구간(932)은 수치 콘텍스트 값 c1에 의해 제한되는데, 수치 콘텍스트 값 c1은 구간(932)의 가장 큰 값이 cl-1과 동알한 것과 같이, 구간(932)에 속하지 않는다. mriv4의 매핑 룰 지수 값(mriv1과는 다른)은 구간(932)의 수치 콘텍스트 값들과 관련된다. 매핑 룰 지수 값 mriv4는 예를 들면, 부가적인 테이블 "ari_lookup_m"의 테이블 엔트리 "ari_lookup_m[i1-1]"에 의해 설명될 수 있다.
게다가, 매핑 룰 지수 값 mriv2는 구간(934) 내에 위치하는 수치 콘텍스트 값들과 관련될 수 있다. 구간(934)의 하부 경계는 중요 수치 콘텍스트 값인, 수치 콘텍스트 값 c1에 의해 결정되는데, 수치 콘텍스트 값 c1은 구간(932)에 속하지 않는다. 따라서, 구간(934)의 가장 작은 값은 c1+1과 동일하다(정수 수치 콘텍스트 값을 가정). 구간의 또 다른 경계는 수치 콘텍스트 값 c2에 의해 결정되는데, 수치 콘텍스트 값 c2는 구간(934)의 가장 큰 값이 c2-1과 동일한 것과 같이, 구간(934)에 속하지 않는다. 수치 콘텍스트 값 c2는 해시 테이블 엔트리 "ari_hash_m[i2]"에 의해 설명되는, 이른바 "부적절한" 수치 콘텍스트 값이다. 예를 들면, 매핑 룰 지수 값 mriv2는 "부적절한" 중요 수치 콘텍스트 값 c2와 관련된 수치 콘텍스트 값이 수치 콘텍스트 값 c2에 의해 제한되는 구간(934)과 관련된 매핑 룰 지수 값과 동일한 것과 같이, 수치 콘텍스트 값 c2와 관련될 수 있다. 게다가, 수치 콘텍스트 값의 구간(936)은 또한 수치 콘텍스트 값 c2에 의해 제한되는데, 수치 콘텍스트 값 c2는 구간(936)의 가장 작은 수치 콘텍스트 값이 c2+1과 동일한 것과 같이, 구간(936)에 속하지 않는다. 일반적으로 매핑 룰 지수 값 mriv2와는 다른, 매핑 룰 지수 값 mriv3은 구간(936)의 수치 콘텍스트 값들과 관련된다.
도시된 것과 같이, 수치 콘텍스트 값들의 구간(932)과 관련된, 매핑 룰 지수 값 mriv4는 테이블 "ari_lookup_m"의 엔트리 "ari_lookup_m[i1-1]"에 의해 설명될 수 있고, 수치 콘텍스트 값들의 구간(934)과 관련된, 매핑 룰 지수 값 mriv2는 테이블 "ari_lookup_m"의 엔트리 "ari_lookup_m[i1]"에 의해 설명될 수 있으며, 매핑 룰 지수 값 mriv3은 테이블 "ari_lookup_m"의 엔트리 "ari_lookup_m[i2]"에 의해 설명될 수 있다. 여기에 주어진 실시 예에서, 해시 테이블 지수 값 i2는 해시 테이블 지수 값 i1보다 1이 더 클 수 있다.
도 9에 도시된 것과 같이, 매핑 룰 선택기(760) 또는 매핑 룰 선택기(828)는 수치 콘텍스트 값(764, 826a)을 수신할 수 있으며, 테이블 "ari_hash_m"의 엔트리들을 평가함으로써 수치 현재 콘텍스트 값이 중요 상태 값인지("개별" 중요 상태 값 또는 "부적절한" 중요 상태 값인지에 상관없이) 또는 수치 현재 콘텍스트 값이 ("개별 또는 "부적절한") 중요 상태 값들(c1, c2)에 의해 제한되는, 구간들(932, 934, 936) 중의 하나에 위치하는지를 결정할 수 있다. 수치 현재 콘텍스트 값이 중요 상태 값(c1, c2)과 동일한지의 체크 및 구간들(932, 934, 936) 중의 어느 것이 수치 현재 콘텍스트 값이 위치하는지의 평가(수치 현재 콘텍스트 값이 중요 상태 값과 동일하지 않은 경우에) 모두 단일의, 통상의 해시 테이블 검색을 사용하여 실행될 수 있다.
게다가, 해시 테이블 "ari_hash_m"의 평가는 해시 테이블 지수 값(예를 들면, i1-1, i1 또는 i2)을 획득하기 위하여 사용될 수 있다. 따라서, 매핑 룰 선택기(760, 828)는 단일 해시 테이블(762, 829, 예를 들면, 해시 테이블 "ari_hash_m")을 평가함으로써, 중요 상태 값(예를 들면, c1 또는 c2) 및/또는 구간(예를 들면, 932, 934, 936)을 지정하는 해시 테이블 지수 값(예를 들면, i1-1, i1, 또는 i2) 및 수치 현재 콘텍스트 값이 중요 콘텍스트 값(또한 중요 상태 값으로서 지정되는)인지 아닌지에 대한 정보를 획득하도록 구성될 수 있다.
게다가, 만일 해시 테이블(762, 829, "ari_hash_m")의 평가에서 수치 현재 콘텍스트 값이 "중요" 콘텍스트 값(또는 "중요" 상태 값)이 아닌 것으로 나타나면, 해시 테이블("ari_hash_m")의 평가로부터 획득된 해시 테이블 지수 값(예를 들면, i1-1, i1 또는 i2)은 수치 콘텍스트 값들의 구간(932, 934, 936)과 관련된 매핑 룰 지수 값을 획득하기 위하여 사용될 수 있다. 예를 들면, 해시 테이블 지수 값(예를 들면, i1-1, i1 또는 i2)은 수치 현재 콘텍스트 값이 위치하는 구간(932, 934, 936)과 관련된 매핑 룰 지수 값들을 설명하는, 부가적인 매핑 테이블(예를 들면, "ari_lookup_m")의 엔트리를 지정하기 위하여 사용될 수 있다.
또 다른 상세한 설명을 위하여, 도 5e 및 5f에 도시된, 알고리즘 "ari_get_pk"(이러한 알고리즘 ari_get_pk()"을 위한 서로 다른 옵션이 존재하는)의 상세한 설명이 참조된다.
게다가, 구간들의 크기는 경우마다 서로 다르다는 것을 이해하여야 한다. 일부 경우에 있어서, 수치 콘텍스트 값들의 구간은 단일 수치 콘텍스트 값을 포함한다. 그러나, 많은 경우에 있어서, 구간은 복수의 수치 콘텍스트 값을 포함할 수 있다.
4. 도 10에 따른 오디오 인코더
도 10은 본 발명의 일 실시 예에 따른 오디오 인코더(1000)의 개략적인 블록 다이어그램을 도시한다. 도 10에 따른 오디오 인코더(1000)는 도 7 및 10의 동일한 신호들 및 수단들이 동일한 참조 번호로 지정되는 것과 같이, 도 7에 따른 오디오 인코더(700)와 유사하다.
오디오 인코더(1000)는 입력 오디오 정보(710)를 수신하고 이를 기초로 하여 인코딩된 오디오 정보(712)를 제공하도록 구성된다. 오디오 인코더(1000)는 주파수-도메인 오디오 표현(722)이 한 세트의 스펙트럼 값들을 포함하는 것과 같이, 입력 오디오 정보(710)의 시간-도메인 표현을 기초로 하여 주파수-도메인 표현(722)을 제공하도록 구성되는, 에너지 압축 시간-도메인-대-주파수-도메인 변환기(720)를 포함한다. 오디오 인코더(1000)는 또한 인코딩된 오디오 정보(712), 예를 들면, 복수의 가변-길이 코드워드를 포함할 수 있는)를 획득하기 위하여 가변-길이 코드워드를 사용하여, 스펙트럼 값(주파수-도메인 오디오 표현(722)을 형성하는 스펙트럼 값들 세트 밖의), 또는 그것의 미리 처리된 버전을 인코딩하도록 구성되는 산술 인코더(1030)를 포함한다.
산술 인코더(1030)는 스펙트럼 값, 혹은 복수의 스펙트럼 값, 혹은 스펙트럼 값 또는 복수의 스펙트럼 값의 가장 중요한 비트-플레인의 값을 콘텍스트 상태에 따라 코드 값 상으로(즉, 가변 길이 코드워드 상으로) 매핑하도록 구성된다. 산술 인코더(1030)는 스펙트럼 값, 혹은 복수의 스펙트럼 값, 혹은 스펙트럼 값 또는 복수의 스펙트럼 값의 가장 중요한 비트-플레인의 값의 콘텍스트 상태에 따른 코드 값 상으로의 매핑을 설명하는 매핑 룰을 선택하도록 구성된다. 산술 인코더는 복수의 이전에 인코딩된(바람직하게는, 그러나 반드시는 아닌, 인접한) 스펙트럼 값들에 따라, 현재 콘텍스트 상태를 결정하도록 구성된다. 이러한 목적을 위하여, 산술 인코더는 하나 또는 그 이상의 인코딩되는 스펙트럼 값들과 관련된 콘텍스트 상태를 설명하는 수치 현재 콘텍스트 값의 수 표현(number representation)을 획득하기 위하여(예를 들면, 상응하는 매핑 룰을 선택하기 위하여), 콘텍스트 서브-영역 값에 따라, 하나 또는 그 이상의 이전에 인코딩된 스펙트럼 값들과 관련된 콘텍스트 상태를 설명하는 수치 이전 콘텍스트 값들의 수 표현을 변경하도록(예를 들면, 상응하는 매핑 룰을 선택하기 위하여) 구성된다.
도시된 것과 같이, 스펙트럼 값, 혹은 복수의 스펙트럼 값들, 혹은 스펙트럼 값 또는 복수의 스펙트럼 값들의 가장 중요한 비트-플레인의 코드 값 상으로의 매핑은 매핑 룰 정보(742)에 의해 설명되는 매필 룰을 사용하여 스펙트럼 값 인코딩(740)에 의해 실행될 수 있다. 상태 트래커(750)는 하나 또는 그 이상의 인코딩되는 스펙트럼 값들과 관련된 콘텍스트 상태를 설명하는 수치 현재 콘텍스트 값의 수 표현을 획득하기 위하여, 콘텍스트 서브-영역 값에 따라, 하나 또는 그 이상의 이전에 인코딩된 스펙트럼 값들의 인코딩과 관련된 콘텍스트 상태를 설명하는, 수치 이전 콘텍스트 값의 수 표현을 변경하도록 구성될 수 있다. 수치 이전 콘텍스트 값의 수 표현의 변경은 예를 들면, 수치 이전 콘텍스트 값 및 하나 또는 그 이상의 콘텍스트 서브-영역 값들을 수신하고 수치 현재 콘텍스트 값을 제공하는, 수 표현 변경기(1052, number representation modifier)에 의해 실행될 수 있다. 따라서, 상태 트래커(1050)는 수치 현재 콘텍스트 값의 형태로, 현재 콘텍스트 상태를 설명하는 정보(754)를 제공한다. 매핑 룰 선택기(1060)는 예를 들면, 스펙트럼 값, 혹은 복수의 스펙트럼 값들, 혹은 스펙트럼 값 또는 복수의 스펙트럼 값들의 가장 중요한 비트-플레인의 코드 값 상으로의 매핑을 설명하는, 매핑 룰, 예를 들면, 누적-주파수-테이블을 선택할 수 있다. 따라서, 매핑 룰 선택기(1060)는 스펙트럼 인코딩(740)에 매핑 룰 정보(742)를 제공한다.
일부 실시 예들에서, 상태 트래커(1050)는 상태 트래커(740) 또는 상태 트래커(826)와 동일할 수 있다는 갓을 이해하여야 한다. 또한 일부 실시 예들에서, 매핑 룰 선택기(1060)는 매핑 룰 선택기(760) 또는 매핑 룰 선택기(828)와 동일할 수 있다는 것을 이해하여야 한다. 바람직하게는, 매핑 룰 선택기(828)는 매핑 룰의 선택을 위하여, 도 22(a) 내지 22(d)의 테이블 표현에 정의된 것과 같은, 해시 테이블 "ari_hash_m[742]"을 사용하도록 구성될 수 있다. 예를 들면, 매핑 룰 선택기는 도 7 및 도 8을 참조하여 위에서 설명된 것과 같은 기능성을 실행할 수 있다.
위를 요약하면, 오디오 인코더(1000)는 시간-도메인-대-주파수-도메인 변환기에 의해 제공되는 주파수-도메인 오디오 표현의 산술 인코딩을 실행한다. 산술 인코딩은 이전에 인코딩된 스펙트럼 값들에 따라 매핑 룰(예를 들면, 누적-주파수-테이블)이 선택되는 것과 같이, 콘텍스트 의존형이다. 따라서, 서로에 대하여 시간 및/또는 주파수에 인접한(또는 적어도 미리 결정된 환경 내의) 스펙트럼 값들 및/또는 현재 인코딩된 스펙트럼 값들(즉, 현재 인코딩된 스펙트럼 값의 미리 결정된 환경 내의 스펙트럼 값들)이 산술 인코딩에 의해 평가되는 확률 분포를 조절하기 위하여 산술 인코딩 내에 고려될 수 있다.
수치 현재 콘텍스트 값을 결정할 때, 하나 또는 그 이상의 이전에 인코딩된 스펙트럼 값들과 관련된 콘텍스트 상태를 설명하는, 수치 이전 콘텍스트 값의 수 표현은 하나 또는 그 이상의 인코딩되려는 스펙트럼 값들과 관련된 콘텍스트 상태를 설명하는 수치 현재 콘텍스트 값의 수 표현을 획득하기 위하여, 콘텍스트 서브-영역 값에 따라 변경된다. 이러한 접근은 종래의 접근법에서 상당한 양의 자원을 소비하는, 수치 현재 콘텍스트 값의 완전한 재계산을 방지하도록 허용한다. 수치 이전 콘텍스트 값의 수 표현의 리스케일링의 조합, 수치 이전 콘텍스트 값의 수 표현 또는 수치 이전 콘텍스트 값의 처리된 수 표현에 대한 콘텍스트 서브-영역 값 또는 그것으로부터 유래된 값의 추가, 콘텍스트 서브-영역 값 등에 따라 수치 이전 콘텍스트 값의 수 표현의 일부(전체 수 표현보다는)의 대체를 포함하는, 수치 이전 콘텍스트 값의 수 표현의 변경을 위한 다양한 가능성이 존재한다. 따라서, 일반적으로 수치 현재 콘텍스트 값의 수치 표현은 수치 이전 콘텍스트 값의 수 표현 및 또한 적어도 하나의 콘텍스트 서브-영역 값을 기초로 하여 획득되는데, 일반적으로 연산들의 조합은 예를 들면, 부가적인 연산 이외의 두 개 또는 그 이상의 연산, 감산 연산, 곱셈 연산, 분할 연산, 불(Boolean)-AND 연산, 불_OR 연산, 불-NAND 연산, 불 NOR 연산, 불-부정 연산, 보충 연산, 또는 시프트 연산과 같이, 수치 이전 콘텍스트 값을 콘텍스트 서브-영역 값과 결합하도록 실행된다. 따라서, 수치 이전 콘텍스트 값의 적어도 일부는 수치 이전 콘텍스트 값으로부터 수치 현재 콘텍스트 값을 끌어낼 때 일반적으로 변하지 않고(서로 다른 부로의 선택적 전이를 제욀하고) 유지된다. 이와 대조적으로, 수치 이전 콘텍스트 값의 수 표현의 다른 부들은 하나 또는 그 이상의 콘텍스트 서브-영역 값들에 따라 변화한다. 따라서, 수치 현재 콘텍스트 값은 상당히 적은 계산 노력으로 획득될 수 있으며, 수치 현재 콘텍스트 값의 완전한 재계산을 방지할 수 있다.
따라서, 매핑 룰 선택기(1060)에 의한 사용에 적합하고, 특히 도 22(a), 22(b), 22(c), 22(d)의 테이블 표현에 정의된 것과 같은 해시 테이블 ari_hash_m과 결합된 사용을 위하여 적합한, 의미 있는 수치 현재 콘텍스트 값이 획득될 수 있다.
결론적으로, 효율적인 인코딩은 콘텍스트 계산을 충분히 간단하게 유지함으로써 달성될 수 있다.
5. 도 11에 따른 오디오 디코더
도 11은 오디오 디코더(1100)의 개략적인 블록 다이어그램을 도시한다. 오디오 디코더(1100)는 동일한 신호들, 수단들 및 기능성이 동일한 참조 번호로 지정되는 것과 같이, 도 8에 따른 오디오 디코더(800)와 유사하다.
오디오 디코더(1100)는 인코딩된 오디오 정보(810)를 수신하고 이를 기초로 하여, 디코딩된 오디오 정보(812)를 제공하도록 구성된다. 오디오 디코더(1100)는 스펙트럼 값들의 산술적으로 인코딩된 표현(821)을 기초로 하여 복수의 디코딩된 스펙트럼 값들(822)을 제공하도록 구성되는 산술 디코더(1120)를 포함한다. 오디오 디코더(1120)는 또한 디코딩된 오디오 정보(812)를 획득하기 위하여, 디코딩된 스펙트럼 값들(822)을 사용하여, 디코딩된 스펙트럼 값들(822)을 수신하고 디코딩된 오디오 정보를 구성하는, 시간-도메인 오디오 표현(812)을 제공하도록 구성되는 주파수-도메인-대-시간-도메인 변환기(830)를 포함한다.
산술 디코더(1120)는 스펙트럼 값들의 산술적으로 인코딩된 표현(821)의 코드 값을 하나 또는 그 이상의 디코딩된 스펙트럼 값들, 또는 하나 또는 그 이상의 디코딩된 스펙트럼 값들의 적어도 일부(예를 들면, 가장 중요한 비트-플레인)를 표현하는 심볼 코드 상으로 매핑하도록 구성되는, 스펙트럼 값 결정기(824)를 포함한다. 스펙트럼 값 결정기(824)는 매핑 룰 정보(828a)에 의해 설명될 수 있는, 매핑 룰에 따라 매핑을 실행하도록 구성될 수 있다. 매핑 룰 정보(828a)는 예를 들면, 매핑 룰 지수 값을 포함할 수 있거나, 또는 누적-주파수-테이블의 엔트리들의 선택된 세트를 포함할 수 있다.
산술 디코더(1120)는 코드 값(스펙트럼 값들의 산술적으로 인코딩된 표현(821)에 의해 설명되는)의 콘텍스트 상태에 따른 심볼 코드(하나 또는 그 이상의 스펙트럼 값들을 설명하는) 상으로의 매핑을 설명하는 매핑 룰(예를 들면, 누적-주파수-테이블)을 선택하도록 구성되는데, 콘텍스트 상태는 콘텍스트 상태 정보(1126a)에 의해 설명될 수 있다. 콘텍스트 상태 정보(1126a)는 수치 현재 콘텍스트 값의 형태를 취할 수 있다. 산술 디코더(1120)는 복수의 이전에 디코딩된 스펙트럼 값들(822)에 따라 현재 콘텍스트 상태를 결정하도록 구성된다. 이러한 목적을 위하여, 이전에 디코딩된 스펙트럼 값들을 설명하는 정보를 수신하는, 상태 트래커(1126)가 사용될 수 있다. 산술 디코더는 하나 또는 그 이상의 디코딩되는 스펙트럼 값들과 관련된 콘텍스트 상태를 설명하는 수치 현재 콘텍스트 값의 수 표현을 획득하기 위하여, 콘텍스트 서브-영역 값에 따라, 하나 또는 그 이상의 이전에 디코딩된 스펙트럼 값들에 관련된 콘텍스트 상태를 설명하는, 수치 이전 콘텍스트 값의 수 표현을 변경하도록 구성된다. 수치 이전 콘텍스트 값의 수 표현의 변경은 예를 들면, 상태 트래커(1126)의 일부분인, 수 표현 변경기(1127)에 의해 실행될 수 있다. 따라서, 예를 들면, 수치 현재 콘텍스트 값의 형태로, 현재 콘텍스트 상태 정보(1126a)가 획득된다. 매핑 룰의 선택은 현재 콘텍스트 상태 정보(1126a)로부터 매핑 룰 정보(828a)를 끌어내고, 스펙트럼 값 결정기(824)에 매핑 룰 정보(828a)를 제공하는, 매핑 룰 선택기(1128)에 의해 실행될 수 있다. 바람직하게는, 매핑 룰 선택기(1128)는 매핑 룰의 선택을 위하여, 도 22(a) 내지 22(d)의 테이블 표현에 정의된 것과 같이, 해시 테이블 "ari_hash_m[742]"를 사용하도록 구성될 수 있다. 예를 들면, 매핑 룰 선택기는 도 7 및 8을 참조하여 위에서 설명된 것과 같은 기능성을 실행할 수 있다.
오디오 신호 디코더(1100)의 기능성과 관련하여, 산술 디코더(1120)는 현재 콘텍스트 상태에 따라 매핑 룰이 선택되고, 차례로 복수의 이전에 디코딩된 스펙트럼 값들에 따라 결정됨에 따라, 디코딩되는 스펙트럼 값들에 평균적으로 잘 적용되는 매핑 룰(예를 들면, 누적-주파수-테이블)을 선택하도록 구성된다는 것을 이해하여야 한다. 따라서, 디코딩되는 인접한 스펙트럼 값들 사이의 통계적 종속성이 이용될 수 있다.
게다가, 하나 또는 그 이상의 디코딩되는 스펙트럼 값들의 디코딩과 관련된 콘텍스트 상태를 설명하는 수치 현재 콘텍스트 값의 수 표현을 획득하기 위하여, 콘텍스트 서브-영역 값에 따라, 하나 또는 그 이상의 이전에 디코딩된 스펙트럼 값들의 디코딩과 관련된 콘텍스트 상태를 설명하는 수치 이전 콘텍스트 값의 수 표현을 변경함으로써, 매핑 룰 지수 값으로의 매핑을 위하여 적합하고, 특히 상대적으로 적은 계산 노력으로, 도 22(a), 22(b), 22(c), 22(d)의 테이블 표현에 정의된 것과 같은 해시 테이블 ari_hash_m과 결합된 사용을 위하여 적합한, 현재 콘텍스트 상태에 대한 의미 있는 정보를 획득하는 것이 가능하다. 수치 이전 콘텍스트 값(가능하게는 비트-전이되거나 또는 스케일링된 버전 내의)의 수 표현의 적어도 일부를 유지하고 수치 이전 콘텍스트 값에서는 고려되지 않았으나 수치 이전 콘텍스트 값에서 고려되어야만 하는 콘텍스트 서브-영역 값들에 따라 수치 이전 콘텍스트 값의 수 표현의 또 다른 부를 업데이트함으로써, 수치 현재 콘텍스트 값을 끌어내기 위한 연산의 수는 합리적으로 적게 유지될 수 있다. 또한 인접한 스펙트럼 값들을 디코딩하기 위한 콘텍스트들은 일반적으로 유사하거나 서로 관련되어 있다는 사실을 이용하는 것이 가능하다. 예를 들면, 첫 번째 스펙트럼 값(또는 첫 번째 복수의 스펙트럼 값들)의 디코딩을 위한 콘텍스트는 이전에 디코딩된 스펙트럼 값들의 첫 번째 세트에 의존한다. 첫 번째 스펙트럼 값(또는 첫 번째 복수의 스펙트럼 값들)에 인접한, 두 번째 스펙트럼 값(또는 두 번째 복수의 스펙트럼 값들)의 디코딩을 위한 콘텍스트는 이전에 디코딩된 스펙트럼 값들의 두 번째 세트를 포함할 수 있다. 첫 번째 스펙트럼 값 및 두 번째 스펙트럼 값이 인접한(예를 들면 관련 주파수들에 대하여) 것으로 가정되기 때문에, 첫 번째 스펙트럼 값의 코딩을 위한 콘텍스트를 결정하는, 스펙트럼 값들의 첫 번째 세트는 두 번째 스펙트럼 값의 코딩을 위한 콘텍스트를 결정하는, 스펙트럼 값들의 두 번째 세트와의 일부 오버랩을 포함할 수 있다. 따라서, 두 번째 스펙트럼 값의 디코딩을 위한 콘텍스트 상태는 첫 번째 스펙트럼 값의 디코딩을 위한 콘텍스트 상태와의 일부 연관성을 포함한다는 것을 쉽게 이해할 것이다. 콘텍스트 유래, 즉, 수치 현재 콘텍스트 값의 유래의 계산 효율은 그러한 연관성을 이용함으로써 달성될 수 있다. 인접한 스펙트럼 값들의 디코딩을 위한 콘텍스트 상태들 사이의(예를 들면 수치 이전 콘텍스트 값에 의해 설명되는 콘텍스트 상태 및 수치 현재 콘텍스트 값에 의해 설명되는 콘텍스트 상태 사이의) 연관성은 수치 이전 콘텍스트 상태의 유래를 위하여 고려되지 않은 콘텍스트 서브-영역 값들에 따른 수치 이전 콘텍스트 값의 부분만을 변경하고, 수치 이전 콘텍스트 값으로부터 수치 현재 콘텍스트 값을 끌어냄으로써 효율적으로 사용될 수 있다.
결론적으로, 여기에 설명된 개념들은 수치 현재 콘텍스트 값을 끌어낼 때 특히 뛰어난 계산 효율성을 허용한다.
또 다른 상세한 설명이 아래에 설명될 것이다.
6, 도 12에 따른 오디오 인코더
도 12는 본 발명의 일 실시 예에 따른 오디오 인코더의 개략적인 블록 다이어그램을 도시한다. 도 12에 따른 오디오 인코더(1200)는 동일한 신호들 및 수단들이 동일한 참조 번호로 지정되는 것과 같이, 도 7에 따른 오디오 인코더(700)와 유사하다.
오디오 인코더(1200)는 입력 오디오 정보(710)를 수신하고 이를 기초로 하여 린코딩된 오디오 정보(712)를 제공하도록 구성된다. 오디오 인코더(1200)는 주파수-도메인 오디오 표현(722)이 한 세트의 스펙트럼 값들을 포함하는 것과 같이, 입력 오디오 정보(710)의 시간-도메인 오디오 표현을 기초로 하여 주파수-도메인 오디오 표현(722)을 제공하도록 구성되는, 에너지 압축 시간-도메인-대-주파수-도메인 변환기(720)를 포함한다. 오디오 인코더(1200)는 또한 인코딩된 오디오 정보(712, 예를 들면, 복수의 가변-길이 코드워드를 포함할 수 있는)를 획득하기 위하여 가변-길이 코드워드를 사용하여, 스펙트럼 값(주파수-도메인 오디오 표현(722)을 형성하는 스펙트럼 값들 세트 밖의), 또는 복수의 스펙트럼 값들, 또는 그것의 미리 처리된 버전을 인코딩하도록 구성되는 산술 인코더(1230)를 포함한다.
산술 인코더(1230)는 스펙트럼 값, 혹은 복수의 스펙트럼 값, 혹은 스펙트럼 값 또는 복수의 스펙트럼 값의 가장 중요한 비트-플레인의 값을 콘텍스트 상태에 따라, 코드 값 상으로(즉, 가변 길이 코드워드 상으로) 매핑하도록 구성된다. 산술 인코더(1230)는 스펙트럼 값, 혹은 복수의 스펙트럼 값, 혹은 스펙트럼 값 또는 복수의 스펙트럼 값의 가장 중요한 비트-플레인의 값의 콘텍스트 상태에 따른 코드 값 상으로의 매핑을 설명하는 매핑 룰을 선택하도록 구성된다. 산술 인코더는 복수의 이전에 인코딩된(바람직하게는, 그러나 반드시는 아닌, 인접한) 스펙트럼 값들에 따라, 현재 콘텍스트 상태를 결정하도록 구성된다. 이러한 목적을 위하여, 산술 인코더는 이전에 인코딩된 스펙트럼 값들을 기초로 하여 복수의 콘텍스트 서브-영역 값들을 획득하고, 상기 콘텍스트 서브-영역 값들을 저장하며, 저장된 콘텍스트 서브-영역 값에 따라 인코딩되는 하나 또는 그 이상의 스펙트럼 값들과 관련된 수치 현재 콘텍스트 값을 끌어내도록 구성된다. 게다가, 산술 인코더는 복수의 이전에 인코딩된 스펙트럼 값들과 관련된 통상의 콘텍스트 서브-영역 값을 획득하기 위하여, 복수의 이전에 인코딩된 스펙트럼 값들에 의해 형성된 벡터의 표준(norm)을 계산하도록 구성된다.
도시된 것과 같이, 스펙트럼 값, 혹은 복수의 스펙트럼 값들, 혹은 스펙트럼 값 또는 복수의 스펙트럼 값들의 가장 중요한 비트-플레인의 코드 값 상으로의 매핑은 매핑 룰 정보(742)에 의해 설명되는 매필 룰을 사용하여 스펙트럼 값 인코딩(740)에 의해 실행될 수 있다. 상태 트래커(1250)는 콘텍스트 상태를 트래킹하도록 구성될 수 있으며 하나 또는 그 이상의 인코딩되는 스펙트럼 값들과 관련된 콘텍스트 상태를 설명하는 수치 현재 콘텍스트 값의 수 표현을 획득하기 위하여, 복수의 이전에 인코딩된 스펙트럼 값들에 의해 형성되는 벡터의 표준을 계산하기 위한, 콘텍스트 서브-영역 값 컴퓨터(1252)를 포함할 수 있다. 상태 트래커(125)는 또한 바람직하게는 콘텍스트 서브-영역 값 컴퓨터(1252)에 의해 실행되는 콘텍스트 서브-영역 값의 상기 계산의 결과에 따라 현재 콘텍스트 상태를 결정하도록 구성된다. 따라서, 상태 트래커(1250)는 현재 콘텍스트 상태를 설명하는, 정보(1254)를 제공한다. 매핑 룰 선택기(1260)는 스펙트럼 값 또는 스펙트럼 값의 가장 중요한 비트-플레인의 코드 값 상으로의 매핑을 설명하는, 매핑 룰, 예를 들면, 누적-주파수-테이블을 선택할 수 있다. 따라서, 매핑 룰 선택기(1260)는 스펙트럼 인코딩(740)에 매핑 룰 정보(742)를 제공한다. 바람직하게는, 매핑 룰 선택기(1260)는 매핑 룰의 선택을 위하여, 도 22(a) 내지 22(d)의 테이블 표현에 정의된 것과 같은, 해시 테이블 "ari_hash_m[742]"를 사용하도록 구성된다. 예를 들면, 매핑 룰 선택기는 도 7 및 8을 참조하여 위에서 설명된 것과 같은 기능성을 실행할 수 있다.
위를 요약하면, 오디오 인코더(1200)는 시간-도메인-대-주파수-도메인 변환기(720)에 의해 제공되는 주파수-도메인 오디오 표현의 산술 인코딩을 실행한다. 산술 인코딩은 이전에 인코딩된 스펙트럼 값들에 따라 매핑 룰(예를 들면, 누적-주파수-테이블)이 선택되는 것과 같이, 콘텍스트 의존형이다. 따라서, 산술 인코딩에 의해 평가되는 확률 분포를 조절하기 위하여 서로에 대하여 및/또는 현재 인코딩된 스펙트럼 값(즉, 현재 인코딩된 스펙트럼 값의 미리 결정된 환경 내의 스펙트럼 값들)에 대한 시간 및/또는 주파수 내의(또는 적어도 미리 결정된 환경 내의) 인접한 스펙트럼 값들이 산술 인코딩에서 고려된다.
수치 현재 콘텍스트 값을 제공하기 위하여, 복수의 이전에 인코딩된 스펙트럼 값들의 콘텍스트 서브-영역 값이 복수의 이전에 인코딩된 스펙트럼 값들에 의해 형성되는 벡터의 표준의 계산을 기초로 하여 획득된다. 수치 현재 콘텍스트 값의 결정의 결과는 현재 콘텍스트 상태의 선택, 즉 매핑 룰의 선택에 적용된다.
복수의 이전에 인코딩된 스펙트럼 값들에 의해 형성되는 벡터의 표준을 계산함으로써, 하나 또는 그 이상의 인코딩되는 스펙트럼 값들의 콘텍스트의 일부를 설명하는 의미 있는 정보가 획득될 수 있는데, 이전에 인코딩된 스펙트럼 값들의 벡터의 표준은 일반적으로 상대적으로 적은 수의 비트들로 나타낼 수 있다. 따라서, 수치 현재 콘텍스트 값에서의 나중의 사용을 위하여 저장이 필요한, 콘텍스트 정보의 양은 콘텍스트 서브-영역 값들의 계산을 위하여 위에서 설명된 접근법을 적용함으로써 충분히 작게 유지될 수 있다. 이전에 인코딩된 스펙트럼 값들의 벡터의 표준은 일반적으로 나중의 사용을 위하여 저장되는 정보의 양을 감소시키기 위하여 이전에 디코딩된 스펙트럼 값들의 사인(sign)을 무시하는 것이 합당한 것과 같이, 콘텍스트의 상태에 대한 종속적인 영향을 포함한다는 것이 알려졌다. 또한, 이전에 인코딩된 스펙트럼 값들의 벡터의 표준의 계산은 일반적으로 표준의 계산에 의해 획득되고, 실질적으로 영향을 받지 않은 콘텍스트 상태에 대한 가장 중요한 정보를 남기는, 평균 효율과 같은, 콘텍스트 서브-영역 값의 파생을 위한 합리적인 접근법이라는 것이 알려졌다. 요약하면, 콘텍스트 서브-영역 값 컴퓨터(1252)에 의해 실행되는 콘텍스트 서브-영역 값 계산은 저장 및 나중의 재사용을 위하여 압축 콘텍스트 서브-영역 정보를 제공하도록 허용하는데, 정보의 양의 감소에도 불구하고 콘텍스트 상태에 대한 가장 적절한 정보가 보존된다.
게다가, 위에서 설명된 것과 같이 획득된 수치 현재 콘텍스트 값은 도 22(a) 내지 22(d)의 테이블 표현에 정의된 것과 같이, 해시 테이블 "ari_hash_m[742]"를 사용하여 매핑 룰의 선택을 위하여 적합하다. 예를 들면, 매핑 룰 선택기는 도 7 및 8을 참조하여 위에서 설명된 것과 같은 기능성을 실행할 수 있다.
따라서, 입력 오디오 정보(710)의 효율적인 인코딩이 달성될 수 있으며, 계산 수고 및 산술 인코더(1230)에 의해 저장되는 데이터의 양을 충분히 작게 유지할 수 있다.
7. 도 13에 따른 오디오 디코더
도 13은 오디오 디코더(1300)의 개략적인 블록 다이어그램을 도시한다. 오디오 디코더(1300)는 동일한 신호들, 수단들 및 기능성이 동일한 참조 번호로 지정되는, 도 8에 따른 오디오 디코더(800) 및 도 11에 따른 오디오 디코더(1100)와 유사하다.
오디오 디코더(1300)는 인코딩된 오디오 정보(810)를 수신하고 이를 기초로 하여, 디코딩된 오디오 정보(812)를 제공하도록 구성된다. 오디오 디코더(1300)는 스펙트럼 값들의 산술적으로 인코딩된 표현(821)을 기초로 하여 복수의 디코딩된 스펙트럼 값들(822)을 제공하도록 구성되는 산술 디코더(1320)를 포함한다. 오디오 디코더(1320)는 또한 디코딩된 오디오 정보(812)를 획득하기 위하여, 디코딩된 스펙트럼 값들(822)을 사용하여, 디코딩된 스펙트럼 값들(822)을 수신하고 디코딩된 오디오 정보를 구성하는, 시간-도메인 오디오 표현(812)을 제공하도록 구성되는 주파수-도메인-대-시간-도메인 변환기(830)를 포함한다.
산술 디코더(1320)는 스펙트럼 값들의 산술적으로 인코딩된 표현(821)의 코드 값을 하나 또는 그 이상의 디코딩된 스펙트럼 값들, 또는 하나 또는 그 이상의 디코딩된 스펙트럼 값들의 적어도 일부(예를 들면, 가장 중요한 비트-플레인)를 표현하는 심볼 코드 상으로 매핑하도록 구성되는, 스펙트럼 값 결정기(824)를 포함한다. 스펙트럼 값 결정기(824)는 매핑 룰 정보(828a)에 의해 설명될 수 있는, 매핑 룰에 따라 매핑을 실행하도록 구성될 수 있다. 매핑 룰 정보(828a)는 예를 들면, 매핑 룰 지수 값, 또는 누적-주파수-테이블의 엔트리들의 선택된 세트를 포함할 수 있다.
산술 디코더(1320)는 코드 값(스펙트럼 값들의 산술적으로 인코딩된 표현(821)에 의해 설명되는)의 콘텍스트 상태에 따른(콘텍스트 상태 정보(1326a)에 의해 설명될 수 있는) 심볼 코드(하나 또는 그 이상의 스펙트럼 값들을 설명하는) 상으로의 매핑을 설명하는 매핑 룰(예를 들면, 누적-주파수-테이블)을 선택하도록 구성된다. 바람직하게는, 산술 디코더(1320)는 매핑 룰의 선택을 위하여, 도 22(a) 내지 22(d)의 테이블 표현에 정의된 것과 같이, 해시 테이블 "ari_hash_m[742]"을 사용하도록 구성될 수 있다. 예를 들면, 산술 디코더(1320)는 도 7 및 8을 참조하여 위에서 설명된 것과 같은 기능성을 실행할 수 있다. 산술 디코더(1320)는 복수의 이전에 디코딩된 스펙트럼 값들(822)에 따라 현재 콘텍스트 상태를 결정하도록 구성된다. 이러한 목적을 위하여, 이전에 디코딩된 스펙트럼 값들을 설명하는 정보를 수신하는, 상태 트래커(1326)가 사용될 수 있다. 산술 디코더는 또한 이전에 디코딩된 스펙트럼 값들을 기초로 하여 복수의 콘텍스트 서브-영역 값들을 획득하고 상기 콘텍스트 서브-영역 값들을 저장하도록 구성된다. 산술 디코더는 저장된 콘텍스트 서브-영역 값들에 따라 하나 또는 그 이상의 디코딩되는 스펙트럼 값들과 관련된 수치 현재 콘텍스트 값을 끌어내도록 구성된다. 산술 디코더(1320)는 복수의 이전에 디코딩된 스펙트럼 값들과 관련된 통상의 콘텍스트 서브-영역 값을 획득하기 위하여, 복수의 이전에 디코딩된 스펙트럼 값들에 의해 형성된 벡터의 표준을 계산하도록 구성된다.
복수의 이전에 디코딩된 스펙트럼 값들과 관련된 통상의 콘텍스트 서브-영역 값을 획득하기 위하여, 복수의 이전에 디코딩된 스펙트럼 값들에 의해 형성된 벡터의 표준의 계산은 예를 들면, 상태 트래커(1326)의 일부분인, 콘텍스트 서브-영역 값 컴퓨터(1327)에 의해 실행될 수 있다. 따라서, 현재 콘텍스트 상태 정보(1326a)는 콘텍스트 서브-영역 값들을 기초로 하여 획득되는데, 상태 트래커(1326)는 바람직하게는 저장된 콘텍스트 서브-영역 값들에 따라 하나 또는 그 이상의 디코딩되는 스펙트럼 값들과 관련된 수치 현재 상태 값을 제공한다. 매핑 룰들의 선택은 현재 콘텍스트 상태 정보(1326a)로부터 매핑 룰 정보(828a)를 끌어내고 스펙트럼 값 결정기(824)에 매핑 룰 정보(828a)를 제공하는, 매핑 룰 선택기(1328)에 의해 실행될 수 있다.
오디오 신호 디코더(1300)의 기능성과 관련하여, 산술 디코더는 현재 콘텍스트 상태에 따라 매핑 룰이 선택되고, 차례로 복수의 이전에 디코딩된 스펙트럼 값들에 따라 결정됨에 따라, 디코딩되는 스펙트럼 값들에 평균적으로 잘 적용되는 매핑 룰(예를 들면, 누적-주파수-테이블)을 선택하도록 구성된다는 것을 이해하여야 한다.
그러나, 메모리 사용의 면에서, 수치 콘텍스트 값의 결정에서의 나중의 사용을 위하여, 복수의 이전에 디코딩된 스펙트럼 값들 상에 형성되는 벡터의 표준의 계산을 기초로 하는, 콘텍스트 서브-영역 값들을 저장하는 것이 효율적이라는 알려졌다. 또한 그러한 콘텍스트 서브-영역 값들은 여전히 가장 적절한 콘텍스트 정보를 포함하는 것이 알려졌다. 따라서, 상태 트래커(1326)에 의해 사용되는 개념은 코딩 효율, 계산 효율 및 저장 효율 사이의 뛰어난 절충을 구성한다.
또 다른 상세한 설명이 아래에 설명된다.
8. 도 1에 따른 오디오 인코더
다음에서, 본 발명의 일 실시 예에 따른 오디오 인코더가 설명될 것이다. 도 1은 그러한 오디오 인코더(100)의 개략적인 블록 다이어그램을 도시한다.
오디오 인코더(100)는 입력 오디오 정보(110)를 수신하고 이를 기초로 하여, 인코딩된 오디오 정보를 구성하는, 비트스트림(112)을 제공하도록 구성된다. 오디오 인코더(100)는 선택적으로 입력 오디오 정보(110)를 수신하고 이를 기초로 하여, 전처리된 입력 오디오 정보(110a)를 제공하도록 구성되는, 전처리기(120, preprocessor)를 포함한다. 오디오 인코더(100)는 또한 신호 변환기(signal converter)로서 지정되는, 에너지-압축 시간-도메인 대 주파수-도메인 신호 변환기(130)를 포함한다. 신호 변환기(130)는 입력 오디오 정보(110, 110a)를 수신하고 이를 기초로 하여, 바람직하게는 스펙트럼 값들의 한 세트의 형태를 취하는, 주파수-도메인 오디오 정보(132)를 제공하도록 구성된다. 예를 들면, 신호 변환기(130)는 입력 오디오 정보(110, 110a)의 프레임(예를 들면, 시간-도메인 샘플들의 블록)을 수신하고 각각의 오디오 프레임의 오디오 콘텐츠를 표현하는 스펙트럼 값들의 한 세트를 제공하도록 구성될 수 있다. 게다가, 신호 변환기(130)는 입력 오디오 정보(110, 110a)의 복수의 그 다음의, 오버래핑 또는 비-오버래핑하는, 오디오 프레임들을 수신하고 이를 기초로 하여, 스펙트럼 값들의 한 세트가 각각의 프레임과 관련되고, 스펙트럼 값들의 그 다음의 세트의 시퀀스를 포함하는, 시간-주파수-도메인 오디오 표현을 제공하도록 구성될 수 있다.
에너지-압축 시간-도메인 대 주파수-도메인 신호 변환기(130)는 서로 다른, 오버래핑 또는 비(non)-오버래핑하는, 주파수 범위들과 관련된 스펙트럼 값들을 제공하는, 에너지-압축 필터뱅크(filterbank)를 포함할 수 있다. 예를 들면, 신호 변환기(130)는 변환 윈도우를 사용하여 입력 오디오 정보(110, 110a, 또는 그것의 프레임)를 윈도우잉하고 윈도우잉된 입력 오디오 정보(110, 110a, 또는 그것의 윈도우잉된 프레임)의 변형-이산-코사인-변환을 실행하도록 구성되는, 변형 이산 코사인 변환 변환기(130a)를 포함할 수 있다. 따라서, 주파수-도메인 오디오 표현(132)은 예를 들면, 입력 오디오 정보의 프레임과 관련된 변형 이산 코사인 변환 계수들의 형태로 한 세트의 스펙트럼 값들을 포함할 수 있다.
오디오 인코더는 선택적으로, 주파수-도메인 오디오 표현(132)을 수신하고 이를 기초로 하여, 후처리된 주파수-도메인 오디오 표현(142)을 제공하도록 구성되는, 스펙트럼 후처리기(140)를 더 포함할 수 있다. 스펙트럼 후처리기(140)는 예를 들면, 일시적 잡음 형상(temporal noise shaping) 및/또는 장기 예측(long-term prediction) 및/또는 종래에 알려진 다른 스펙트럼 후처리를 실행하도록 구성될 수 있다. 오디오 인코더는 선택적으로, 주파수-도메인 오디오 표현(132) 또는 그것의 후처리된 버전(142)을 수신하고 스케일링되고 양자화된 주파수-도메인 오디오 표현(152)을 제공하도록 구성되는, 스케일러/양자화기(150, scaler/quantizer)를 더 포함한다.
오디오 인코더(100)는 선택적으로, 입력 오디오 정보(110, 또는 그것의 후처리된 버전(110a))를 수신하고 이를 기초로 하여, 선택적 스펙트럼 후처리기(140)의 제어 및/또는 선택적 스케일러/양자화기(150)의 제어를 위하여, 에너지-압축 시간-도메인 대 주파수-도메인 신호 변환기(130)의 제어를 위하여 사용될 수 있는, 선택적 제어 정보를 제공하도록 구성되는, 심리 음향 모델 처리기(160, psycho-acoustic model processor)를 더 포함한다. 예를 들면, 심리 음향 모델 처리기(160)는 입력 오디오 정보(110, 110a)의 어떤 컴포넌트(component)들이 오디오 콘텐츠의 인간 지각을 위하여 특히 중요하고 입력 오디오 정보(110, 110a)의 어떤 컴포넌트들이 오디오 콘텐츠의 지각을 위하여 덜 중요한지를 결정하기 위하여, 입력 오디오 정보를 분석하도록 구성될 수 있다. 따라서, 심리 음향 모델 처리기(160)는 스케일러/양자화기(150) 및/또는 스케일러/양자화기(150)에 의해 적용되는 양자화 해상도(quantization resolution)에 의한 주파수-도메인 오디오 표현(132)의 스케일링을 조절하기 위하여, 오디오 인코더(100)에 의해 사용되는, 제어 정보를 제공할 수 있다. 그 결과, 지각적으로(perceptually) 중요한 스케일 팩터(factor) 대역들(즉, 오디오 콘텐츠의 인간 지각을 위하여 특히 중요한 인접한 스펙트럼 값들의 그룹들)은 큰 스케일링 팩터로 스케일링되고 상대적으로 높은 해상도로 양자화되며, 반면에 지각적으로 덜 중요한 스케일 팩터 대역들(즉, 인접한 스펙트럼 값들의 그룹들)은 상대적으로 작은 스케일링 팩터로 스케일링되고 상대적으로 낮은 양자화 해상도로 양자화된다. 따라서, 지각적으로 더 중요한 주파수들의 스케일링된 스펙트럼 값들은 일반적으로 지각적으로 덜 중요한 주파수들의 스펙트럼 값보다 상당히 크다.
오디오 인코더는 또한 주파수-도메인 오디오 표현(132, 또는 대안으로서, 주파수-도메인 오디오 표현(132)의 후처리된 버전(142), 또는 주파수-도메인 오디오 표현(132) 자체)의 스케일링되고 양자화된 버전(152)을 수신하고 이를 기초로 하여, 산술 코드워드 정보가 주파수-도메인 오디오 표현(152)을 표현하는 것과 같이, 산술 코드워드 정보(172a)를 제공하도록 구성되는, 산술 인코더(17)를 포함한다.
오디오 인코더(100)는 또한 산술 코드워드 정보(172a)를 수신하도록 구성되는, 비트스트림 패이로드 포맷터(190, bitstream payload formatter)를 포함한다. 비트스트림 패이로드 포맷터(190)는 또한 일반적으로 예를 들면, 스케일러/양자화기(150)에 의해 어떤 스케일 팩터들이 적용되었는지를 설명하는 스케일 팩터 정보와 같은, 부가 정보를 수신하도록 구성된다. 게다가, 비트스트림 패이로드 포맷터(190)는 다른 제어 정보를 수신하도록 구성될 수 있다. 비트스트림 패이로드 포맷터(190)는 아래에 설명될, 바람직한 비트스트림 신택스에 따라 비트스트림의 어셈블링에 의해 수신된 정보를 기초로 하여 비트스트림(112)을 제공하도록 구성된다.
다음에서, 산술 인코더(170)에 대한 상세한 설명이 설명될 것이다. 산술 인코더(170)는 주파수-도메인 오디오 표현(132)의 복수의 후처리되고 스케일링되고 양자화된 스펙트럼 값들을 수신하도록 구성된다. 산술 인코더는 하나의 스펙트럼 값, 또는 심지어 두 개의 스펙트럼 값으로부터 가장 중요한 비트 플레인(m)을 추출하도록 구성되는, 가장 중요한 비트-플레인-추출기(174)를 포함한다. 여기서 가장 중요한 비트-플레인은 스펙트럼 값의 가장 중요한 비트들인, 하나 또는 그 이상의 비트(예를 들면, 두 개 또는 세 개의 비트)를 포함할 수 있다는 것을 이해하여야 한다. 따라서, 가장 중요한 비트-플레인 추출기(174)는 스펙트럼 값의 가장 중요한 비트-플레인 값(176)을 제공한다.
그러나, 대안으로서, 가장 중요한 비트-플레인 추출기(174)는 복수의 스펙트럼 값들(예를 들면, 스펙트럼 값 a 및 b)을 결합한 결합된 가장 중요한 비트-플레인을 제공할 수 있다. 스펙트럼 값(a)의 가장 중요한 비트-플레인은 m으로 지정된다. 대안으로서, 복수의 스펙트럼 값들(a, b)의 결합된 가장 중요한 비트-플레인이 m으로 지정된다.
산술 인코더(170)는 또한 가장 중요한 비트-플레인 값(m)을 표현하는 산술 코드워드 acod_m [pki][m]를 결정하도록 구성되는, 제 1 코드워드 결정기(180)를 포함한다. 선택적으로, 코드워드 결정기(180)는 또한 예를 들면, 얼마나 많은 덜 중요한 비트-플레인이 이용가능한지를 포함하는(및, 따라서, 가장 중요한 비트-플레인의 수치 중량을 나타내는), 하나 또는 그 이상의 탈출 코드워드(escape codeword, 또한 여기서 "ARITH-ESCAPE"로 지정되는)를 제공한다. 제 1 코드워드 결정기(180)는 누적-주파수-테이블 지수(pki)를 갖는(또는 이에 참조되는) 선택된 누적-주파수-테이블을 사용하여 가장 중요한 비트-플레인 값(m)과 관련된 코드워드를 제공하도록 구성될 수 있다.
어떤 누적-주파수-테이블이 선택되어야만 하는지를 결정하기 위하여, 산술 인코더는 바람직하게는 예를 들면, 어떤 스펙트럼 값들이 이전에 인코딩되었는지를 관찰함으로써 산술 인코더의 상태를 트래킹하도록 구성되는, 상태 트래커(182)를 포함한다. 상태 트래커(182)는 따라서 상태 정보, 예를 들면, "s" 또는 "t" 또는 "c"로 지정되는 상태 값을 제공한다. 산술 인코더(170)는 또한 상태 정보(184)를 수신하고 선택된 누적-주파수-테이블을 설명하는 정보(188)를 코드워드 결정기(180)에 제공하도록 구성되는, 누적-주파수-테이블 선택기(186)를 포함한다. 예를 들면, 누적-주파수-테이블 선택기(186)는 코드워드 결정기에 의한 사용을 위하여 한 세트의 누적-주파수-테이블 이외의, 어떤 누적 주파수-테이블이 선택되는지를 설명하는 누적-주파수-테이블 지수 "pki"를 제공할 수 있다. 대안으로서, 누적-주파수-테이블 선택기(186)는 코드워드 결정기에 전체 선택된 누적-주파수-테이블 또는 서브-테이블을 제공할 수 있다. 따라서, 코드워드 결정기(180)는 가장 중요한 비트-플레인 값(m)을 인코딩하는 실제 코드워드 acod_m[pki][m]이 m의 값 및 누적-주파수-테이블 지수(pki)에 의존하는 것과 같이, 가장 중요한 비트-플레인 값(m)의 코드워드 acod_m[pki][m]의 제공을 위하여 선택된 누적-주파수-테이블 또는 서브-테이블을 사용할 수 있다. 코딩 과정 및 획득된 코드워드 포맷에 관한 상세한 설명이 아래에 설명될 것이다.
그러나, 일부 실시 예들에서, 상태 트래커(182)는 상태 트래커(750), 상태 트래커(1050) 또는 상태 트래커(1250)와 동일할 수 있거나, 또는 동일한 기능성을 가질 수 있다는 것을 이해하여야 한다. 일부 실시 예들에서, 누적-주파수-테이블 선택기(186)는 매핑 룰 선택기(760), 매핑 룰 선택기(1060), 또는 매핑 룰 선택기(1260)와 동일할 수 있거나, 또는 동일한 기능성을 가질 수 있다는 것을 이해하여야 한다. 게다가, 제 1 코드워드 결정기(180)는 일부 실시 예들에서, 스펙트럼 값 인코딩(740)과 동일할 수 있거나, 또는 동일한 기능성을 가질 수 있다.
산술 인코더(170)는 만일, 인코딩되는 하나 또는 그 이상의 스펙트럼 값들이 가장 중요한 비트-플레인 만을 사용하여 인코딩할 수 있는 범위를 초과하면, 스케일링되고 양자화된 주파수-도메인 오디오 표현(152)으로부터 하나 또는 그 이상의 덜 중요한 비트-플레인을 추출하도록 구성되는, 덜 중요한 비트-플레인 추출기(189a)를 더 포함한다. 덜 중요한 비트-플레인들은 원하는 만큼, 하나 또는 그 이상의 비트들을 포함할 수 있다. 따라서, 덜 중요한 비트-플레인 추출기(189a)는 덜 중요한 비트-플레인 정보(189b)를 제공한다. 산술 인코더(170)는 또한 덜 중요한 비트-플레인 정보(189b)를 수신하고 이를 기초로 하여, 0, 1 또는 그 이상의 덜 중요한 비트-플레인들의 콘텐츠를 표현하는 0, 1 또는 그 이상의 코드워드들 "acod_r"을 제공하도록 구성되는, 제 2 코드워드 결정기(189c)를 포함한다. 제 2 코드워드 결정기(189c)는 덜 중요한 비트-플레인 정보(189b)로부터 덜 중요한 비트-플레인 코드워드들 "acod_r"을 끌어내기 위하여 산술 인코딩 알고리즘 또는 다른 인코딩 알고리즘을 적용하도록 구성될 수 있다.
여기서 덜 중요한 비트-플레인들의 수는 만일, 인코딩되는 스케일링되고 양자화된 스펙트럼 값이 중간 범위이면 하나의 덜 중요한 비트-플레인이 존재할 수 있고 만일 인코딩되는 스케일링되고 양자화된 스펙트럼 값이 상대적으로 큰 값을 취하면 하나 이상의 덜 중요한 비트-플레인이 존재할 수 있는 것과 같이, 스케일링되고 양자화된 스펙트럼 값들(152)의 값에 따라 다양할 수 있다는 것을 이해하여야 한다.
위를 요약하면, 산술 인코더(170)는 계층 코딩 과정을 사용하여, 정보(152)에 의해 설명되는, 스케일링되고 양자화된 스펙트럼 값들을 인코딩하도록 구성된다. 하나 또는 그 이상의 스펙트럼 값들의 가장 중요한 비트-플레인(예를 들면, 스펙트럼 값 당 하나, 두 개 또는 세 개를 포함하는)은 가장 중요한 비트-플레인 값(m)의 산술 코드워드 "acod_m[pki][m]을 획득하기 위하여 인코딩된다. 하나 또는 그 이상의 스펙트럼 값들의 하나 또는 그 이상의 덜 중요한 비트-플레인들(예를 들면, 하나, 두 개 또는 세 개를 포함하는 덜 중요한 비트-플레인 각각)은 하나 또는 그 이상의 코드워드 "acod_r"을 획득하기 위하여 인코딩된다. 가장 중요한 비트-플레인을 인코딩할 때, 가장 중요한 비트-플레인의 값(m)은 코드워드 acod_m[pki][m]에 매핑된다. 이러한 목적을 위하여, 산술 인코더(170)의 상태에 따라, 즉, 이전에 인코딩된 스펙트럼 값들에 따라 값(m)의 인코딩을 위하여 64개의 서로 다른 누적-주파수-테이블이 이용가능하다. 따라서, 코드워드 "acod_m[pki][m]"이 획득된다. 게다가, 만일 하나 또는 그 이상의 덜 중요한 비트-플레인이 존재하면 하나 또는 그 이상의 코드워드 "acod_r"이 제공되고 비트스트림 내에 포함된다.
리셋(reset) 설명
오디오 인코더(100)는 선택적으로 예를 들면 상태 지수를 디폴트(default) r값으로 설정함으로써, 비트레이트의 향상이 콘텍스트의 리셋에 의해 획득될 수 있는지를 결정하도록 구성될 수 있다. 따라서, 오디오 인코더(100)는 산술 인코딩을 위한 콘텍스트가 리셋되는지를 나타내고 또한 상응하는 디코더에서 산술 디코딩을 위한 콘텍스트가 리셋되어야 하는지를 나타내는, 리셋 정보(예를 들면, "arith_reset_flag")를 제공하도록 구성될 수 있다.
비트스트림 포맷 및 적용된 누적-주파수 테이블들에 관한 상세한 설명이 아래에 논의될 것이다.
9. 도 2에 따른 오디오 디코더
다음에서, 본 발명의 일 실시 예에 따른 오디오 디코더가 설명될 것이다. 도 2는 그러한 오디오 디코더(200)의 개략적인 블록 다이어그램을 도시한다.
오디오 디코더(200)는 인코딩된 오디오 정보를 표현하고 오디오 인코더(100)에 의해 제공되는 비트스트림(112)과 동일할 수 있는, 비트스트림(210)을 수신하도록 구성된다. 오디오 디코더(200)는 비트스트림(210)을 기초로 하여 디코딩된 오디오 정보(212)를 제공한다.
오디오 디코더(200)는 비트스트림(210)을 수신하고 비트스트림(210)으로부터 인코딩된 주파수-도메인 오디오 표현(222)을 추출하도록 구성되는, 선택적 비트스트림 패이로드 디포맷터(220, bitstream payload de-formatter)를 포함한다. 예를 들면, 비트스트림 패이로드 디포맷터(220)는 비트스트림(210)으로부터 예를 들면, 스펙트럼 값(a), 또는 복수의 스펙트럼 값(a, b)의 가장 중요한 비트-플레인을 표현하는 산술 코드워드 "acod_m[pki][m]" 및 주파수-도메인 오디오 표현의 스펙트럼 값(a), 또는 복수의 스펙트럼 값(a, b)의 덜 중요한 비트-플레인의 콘텐츠를 표현하는 코드워드 "acod_r"과 같은, 산술적으로 코딩된 스펙트럼 데이터를 추출하도록 구성될 수 있다. 따라서, 인코딩된 주파수-도메인 오디오 표현(222)은 스펙트럼 값들의 산술적으로 인코딩된 표현을 구성(포함)한다. 비트스트림 패이로드 디포맷터(220)는 또한 도 2에는 도시되지 않은, 비트스트림 부가 제어 정보로부터 추출하도록 구성된다. 게다가, 비트스트림 패이로드 디포맷터는 선택적으로 비트스트림(210), 또한 산술 리셋 플래그(flag) 또는 "arith_reset_flag"로서 지정되는 상태 리셋 정보(224)로부터 추출하도록 구성된다.
오디오 디코더(200)는 또한 "스펙트럼 무잡음 디코더"로서 지정되는, 산술 디코더(230)를 포함한다. 산술 디코더(230)는 인코딩된 주파수-도메인 오디오 표현(220) 및 선택적으로, 상태 리셋 정보(224)를 수신하도록 구성된다. 산술 디코더(230)는 또한 스펙트럼 값들의 디코딩된 표현을 포함할 수 있는, 디코딩된 주파수-도메인 오디오 표현(232)을 제공하도록 구성된다. 예를 들면, 디코딩된 주파수-도메인 오디오 표현(232)은 인코딩된 주파수-도메인 오디오 표현(220)에 의해 설명되는, 스펙트럼 값들의 디코딩된 표현을 포함할 수 있다.
오디오 디코더(200)는 또한 디코딩된 주파수-도메인 오디오 표현(232)을 수신하고 이를 기초로 하여, 역으로 양자화되고 리스케일링된 주파수-도메인 오디오 표현(242)을 제공하도록 구성되는, 선택적 역 양자화기/리스케일러(240, reverse quantizer/rescaler)를 포함한다.
오디오 디코더(200)는 역으로 양자화되고 리스케일링된 주파수-도메인 오디오 표현(242)을 수신하고 이를 기초로 하여 역으로 양자화되고 리스케일링된 주파수-도메인 오디오 표현(242)의 전처리된 버전(252)을 제공하도록 구성되는, 선택적 스펙트럼 전처리기(250)를 더 포함한다. 오디오 디코더(200)는 또한 "신호 변환기"로서 지정되는, 주파수-도메인 대 시간-도메인 신호 변환기(260)를 포함한다. 신호 변환기(260)는 역으로 양자화되고 리스케일링된 주파수-도메인 오디오 표현(242)을 수신하고 이를 기초로 하여 역으로 양자화되고 리스케일링된 주파수-도메인 오디오 표현(242)의 전처리된 버전(252, 또는 대안으로서, 역으로 양자화되고 리스케일링된 주파수-도메인 오디오 표현(242) 또는 디코딩된 주파수-도메인 오디오 표현(232))을 수신하고 이를 기초로 하여 오디오 정보의 시간-도메인 표현(262)을 제공하도록 구성된다. 주파수-도메인 대 시간-도메인 신호 변환기(260)는 예를 들면, 역 변형 이산 코사인 변환 및 적절한 윈도우잉(뿐만 아니라 예를 들면, 오버랩-앤드-애드(overlap-and-add) 같은 다른 보조 기능들)을 실행하기 위한 변환기를 포함할 수 있다.
오디오 디코더(200)는 오디오 정보의 시간-도메인 표현(262)을 수신하고 시간-도메인 후처리를 사용하여 디코딩된 오디오 정보(212)를 획득하도록 구성되는, 선택적 시간-도메인 후처리기(270)를 더 포함한다. 그러나, 만일 후처리가 생략되면, 시간-도메인 표현(262)은 디코딩된 오디오 정보(212)와 동일할 수 있다.
역 양자화기/리스케일러(240), 스펙트럼 후처리기(250), 주파수-도메인 대 시간-도메인 신호 변환기(260) 및 시간-도메인 후처리기(270)는 비트스트림 패이로드 디포맷터(220)에 의해 비트스트림(210)으로부터 추출되는, 제어 정보에 따라 제어될 수 있다는 것을 이해하여야 한다.
오디오 디코더(200)의 전체 기능성을 요약하면, 디코딩된 주파수-도메인 오디오 표현(232), 예를 들면, 인코딩된 오디오 정보의 오디오 프레임과 관련된 한 세트의 스펙트럼 값들은 산술 디코더(230)를 사용하여 인코딩된 주파수-도메인 표현(222)을 기초로 하여 획득될 수 있다. 그 뒤에, 예를 들면, 변형 이산 코사인 변환 계수들일 수 있는, 한 세트의 스펙트럼 값들은 역으로 양자화되고 리스케일링되며 전처리된다. 따라서, 역으로 양자화되고 리스케일링되며 스펙트럼으로 전처리된 한 세트의 스펙트럼 값들(예를 들면, 변형 이산 코사인 변환 계수들)이 획득된다. 그 뒤에, 오디오 프레임의 시간-도메인 표현이 역으로 양자화되고 리케일링되며 스펙트럼으로 전처리된 한 세트의 스펙트럼 값들(예를 들면, 변형 이산 코사인 변환 계수들)로부터 파생된다. 따라서, 오디오 프레임의 시간-도메인 표현이 획득된다. 주어진 오디오 프레임의 시간-도메인 표현은 이전의 및/또는 그 뒤의 오디오 프레임들의 시간-도메인 표현들과 결합될 수 있다. 예를 들면, 인접한 오디오 프레임들의 시간-도메인 표현들 사이의 전이를 매끄럽게 하고 앨리어싱 취소(aliasing cancellation)를 획득하기 위하여 그 뒤의 오디오 프레임들의 시간-도메인 표현들 사이의 오버랩-앤드-애드가 실행될 수 있다. 디코딩된 시간-주파수 도메인 오디오 표현(232)을 기초로 한 디코딩된 오디오 정보(212)의 복원에 관한 상세한 내용들은 예를 들면, 상세한 설명이 제공되는 국제 표준 ISO/IEC 14496-3, 파트 3, 서브파트 4에 참조된다. 그러나, 다른 더 많은 정교한 오버래핑 및 앨리어싱 취소 제도들이 사용될 수 있다.
다음에서, 산술 디코더(230)에 관한 일부 상세한 내용이 설명될 것이다. 산술 디코더(230)는 가장 중요한 비트-플레인 값(m)을 설명하는 산술 코드워드 acod_m[pki][m]을 수신하도록 구성되는, 가장 중요한 비트-플레인 결정기(284)를 포함한다. 가장 중요한 비트-플레인 결정기(284)는 산술 코드워드 acod_m[pki][m]로부터 가장 중요한 비트-플레인 값(m)을 끌어내기 위하여 복수의 누적-주파수-테이블을 포함하는 한 세트 이외의 누적-주파수 테이블을 사용하도록 구성될 수 있다.
가장 중요한 비트-플레인 결정기(284)는 코드워드 acod_m을 기초로 하여 더 많은 스펙트럼 값들 중 하나의 가장 중요한 비트-플레인의 값(286)을 끌어내도록 구성된다. 산술 디코더(230)는 스펙트럼 값의 하나 또는 그 이상의 덜 중요한 비트-플레인을 표현하는 하나 또는 그 이상의 코드워드 "acod_r"을 수신하도록 구성되는, 덜 중요한 비트-플레인 결정기(288)를 더 포함한다. 따라서, 덜 중요한 비트-플레인 결정기(288)는 하나 또는 그 이상의 덜 중요한 비트-플레인의 디코딩된 값(29)응 제공하도록 구성된다. 오디오 디코더(200)는 또한 하나 또는 그 이상의 가장 중요한 비트-플레인의 디코딩된 값들(286) 및 만일 현재 스펙트럼 값들을 위하여 덜 중요한 비트-플레인들이 이용가능하면 스펙트럼 값들의 하나 또는 그 이상의 덜 중요한 비트-플레인의 디코딩된 값들(29)을 수신하도록 구성되는, 비트-플레인 결합기(bit-plane combiner, 292)를 포함한다. 따라서, 비트-플레인 결합기(292)는 디코딩된 주파수-도메인 오디오 표현(232)의 일부인, 디코딩된 스펙트럼 값들을 제공한다. 당연히, 산술 디코더(230)는 일반적으로 오디오 콘텐츠의 현재 프레임과 관련된 디코딩된 스펙트럼 값들의 완전한 세트를 획득하기 위하여 복수의 스펙트럼 값들을 제공하도록 구성된다.
산술 디코더(230)는 산술 디코더의 상태를 설명하는 상태 지수(298)에 따라 누적 주파수 테이블들 ari_cf_m[64][17](각각의 테이블은 17 엔트리를 갖는, 0≤pki≤63의 ari__cf_m[pki][17]) 중의 하나를 선택하도록 구성되는, 누적-주파수-테이블 선택기(296)를 더 포함한다. 누적-주파수-테이블들 중 하나를 선택하기 위하여, 누적-주파수-테이블 선택기는 바람직하게는 도 22(a), 22(b), 22(c), 22(d)의 테이블 표현에 의해 정의된 것과 같은 해시 테이블 ari_hash_m[742]를 평가한다. 해시 테이블 ari_hash_m[742]의 이러한 평가에 관한 상세한 설명이 아래에 설명될 것이다. 산술 디코더(230)는 이전에 디코딩된 스펙트럼 값들에 따라 산술 디코더의 상태를 트래킹하도록 구성되는, 상태 트래커(299)를 더 포함한다. 상태 정보는 선택적으로 상태 리셋 정보(224)에 대응하여 디폴트 상태 정보로 리셋될 수 있다. 따라서, 누적-주파수-테이블 선택기(296)는 코드워드 "acod_m"에 따라 가장 중요한 비트-플레인의 디코딩에서의 적용을 위하여, 선택된 누적-주파수-테이블의 지수(예를 들면, pki), 또는 선택된 누적-주파수-테이블 또는 서브-테이블 자체를 제공하도록 구성된다.
오디오 디코더(200)의 기능성을 요약하면, 오디오 디코더(200)는 비트레이트가 효율적으로 인코딩된 주파수-도메인 오디오 표현(222)을 수신하고 이를 기초로 하여 디코딩된 주파수-도메인 오디오 표현을 획득하도록 구성된다. 인코딩된 주파수-도메인 오디오 표현(222)을 기초로 하여 디코딩된 주파수-도메인 오디오 표현을 획득하기 위하여 사용되는, 산술 디코더(230)에서, 인접한 스펙트럼 값들의 가장 중요한 비트-플레인이 값들의 서로 다른 조합의 가능성은 누적-주파수-테이블을 적용하도록 구성되는, 산술 디코더(280)를 사용함으로써 이용된다. 바꾸어 말하면, 이전에 계산된 디코딩된 스펙트럼 값들의 관찰에 의해 획득되는, 상태 지수(298)에 따라 서로 다른 누적-주파수-테이블을 포함하는 한 세트 이외의 서로 다른 누적-주파수 테이블을 선택함으로써 스펙트럼 값들 사이의 통계 종속성(statistic dependency)이 이용된다.
상태 트래커(299)는 상태 트래커(826), 상태 트래커(1126), 또는 상태 트래커(1326)와 동일할 수 있거나 또는 동일한 기능성을 취할 수 있다는 것을 이해하여야 한다. 누적-주파수-테이블 선택기(296)는 매핑 룰 선택기(828), 매핑 룰 선택기(1128), 또는 매핑 룰 선택기(1328)와 동일할 수 있거나 또는 동일한 기능성을 취할 수 있다. 가장 중요한 비트-플레인 결정기(284)는 스펙트럼 값 결정기(824)와 동일할 수 있거나 또는 동일한 기능성을 취할 수 있다.
10. 스펙트럼 무잡음 코딩의 툴(tool)의 개요
다음에서, 예를 들면, 산술 인코더(170) 및 산술 디코더(230)에 의해 실행되는, 인코딩 및 디코딩 알고리즘에 관한 상세한 설명이 설명될 것이다.
디코딩 알고리즘에 초점을 맞춘다. 그러나, 상응하는 인코딩 알고리즘이 디코딩 알고리즘의 설명에 따라 실행될 수 있으며, 인코딩되고 디코딩된 스펙트럼 값들 사이의 매핑들은 역이며, 매핑 룰 지수 값의 계산은 실질적으로 동일하다는 것을 이해하여야 한다. 인코더에서, 인코딩된 스펙트럼 값들은 디코딩된 스펙트럼 값들의 위치를 대체한다. 또한, 인코딩되는 스펙트럼 값들은 디코딩되는 스펙트럼 값들을 대체한다.
다음에서 설명될 디코딩은 일반적으로 후처리되고, 스케링링되고 양자화된 스펙트럼 값들의 이른바 "스펙트럼 무잡음 코딩"을 허용하기 위하여 사용된다는 것을 이해하여야 한다. 스펙트럼 무잡음 코딩은 예를 들면, 에너지 압축 시간-도메인-대-주파수-도메인 변형기에 의해 획득되는, 양자화된 스펙트럼의 중복(redundancy)을 더 감소시키기 위하여 오디오 인코딩/디코딩 개념에서(또는 인코딩/디코딩 개념에서) 사용된다. 본 발명의 실시 예들에서 사용되는, 스펙트럼 무잡음 방식은 역학적으로 적용된 콘텍스트와 함께 산술 코딩을 기초로 한다.
본 발명에 따른 일부 실시 예들에서,스펙트럼 무잡음 코딩 방식은 즉, 두 개의 인접한 스펙트럼 계수들이 결합된, 2-투플을 기초로 한다. 각각의 2-투플은 사인, 가장 중요한 2-비트-와이즈(wise)-플레인, 및 나머지; 덜 중요한 비트-플레인들로 분할된다, 가장 중요한 2-비트-와이즈-플레인(m)을 위한 무잡음 코딩은 네 개의 이전에 디코딩된 2-투플로부터 유래되는 콘텍스트 의존 누적-주파수-테이블들을 사용한다. 무잡음 코딩은 예를 들면, 양자화된 스펙트럼 값들에 의해 제공되고 네 개의 이전에 디코딩된 인접한 2-투플로부터 유래되는 콘텍스트 의존 누적-주파수-테이블들 사용한다. 여기서, 시간 및 주파수 모두에서의 인접은 바람직하게는 도 4에 도시된 것과 같이 고려한다. 누적 주파수-테이블들(아래에 설명될)은 그리고 나서 가변-길이 이진 코드(variable-length binary code)를 발생시키기 위하여 산술 코더에 의해(및 가변-길이 이진 코드로부터 디코딩된 값들을 끌어내기 위하여 산술 디코더에 의해) 사용된다.
예를 들면, 산술 코더(170)는 주어진 심볼들 세트 및 그것들 각각의 확률을 위하여(즉, 각각의 확률에 따라) 이진(binary) 코드를 생산하다. 이전 코드는 심볼 세트가 위치하는, 확률 구간을 코드워드로 매핑함으로써 발생된다.
나머지 덜 중요한 비트-플레인 또는 비트 플레인들을 위한 무잡음 코딩은 예를 들면, 단일 누적-주파수-테이블을 사용한다. 예를 들면, 덜 중요한 비트-플레인들에서 발생하는 심볼들의 균일한 분포에 상응하는, 즉, 동일한 확률 0 또는 1이 존재하는 것으로 기대되는 누적 주파수들은 덜 중요한 비트-플레인들에서 발생한다. 그러나, 나머지 덜 중요한 비트-플레인의 코딩을 위하여 다른 해결책이 사용될 수 있다.
다음에서, 스펙트럼 무잡음 코딩의 툴의 또 다른 간단한 개요가 설명될 것이다. 스펙트럼 무잡음 코딩은 또한 양자화된 스펙트럼의 중복을 감소시키기 위하여 사용된다. 스펙트럼 무잡음 코딩 방식은 역학적으로 적용되는 콘텍스트와 함께, 산술 코딩을 기초로 한다. 무잡음 코딩은 양자화된 스펙트럼 값들에 의해 제공되고 예를 들면, 스펙트럼 값들의 네 개의 이전에 디코딩된 인접한 2-투플로부터 파생되는 콘텍스트 의존 누적-주파수-테이블들을 사용한다. 여기서, 시간 및 주파수 모두에서의 인접은 도 4에 도시된 것과 같이 고려한다. 누적 주파수-테이블들은 그리고 나서 가변 길이 이진 코드를 발생시키기 위하여 산술 코더에 의해 사용된다.
산술 코더는 주어진 심볼들 세트 및 그것들 각각의 확률을 위하여 이진 코드를 생산한다. 이전 코드는 심볼 세트가 위치하는, 확률 구간을 코드워드로 매핑함으로써 발생된다.
11. 디코딩 과정
11.1 디코딩 과정 개요
다음에서, 스펙트럼 값의 코딩의 과정의 개요가 복수의 스펙트럼 값들을 디코딩하는 과정의 슈도-프로그램 코드 표현을 도시한, 도 3을 참조하여 설명될 것이다.
복수의 스펙트럼 값들을 디코딩하는 과정은 콘텍스트의 초기화 단계(310)를 포함한다. 콘텍스트의 초기화 단계(310)는 함수 "arith_map_context(N, arith_reset_flag)"을 사용하여, 이전 콘텍스트로부터 현재 콘텍스트의 유래를 포함한다. 이전 콘텍스트로부터 현재 콘텍스트의 유래는 선택적으로 콘텍스트의 리셋을 포함한다. 콘텍스트의 리셋 및 이전 콘텍스트로부터 현재 콘텍스트의 유래는 아래에 설명될 것이다. 바람직하게는, 도 5에 따른 함수 "rith_map_context(N, arith_reset_flag)"가 사용될 수 있으나, 대안으로서 도 5b에 따른 함수가 사용될 수 있다.
복수의 스펙트럼 값들의 디코딩은 스펙트럼 값 디코딩(312) 및 콘텍스트 업데이트(313)의 반복(iteration)을 포함하는데, 상기 콘텍스트 업데이트(313)는 아래에 설명되는 함수 "arith_update_context(i, a,b)"에 의해 실행된다. 스펙트럼 값 디코딩(312) 및 콘텍스트 업데이트(313)는 1g/2회 반복되는데, 1g/2는 이른바 "ARITH_STOP" 심볼이 디코딩되지 않는 한, 디코딩되는(예를 들면, 오디오 프레임을 위하여) 스펙트럼 값들의 2-투플의 수를 나타낸다. 게다가, 한 세트의 1g 스펙트럼 값들의 디코딩은 또한 사인들 디코딩(314) 및 완료 단계(315)를 포함한다.
스펙트럼 값들의 투플의 디코딩(312)은 콘텍스트-값 계산(312a), 가정 중요한 비트-플레인 디코딩(312b), 산술 정지 심볼 검출(312c), 덜 중요한 비트-플레인 추가(312d), 및 어레이 업데이트(312e)를 포함한다.
상태 값 계산(312a)은 예를 들면, 도 5c 또는 5d에 도시된 것과 같은 함수 "arith_get_context(c,i,N)"의 호출(call)을 포함한다. 바람직하게는 도 5c에 따른 함수 "arith_get_context(c,i,N)"이 사용된다. 따라서, 함수 "arith_get_context (c,i,N)"의 함수 호출의 반환 값으로서 수치 현재 콘텍스트(상태) 값(c)이 제공된다. 도시된 것과 같이, 함수 "arith_get_context(c,i,N)"에 대한 입력 변수로서 역할을 하는, 수치 이전 콘텍스트 값(또한 "c"로서 지정되는)은 반환 값으로서, 수치 현재 콘텍스트 값(C)을 획득하기 위하여 업데이트된다.
가장 중요한 비트-플레인 디코딩(312b)은 디코딩 알고리즘(312ba) 및 알고리즘(312ba)의 결과 값(m)으로부터 값들(a, b)의 유래(312bb)의 중복 실행을 포함한다. 알고리즘(312ba)의 제작에서, 변수(lev)가 0으로 초기화되다. 알고리즘(312ba)은 "브레이크(break)" 명령(또는 상태)이 도달할 때까지 반복된다. 알고리즘(312ba)은 수치 현재 콘텍스트 값(c)에 따른, 그리고 또한 아래에 설명될(그리고 예를 들면, 도 5e 및 5f에 도시된 실시 예들), 함수 "arith_get_pk()"를 사용하여 레벨 값 "esc_nb"에 따른 상태 지수 "pki"(또한 누적-주파수-테이블 지수로서 역할을 하는)의 계산을 포함한다. 바람직하게는, 도 5e에 따른 함수 "arith_get_pk(c)"가 사용된다. 알고리즘(312ba)은 또한 함수 "arith_get_pk"의 호출에 의해 반환되는, 상태 지수 "pki"에 따른 누적-주파수-테이블의 선택을 포함하는데, 변수 "cum_freq"는 상태 지수 "pki"에 따른 누적-주파수-테이블들(또는 서브-테이블들) 중의 하나의 개시 어드레스(starting address)로 설정될 수 있다. 변수 "cfl"은 또한 예를 들면, 알파벳 내의 심볼들의 수, 즉, 디코딩되는 서로 다른 값들의 수와 동일한, 선택된 누적-주파수-테이블들(또는 서브-테이블들)의 길이로 초기화될 수 있다. 가장 중요한 비트-플레인 값의 디코딩을 위하여 이용가능한 "ari_cf_m[pki=0][17]부터 "ari_cf_m[pki=0][63]까지의 모든 누적-주파수-테이블들(또는 서브-테이블들)의 길이는 17인데, 그 이유는 16개의 서로 다른 가장 중요한 비트-플레인 값들 및 탈출 심볼("ARITH-ESCAPE")이 디코딩될 수 있기 때문이다. 바람직하게는, 선택된 누적-주파수-테이블(또는 서브-테이블)을 획득하기 위하여, "ari_cf_m[pki=0][17]부터 "ari_cf_m[pki=0][63]까지의 누적-주파수-테이블들(또는 서브-테이블들)을 정의하는, 도 23(a), 23(b), 23(c), 23(d)에 정의된 것과 같은, 누적-주파수-테이블 "ari_cf_m[64][17]이 평가된다.
그 뒤에, 선택된 누적-주파수-테이블(변수 "cum_freq" 및 변수 "cfl"에 의해 설명되는)을 고려하여, 함수 "arith_decode()"를 실행함으로써 가장 중요한 비트-플레인 값(m)이 획득된다. 가장 중요한 비트-플레인 값(m)을 파생할 때, 비트스트림(210)의 "acod_m"로 지정된 비트가 평가될 수 있다.(예를 들면, 도 6g 또는 6h 참조). 바람직하게는, 도 5g에 따른 함수 "arith_decode(cum_freq,cfl)"가 사용되나, 대안으로서, 도 5h 및 5i에 따른 함수 "arith_decode(cum_freq,cfl)"가 사용될 수 있다.
알고리즘(312ba)은 또한 가장 중요한 비트-플레인 값(m)이 탈출 심볼 "ARITH-ESCAPE"와 동일한지 아닌지를 체크하는 단계를 포함한다. 만일 가장 중요한 비트-플레인 값(m)이 산술 탈출 심볼과 동일하지 않으면, 알고리즘(312ba)은 취소되고(aborted, "break" 상태) 그때 알고리즘(312ba)의 나머지 명령들은 생략된다(skipped). 따라서, 단계 312bb에서 값(b) 및 값(a)의 설정과 함께 과정의 실행이 계속된다. 이와 대조적으로, 만일 디코딩된 가장 중요한 비트=플레인 값(m)이 산술 탈출 심볼, 또는 "ARITH-ESCAPE"와 동일하면, 레벨 값 "lev"은 1이 증가한다. 레벨 값 "esc_nb"는 만일 변수 "lev"가 7보다 크면, 레벨 값 "lex"와 동일하도록 설정되는데, 이 경우에 있어서, 변수 "esc_nb"는 7과 동일하게 설정된다. 언급된 것과 같이, 알고리즘(312ba)은 그리고 나서 디코딩된 가장 중요한 비트-플레인 값(m)이 산술 탈출 심볼과 다를 때까지 반복되는데, 이때 변형된 콘텍스트가 사용된다(그 이유는 함수 "arith_get_pk()"의 입력 파라미터가 변수 "esc_nb"의 값에 따라 적용되기 때문이다).
알고리즘(312ba)의 1회 실행 또는 반복 실행을 사용하여 가장 중요한 비트-플레인이 디코딩되자마자, 즉, 산술 탈출 심볼과는 다른 가장 중요한 비트-플레인 값(m)이 디코딩되자마자, 스펙트럼 값 변수 "b"는 가장 중요한 비트-플레인 값(m)의 복수의(예를 들면 2) 더 중요한 비트들과 동일하도록 설정되고, 스펙트럼 값 변수 "a"는 가장 중요한 비트-플레인 값(m)의 복수의(예를 들면 2) 덜 중요한 비트들로 설정된다. 이러한 기능성에 관한 상세한 설명이 예를 들면, 참조 번호 312bb에 도시된다.
그 뒤에, 단계 312c에서, 산술 정지 심볼이 존재하는지가 체크된다. 이는 가장 중요한 비트-플레인 값(m)이 0과 동일하고 변수 "lev"가 0보다 큰 경우이다. 따라서, 가장 중요한 비트-플레인 값(m)이 0과 동일한, "드문(unusual)"상태에 의해 산술 정지 상태가 신호화되는데, 변수 "lev"는 증가된 수치 중량이 가장 중요한 비트-플레인 값(m)과 관련된다는 것을 나타낸다. 바꾸어 말하면, 만일 비트스트림이 최소 수치 중량보다 높은, 수치 중량이 정상 인코딩 상황에서 발생하지 않는 상태인, 0과 동일한 가장 중요한 비트-플레인 값으로 주어져야만 하는 것을 나타내면, 산술 정지 상태가 검출된다. 바꾸어 말하면, 만일 인코딩된 산술 탈출 심볼 뒤에 0의 가장 중요한 비트 플레인 값이 이어지면, 산술 정지 상태가 신호화된다.
단계 212c에서 실행되는, 산술 정지 상태가 존재하는지의 평가 후에, 예를 들면, 도 3에서의 참조 번호 212d에 도시된 것과 같은, 덜 중요한 비트-플레인들이 획득된다. 각각의 덜 중요한 비트-플레인을 위하여, 두 개의 이진 값이 디코딩된다. 이진 값들 중의 하나는 값(a, 스펙트럼 값들의 투플의 제 1 스펙트럼 값)과 관련되고 이진 값들 중의 하나는 값(b, 스펙트럼 값들의 투플의 제 2 스펙트럼 값)과 관련된다. 덜 중요한 비트-플레인들의 수는 변수(lev)에 의해 지정된다.
하나 또는 그 이상의 덜 중요한 비트-플레인의 디코딩에서 알고리즘(212ba)이 반복적으로 실행되는데, 알고리즘(212ba)의 실행의 수는 변수(lev)에 의해 결정된다. 알고리즘(212ba)의 첫 번째 반복은 단계 212bb에서 설정된 것과 같이 변수들(a, b)의 값들을 기초로 하여 실행된다는 것을 이해하여야 한다. 알고리즘(212ba)의 또 다른 반복들은 변수들(a, b)의 업데이트된 변수 값들을 기초로 하여 실행된다.
반복의 시작에서, 누적-주파수-테이블이 선택된다. 그 뒤에, 변수(r)의 값(a)을 획득하기 위하여 산술 디코딩이 실행되는데, 변수(r)의 값은 복수의 덜 중요한 비트들, 예를 들면, 변수(a)와 관련된 하나의 덜 중요한 비트 및 변수(b)와 관련된 하나의 덜 중요한 비트를 설명한다. 함수 "ARITH_DECODE"(예를 들면, 도 5g에 정의된 것과 같은)는 값(r)을 획득하기 위하여 사용되는데, 산술 디코딩을 위하여 누적-주파수-테이블 "arith_cf_r"이 사용된다.
그 뒤에, 변수들(a 및 b)의 값들이 업데이트된다. 이러한 목적을 위하여, 변수(a)는 하나의 비트에 의해 왼쪽으로 시프트되고, 시프트된 변수(a)의 가장 덜 중요한 비트가 값(r)의 가장 덜 중요한 비트에 의해 정의되는 값으로 설정된다. 변수(b)는 하나의 비트에 의해 왼쪽으로 시프트되고, 변수(r)의 비트 1은 변수(r)의 이진 표현에서 2의 수치 중령을 갖는다. 알고리즘(412ba)은 그리고 나서 모든 덜 중요한 비트들이 디코딩될 때까지 반복된다.
덜 중요한 비트-플레인들의 디코딩 후에, 어레이 지수들 2*i 및 2*i+1을 갖는 상기 어레이의 엔트리들 내에 변수들(a, b)의 값들이 저장된다는 점에서 어레이 "x_ac_dec"가 업데이트된다.
그 뒤에, 함수 "arith_update_context(i,a,b)"를 호출함으로써 콘텍스트 상태가 업데이트되는데, 이들의 상세한 설명은 도 5g를 참조하여 아래에 설명될 것이다. 바람직하게는, 도 5l에 정의된 것과 같은, 함수 "arith_update_context(i,a,b)"가 사용될 수 있다.
단계 312에서 실행되는, 콘텍스트 상태의 업데이트에 이어서, 실행 변수(i, running variable)가 1/2dml 값에 도달할 때까지 또는 산술 정지 상태가 검출될 때까지, 알고리즘들(312, 313)이 반복된다.
그 뒤에, 참조 번호 315에 도시된 것과 같이, 완료 알고리즘(finish algorithm) "arith_finish()"이 실행된다. 완료 알고리즘 "arith_finish()"의 상세한 설명은 도 5m을 참조하여 아래에 설명될 것이다.
완료 알고리즘(315)에 이어서, 알고리즘(314)을 사용하여 스펙트럼 값들의 사인들이 디코딩된다. 도시된 것과 같이, 0과 다른 스펙트럼 값들의 사인들은 개별적으로 코딩된다. 알고리즘(314)에 있어서, 비-제로인, i=0 및 i=1g-1 사이의 지수(i)를 갖는 모든 스펙트럼 값들의 사인들이 판독된다. i=0 및 i=1g-1 사이의 스펙트럼 값 지수(i)를 갖는 각각의 비-제로 스펙트럼 값을 위하여, 비트스트림으로부터 값(s, 일반적으로 단일 비트)이 판독된다. 만일 비트스트림으로부터 판독된 값(s)이 1과 동일하면, 상기 스펙트럼 값의 사인은 반전된다(inverted). 이러한 목적을 위하여, 지수(i)를 갖는 스펙트럼 값이 0과 동일한지를 결정하고 디코딩된 스펙트럼 값들의 사인을 업데이트하기 위하여, 어레이 "x_ac_dec"로의 액세스가 만들어진다. 그러나, 변수들(a, b)의 사인들은 사인 디코딩(304)에서 변하지 않는다는 것을 이해하여야 한다.
사인들 디코딩(315) 이전에 완료 알고리즘을 실행함으로써, ARITH-STOP 심볼 후에 모든 필요한 빈(bin)들을 리셋하는 것이 가능하다.
덜 중요한 비트-플레인들의 값들을 획득하기 위한 개념은 본 발명에 따른 일부 실시 예들에서 그렇게 적절하지는 않다는 것을 이해하여야 한다. 일부 실시 예들에서, 어떤 덜 중요한 비트-플레인들의 디코딩은 생략될 수 있다. 대안으로서, 이러한 목적을 위하여 서로 다른 디코딩 알고리즘들이 사용될 수 있다.
11.2 도 4에 따른 디코딩 순서
다음에서, 스펙트럼 값들의 디코딩 순서가 설명될 것이다.
양자화된 스펙트럼 계수들 "x_ac_dec[]"은 가장 낮은 주파수 계수로부터 시작하고 가장 높은 주파수 계수로 진행하여 무잡음으로 인코딩되고 전송된다(예를 들면 비트스트림 내에).
따라서, 양자화된 스펙트럼 계수들 "x_ac_dec[]"은 가장 낮은 주파수 계수로부터 시작하고 가장 높은 주파수 계수로 진행하여 무잡음으로 인코딩되고 전송된다. 양자화된 스펙트럼 계수들은 이른바 2-투플(a, b, 또한 {a, b}로 지정되는) 내에서 모이는 두 개의 연속적인 계수들(a, b)의 그룹들에 의해 디코딩된다. 여기서 양자화된 스펙트럼 계수들은 또한 때대로 "q_dec"로 지정된다는 것을 이해하여야 한다.
주파수-도메인 모드(예를 들면, ISO/IEC 14496, 파트 3, 서브파트 4에 논의되 것과 같은, 변형 이산 코사인 변환을 사용하여 획득되는, 고급 오디오 코딩을 위한 디코딩된 계수들)를 위한 디코딩된 계수들 "x_ac_dec[]"(예를 들면, ISO/IEC 14496, 파트 3, 서브파트 4에 논의되 것과 같은, 변형 이산 코사인 변환을 사용하여 획득되는, 고급 오디오 코딩을 위한 디코딩된 계수들)은 그리고 나서 어레이 "x_ac_quant[g][win][sfb][bin]" 내에 저장된다. 무잡음 코딩 코드워드의 전송의 순서는 그것들이 수신되고 어레이 내에 저장되는 순서로 디코딩될 때, "bin"이 가장 빨리 증대하는 지수이고, "g"가 가장 느리게 증대하는 지수인 것과 같다. 코드워드 내에서, 디코딩의 순서는 a,b이다(즉, a 그리고 나서 b).
변환 코딩-여기(transform coded-excitation, TCX)를 위한 디코딩된 계수들 "x_ac_dec[]"은 예를 들면, 어레이 "x_tex-invquant[win][bin]" 내에 직접 저장되며, 무잡음 코딩 코드워드의 전송의 순서는 그것들이 수신되고 어레이 내에 저장되는 순서로 디코딩될 때, "bin"이 가장 빨리 증대하는 지수이고, "win"이 가장 느리게 증대하는 지수인 것과 같다. 코드워드 내에서, 디코딩의 순서는 a,b이다(즉, a 그리고 나서 b). 바꾸어 말하면, 만일 스펙트럼 값들이 음성 코더의 선형 예측 필터의 변환 코딩 여기를 설명하면, 스펙트럼 값들(a, b)은 변환 코딩 여기의 인접하고 증가하는 주파수들과 관련된다. 낮은 주파수와 관련된 스펙트럼 계수들은 일반적으로 높은 주파수와 관련된 스펙트럼 계수들 이전에 인코딩되고 디코딩된다.
특히, 오디오 디코더(200)는 주파수-도메인-대-시간-도메인 신호 변환을 사용하는 시간-도메인 오디오 신호 표현의 "직접적인" 발생 및 주파수-도메인-대-시간-도메인 디코더와 주파수-도메인-대-시간-도메인 신호 변환기에 의해 여기되는 선형 예측 필터 모두를 사용하는 시간-도메인 오디오 신호 표현의 "간접적인" 제공 모두를 위하여, 산술 디코더(230)에 의해 제공되는, 디코딩된 주파수-도메인 표현(232)을 적용하도록 구성될 수 있다.
바꾸어 말하면, 여기에 그 기능성이 상세히 설명되는, 산술 디코더는 주파수-도메인 내에 인코딩된 오디오 콘텐츠의 시간-주파수-도메인 표현의 스펙트럼 값들을 디코딩하기에, 그리고 선형-예측-도메인 내에 인코딩된 음성 신호를 디코딩(또는 합성)하도록 적용된 선형-예측-필터를 위한 자극 신호의 시간-주파수-도메인 표현을 제공하기에 적합하다. 따라서, 산술 디코더는 주파수-도메인 인코딩된 오디오 콘텐츠 및 선형-예측-주파수-도메인 인코딩된 오디오 콘텐츠(변환-코딩-여기-선형-예측-주파수-도메인 모드) 모두를 처리할 수 있는 오디오 디코더에서의 사용에 적합하다.
11.3 도 5a 및 5b에 따른 콘텍스트 초기화
다음으로, 단계 310에서 실행되는, 콘텍스트 초기화(또한 "콘텍스트 매핑"으로서 지정되는)가 설명될 것이다.
콘텍스트 초기화는 알고리즘 "arith_map_context()"에 따라 과거 콘텍스트 및 현재 콘텍스트 사이의 매핑을 포함하는데, 이것의 첫 번째 실시 예가 도 5a에 도시되고 두 번째 실시 예가 도 5b에 도시된다.
도시된 것과 같이, 현재 콘텍스트는 2의 첫 번째 차원 및 "n_context"의 두 번째 차원을 갖는 어레이의 형태를 취하는 글로벌 변수 "q[2][n_context]" 내에 저장된다. 과거 콘텍스트는 선택적으로(반드시 필요하지 않은) "n_context"의 2차원을 갖는(만일 사용되면) 테이블의 형태를 취하는 변수 "qs[n_context]" 내에 저장될 수 있다.
도 5a에서의 알고리즘 "arith_map_context"를 참조하면, 입력 변수(N)는 현재 윈도우의 길이를 설명하고 입력 변수 "arith_reset_flag"는 콘텍스트가 리셋되어야만 하는지를 나타낸다. 게다가, 글로벌 변수 "previous_N"은 이전 윈도우의 길이를 설명한다. 여기서는 일반적으로 윈도우와 관련된 스펙트럼 값들의 수는 적어도 대략, 시간-도메인 샘플들에 대하여 상기 윈도우의 길이의 반과 동일한 것으로 이해되어야 한다. 게다가, 스펙트럼 값들의 2-투플의 수는 적어도 대략, 시간-도메인 샘플들에 관하여 상기 윈도우의 길이의 1/4과 동일한 것으로 이해되어야 한다.
우선, 플래그 "arith_reset_flag"는 콘텐츠가 반드시 리셋되어야 하는지를 결정한다.
도 5a의 예를 참조하면, 콘텍스트의 매핑은 알고리즘 "arith_map_context()"에 따라 실행될 수 있다. 만일 플래그 "arith_reset_flag"가 활성화되고 그 결과 콘텐츠가 리셋되어야만 하는 것으로 나타나면, 함수 "arith_map_context()"는 j=0 내지 j=N/4-1에 대한 현재 콘텍스트 어레이(q 내지 0)의 엔트리들 "q[0][j]를 설정하는 것으로 이해하여야 한다. 그렇지 않으면, 즉, 만일 플래그 "arith_reset_flag"가 활성화되면, 현재 콘텍스트 어레이(q)의 엔트리들 "q[0][j]은 현재 콘텍스트 어레이(q)의 엔트리들 "q[1][k]"로부터 유래된다. 도 5a에 따른 함수 "arith_map_context()"는 만일, 현재(예를 들면, 주파수-도메인-인코딩된) 오디오 프레임과 관련된 스펙트럼 값들의 수가 j=k=0 내지 j=k=N/4-1에 대하여 이전 오디오 프레임과 관련된 스펙트럼 값들의 수와 동일하면, 현재 콘텍스트 어레이(q)의 엔트리들 "q[0][j]"을 현재 콘텍스트 어레이(q)의 엔트리들 "q[1][k]"로 설정한다는 것을 이해하여야 한다.
만일 현재 오디오 프레임과 관련된 스펙트럼 값들의 수가 이전 오디오 프레임과 관련된 스펙트럼 값들의 수와 다르면 더 복잡한 매핑이 실행된다. 그러나, 이러한 경우에서의 매핑에 대한 상세한 설명은 도 5a의 슈도-프로그램 코드에서 참조되는 것과 같이, 특히 본 발명의 중요한 개념과 반드시 관련되지는 않는다.
게다가, 수치 현재 콘텍스트 값(c)을 위한 초기화 값은 함수 "arith_map_context()"에 의해 반환된다. 이러한 초기화 값은 예를 들면, 12-비트에 의해 왼쪽으로 시프트되는 엔트리 "q[0][0]"의 값과 동일하다. 따라서, 수치 (현재) 콘텍스트 값(c)은 반복 업데이트를 위하여 적절히 초기화된다.
게다가, 도 5b는 대안으로서 사용될 수 있는 알고리즘 "arith_map_context()"의 또 다른 실시 예를 도시한다.
위를 요약하면, 플래그 "arith_reset_flag"는 콘텍스트가 반드시 리셋되는지를 결정한다. 만일 플래그가 참(true)이면, 알고리즘 "arith_reset_flag"의 리셋 서브-알고리즘(500a)이 호출된다. 그러나, 대안으로서, 만일 플래그 "arith_reset_flag"가 불활성화되면(콘텍스트의 어떠한 리셋도 실행되지 않아야 한다는 것을 나타내는), 디코딩 과정은 콘텍스트 엘리먼트 벡터(r, 또는 어레이)가 q[1][] 내에 저장된 이전 프레임의 콘텍스트 엘리먼트들 q[0][] 내로 복사하고 매핑함으로써 업데이트되는 초기화 단계와 함께 시작한다. q 내의 콘텍스트 엘리먼트들은 2-투플 당 4-비트 상에 저장된다. 콘텍스트 엘리먼트의 복사 및/또는 매핑은 예를 들면, 서브 알고리즘(500b)에서 실행된다.
게다가, 만일 콘텍스트가 확실히 결정될 수 없으면, 예를 들면, 만일 이전 프레임의 데이터가 이용가능하지 않고, 만일 "arith_reset_flag"가 설정되지 않으면, 스펙트럼 데이터의 디코딩은 지속될 수 없고 현재 "arith_data()" 엘리먼트의 판독은 생략된다는 것을 이해하여야 한다.
도 5b의 실시 예에서, 디코딩 과정은 qs 내에 저장된 과거 콘텍스트 및 현재 콘텍스트 프레임(q) 사이에서 행해지는 초기화 단계와 함께 시작한다. 과거 콘텍스트(qs)는 주파수 라인 당 2-비트 상에 저장된다.
11.4 도 5c 및 5d에 따른 상태 값 계산
다음에서, 상태 값 계산(312a)이 상세히 설명될 것이다.
도 5c를 참조하여 첫 번째 바람직한 알고리즘이 설명되고 도 5d를 참조하여 첫 번째 바람직한 알고리즘이 설명될 것이다.
수치 현재 콘텍스트 값(c, 도 3에 도시된 것과 같은)은 함수"arith_get_context(c,i,N)", 도 5c에 도시된 슈도 프로그램 코드 표현의 반환 값으로서 획득될 수 있다는 것을 이해하여야 한다. 그러나, 대안으로서, 수치 현재 콘텍스트 값(c)은 함수"arith_get_context(c,i)", 도 5d에 도시된 슈도 프로그램 코드 표현의 반환 값으로서 획득될 수 있다.
상태 값의 계산과 관련하여, 상태 계산을 위하여, 즉, 수치 현재 콘텍스트 값(c)의 계산을 위하여 사용되는 콘텍스트를 도시한, 도 4가 또한 참조된다. 도 4는 시간 및 주파수 모두에 걸쳐, 스펙트럼 값들의 2차원 표현을 도시한다. 가로좌표(410)는 시간을 설명하고, 세로좌표(412)는 주파수를 설명한다. 도 4에 도시된 것과 같이, 디코딩하기(바람직하게는 수치 콘텍스트 콘텐츠 값을 사용하여) 위한 스펙트럼 값들의 투플(420)은 시간-지수(t0) 및 주파수 지수(i)와 관련된다. 도시된 것과 같이, 시간 지수(t0)에 대하여, 주파수 지수들(i-1, i-2, 및 i-3)을 갖는 투플들이 주파수 지수(i)를 갖는 투플(120)의 스펙트럼 값들이 인코딩되는 시간에서 이미 디코딩된다. 도 4에 도시된 것과 같이, 시간 지수(t0) 및 주파수 지수(i-1)를 갖는 스펙트럼 값의 투플(430)은 스펙트럼 값들의 투플(420)이 디코딩되기 이전에 이미 디코딩되고 스펙트럼 값들의 투플(430)은 스펙트럼 값들의 투플(420)의 디코딩을 위하여 사용되는, 콘텍스트를 위하여 고려된다. 유사하게, 시간 지수(t0-1) 및 주파수 지수(i-1)를 갖는 스펙트럼 값의 투플(440), 시간 지수(t0-1) 및 주파수 지수(i)를 갖는 스펙트럼 값의 투플(450), 및 시간 지수(t0-1) 및 주파수 지수(i+1)를 갖는 스펙트럼 값의 투플(460)은 스펙트럼 값들의 투플(420)이 디코딩되기 이전에 이미 디코딩되고 스펙트럼 값들의 투플(430)은 스펙트럼 값들의 투플(420)의 디코딩을 위하여 사용되는, 콘텍스트를 위하여 고려된다. 투플(420)의 스펙트럼 값들이 디코딩되고 콘텍스트를 위하여 고려되는 시간에서 이미 디코딩된 스펙트럼 값들(계수들)이 음영처리된(sjaded) 정사각형으로 도시된다. 이와 대조적으로, 이미 디코딩되나(투플(420)의 스펙트럼 값들이 디코딩되는 시간에서) 콘텍스트를 위하여 고려되지 않는 일부 다른 스펙트럼 값들(투플(420)의 스펙트럼 값들이 디코딩되는 시간에서 아직 디코딩되지 않은)은 점선을 갖는 정사각형에 의해 도시된다. 점선을 갖는 정사각형에 의해 표현되는 투플들 및 점선을 갖는 원에 의해 표현되는 투플들은 투플(420)의 스펙트럼 값들을 디코딩하기 위하여 콘텍스트를 결정하도록 사용되지 않는다.
그러나, 투플(420)의 스펙트럼 값들을 디코딩하기 위한 콘텍스트의 "규칙적인" 또는 "정상" 계산을 위하여 사용되지 않는, 이러한 스펙트럼 값들 중 일부는 그럼에도 불구하고, 그것들의 규모와 관련하여 개별적으로 또는 함께, 미리 결정된 상태를 만족시키는 복수의 이미 인코딩된 인접한 스펙트럼 값의 검출을 위하여 평가될 수 있다는 것을 이해하여야 한다.
도 5c를 참조하여, 알고리즘 "arith_get_context(c,i,N)"의 상세한 설명이 설명될 것이다. 도 5c는 잘 알려진 C-언어 및/또는 C++ 언어의 관례를 사용하는, 슈도-프로그램 코드 형태의 상기 함수 "arith_get_context(c,i,N)"의 기능성을 도시한다. 따라서, 함수 "arith_get_context(c,i,N)"에 의해 실행되는 수치 현재 콘텍스트 값 "c"의 계산에 대한 일부 더 상세한 설명이 설명될 것이다.
함수 "arith_get_context(c,i,N)"는 입력 변수로서, 수치 이전 콘텍스트 값(c)에 의해 설명될 수 있는, "구(old) 상태 콘텍스트"를 수신한다는 것을 이해하여야 한다. 함수 "arith_get_context(c,i,N)"는 또한 입력 변수로서, 디코딩되는 스펙트럼 값들의 2-투플의 지수(i)를 수신한다. 지수(i)는 일반적으로 주파수 지수이다. 입력 변수(N)는 스펙트럼 값들이 인코딩되는, 윈도우의 윈도우 길이를 설명한다.
함수 "arith_get_context(c,i,N)"는 출력 값으로서, 업데이트된 상태 콘텍스트를 설명하고 수치 현재 콘텍스트 값으로서 고려될 수 있는, 입력 변수(c)의 업데이트된 버전을 제공한다. 요약하면, 함수 "arith_get_context(c,i,N)"는 입력 변수로서 수치 이전 콘텍스트 값(c)을 수신하고 수치 현재 콘텍스트 값으로서 고려되는, 이것의 업데이트된 버전을 제공한다. 게다가, 함수 "arith_get_context"는 변수들(i,N)을 고려하며, 또한 "글로벌" 어레이(q[][])를 액세스한다.
함수 "arith_get_context(c,i,N)"의 상세한 설명과 관련하여, 초기에 이진 형태로 수치 이전 콘텍스트 값을 표현하는, 변수(c)는 단계 504a에서 4-비트에 의해 오른쪽으로 시프트된다는 것을 이해하여야 한다. 따라서, 수치 이전 콘텍스트 값(입력 변수(c)에 의해 표현되는)의 네 개의 가장 덜 중요한 비트들이 버려진다. 또한, 수치 이전 콘텍스트 값들의 다른 비트의 수치 중량은 예를 들면, 16의 팩터가 감소된다.
게다가, 만일 2-투플의 지수(i)가 N/4-1보다 작으면, 즉, 최대 값을 취하지 않으면, 수치 현재 콘텍스트 값은 엔트리 q[0][i+1]의 값이 단계 504a에서 획득되는 시프트된 콘텍스트 값의 비트 12 내지 15의 비트들에(즉, 212, 213, 214, 및 215의 수치 중량을 갖는 비트들에) 가산된다는 점에서 변경된다. 이러한 목적을 위하여, 어레이 q[][]의 엔트리 q[0][i+1]는(더 정확히는, 상기 어레이에 의해 표현되는 값의 이진 표현) 12-비트에 의해 왼쪽으로 시프트된다. 엔트리 q[0][i+1]에 의해 표현되는 값의 시프트된 버전은 그리고 나서 단계 504a에서 유래되는, 콘텍스트 값(c)에, 즉, 수치 이전 콘텍스트 값의 비트 시프트된(4-비트에 의해 오른쪽으로 시프트된) 수 표현에 가산된다. 어레이 q[][]의 엔트리 q[0][i+1]은 오디오 콘텐츠의 이전 일부(예를 들면, 도 4를 참조하여 정의된 것과 같은, 시간 지수(t0-1)를 갖는 오디오 콘텐츠의 일부) 및 현재 디코딩되는(함수 "arith_get_context(c,i,N)"에 의해 출력되는 수치 현재 콘텍스트 값(c)을 사용하여) 스펙트럼 값들의 투플보다 높은 주파수(예를 들면, 도 4를 참조하여 정의된 것과 같은, 주파수 지수(i+1)를 갖는 주파수)와 관련된 서브-영역 값을 표현한다는 것을 이해하여야 한다. 바꾸어 말하면, 만일 스펙트럼 값들의 투플(420)이 수치 현재 콘텍스트 값을 사용하여 디코딩되면, 엔트리 q[0][i+1]는 이전에 디코딩된 스펙트럼 값들의 투플(460)을 기초로 할 수 있다.
어레이 q[][](12-비트에 의해 왼쪽으로 시프트된)의 엔트리 q[0][i+1]의 선택적 가산이 참조 번호 504b에 도시된다. 도시된 것과 같이, 엔트리 q[0][i+1]에 의해 표현되는 값의 가산은 만일 주파수 지수(i)가 가장 높은 주파수 지수 i=N/4-1을 갖는 스펙트럼 값들의 투플을 지정하지 않으면 당연히 실행된다.
그 뒤에, 단계 504c에서, 변수(c)의 업데이트된 값을 획득하기 위하여 변수(c)의 값이 0xFFF0의 16진법 값을 갖는 AND-결합인, 불 AND-연산이 실행된다. 그러한 AND-연산을 실행함으로써, 변수(c)의 네 개의 가장 덜 중요한 비트들이 효율적으로 0으로 설정된다.
504d 단계에서, 엔트리 q[1][i-1]의 값은 그렇게 함으로써 변수(c)의 값을 업데이트하기 위하여, 504c 단계에서 획득된, 변수(c)의 값에 가산된다. 그러나, 단계 504d에서 변수(c)의 상기 업데이트는 만일 디코딩하기 위한 2-투플의 주파수 지수(i)가 제로보다 클 때만 실행된다. 엔트리 q[1][i-1]는 수치 현재 콘텍스트 값을 사용하여 디코딩되는 스펙트럼 값들의 주파수들보다 작은 주파수들을 위한 오디오 콘텐츠의 현재 부의 이전에 디코딩된 스펙트럼 값들의 투플을 기초로 하는 콘텍스트 서브-영역 값이라는 것을 이해하여야 한다. 예를 들면, 어레이 q[][]의 엔트리 q[1][i-1]는 만일 스펙트럼 값들의 투플(420)이 함수 "arith_get_context(c,i,N)에 의해 반환되는 수치 현재 콘텍스트 값을 사용하여 디코딩되면, 시간 지수(t0) 및 주파수 지수(i-1)을 갖는 투플(430)과 관련될 수 있다.
요약하면, 수치 이전 콘텍스트 값의 비트들 0, 1, 2, 및 3(즉, 네 개의 가장 덜 중요한 비트들의 부)은 그것들을 수치 이전 콘텍스트 값의 이진 수 표현 외부로 시프트함으로써 단계 504a에서 버려진다. 게다가, 시프트된 변수(c, 즉, 시프트된 수치 이전 콘텍스트 값)의 비트들 12, 13, 14, 및 15는 단계 504b에서 콘텍스트 서브-영역 값 q[0][i+1]에 의해 정의되는 값을 취하도록 설정된다. 시프트된 수치 이전 콘텍스트 값(즉, 원래 수치 이전 콘텍스트 값의 비트들 4, 5, 6, 및 7)의 비트들 0, 1, 2, 및 3은 단계 504c 및 504d에서 콘텍스트 서브-영역 값 q[1][i-1]에 의해 덮어쓰기가 된다(overwritten).
그 결과, 수치 이전 콘텍스트 값의 비트들 0 내지 3은 스펙트럼 값들의 투플(432)과 관련된 콘텍스트 서브-영역 값을 표현하고, 수치 이전 콘텍스트 값의 비트들 4 내지 7은 스펙트럼 값들의 투플(434)과 관련된 콘텍스트 서브-영역 값을 표현하며, 수치 이전 콘텍스트 값의 비트들 8 내지 11은 스펙트럼 값들의 투플(440)과 관련된 콘텍스트 서브-영역 값을 표현하며 수치 이전 콘텍스트 값의 비트들 12 내지 15는 스펙트럼 값들의 투플(450)과 관련된 콘텍스트 서브-영역 값을 표현한다고 할 수 있다. 함수 "arith_get_context(c,i,N)" 내로 입력되는, 수치 이전 콘텍스트 값은 스펙트럼 값들의 투플(430)의 디코딩과 관련된다.
함수 "arith_get_context(c,i,N)"의 출력 변수로서 획득되는, 수치 현재 콘텍스트 값은 스펙트럼 값들의 투플(420)의 디코딩과 관련된다. 따라서, 수치 현재 콘텍스트 값들의 비트들 0 내지 3은 스펙트럼 값들의 투플(430)과 관련된 콘텍스트 서브-영역 값을 설명하고, 수치 현재 콘텍스트 값들의 비트들 4 내지 7은 스펙트럼 값들의 투플(440)과 관련된 콘텍스트 서브-영역 값을 설명하며, 수치 현재 콘텍스트 값들의 비트들 8 내지 11은 스펙트럼 값들의 투플(450)과 관련된 콘텍스트 서브-영역 값을 설명하며, 수치 현재 콘텍스트 값들의 비트들 12 내지 15는 스펙트럼 값들의 투플(460)과 관련된 콘텍스트 서브-영역 값을 설명한다. 따라서, 수치 이전 콘텍스트 값의 일부, 주로 수치 이전 콘텍스트 값의 비트들 8 내지 15는 또한 수치 이전 콘텍스트 값의 비트들 4 내지 11과 같은, 수치 이전 콘텍스트 값 내에 포함된다고 할 수 있다. 이와 대조적으로, 현재 수치 이전 콘텍스트 값의 비트들 0 내지 7은 수치 이전 콘텍스트 값의 수 표현으로부터 수치 현재 콘텍스트 값의 수 표현을 끌어낼 때 버려진다.
단계 504e에서, 만일 디코딩되는 2-투플의 주파수 지수(i)가 예를 들면, 3의 미리 결정된 수보다 크면, 수치 현재 콘텍스트 값을 표현하는 변수(c)는 선택적으로 업데이트된다. 이러한 경우에 있어서, 즉, 만일 i가 3보다 크면, 콘텍스트 서브-영역 값들 q[1][i-3], q[1][i-2], 및 q[1][i-1]의 합이 미리 결정된 값, 예를 들면 5보다 작은지가(또는 동일한지가) 결정된다. 만일 상기 콘텍스트 서브-영역 값들의 합이 미리 결정된 값보다 작은 것으로 밝혀지면, 예를 들면, 0x10000의 12진법 값이 변수(c)에 가산된다. 따라서, 변수(c)는 만일 콘텍스트 서브-영역 값들 q[1][i-3], q[1][i-2], 및 q[1][i-1]가 특히 작은 합계 값을 포함하는 상태가 존재하는지를 표현한다. 예를 들면, 수치 현재 콘텍스트 값의 비트 16은 그러한 상태를 나타내기 위한 플래그로서 작용할 수 있다.
결론적으로, 함수 "arith_get_context(c,i,N)"의 반환 값은 단계들 504a, 504b, 504c, 504d, 및 504e에 의해 결정되는데, 수치 현재 콘텍스트 값은 단계들 504a, 504b, 504c, 및 504d에서 수치 이전 콘텍스트 값으로부터 유래되고, 평균적으로, 특히 작은 절대 값들을 갖는 이전에 디코딩된 스펙트럼 값들의 환경을 나타내는 플래그는 단계 504e에서 파생되고 변수(c)에 가산된다. 따라서, 단계들 504a, 504b, 504c, 504d에서 획득되는 변수(c)의 값은 만일, 단계 504e에서 평가된 상태가 충족되지 않으면, 단계 504f에서 함수 "arith_get_context(c,i,N)"의 반환 값으로서 반환된다. 이와 대조적으로, 단계들 504a, 504b, 504c, 및 504d에서 파생된, 변수(c)의 값은 0x10000의 12진법 값에 의해 증가되고 이러한 증가 연산의 결과는 만일 단계 504e에서 평가된 상태가 충족되면, 단계 504e에서 반환된다.
위를 요약하면, 무잡음 디코더는 무부호의(unsigned) 양자화된 스펙트럼 계수(아래에 더 상세히 설명될 것과 같이)의 2-투플들을 출력한다. 처음에 콘텍스트의 상태(c)가 디코딩되는 2-투플을 "둘러싸는" 이전에 디코딩된 스펙트럼 계수들을 기초로 하여 계산된다. 바람직한 일 실시 예에서, 상태(예를 들면, 수치 콘텍스트 값(c)에 의해 표현되는)는 단지 두 개의 새로운 2-투플들만을 고려하여, 마지막으로 디코딩된 2-투플(예를 들면, 430 및 460의 2-투플들)의 콘텍스트 상태를 사용하여 증가적으로 업데이트된다. 상태는 17-비트들 상에 코딩되고(예를 들면, 수치 현재 콘텍스트 값의 수 표현을 사용하여) 함수 "arith_get_context()"에 의해 반환된다. 상세한 설명을 위하여, 도 5c의 프로그램 코드 표현이 참조된다.
게다가, 함수 "arith_get_context()"의 대안의 실시 예의 슈도 프로그램 코드가 도 5d에 도시되는 것을 이해하여야 한다. 도 5d에 따른 함수 "arith_get_context()"는 도 5c에 따른 함수 "arith_get_context(c,i,N)"와 유사하다. 그러나 도 5d에 따른 "arith_get_context(c,i)"는 i=0의 최소 주파수 지수 또는 i=N/4-1의 최대 주파수의 값을 포함하는 스펙트럼 값들의 투플들의 특별한 처리 또는 디코딩을 포함하지 않는다.
11.5 매핑 룰 선택
다음에서, 매핑 룰, 예를 들면, 코드워드 값의 심볼 코드 상의로의 매핑을 설명하는 누적-주파수-테이블의 선택이 설명될 것이다. 매핑 룰의 선택은 수치 현재 콘텍스트 값(c)에 의해 설명되는, 콘텍스트 상태에 따라 만들어진다.
11.5.1 도 5e에 따른 알고리즘을 사용하는 매핑 룰의 선택
다음에서, 함수 "arith_get_pk(c)"를 사용하여 매핑 룰의 선택이 설명될 것이다. 함수 "arith_get_pk(c)"는 스펙트럼 값들의 투플을 제공하기 위하여 코드 값 "acod_m"을 디코딩할 때 서브-알고리즘(312ba)의 처음에서 호출된다는 것을 이해하여야 한다. 함수 "arith_get_pk(c)"는 알고리즘(312b)의 서로 다른 반복들에서 서로 다른 인수(argument)들로 호출된다. 예를 들면, 알고리즘(312b)의 첫 번째 반복에서, 함수 "arith_get_pk(c)"는 단계 312a에서 함수 "arith_get_context(c,i,N)의 이전 실행에 의해 제공되는, 수치 현재 콘텍스트 값(c)과 동일한 인수로 호출된다. 이와 대조적으로, 서브-알고리즘(312ba)의 또 다른 반복에서, 함수 "arith_get_pk(c)"는 단계 312a에서 함수 "arith_get_context(c,i,N)의 이전 실행에 의해 제공되는, 수치 현재 콘텍스트 값(c) 및 변수 "esc_nb"의 값의 비트-시프트된 버전의 합인 인수로 호출되는데, 된다. 변수 "esc_nb"의 값은 17-비트에 의해 왼쪽으로 시프트된다. 따라서, 함수 "arith_get_context(c,i,N)에 의해 제공되는 수치 현재 콘텍스트 값(c)은 알고리즘(312ba)의 첫 번째 반복에서, 즉, 상대적으로 작은 스펙트럼 값들의 디코딩에서 함수 "arith_get_pk()"의 입력 변수로서 사용된다. 이와 대조적으로, 상대적으로 큰 스펙트럼 값들을 디코딩할 때, 함수 "arith_get_pk()"의 입력 변수는 도 3에 도시된 것과 같이, 변수 "esc_nb"의 값이 고려된다는 점에서 변경된다.
이제 함수 "arith_get_pk(c)"의 첫 번째 바람직한 실시 예의 슈도 프로그램 코드 표현을 도시한, 도 5e를 참조하면, 함수 "arith_get_pk()"는 입력 값으로서 변수(c)를 수신하고, 변수(c)는 콘텍스트의 상태를 설명하며, 함수 "arith_get_pk(c)"의 입력 변수(c)는 적어도 일부 상황에서 함수 "arith_get_pk()"에 의한 반환 변수로서 제공되는 수치 현재 콘텍스트 값과 동일하다는 것을 이해하여야 한다. 게다가, 함수 "arith_get_pk()"는 일벽 변수로서, 확률 모델의 지수를 설명하고 매핑 룰 지수 값으로 고려될 수 있는, 변수 "pki"를 제공한다는 것을 이해하여야 한다.
도 5e를 참조하면, 함수 "arith_get_pk()"는 변수 초기화(506a)를 포함하는 것을 알 수 있는데, 변수 "i_min"는 -1의 값을 취하도록 초기화된다. 유사하게, 변수(i)는 변수(i)가 또한 -1의 값으로 초기화되는 것과 같이, 변수 "i-max"와 동일하도록 설정된다. 변수 "i_max"는 테이블 "ari_lookup_m[]"의 엔트리들의 수보다, 1이 더 작은 값을 취하도록 초기화된다(상세한 내용은 도 21을 참조하여 설명될 것이다). 따라서, 변수들 "i_min" 및 "i_max"는 구간을 정의한다. 예를 들면, "i_max"는 값(741)으로 초기화될 수 있다.
그 뒤에, 함수 "arith_get_pk()"의 입력 변수(c)의 값이 상기 엔트리 및 인접한 엔트리에 의해 정의되는 구간 내에 위치하는 것과 같이, 도 22(a), 22(b), 22(c), 22(d)의 테이블 표현에서 정의하는 것과 같이 선택된, 테이블 "ari_hash_m"의 엔트리를 지정하는 지수 값을 식별하기 위하여 검색(506b, search)이 실행된다.
검색(506b)에서, 서브-알고리즘(506ba)이 반복되나, 변수들 "i_min" 및 "i_max"의 차이는 1보다 크다. 서브-알고리즘(506ba)에서, 변수(i)는 변수들 "i_min" 및 "i_max"의 값들의 산술 수단과 동일하도록 설정된다. 그 결과, 변수(i)는 변수들 "i_min" 및 "i_max"의 값에 의해 정의되는 테이블 구간에서 중간에서 테이블 "ari_hash_m[]"(도 22(a), 22(b), 22(c), 22(d)의 테이블 표현에서 정의하는 것과 같은)의 엔트리를 지정한다. 그 뒤에, 변수(j)가 테이블 "ari_hash_m[]"의 엔트리 "ari_hash_m[i]"dml 값과 동일하도록 설정된다. 따라서, 변수(j)는 테이블 "ari_hash_m[]"의 엔트리에 의해 정의되는 값을 취하는데, 상기 엔트리는 변수들 "i_min" 및 "i_max"에 의해 정의되는 테이블 구간의 중간에 위치한다. 그 뒤에, 변수들 "i_min" 및 "i_max"에 의해 정의되는 구간은 만일 함수 "arith_get_pk()"의 입력 변수(c)의 값이 테이블 "ari_hash_m[]"의 테이블 엔트리 "j=ari_hash_m[i]"의 최상의(uppermost) 비트들에 의해 정의되는 상태 값과 서로 다를 때, 업데이트된다. 예를 들면, 테이블 "ari_hash_m[]"의 엔트리들의 "상부 비트"(비트 8 및 위쪽으로)는 중요한 상태 값들을 설명한다. 따라서, 값 "j>>8"은 해시 테이블 지수 값(i)에 의해 지정되는 테이블 "ari_hash_m[]"의 엔트리 "j=ari_hash_m[i]"에 의해 표현되는 중요한 상태 값을 설명한다. 따라서, 만일 변수(c)의 값이 값 "j>>8"보다 작으면, 이는 변수(c)에 의해 설명되는 상태 값이 테이블 "ari_hash_m[]"의 엔트리 "ari_hash_m[i]"에 의해 설명되는 중요한 상태 값보다 작다는 것을 의미한다. 이러한 경우에 있어서, 변수 "i_max"의 값은 변수(i)의 값과 동일하도록 설정되고, 차례로 "i_min" 및 "i_max"에 의해 정의되는 구간의 크기가 감소되는 효과를 갖는데, 새로운 구간은 대략 이전 구간의 하부 반과 동일하다. 만일 함수 "arith_get_pk()"의 입력 변수(c)가 값 "j>>8"보다 크다고 하면, 이는 변수(ㅊ)에 의해 설명되는 콘텟트 값이 어레이 "ari_hash_m[]"의 엔트리 "ari_hash_m[i]"에 의해 설명되는 중요한 상태 값보다 크며, 변수 "i_min"의 값은 변수(i)의 값과 동일하게 설정된다는 것을 의미한다. 따라서, 변수들 "i_min" 및 "i_max"의 값들에 의해 정의되는 구간의 크기는 변수들 "i_min" 및 "i_max"의 이전 값들에 이해 정의되는, 이전 구간의 크기의 대략 반으로 감소된다. 더 정확히는, 변수 "i_min"의 업데이트된 값 및 변수 "i_max"의 이전(변경되지 않은) 값에 의해 정의되는 구간은 변수(c)의 값이 엔트리 "ari_hash_m[i]"에 의해 정의되는 중요한 상태 값보다 큰 경우에 대략 이전 구간의 상부 반과 동일하다.
그러나, 만일 알고리즘 "arith_get_pk()"의 입력 변수(c)에 의해 설명되는 콘텍스트 값이 엔트리 "ari_hash_m[i]"(즉, c=j>>8)에 의해 정의되는 중요한 상태 값과 동일하면, 엔트리 "ari_hash_m[i]"의 가장 하부의 8-비트들에 의해 정의되는 매핑 룰 지수 값은 함수 "arith_get_pk()"의 반환 값으로서 반환된다(명령 "return (j&0xFF)").
위를 요약하면, 최상 비트들(비트들 8 및 위쪽으로)이 중요한 상태 값을 설명하는, 엔트리 "ari_hash_m[i]"는 각각의 반복(506ba)에서 평가되고, 함수 "arith_get_pk()"의 입력 변수(c)에 의해 설명되는 콘텍스트 값(또는 수치 현재 콘텍스트 값)은 상기 테이블 엔트리 "ari_hash_m[i]"에 의해 설명되는 중요한 상태 값과 비교된다. 만일 입력 변수(c)에 의해 표현되는 콘텍스트 값이 테이블 엔트리 "ari_hash_m[i]"에 의해 표현되는 중요한 상태 값보다 작으면, 테이블 구간의 상부 경계(값 "i_max"에 의해 설명되는)는 감소되며, 만일 입력 변수(c)에 의해 설명되는 콘텍스트 값이 테이블 엔트리 "ari_hash_m[i]"에 의해 설명되는 중요한 상태 값보다 크면, 테이블 구간의 하부 경계(변수 "i_min"의 값에 의해 설명되는)는 증가된다. 상기 두 경우에 있어서, 구간의 크기("i-max" 및 "i_min" 사이의 차이에 의해 정의되는)가 1보다 작거나 또는 1과 동일하지 않는 한, 서브-알고리즘(506ba)은 반복된다. 이와 대조적으로, 만일 변수(c)에 의해 설명되는 콘텍스트 값이 테이블 엔트리 "ari_hash_m[i]"에 의해 설명되는 중요한 상태 값과 동일하면, 함수 "arith_get_pk()"는 버려지며, 반환 값은 테이블 엔트리 "ari_hash_m[i]"의 가장 하부의 8-비트들에 의해 정의된다.
그러나, 만일 구간 크기가 그것의 최소 값("i_max ∼ i_min"이 1보다 작거나 또는 동일한)에 도달하는 이유로 검색(506b)이 종료되면, 함수 "arith_get_pk()"의 반환 값은 참조 번호 506c에 도시될 수 있는, 테이블 "ari_lookup_m[]"의 엔트리 "ari_lookup_m[i_max]"에 의해 설명된다. 테이블 "ari_lookup_m[]"은 바람직하게는 도 21의 테이블 표현에서 정의된 것과 같이 선택되고, 따라서 테이블 "ari_lookup_m[742]"와 동일할 수 있다. 따라서, 테이블 "ari_lookup_m[]"(바람직하게는 도 22(a), 22(b), 22(c), 22(d)에서 정의된 것과 같은 테이블 "ari_lookup_m[742]"와 동일한)의 엔트리들은 중요한 상태 값들 및 구간들의 경계들 모두를 정의할 수 있다. 서브-알고리즘(506ba)에서, 검색 구간 경계들 "i_min" 및 "i_max"은 이것의 해시 테이블 지수(i)가 구간 경계 값들 "i_min" 및 "i_max"에 의해 정의되는 검색 구간의 적어도 대략 중앙에 위치하는, 테이블 "ari_hash_[]"의 엔트리 "ari_lookup_m[i]"가 입력 변수(c)에 의해 설명되는 콘텍스트 값에 적어도 거의 비슷한 것과 같이 반복적으로 적용된다. 따라서 입력 변수(c)에 의해 설명되는 콘텍스트 값이 테이블 "ari_hash_[]"의 엔트리에 의해 설명되는 중요한 상태 값과 동일하지 않으면, 입력 변수(c)에 의해 설명되는 콘텍스트 값은 서브-알고리즘(506ba)의 반복의 완료 후에 "ari_hash_m[i_min]" 및 "ari_hash_m[i_min]"에 의해 정의되는 구간 내에 위치한다는 사실이 달성된다.
그러나, 만일 서브-알고리즘(506ba)의 되풀이되는 반복이 구간("i_max ∼ i_min"에 이해 정의되는)의 크기가 그것의 최대 값에 도달하거나 초과하는 이유로 종료되면, 입력 변수(c)에 의해 설명되는 콘텍스트 값은 중요한 상태 값이 아니라는 것이 추정된다. 이 경우에 있어서, 구간의 상부 경계를 지정하는, 지수 "i_max"는 그럼에도 불구하고 사용된다. 서브-알고리즘(506ba)의 최종 반복에 도달하는, 구간의 상부 값 "i_max"은 테이블 "ari_lookup_m"(도 21의 "ari_lookup_m[742]"와 동일할 수 있는)로의 액세스를 위한 테이블 지수 값으로서 재사용된다. 테이블 "ari_lookup_m[]"은 복수의 인접한 수치 콘텍스트 값들의 구간들과 관련된 매핑 룰 지수 값들을 설명한다. 테이블 "ari_lookup_m[]"의 엔트리들에 의해 설명되는 매필 룰 지수 값들이 관련된, 구간들은 테이블 "ari_hash_m[]"의 엔트리들에 의해 설명되는 중요한 상태 값들에 의해 정의된다. 테이블 "ari_hash_m"의 엔트리들은 중요한 상태 값들 및 인접한 수치 콘텍스트 값들의 구간들의 내부 경계들 모두를 정의한다. 알고리즘(506b)의 실행에서, 입력 변수(c)에 의해 설명되는 수치 콘텍스트 값이 중요한 상태 값과 동일한지가 결정되고, 만일 수치 콘텍스트 값들의 구간(경계들이 중요한 상태 값들에 의해 정의되는, 복수의 구간들 이외의)이 그렇지 않은 경우에는, 입력 변수(c)에 의해 설명되는 콘텍스트 값이 위치한다. 따라서, 알고리즘(506b)은 입력 변수(c)가 중요한 상태 값을 설명하는 지를 결정하고, 그렇지 않은 경우에는, 입력 변수(c)에 의해 표현되는 콘텍스트 값이 위치하는, 중요한 상태 값들에 의해 경계되는, 구간을 식별하는, 이중 기능성을 충족시킨다. 따라서, 알고리즘(506e)은 특히 효율적이며 테이블 액세스들의 상대적으로 작은 수만을 필요로 한다.
위를 요약하면, 콘텍스트 상태(c)는 가장 중요한 2-비트들-와이즈 플레인(m)을 디코딩하기 위하여 사용되는 누적-주파수-테이블을 결정한다. c로부터 상응하는 누적-주파수-테이블 지수 "pki"로의 매핑은 함수 "arih_get_pk()"에 의해 실행된다. 상기 함수 "arih_get_pk()"의 슈도 프로그램 코드 표현은 도 5e를 참조하여 설명되었다.
위를 더 요약하면, 값(m)은 누적-주파수-테이블 "arith_cf_m[pki][]"로 호출되는 함수 "arith_decode()"(아래에 더 상세히 설명될)를 사용하여 디코딩되는데, "pki"는 수도-C 코드 형태로 도 5e를 참조하여 설명되는, 함수 "arith_get_pk()"에 의해 반환되는 지수(또한 매핑 룰 지수 값으로서 지정되는)와 상응한다.
11.5.2 도 5f에 따른 알고리즘을 사용하는 매핑 룰 선택
다음에서, 매핑 룰 선택 알고리즘 "arith_get_pk()"의 또 다른 실시 예가 그러한 알고리즘의 슈도 프로그램 코드 표현을 도시한 도 5f를 참조하여 설명될 것인데, 이는 스펙트럼 값들의 투플의 디코딩에서 사용될 수 있다. 도 5f에 따른 알고리즘은 알고리즘 "get_pk()" 또는 알고리즘 "arith_get_pk()"의 최적화된 버전(예를 들면, 속도 최적화된 버전)으로서 고려될 수 있다.
도 5f에 따른 알고리즘 "arith_get_pk()"은 입력 변수로서, 콘텍스트의 상태를 설명하는 변수(c)를 수신한다. 입력 변수(c)는 예를 들면, 수치 현재 콘텍스트 값을 표현할 수 있다.
알고리즘 "arith_get_pk()"은 출력 변수로서, 입력 변수(c)에 의해 설명되는 콘텍스트의 상태와 관련된 확률 분포(또는 확률 모델)의 지수를 설명하는, 변수 "pki"를 제공한다. 변수 "pki"는 예를 들면, 매핑 룰 지수 값일 수 있다.
도 5f에 따른 알고리즘은 어레이 "i_diff[]"의 콘텐츠의 정의를 포함한다. 도시된 것과 같이, 어레이 "i_diff[]"의 제 1 엔트리(어레이 지수 0을 갖는 엔트리)는 299와 동일하고 다른 어레이 엔트리들(어레이 지수 1 내지 8을 갖는)은 149, 74, 37, 18, 9, 4, 2, 및 1의 값들을 취한다. 따라서, 해시 테이블 지수 값 "i_min"의 선택을 위한 단계 크기는 어레이들 "i_diff[]"의 엔트리들이 상기 단계크기들을 정의하는 것과 같이, 각각의 반복으로 감소된다. 상세한 설명이 아래에 논의될 것이다.
그러나, 서로 다른 단계 크기들, 예를 들면, 어레이 "i_diff[]"의 서로 다른 콘텐츠들이 실제로 선택될 수 있는데, 어레이 "i_diff[]"의 콘텐츠들은 자연스럽게 해시 테이블 "ari_hash_m[i]"의 크기로 적용될 수 있다.
알고리즘 "arith_get_pk()"의 바로 처음에서 0의 값을 취하기 위하여 변수 "i_min"이 초기화된다는 것을 이해하여야 한다.
초기화 단계 508a에서, 변수(s)는 입력 변수(c)에 따라 초기화되는데, 변수(c)의 수 표현은 변수(s)의 수 표현을 획득하기 위하여 8에 의해 왼쪽으로 시프트된다.
그 뒤에, 콘텍스트 값(c)에 의해 설명되는 콘텍스트 값이 해시-테이블-엔트리 "ari_hash_m[i_min]"에 의해 설명되는 콘텍스트 값 및 해시-테이블-엔트리 "ari_hash_m[i_min]"에 인접한 또 다른 해시-테이블-엔트리 "ari_hash_m"에 의해 설명되는 콘텍스트 값에 의해 경계 지어지는 구간 내에 위치하는 것과 같이, 해시 테이블 "ari_hash_m[]"의 엔트리의 해시-테이블-지수-값 "i_min"을 식별하기 위하여, 테이블 검색 \(508b)이 실행된다.
테이블 검색(508b)은 서브-알고리즘(508ba)의 반복 실행을 포함하는데, 서브-알고리즘(508ba)은 미리 결정된 수, 예를 들면, 9회의 반복을 위하여 실행된다. 서브-알고리즘(508ba)의 첫 번째 단계에서, 변수(i)는 변수 "i_min"의 값 및 테이블 엔트리 "i_diff[k]"의 값의 합과 동일한 값으로 설정된다. 여기서 k는 서브-알고리즘(508ba)의 각각의 반복으로, k=0의 초기 값으로 시작하여, 증가하는, 실행 변수인 것을 이해하여야 한다. 어레이 "i_diff[]"는 미리 결정된 증가 값(increment value)들을 정의하는데, 테이블 지수(k)가 증가함에 따라, 즉, 반복의 수가 증가함에 따라 증가 값들은 감소한다.
서브-알고리즘(508ba)의 두 번째 단계에서, 테이블 엔트리 "ari_hash_m[]"의 값은 변수(j) 내로 복사된다. 바람직하게는, 테이블 "ari_hash_m[]"의 테이블 엔트리들의 최상의 비트들이 수치 콘텍스트 값의 중요한 상태 값들을 설명하고, 테이블 "ari_hash_m[]"의 엔트리들의 최하의 비트들(비트들 0 내지 7)이 각각의 중요한 상태 값들과 관련된 매핑 룰 지수 값들을 설명한다.
서브-알고리즘(508ba)의 세 번째 단계에서, 변수(s)의 값이 변수(j)의 값과 비교되고, 만일 변수(s)의 값이 변수(j)의 값보다 크면 변수 "i_max"가 변수 "i+1"로 선택적으로 설정된다. 그 뒤에, 서브-알고리즘(508ba)의 첫 번째 단계, 두 번째 단계, 및 세 번째 단계가 미리 결정된 시간의 수, 예를 들면, 9회를 위하여 반복된다. 따라서, 서브-알고리즘(508ba)의 각각의 실행에서, 변수 "i_min"의 값은 만일 현재 유효한 해시-테이블-지수 i_min + i_diff[]가 입력 변수(c)에 의해 설명되는 콘텍스트 값보다 작으면 i_diff[]+1에 의해 증가된다. 따라서, 해시-테이블-지수 값 "i_min"은 만일 입력 변수(c), 및 그 결과 변수(s)에 의해 설명되는 콘텍스트 값이 엔트리 "ari_hash_m[i=i_min+diff[k]"에 의해 설명되는 콘텍스트 값보다 크면 서브-알고리즘(508ba)의 각각의 실행에서 증가된다(반복적으로).
이러한 이유 때문에, 결정-기반 반환 값 제공(508c)이 실행된다. 변수(j)는 해시-테이블-엔트리 "ari_hash_m[i_min]"의 값을 취하도록 설정된다. 그 뒤에, 입력 변수(c)에 의해(또한 변수(s)에 의해) 설명되는 콘텍스트 값이 엔트리 "ari_hash_m[i_min}"에 의해 설명되는 콘텍스트 값보다 큰지(상태 "s>j"에 의해 정의되는 첫 번째 경우), 또는 입력 변수(c)에 의해 설명되는 콘텍스트 값이 해시-테이블-엔트리 "ari_hash_m[i_min]"에 의해 설명되는 콘텍스트 값보다 작은지(상태 "c<j>>8"에 의해 정의되는 두 번째 경우), 또는 입력 변수(c)에 의해 설명되는 콘텍스트 값이 엔트리 "ari_hash_m[i_min}"에 의해 설명되는 콘텍스트 값과 동일한지(세 번째 경우)가 결정된다.
첫 번째 단계(s>j)에서, 테이블 지수 값 "i_min+1"에 의해 지정되는 테이블 "ari_lookup_m[]"의 엔트리 "ati_lookup_m[i_min+1]는 함수 "arith_get_pk()"의 출력 값으로서 반환된다. 두 번째 경우(c<j>>8)에서, 테이블 지수 값 "i_min"에 의해 지정되는 테이블 "ari_lookup_m[]"의 엔트리 "ati_lookup_m[i_min]는 함수 "arith_get_pk()"의 반환 값으로서 반환된다. 세 번째 경우(즉, 만일 입력 변수(c)에 의해 설명되는 콘텍스트 값이 테이블 엔트리 "ari_hash_m[i_min]"에 의해 설명되는 콘텍스트 값과 동일하면)에서, 해시-테이블 엔트리 "ari_hash_m[i_min]"의 최하의 8-비트들에 의해 설명되는 매핑 룰 지수 값은 함수 "arith_get_pk()"의 반환 값으로서 반환된다.
위를 요약하면, 단계 508b에서 특히 간단한 테이블 검색이 실행되는데, 테이블 검색은 입력 변수(c)에 의해 설명되는 콘텍스트 값이 테이블 "ari_hash_m[]"의 상태 엔트리들 중 하나에 의해 정의되는 중요한 상태 값과 동일한지 아닌지를 구별하지 않고 변수 "i_min"의 변수 값을 제공한다. 테이블 검색(508b)에 뒤따라 실행되는, 단계 508e에서, 입력 변수(c)에 의해 설명되는 콘텍스트 값 및 해시-테이블-엔트리 "ari_hash_m[i_min]"에 의해 설명되는 중요한 상태 값 사이의 크기 상관이 평가되고, 상기 평가의 결과에 따라 함수 "arith_get_pk()"의 반환 값이 선택되는데, 테이블 평가(508b)에서 결정되는, 변수 "i_min"의 값은 만일 입력 변수(c)에 의해 설명되는 콘텍스트 값이 해시-테이블-엔트리 "ari_hash_m[i_min]"에 의해 설명되는 중요한 상태 값과 서로 다르면 매핑 룰 지수 값을 선택하도록 고려된다.
또한 알고리즘에서의 비교는 바람직하게는 콘텍스트 값(수치 콘텍스트값) c및 j=ari_hash_m[i]>>8 사이에서 수행되어야만 한다는 것을 이해하여야 한다. 실제로, 테이블 "ari_hash_m[]"의 각각의 엔트리는 8번째 비트들을 넘어 코딩되는, 콘텍스트 지수, 및 처음의 8 비트들(덜 중요한 비트들) 상에 코딩되는 그것의 상응하는 확률 모델을 표현한다. 본 구현에서는, 주로 만일 s=c<<8이 또한 ari_hash_m[]보다 크면 디코딩하는 것과 같은, 현재의 콘텍스트(c)가 ari_hash_m[i]>>8보다 큰지에 대하여 중점을 두었다.
위를 요약하면, 일단 콘텍스트 상태가 계산되면(예를 들면, 도 5c에 따른 알고리즘 "arith_get_context(c,i,N)", 또는 도 5d에 따른 알고리즘 "arith_get_context(c,i,)"을 사용하여 달성될 수 있는), 가장 중요한 2-비트-와이즈-플레인은 콘텍스트 상태와 상응하는 확률 모델과 상응하는 적절한 누적-주파수-테이블로 호출되는 알고리즘 "arith_decode"(아래에 설명될)을 사용하여 디코딩된다. 함수 "arith_get_pk()", 예를 들면, 도 5f를 참조하여 논의된 함수 "arith_get_pk()"에 의해 일치가 만들어진다.
11.6 산술 디코딩
11.6.1 도 5g에 따른 알고리즘을 사용하는 산술 디코딩
다음에서, 도 5g를 참조하여 함수 "arith_decode()"의 바람직한 구현의 기능성이 상세히 설명될 것이다. 도 5g는 사용된 알고리즘을 설명하는 슈도 C-코드를 도시한다.
함수 "arith_decode()"는 만일 그것이 시퀀스의 첫 번째 심볼이면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환하는, 헬퍼 함수(helper function) "arith_first_symbol(void)"를 사용한다는 것을 이해하여야 한다. 함수 "arith_decode()"는 또한 비트스트림의 다음 스트림을 얻고 제공하는, 헬퍼 함수 "arith_get_next_bit(void)"를 사용한다
게다가, 함수 "arith_decode()"는 글로벌 변수 "low", "high" 및 "value"를 사용한다. 또한, 함수 "arith_decode()"는 입력 변수로서, 선택된 누적-주파수-테이블 또는 누적-주파수 서브-테이블(바람직하게는, 도 23(a), 23(b), 23(c), 23(d)의 테이블 표현에 의해 정의된 것과 같이, 테이블 ari_cf_m[64][17]의 서브-테이블들 ari_cf_m[pki=0][17] 내지 ari_cf_m[pki=63][17] 중 하나)의 첫 번째 어레이 또는 엘리먼트(0의 엘리먼트 지수 또는 어레이 지수를 갖는)를 가리키는, 변수 "cum_freq[]"를 수신한다. 함수 "arith_decode()"는 변수 "cum_freq[]"에 의해 지정되는 선택된 누적-주파수-테이블 또는 누적-주파수 서브-테이블의 길이를 나타내는, 입력 변수 "cfl"을 사용한다.
함수 "arith_decode()"는 첫 번째 단계로서, 만일 헬퍼 함수 "arith_first_symbol()"가 심볼들의 시퀀스의 첫 번째 심볼이 디코딩되는 것을 나타내면 실행되는, 변수 초기화(570a)를 포함한다. 값 초기화(550a)는 변수 "value"가 상기 비트들에 의해 표현되는 값을 취하는 것과 같이, 헬퍼 함수 "arith_get_next_bit"를 사용하여 비트스트림으로부터 획득되는, 예를 들면 복수의 16 비트들에 따라 변수 "value"를 초기화한다. 또한, 변수 "low"가 0의 값을 취하기 위하여 초기화되고, 변수 "high"는 65535의 값을 취하기 위하여 초기화된다.
두 번째 단계(570b)에서, 변수 "range"는 변수들 "high" 및 "low"의 값들 사이의 차이보다 1이 큰, 값으로 설정된다. 변수 "cum"는 변수 "low"의 값 및 변수 "high"의 값 사이의 변수 "value"의 값의 상대 위치를 표현하는 값으로 설정된다. 따라서, 변수 "cum"는 예를 들면, 변수 "value"에 따른 0 및 216 사이의 값을 취한다.
포인터(p, pointer)는 선택된 누적-주파수-테이블 또는 서브-테이블의 시작 주소(starting address)보다 1이 작은 값으로 초기화된다.
알고리즘 "arith_decode()"는 또한 반복 누적-주파수-테이블 검색(570c)을 포함한다. 반복 누적-주파수-테이블 검색은 변수(cfl)가 1보다 작거나 같을 때까지 반복된다. 반복 누적-주파수-테이블 검색(570c)에서, 포인터 변수(q)는 포인터 변수(p)의 현재 값 및 변수 "cfl"의 값의 반의 합과 동일한, 값으로 설정된다. 만일 엔트리가 포인터 변수(q)에 의해 어드레스되는(addressed), 선택된 누적-주파수-테이블이 엔트리 *q의 값이 변수 "cum"의 값보다 크면, 포인터 변수(p)는 포인터 변수(q)의 값으로 설정되고, "cfl"은 증가된다. 끝으로, 변수 "cfl"는 1 비트에 의해 오른쪽으로 시프트되는데, 이렇게 함으로서 변수 "cfl"가 2에 의해 값을 효율적으로 분할하고 모듈로 부(modulo portion)를 무시한다.
따라서, 반복 누적-주파수-테이블 검색(570c)은 값 cum이 식별된 구간 내에 위치하는 것과 같이, 누적-주파수-테이블의 엔트리들에 의해 경계 지어지는, 선택된 누적-주파수-테이블 내의 구간을 식별하기 위하여, 변수 "cum"의 값을 선택된 누적-주파수-테이블이 복수의 엔트리들과 효율적으로 비교한다. 따라서, 선택된 누적-주파수-테이블의 엔트리들은 구간들을 정의하는데, 선택된 누적-주파수-테이블의 엔트리들은 구간들 각각에 각각의 심볼 값이 관련된다. 또한 누적-주파수-테이블의 두 개의 인접한 값들 사이의 구간의 폭들은 그것의 엔트리들 내의 선택된 누적-주파수-테이블이 서로 다른 심볼들(또는 심볼 값들)의 확률 분포를 정의하는 것과 같이, 상기 구간들과 관련된 심볼들의 확률을 정의한다. 이용가능한 누적-주파수-테이블 또는 누적-주파수 서브-테이블들에 관한 상세한 설명이 도 23을 참조하여 아래에 논의될 것이다.
다시 도 5g를 참조하면, 심볼 값은 포인터 값(p)으로부터 파생되는데, 심볼 값은 참조 번호 570d에 도시된 것과 같이 파생된다. 따라서, 변수 "symbol"에 의해 표현되는, 심볼 값을 획득하기 위하여, 포인터 변수(p)의 값 및 시작 주소 "cum_freq" 사이의 차이가 평가된다.
알고리즘 "arith_decode()"는 또한 변수들 "high" 및 "low"의 적용(570e, adaptation)을 포함한다. 만일 변수 "symbol"에 의해 표현되는 심볼 값이 0과 다르면, 참조 번호 570e에 도시된 것과 같이, 변수 "high"가 업데이트된다. 또한 참조 번호 570e에 도시된 것과 같이, 변수 "low"가 업데이트된다. 변수 "high"는 변수 "low", 변수 "range" 및 선택된 누적-주파수-테이블 또는 누적-주파수 서브-테이블의 지수 "symbol -1"를 갖는 엔트리의 값에 의해 결정되는 값으로 설정된다. 변수 "low"는 증가되는데, 증가의 크기는 변수 "range" 및 선택된 누적-주파수-테이블 또는 누적-주파수 서브-테이블의 지수 "symbol"를 갖는 엔트리에 의해 결정된다. 따라서, 변수들 "low" 및 "high"의 값들 사이의 차이는 선택된 누적-주파수-테이블의 두 개의 인접한 엔트리들의 수치 차이에 따라 조절된다.
따라서, 만일 낮은 확률을 갖는 심볼 값이 검출되면, 변수들 "low" 및 "high"의 값들 사이의 구간은 좁은 폭으로 감소된다. 이와 대조적으로, 만일 검출된 심볼 값이 상대적으로 큰 확률을 포함하면, 변수들 "low" 및 "high"의 값들 사이의 구간의 폭은 상대적으로 큰 값으로 설정된다. 다시, 변수들 "low" 및 "high"의 값들 사이의 구간이 폭은 검출된 심볼 및 누적-주파수-테이블의 상응하는 엔트리들에 의존한다.
알고리즘 "arith_decode()"는 또한 단계 570e에서 결정되는 구간이 "브레이크" 상태가 도달될 때까지 반복적으로 시프트되고 스케일링되는, 구간 재규격화(570e, interval renomalization)를 포함한다. 구간 재규격화(570e)에서, 성택적 시프트-하향 연산(shift-downward operation, 570fa)이 실행된다. 만일 변수 "high"가 32768보다 작으면, 아무것도 실행되지 않고, 구간 재규격화는 구간-크기-증가-연산(570fb)을 계속한다. 그러나, 만일 변수 "high"가 32768보다 작지 않고 변수 "low"가 32768보다 크거나 같으면, 변수들 "values", "low" 및 "high"은 변수들 "low" 및 "high"에 의해 정의되는 구간이 아래쪽으로 시프트되고, 변수 "value"의 값이 또한 아래쪽으로 시프트되는 것과 같이, 모두 32768에 의해 감소된다. 그러나, 만일 변수 "high"가 32768보다 작지 않고 변수 "low"가 32768보다 크지 않거나 같으며, 변수 "low"가 16384보다 크거나 또는 같고 변수 "high"가 49152보다 작으면, 변수들 "values", "low" 및 "high"은 모두 16384에 의해 감소되는데, 이렇게 함으로서, 변수들 "low" 및 "high"의 값들 사이의 구간 및 또한 변수 "value"의 값이 아래쪽으로 시프트된다. 그러나, 만일 위의 조합 중 어느 것도 충족되지 않으면, 구간 재규격화는 포기된다.
그러나, 만일 단계 570fa에서 평가되는, 위에서 설명된 조건들 중의 어떤 것이라도 충족되면, 구간-증가-연산(570fb)이 실행된다. 구간-증가-연산(570fb)에서, 변수 "low"의 값은 두 배가 된다. 따라서, 변수 "high"의 값이 두 배가 되고, 두 배의 결과는 1에 의해 증가된다. 또한 변수 "value"가 두 배가 되고(1 비트에 의해 왼쪽으로 시프트되는), 헬퍼 함수 "arith_get_next_bit"에 의해 획득되는, 비트스트림의 비트는 덜 중요한 비트로서 사용된다. 따라서, 변수들 "low" 및 "high"의 값들 사이의 구간의 크기는 대략 두 배가 되고, 비트스트림의 새로운 비트를 사용함으로써 변수 "value"의 정확도가 증가된다. 위에서 언급된 것과 같이, 단계들 570fa 및 570fb는 "브레이크" 상태가 도달될 때까지, 즉, 변수들 "low" 및 "high"의 값들 사이의 구간이 충분히 클 때까지 반복된다.
알고리즘 "arith_decode()"의 기능성과 관련하여, 변수들 "low" 및 "high"의 값들 사이의 구간은 변수 "cum_freq"에 의해 참조되는 누적-주파수-테이블의 두 개의 인접한 엔트리들에 따라 단계 570e에서 감소된다는 것을 이해하여야 한다. 만일 선택된 누적-주파수-테이블의 두 개의 인접한 값들 사이의 구간이 작으면, 즉, 만일 인접한 값들이 상대적으로 함께 인접하면, 단계 570e에서 획득되는, 변수들 "low" 및 "high"의 값들 사이의 구간은 상대적으로 작을 것이다. 이와 대조적으로, 만일 누적-주파수-테이블의 두 개의 인접한 엔트리들이 더 멀리 구간을 두면, 단계 570e에서 획득되는, 변수들 "low" 및 "high"의 값들 사이의 구간은 상대적으로 클 것이다.
그 결과, 만일 단계 570e에서 획득되는, 변수들 "low" 및 "high"의 값들 사이의 구간이 상대적으로 작으면, 많은 수의 구간 재규격화 단계들이 "충분한" 크기로(상태 평가(570fa)의 상태들의 아무것도 충족되지 않는 것과 같이) 구간을 리스케일링하도록 실행될 것이다. 따라서, 변수 "value"의 정확도를 증가시키기 위하여 비트스트림으로부터 상대적으로 많은 수의 비트들이 사용될 것이다. 이와 대조적으로, 만일 단계 570e에서 획득되는 구간 크기가 상대적으로 크면, 변수들 "low" 및 "high"의 값들 사이의 구간을 "충분한" 크기로 재규격화하기 위하여 단지 적은 수의 구간 재규격화 단계들(570fa 및 570fb)이 필요할 것이다. 따라서, 변수 "value"의 정확도를 증가시키고 다음 심볼의 디코딩을 제작하기 위하여 비트스트림으로부터 상대적으로 적은 수의 비트들만이 사용될 것이다.
위를 요약하면, 만일 상대적으로 높은 확률을 포함하고 선택된 누적-주파수-테이블의 엔트리들에 의해 큰 구간이 관련되는, 심볼이 디코딩되면, 뒤따르는 심볼의 디코딩을 허용하기 위하여 상대적으로 적은 수의 비트들만이 비트스트림으로부터 판독돨 것이다. 이와 대조적으로, 만일 상대적으로 높은 낮은 확률을 포함하고 선택된 누적-주파수-테이블의 엔트리들에 의해 작은 구간이 관련되는, 심볼이 디코딩되면, 다음의 심볼을 제작하기 위하여 상대적으로 많은 수의 비트들이 비트스트림으로부터 취해질 것이다.
따라서, 누적-주파수=테이블들의 엔트리들은 서로 다른 심볼들의 확률을 반영하고 또한 심볼들의 시퀀스를 디코딩하기 위하여 필요한 비트들의 수를 반영한다. 예를 들면, 콘텍스트에 따라 서로 다른 누적-주파수-테이블을 선택함으로써, 콘텍스트에 따라, 즉, 이전에 디코딩된 심볼들(또는 스펙트럼 값들)에 따라 누적-주파수 테이블을 변경함으로써, 서로 다른 심볼들 사이의 확률적 의존성(stochastic dependency)이 이용될 수 있는데, 이는 뒤따르는(또는 인접한) 심볼들의 특히 비트레이트 효율적인 디코딩을 허용한다.
위를 요약하면, 도 5g를 참조하여 설명된, 함수 "arith_decode_()"는 가장 중요한 비트-플레인 값(m, 반환 변수 "symbol"에 의해 표현되는 심볼 값으로 설정될 수 있는)을 결정하기 위하여 함수 "arith_get_pk()"에 의해 반환되는 지수 "pki"와 상응하는, 누적 주파수 테이블 "arith_cf_m[pki][]"과 함께 호출된다.
위를 요약하면, 산술 디코더는 스케일링을 갖는 태그(tag) 발생의 방법을 사용하는 정수 구현이다. 상세한 설명을 위하여, K. Sayood의 "Introduction to Data Compression", Third Edition, 2006, Elsevier Inc.가 참조된다.
도 5g에 따른 컴퓨터 프로그램 코드는 본 발명의 실시 예에 따라 사용된 알고리즘을 설명한다.
11.6.2 도 5h 및 5i를 사용하는 산술 디코딩
도 5h 및 5i는 도 5g를 참조하여 설명된 알고리즘 "arith_decode"의 대안으로서 사용될 수 있는, 알고리즘 "arith_decode()"의 또 다른 실시 예의 슈도 프로그램 코드 표현을 도시한다.
도 5g 및 도 5h와 5i에 따른 알고리즘 모두 도 3에 따른 알고리즘 "value_decode()"에서 사용될 수 있다는 것을 이해하여야 한다.
요약하면, 값(m)은 누적-주파수-테이블 "arith_cf_m[pki][]"(바람직하게는, 도 23(a), 23(b), 23(c), 23(d)의 테이블 표현에서 정의되는 테이블 ari_cfm[67][17]의 서브-테이블인, 함수 "arith_decode()"를 사용하여 디코딩되는데, "pki"는 함수 "arith_get_pk()"에 의해 반환되는 지수와 상응한다. 산술 코더(또는 디코더)는 스케일링을 갖는 태그 발생의 방법을 사용하는 정수 구현이다. 상세한 설명을 위하여, K. Sayood의 "Introduction to Data Compression", Third Edition, 2006, Elsevier Inc.가 참조된다. 도 5h 및 5i에 따른 컴퓨터 프로그램 코드는 사용된 알고리즘을 설명한다.
11.7 탈출 메커니즘
다음에서, 도 3에 따른 알고리즘 "values_decode()"의 디코딩에서 사용되는, 탈출 메커니즘이 간단히 논의될 것이다.
디코딩된 값(m, 함수 "values_decode()"의 반환 값으로서 제공되는)이 탈출 심볼 "ARITH_ESCAPE"일 때, 변수들 "lev" 및 "esc_nb"는 1에 의해 증가되며, 또 다른 값(m)이 디코딩된다. 이 경우에 있어서, 함수 "arith_get_pk"(또는 "get_pk()")는 변수 "esc_nb"가 동일한 2-투플을 위하여 이전에 디코딩되고 7로 경계되는 탈출 심볼들의 수를 설명하는, 입력 인수로서 값 "c+esc_nb<<17"과 함께 다시 한번 호출된다.
요약하면, 만일 탈출 심볼이 식별되면, 가장 중요한 비트-플레인 값(m)은 증가된 수치 중량을 포함하는 것으로 추정된다. 게다가, 현재 수치 디코딩이 반복되는데, 변경된 수치 현재 콘텍스트 값 "c+esc_nb<<17"이 함수 "arith_get_pk()"에 대한 입력 변수로서 사용된다. 따라서, 서브-알고리즘(312ba)의 서로 다른 반복으로 서로 다른 매칭 룰 지수 값 "pki"이 일반적으로 획득된다.
11.8 산술 정지 메커니즘
다음에서, 산술 정지 메커니즘이 설명될 것이다. 산술 정지 메커니즘은 오디오 인코더에서 상부 주파수 부가 전부 0으로 양자화되는 경우에 있어서 필요한 비트들의 수의 감소를 허용한다.
일 실시 예에서, 산술 정지 메커니즘은 다음과 같이 구현될 수 있다. 일단 값(m)이 탈출 심볼 "ARITH_ESCAPE"이 아니면, 디코더는 연속적 m이 "ARITH_STOP" 심볼을 형성하는지를 체크한다. 만일 상태 "(esc_nb>0&&m==0)가 참이면, "ARITH_STOP" 심볼이 검출되고 디코딩 과정이 종료된다. 이 경우에 있어서, 디코더는 직접 아래에 설명되는 사인 디코딩 및 아래에 설명될 "arith_finish()" 함수로 건너뛴다. 상태는 나머지 프레임이 제로 값으로 구성되는 것을 의미한다.
11.9 덜-중요한 비트- 플레인 디코딩
다음에서, 하나 또는 그 이상의 덜 중요한 비트-플레인들의 디코딩이 설명될 것이다. 덜 중요한 비트-플레인의 디코딩은 예를 들면, 도 3에 도시된 단계 312d에서 실행된다. 그러나, 대안으로서, 도 5j 및 5n에 도시된 알고리즘이 사용될 수 있는데, 도 5j의 알고리즘이 바람직한 알고리즘이다.
11.9.1 도 5j에 따른 덜-중요한 비트- 플레인 디코딩
이제 도 5j를 참조하면, 변수들(a 및 b)의 값들이 변수(m)로부터 유래된다는 것을 알 수 있다. 예를 들면, 변수(b)의 수 표현을 획득하기 위하여 값(m)의 수 표현은 2-비트에 의해 오른쪽으로 시프트된다. 게다가, 변수(a)의 값은 변수(m)의 값에서, 2-비트에 의해 왼쪽으로 비트-시프트된, 변수(b)의 값의 비트-시프트된 버전을 뺌으로서(subtracting) 획득된다.
그 뒤에. 덜 중요한 비트-플레인 값들(r)의 산술 디코딩이 반복되는데, 반복의 수는 변수 "lev"의 값에 의해 결정된다. 덜 중요한 비트-플레인 값(r)은 함수 "arith_decode"를 사용하여 획득되는데, 덜 중요한 비트-플레인 디코딩에 적용되는 누적-주파수-테이블이 사용된다(누적-주파수-테이블 "arith_cf_r"). 변수(r)의 덜 중요한 비트(1의 수치 중량을 갖는)는 변수(a)에 의해 표현되는 스펙트럼 값의 덜 중요한 비트-플레인을 설명하고, 변수(r)의 2의 수치 중량을 갖는 비트는 변수(b)에 의해 표현되는 스펙트럼 값의 덜 중요한 비트를 설명한다. 따라서, 변수(a)는 변수(a)를 1 비트에 의해 왼쪽으로 시프팅하고 가장 덜 중요한 비트와 같은 변수(r)의 1의 수치 중량을 갖는 비트를 가산함으로써 업데이트된다. 유사하게, 변수(b)는 변수(b)를 1 비트에 의해 왼쪽으로 시프팅하고 변수(r)의 2의 수치 중량을 갖는 비트를 가산함으로써 업데이트된다.
따라서, 변수들(a, b)의 비트들을 지닌 두 개의 가장 중요한 정보가 가장 중요한 비트-플레인 값(m)에 의해 결정되고, 값들(a, b)의 하나 또는 그 이상의 가장 덜 중요한 비트들(만일 존재하면)은 하나 또는 그 이상의 비트-플레인 값들(r)에 의해 결정된다.
위를 요약하면, 만일 "ARITH_STOP" 심볼이 채워지지 않으면, 만일 어떤 것이라도 존재하면, 존재하는 2-투플을 위하여 나머지 비트-플레인인들은 그때 디코딩된다. 나머지 비트-플레인들은 누적-주파수테이블 "arith_cf_r[]"로 lev 횟수로 함수 "arith_decode()"를 호출함으로써 가장 중요한 레벨로부터 가장 덜 중요한 레벨로 디코딩된다. 디코딩된 비트-플레인들(r)은 이것의 슈도 프로그램 코드가 도 5j에 도시된, 알고리즘에 따라 이전에 디코딩된 값(m)을 개선하도록 허용한다.
11.9.2 도 5n에 따른 덜 중요한 비트 대역 디코딩
그러나, 대안으로서, 그것의 슈도 프로그램 코드가 도 5n에 도시된 알고리즘이 또한 덜 중요한 비트-플레인 디코딩을 위하여 사용될 수 있다. 이 경우에 있어서, 만일 "ARITH_STOP" 심볼이 채워지지 않으면, 만일 어떤 것이라도 존재하면, 존재하는 2-투플을 위하여 나머지 비트-플레인들이 그때 디코딩된다. 나머지 비트-플레인들은 누적-주파수-테이블 "arith_cf_r[]"로 "lev" 횟수로 "arith_decode()"를 호출함으로써 가장 중요한 레벨로부터 가장 덜 중요한 레벨로 디코딩된다. 디코딩된 비트-플레인들(r)은 이것의 슈도 프로그램 코드가 도 5n에 도시된, 알고리즘에 따라 이전에 디코딩된 값(m)을 개선하도록 허용한다.
11.10 콘텍스트 업데이트
11.10.1 도 5k, 5l, 및 5n에 따른 콘텍스트 업데이트
다음에서, 도 5k 및 5l을 참조하여, 스펙트럼 값들의 투플의 디코딩을 완료하기 위하여 사용되는 연산이 설명될 것이다. 게다가, 오디오 콘텐츠의 현재 부(예를 들면 현재 프레임)와 관련된 스펙트럼 값들의 투플들 세트의 디코딩을 완료하기 위하여 사용되는 연산이 설명될 것이다.
비록 대안의 알고리즘들이 사용될 수 있더라도, 도 5k, 5l, 및 5n에 따른 알고리즘들이 바람직하다는 것을 이해하여야 한다.
이제 도 5k를 참조하면, 덜 중요한 비트 디코딩(312d) 후에 어레이 "x_ac_dec[]"의 엔트리 지수 2*i를 갖는 엔트리는 a와 동일하도록 설정되고, "x_ac_dec[]"의 엔트리 지수 "2*i+1"을 갖는 엔트리는 b와 동일하도록 설정된다는 것을 알 수 있다. 바꾸어 말하면, 덜 중요한 비트 디코딩(312d) 후의 포인트에서, 2-투플 {a,b}의 무부호 값이 완전히 디코딩된다. 그것은 도 5k에 도시된 알고리즘에 따른 스펙트럼 계수들을 유지하는 어레이(예를 들면, 어레이 "x_ac_dec[]") 내로 저장된다.
그 뒤에, 다음의 2-투플을 위하여 콘텍스트 "q"가 또한 업데이트된다. 이러한 콘텍스트 업데이트는 또한 마지막 2-투플을 위하여 실행되어야만 한다는 것을 이해하여야 한다. 이러한 콘텍스트 업데이트는 도 5l에 그것의 슈도 프로그램 코드 표현이 도시된, 함수 "arith_update_context()"에 의해 실행된다.
이제 도 5l을 참조하면, 함수 "arith_update_context(i,a,b)"는 입력 변수들로서, 2-투플의 디코딩된 무부호 양자화된 스펙트럼 계수들(a, b 또는 스펙트럼 값들)을 수신한다. 게다가, 함수 "arith_update_context"는 또한 입력 변수로서, 디코딩하기 위한 양자화된 스펙트럼 계수의 지수(i, 예를 들면, 주파수 지수)를 수신한다. 바꾸어 말하면, 입력 변수(I)는 예를 들면, 이것의 절대 값이 입력 변수들(a, b)에 의해 정의되는, 스펙트럼 값들의 투플의 지수일 수 있다. 도시된 것과 같이, 어레이 "q[][]"의 엔트리 "q[1][i]"는 a+b+1과 동일한 값으로 설정될 수 있다. 게다가, 어레이 "q[][]"의 엔트리 "q[1][i]"의 값은 "0xF"의 16진법 값으로 한정될 수 있다. 따라서, 어레이 "q[][]"의 엔트리 "q[1][i]"는 주파수 지수(i)를 갖는 스펙트럼 값들의 현재 디코딩된 투플 {a,b}의 절대 값들의 합을 계산하고, 상기 합의 결과에 1을 가산함으로써 획득된다.
여기서 어레이 "q[][]"의 엔트리 "q[1][i]"는 현재 서브-영역 값으로서 고려될 수 있다는 것을 이해하여야 하는데, 그 이유는 그것이 부가적 스펙트럼 값들(또는 스펙트럼 값들의 투플들)의 뒤따르는 디코딩을 위하여 사용되는 콘텍스트의 서브-영역을 설명하기 때문이다.
복수의 이전에 디코딩된 스펙트럼 값들에 의해 형성되는 벡터의 표준을 설명하는, 콘텍스트 서브-영역 값들(예를 들면, 어레이 "q[][]"의 엔트리들)은 특히 중요하고 메모리 효율적이라는 것이 알려졌다. 복수의 이전에 디코딩된 스펙트럼 값들을 기초로 하여 계산되는, 그러한 표준은 압축 형태로 중요한 콘텍스트 정보를 포함하는 것이 알려졌다. 스펙트럼 값들의 사인은 일반적으로 콘텍스트 선택을 위하여 적절하지 않다는 것이 알려졌다. 또한 복수의 이전에 디코딩된 스펙트럼 값들에 대한 표준의 형성은 비록 일부 세부내용이 버려지더라도, 일반적으로 가장 중요한 정보를 유지한다는 것이 알려졌다. 게다가, 수치 현재 콘텍스트 값의 최대 값에 대한 제한은 일반적으로 정보의 심각한 손실을 야기하지 않는다고 알려졌다. 오히려, 미리 결정된 한계(threshold) 값보다 큰 중요한 스펙트럼 값들을 위하여 동일한 콘텍스트 상태를 사용하는 것이 더 효율적이라고 알려졌다. 따라서, 콘텍스트 서브-영역 값들의 제한은 메모리 효율의 더 나은 개선을 가져온다. 게다가, 콘텍스트 서브-영역 값들의 특정 최대 값에 대한 제한은 예를 들면, 도 5c 및 5d를 참조하여 설명된, 수치 현재 콘텍스트 값의 특히 간단하고 계산적으로 효율적인 업데이트를 허용하는 것으로 알려졌다. 콘텍스트 서브-영역 값들을 상대적으로 작은 값(예를 들면, 15의 값)으로 제한함으로써, 복수의 콘텍스트 서브-영역 값들을 기초로 하는 콘텍스트 상태는 도 5c 및 5d를 참조하여 설명된, 효율적인 형태로 표현될 수 있다.
게다가, 콘텍스트 서브-영역 값들의 1 및 15 사이의 값들로의 제한은 정확성 메모리 효율성 사이의 뛰어난 절충을 가져오는데, 그 이유는 그러한 콘텍스트 서브-영역 값을 저장하기 위하여 4 비트들이 충분하기 때문이다.
그러나, 일부 다른 실시 예들에서, 콘텍스트 서브-영역 값은 단일의 디코딩된 스펙트럼 값만을 기초로 할 수 있다는 것을 이해하여야 한다. 이 경우에 있어서, 표준의 정보는 선택적으로 생략될 수 있다.
함수 "arith_get_context()"부터 시작하여, 1에 의한 i의 증가 및 위에서 설명된 것과 같은 동일한 과정의 재수행에 의한 함수 "arith_update_context"의 완료 후에 프레임의 그 다음의 2-투플이 디코딩된다.
1g/2 2-투플들이 프레임 내에 디코딩될 때, 또는 정지 심볼 "ARITH_STOP" 발생할 때, 스펙트럼 진폭의 디코딩 과정이 종료되고 사인들의 디코딩이 시작된다.
사인들의 디코딩에 관한 상세한 설명은 도 3을 참조하여 설명되었는데, 사인들의 디코딩은 참조 번호 314에 도시된다.
일단 모든 무부호 양자화된 스펙트럼 계수들이 디코딩되면, 어코딩 사인(according sign)이 가산된다. "x_ac_dec"의 각각의 비-널(non-null)의 양자화된 값을 위하여 비트가 판독된다. 만일 판독된 비트 값이 1과 동일하면, 양자화된 값은 양(positive)이고 아무것도 수행되지 않으며, 사인된 값은 이전에 디코딩된 무부호 값과 동일하다. 그렇지 않으면(즉, 만일 판독된 비트 값이 0과 동일하면), 디코딩된 계수(또는 스펙트럼 값)는 음이고 무부호 값으로부터 두 개의 보수(complement)가 취해진다. 사인된 비트는 낮은 주파수부터 높은 주파수로 판독된다. 상세한 설명을 위하여 도 3 및 사이들 코딩(314)에 대한 설명이 참조된다.
디코딩은 함수 "arith_finish()"의 호출에 의해 완료된다. 나머지 스펙트럼 계수들은 0으로 설정된다. 각각의 콘텍스트 상태는 상응하게 업데이트된다.
상세한 설명을 위하여, 함수 "arith_finish()"의 슈도 프로그램 코드 표현을 도시한, 도 5m이 참조된다. 도시된 것과 같이, 함수 "arith_finish()"는 디코딩된양자화된 스펙트럼 계수들을 설명하는 입력 변수(1g)를 수신한다. 바람직하게는, 함수 "arith_finish()"의 입력 변수(1g)는 스펙트럼 계수들을 고려하지 않고, 0-값이 "ARITH_STOP" 심볼의 검출에 대응하여 할당된, 실제로 디코딩된 스펙트럼 계수들의 수를 설명한다. 함수 "arith_finish()"의 입력 변수(N)는 현재 윈도우(즉, 오디오 콘텐츠의 현재 부와 관련된 윈도우)의 윈도우 길이를 설명한다. 일반적으로, 윈도우의 길이(N)와 관련된 스펙트럼 값들의 수는 N/2와 동일하고 윈도우 길이(N)의 윈도우와 관련된 스펙트럼 값들의 2-투플들의 수는 N/4와 동일하다.
함수 "arith_finish()"는 또한 입력 변수로서, 디코딩된 스펙트럼 값들의 벡터 "x_ac_dec", 또는 적어도 그러한 디코딩된 스펙트럼 값들의 벡터의 레퍼런스(reference)를 수신한다.
함수 "arith_finish()"는 또한 산술 정지 상태의 존재에 기인하여 스펙트럼 값들이 0으로 디코딩된, 어레이(또는 벡터) "x_ac_dec"의 엔트리들을 설정하도록 구성된다. 게다가, 함수 "arith_finish()"는 산술 정지 상태의 존재에 기인하여 어떤 값들도 1의 미리 결정된 값으로 디코딩되지 않은 스펙트럼 값들과 관련되는, 콘텍스트 서브-영역 값들 "q[1][i]"을 설정한다. 1의 미리 결정된 값은 스펙트럼 값들의 투플과 상응하며 두 스펙트럼 값들은 모두 0과 동일하다.
따라서, 함수 "arith_finish()"는 산술 정지 상태의 존재에서도, 스펙트럼 값들의 전체 어레이(또는 벡터) "x_ac_dec" 및 또한 서브-영역 값들 "q[1][i]의 전체 어레이를 업데이트하도록 허용한다.
11.10.2 도 5o 및 5p에 따른 콘텍스트 업데이트
다음에서, 콘텍스트 업데이트의 또 다른 실시 예가 도 5o 및 5p를 참조하여 설명될 것이다. 2-투플의 무부호 값이 완전히 디코딩되는 포인트에서, 콘텍스트(q)는 그리고 나서 그 다음의 2-투플을 위하여 업데이트된다. 만일 존재하는 2-투플이 마지막 2-투플이면, 업데이트가 또한 실행된다. 두 업데이들 모두 도 5o에 그것의 슈도 프로그램 코드 표현이 도시된, 함수 "arith_update_context()"에 의해 만들어진다.
프레임의 그 다음의 2-투플은 그리고 나서 1에 의해 i를 증가시키고 함수 arith_decode()를 호출함으로써 디코딩된다. 만일 1g/2 2-투플이 이미 프레임과 함께 디코딩되었거나, 또는 만일 정지 심볼 "ARITH_STOP"이 발생하였으면, 함수 "arith_finish()"가 호출된다. 콘텍스트는 그 다음의 프레임을 위하여 저장되고 어레이(또는 벡터) "qs" 내에 저장된다. 함수 "arith_save_context()"의 슈도 프로그램 코드가 도 5p에 도시된다.
일단 모든 무부호 양자화된 스펙트럼 계수들이 디코딩되면, 사인이 그때 가산된다. "qdec"의 각각의 양자화된 값을 위하여 비트가 판독된다. 만일 판독된 비트 값이 0과 동일하면, 양자화된 값은 음이고 사인된 값은 이전에 디코딩된 무부호 값과 동일하다. 그렇지 않으면, 디코딩된 계수는 음이고 무부호 값으로부터 두 개의 보수가 취해진다. 사인된 비트들는 낮은 주파수부터 높은 주파수로 판독된다.
11.11 디코딩 과정의 요약
다음에서, 디코딩 과정이 간단히 요약될 것이다. 상세한 설명을 위하여, 위의 설명들 및 또한 도 3, 4, 5a, 5c, 5e, 5g, 5j, 5k, 5l 및 5m이 참조된다. 양자화된 스펙트럼 계수들 "x_ac_dec[]"은 가장 낮은 주파수 계수로부터 시작하여 무잡음으로 디코딩되고 가장 높은 주파수 계수로 진행한다. 그것들은 이른바 2-투플(a, b, 또한 {a,b}로 지정되는)에서 수집하는, 두 개의 연속적인 계수들(a, b)의 그룹들에 의해 디코딩된다.
주파수-도메인을 위한(즉, 주파수-도메인 모드를 위한) 디코딩된 계수들 "x_ac_dec[]"은 그리고 나서 어레이 "x_ac_quant[g][win][sfb][bin]" 내에 저장된다. 무잡음 코딩 코드워드의 전송의 순서는 그것들이 어레이 내에 수신되고 저장되는 순서로 디코딩될 때와 같은데. "bin"은 가장 빨리 증가하는 지수이고 "g"는 가장 느리게 증가하는 지수이다. 코드워드 내에서, 디코딩의 순서는 a, 그리고 나서 b이다. "변환 코딩-여기"를 위한 (즉, 변환-코딩 여기를 사용하는 오디오 디코딩을 위한) 디코딩된 계수들 "x_ac_dec[]"은 어레이 "x_tcx_invquant[win][bin]" 내에 저장되고(예를 들면, 직접적으로) 무잡음 코딩 코드워드의 전송의 순서는 그것들이 어레이 내에 수신되고 저장되는 순서로 디코딩될 때와 같은데. "bin"은 가장 빨리 증가하는 지수이고 "win"은 가장 느리게 증가하는 지수이다. 코드워드 내에서, 디코딩의 순서는 a, 그리고 나서 b이다.
우선, 플래그 "arith_reset_flaf"는 만일 콘텍스트가 반드시 리셋되어야 하는지를 결정한다. 만일 플래그가 참이면, 이는 함수 "arith_map_context"에서 고려된다.
디코딩 과정은 콘텍스트 엘리먼트 벡터 "q"가 "q[1][]"에 정된 이전 프레임의 콘텍스트 엘리먼트들을 "q[0][]" 내로의 복사 및 매핑에 의해 업데이트되는 초기화 단계와 함께 시작한다. "q" 내의 콘텍스트 엘리먼트들은 2-투플들 당 4-비트들 상에 저장된다. 상세한 사렴을 위하여, 도 5a의 슈도 프로그램 코드가 참조된다.
무잡음 디코더는 무불호 양자화된 스펙트럼 계수들의 2-투플들을 출력한다. 처음에, 콘텍스트의 상태(c)가 디코딩하기 위하여 2-투플들을 둘러싸는 이전에 디코딩된 스펙트럼 계수들을 기초로 하여 계산된다. 따라서, 상태는 단지 두 개의 새로운 2-투플만을 고려하여 마지막으로 디코딩된 2-투플의 콘텍스트 상태를 사용하여 증가하여 업데이트된다. 상태는 17-비트 상에서 디코딩되고 함수 "arith_get_context"에 의해 반환된다. 설정 함수 "arith_get_context"의 슈도 프로그램 코드가 도 5c에 도시된다.
콘텍스트 상태(c)는 가장 중요한 2-비트-와이즈-플레인(m)을 디코딩하기 위하여 사용되는 누적-주파수-테이블을 결정한다. c로부터 상응하는 누적-주파수-테이블 지수 "pki"로의 매핑은 함수 "arith_get_pk()"에 의해 실행된다. 함수 "arith_get_pk()"의 슈도 프로그램 코드가 도 5e에 도시된다.
값(m)은 누적-주파수-테이블 "arith_cf_m[pki][]"과 함께 호출되는 함수 "arith_decode()"를 사용하여 디코딩되는데, "pki"는 "arith_get_pk()"에 의해 반환되는 지수와 상응한다. 산술 코더(또는 디코더)는 스케일링을 갖는 태그 발생의 방법을 사용하는 정수 구현이다. 도 5g에 따른 슈도 프로그램 코드는 사용된 알고리즘을 설명한다.
디코딩된 값(m)이 탈출 심볼 "ARITH_ESCAPE"이면, 변수들 "lev" 및 "esc_nb"은 1에 의해 증가되고 또 다른 값(m)이 디코딩된다. 이 경우에 있어서, 함수 "get_pk()"는 입력 인수로서, 값 "c+ esc_nb<<17"과 함께 다시 한번 호출되는데, "esc_nb"는 동일한 2-투플을 위하여 이전에 디코딩되고 7로 경계되는 탕출 심복들의 수이다.
일단 값(m)이 탈출 심볼 "ARITH_ESCAPE"이 아니면, 디코더는 연속적인 m이 "ARITH_STOP" 심볼을 형성하는지를 체크한다. 만일 상태 "(esc_nb>0&&m==0)"이 참이면, "ARITH_STOP" 심볼이 검출되고 디코딩 과정이 종료된다. 디코더는 이후에 설명되는 사인 디코딩으로 직접 건너뛴다. 상태는 나머지 프레임이 0 값으로 구성되는 것을 의미한다.
만일, "ARITH_STOP" 심볼이 충족되지 않으면, 만일 어떤 것이라도 존재하면, 존재하는 2-투플을 위하여 그때 나머지 비트-플레인들이 디코딩된다. 나머지 비트-플레인들은 누적-주파수테이블 "arith_cf_r[]"로 "lev" 횟수로 "arith_decode()"를 호출함으로써 가장 중요한 레벨로부터 가장 덜 중요한 레벨로 디코딩된다. 디코딩된 비트-플레인들(r)은 이것의 슈도 프로그램 코드가 도 5j에 도시된, 알고리즘에 따라 이전에 디코딩된 값(m)을 개선하도록 허용한다. 이 시점에서, 2-투플(a, b)의 무부호 값은 완전히 디코딩된다. 그것은 이것의 슈도 프로그램 코드가 도 5k에 도시된, 알고리즘에 따라 스펙트럼 계수들을 유지하는 엘리먼트 내로 저장된다.
콘텍스 "q"는 또한 그 다음의 2-투플을 위하여 업데이트된다. 이러한 콘텍스트 업데이트는 그것은 이것의 슈도 프로그램 코드가 도 5l에 도시된, 함수 "arith_update_context()"에 의해 실행된다.
프레임의 그 다음의 2-투플은 그리고 나서 함수 "arith_get_context()"로부터 시작하여, 1에 의해 i를 증가시키고 위에서 설명된 동일한 과정을 재수행함으로써 디코딩된다. lg/2 2-투플들이 프레임 내에 디코딩될 때, 또는 정지 심볼 "ARITH_STOP" 발생할 때, 스펙트럼 진폭의 디코딩 과정이 종료되고 사인들의 디코딩이 시작된다.
디코딩은 함수 "arith_finish()"의 호출에 의해 완료된다. 나머지 스펙트럼 계수들은 0으로 설정된다. 각각의 콘텍스트 상태는 상응하게 업데이트된다. 함수 "arith_finish()"의 슈도 프로그램 코드 표현이 도 5m에 도시된다.
일단 모든 무부호 양자화된 스펙트럼 계수들이 디코딩되면, 어코딩 사인이 가산된다. "x_ac_dec"의 각각의 비-널 양자화된 값을 위하여 비트가 판독된다. 만일 판독된 비트 값이 1과 동일하면, 양자화된 값은 양이고 아무것도 수행되지 않으며, 사인된 값은 이전에 디코딩된 무부호 값과 동일하다. 그렇지 않으면, 디코딩된 계수는 음이고 무부호 값으로부터 두 개의 보수가 취해진다. 사인된 비트들은 낮은 주파수부터 높은 주파수로 판독된다.
11.12 범례
도 5q는 도 5a, 5c, 5e, 5f, 5g, 5j, 5k, 5l, 및 5m에 따른 알고리즘과 관련되는 정의들의 범례를 나타낸다.
도 5r은 도 5b, 5d, 5f, 5h, 5i, 5n, 5o, 및 5p에 따른 알고리즘과 관련되는 정의들의 범례를 나타낸다.
12. 매핑 테이블들
본 발명의 일 실시 예에서, 특히 바람직한 테이블들 "ari_lookup_m", "ari_hash_m", 및 "ari_cf_m"이 도 5e 또는 5f에 따른 함수 "arith_get_pk()"의 실행 및 도 5g, 5h, 및 5i를 참조하여 설명된 함수 "arith_decode()"의 실행을 위하여 사용된다. 그러나, 일부 대안의 실시 예들에서 다른 테이블들이 사용될 수 있다는 것을 이해하여야 한다.
12.1 도 22(a), 22(b), 22(c) 및 22(d)에 따른 테이블 " ari _ hash _m[742]"
첫 번째 바람직한 실시 예는 도 5e를 참조하여 설명되었고, 두 번째 바람직한 실시 예는 도 5f를 참조하여 설명된, 함수 "arith_get_pk()"에 의해 사용되는, 테이블 "ari_hash_m"의 특히 바람직한 구현의 콘텐츠가 도 22(a) 내지 22(d)의 테이블에 도시된다. 도 22(a) 내지 22(d)의 테이블들은 테이블(또는 어레이) "ari_hash_m[742]"d의 742 엔트리들을 열거한다는 것을 이해하여야 한다. 또한 도 22(a) 내지 22(d)의 테이블 표현은 첫 번째 값 "0x00000104UL"이 0의 엘리먼트 지수(또는 테이블 지수)를 갖는 테이블 엔트리 "ari_hash_m[0]"과 상응하는 것과 같이, 그리고 마지막 값 "0xFFFFFF004UL"이 741의 엘리먼트 지수 또는 테이블 지수를 갖는 테이블 엔트리 "ari_hash_m[741]"과 상응하는 것과 같이, 엘리먼트 지수들의 순서로 엘리먼트들을 도시한다는 것을 이해하여야 한다. 또한 여기서 "0x"는 테이블 "ari_hash_m[]"의 테이블 엔트리들이 16진법 포맷으로 표현된다는 것을 이해하여야 한다. 게다가, 여기서 접미사 "UL"은 테이블 "ari_hash_m[]"의 테이블 엔트리들이 무부화의 "긴(long)" 정수 값들(32-비트의 정밀도를 갖는)을 나타낸다는 것을 이해하여야 한다.
게다가, 도 22(a) 내지 22(d)에 따른 테이블 "ari_hash_m[]"의 테이블 엔트리들은 함수 "arith_get_pk()"의 테이블 검색(506b, 508b, 510b)의 실행을 허용하기 위하여, 숫자 순서로 배열된다는 것을 이해하여야 한다.
또한 테이블 "ari_hash_m[]"의 테이블 엔트리들의 가장 중요한 24-비트들은 특정 중요한 상태 값들을 표현하고(그리고 첫 번째 서브-엔트리로 고려될 수 있는), 반면에 덜 중요한 8-비트들은 매핑 룰 지수 값들 "pki"을 표현한다는(그리고 두 번째 서브-엔트리로 고려될 수 있는) 것을 이해하여야 한다. 따라서, 테이블 "ari_hash_m[]"의 엔트리들은 콘텍스트 값의 매핑 룰 지수 값 "pki" 상으로의 "직격(direct hit)" 매핑을 설명한다.
그러나, 테이블 "ari_hash_m[]"의 엔트리들의 최상의 24-비트들은 동시에, 동일한 매핑 룰 지수 값이 관련된, 수치 콘텍스트 값들의 구간들의 구간 경계들을 표현한다.
12. 도 21에 따른 테이블 " ari _ lookup _m"
테이블 "ari_lookup_m"의 특히 바람직한 실시 예의 콘텐츠가 도 21에 도시된다. 여기서 도 21의 테이블은 테이블 "ari_lookup_m"의 엔트리들을 열거한다는 것을 이해하여야 한다. 엔트리들은 예를 들면, "i_max" 또는 "i-min" 또는 "i"로 지정되는, 1차원 정수-형태 지수 값(또한 "엘리먼트 지수" 또는 "어레이 지수" 또는 "테이블 지수"로서 지정되는)에 의해 참조된다. 전체 742 엔트리들을 포함하는, 테이블 "ari_lookup_m"은 도 5e 또는 5f에 따른 함수 "arith_get_pk"에 의한 사용에 적합하다는 것을 이해하여야 한다. 또한 도 21에 따른 테이블 "ari_lookup_m"은 도 22에 따른 테이블 "ari_hash_m"과 협력하도록 적용된다는 것을 이해하여야 한다.
테이블 "ari_lookup_m[742]"의 엔트리들은 0 및 741 사이의 테이블 지수 "i"(예를 들면, "i_min" 또는 "i-min" 또는 "i")의 오름 차순으로 열거된다는 것을 이해하여야 한다. 용어 "0x"는 테이블 엔트리들이 16진법 포맷으로 설명된다는 것을 나타낸다. 따라서, 첫 번째 테이블 엔트리 "0x01"은 0의 테이블 지수를 갖는 테이블 엔트리 "ari_lookup_m[0]"와 상응하고 마지막 테이블 엔트리 "0x27"은 741의 테이블 지수를 갖는 테이블 엔트리 "ari_lookup_m[741]"와 상응한다.
또한 테이블 "ari_lookup_m[]"의 엔트리들은 테이블 "ari_hash_m[]"의 인접한 엔트리들에 의해 정의되는 구간들과 관련된다. 따라서, 테이블 "ari_lookup_m[]"의 엔트리들은 수치 콘텍스트 값들의 구간들과 관련된 매핑 룰 지수 값들을 설명한다.
12. 3 도 23(a), 23(b) 및 23(c)에 따른 테이블 " ari _ cf _m[64][17]"
도 23은 이 중의 하나가 예를 들면, 함수 "arith_decode()"의 실행을 위하여, 즉, 가장 중요한 비트-플레인 값의 실행을 위하여, 오디오 인코더(100, 700) 또는 오딩 디코더(200, 800)에 선택되는, 한 세트의 64 누적-주파수-테이블들(또는 서브-테이블들) "ari_cf_m[pki][17]"을 도시한다. 도 23(a) 내지 23(4c에 도시된 64 누적-주파수-테이블들(또는 서브-테이블들) 중 선택된 하나는 함수 "arith_decode()"의 실행에서 테이블 "cum_freq[]"의 함수를 취한다.
도 23(a) 내지 23(c)에 도시된 것과 같이, 각각의 서브-블록 또는 라인은 17 엔트리들을 갖는 누적-주파수-테이블을 표현한다. 예를 들면, 첫 번째 서브-블록 또는 라인(2310)은 "pki=0"을 위한 누적-주파수-테이블의 17 엔트리들을 표현한다. 두 번째 서브-블록 또는 라인(2312)은 "pki=1"을 위한 누적-주파수-테이블의 17 엔트리들을 표현한다. 마지막으로 64번째 서브-블록 또는 라인(2364)은 "pki=63"을 위한 누적-주파수-테이블의 17 엔트리들을 표현한다. 따라서, 도 23(a) 내지 23(c)은 "pki=0" 내지 "pki=95"를 위한 64개의 서로 다른 누적-주파수-테이블들(또는 서브-테이블들)을 효율적으로 표현하는데, 64 누적-주파수-테이블들 각각은 서브-블록({}들에 의해 둘러싸인) 또는 라인에 의해 표현되고, 상기 누적-주파수-테이블들 각각은 17 엔트리들을 포함한다.
서브-블록 또는 라인(예를 들면 서브-블록 또는 라인 2310 또는 2312, 또는 서브-블록 또는 라인 2396) 내에서, 첫 번째 값(예를 들면, 첫 번째 서브-블록(2310)의 첫 번째 값 708)은 서브-블록 또는 라인에 의해 표현되는 누적-주파수-테이블(0의 어레이 지수 또는 테이블 지수를 갖는)의 첫 번째 엔트리를 설명하고, 마지막 값(예를 들면, 첫 번째 서브-블록(2310)의 마지막 값 0)은 서브-블록 또는 라인에 의해 표현되는 누적-주파수-테이블(16의 어레이 지수 또는 테이블 지수를 갖는)의 마지막 엔트리를 설명한다.
따라서, 도 23의 테이블 표현의 각각의 서브-블록 또는 라인(2310, 2312, 2364)은 도 5g, 또는 도 5h와 5i에 따른 함수 "arith_decode"에 의한 사용을 위한 누적-주파수-테이블의 엔트리들을 표현한다. 함수 "arith_decode"의 입력 변수 "cum_freq[]"는 현재 스펙트럼 계수들의 디코딩을 위하여 64 누적-주파수-테이블들(테이블 "ari_cf_m"의 17 엔트리들의 개별 서브-블록들에 의해 표현되는)중 어느 것이 사용되어야만 하는지를 설명한다.
12.4 도 24에 따른 테이블 " ari _ cf _r[]"
도 24는 테이블 "ari_cf_r[]"의 콘텐츠를 도시한다.
상기 테이블의 4개의 엔트리가 도 24에 도시된다. 그러나, 테이블 "ari_cf_r[]"은 실제로 다른 실시 예들과 다를 수 있다는 것을 이해하여야 한다.
13. 개요. 실행 평가 및 장점들
본 발명에 따른 실시 예들은 계산 복잡성,메모리 요구사항, 및 코딩 효율 사이의 향상된 균형을 획득하기 위하여, 위에서 설명된 것과 같이, 업데이트된 함수들(또는 알고리즘들) 및 테이블들의 업데이트된 한 세트를 사용한다.
일반적으로, 본 발명에 따른 실시 예들은 개선된 무잡음 스펙트럼 코딩을 생성한다. 본 발명에 따른 실시 예들은 통합 음성 및 오디오 코딩에서의 스펙트럼 무잡음 코딩의 향상을 설명한다.
본 발명에 따른 실시 예들은 MPEG 입력 페이퍼(input paper) m16912 및 m17002에 존재하는 것과 같은 규약을 기초로 하여, 스펙트럼 계수들의 개량된 무잡음 스펙트럼 코딩 상의 CE를 위한 업데이트된 제안을 생성한다. 두 제안들 모두 평가되었으며, 잠재적 단점들이 제거되고 강점들이 조합되었다. 게다가 본 발명의 실시 예들은 현재의 통합 음성 및 오디오 코딩 사양에서의 적용을 위한 무잡음 스펙트럼 코딩의 업데이트를 포함한다.
13.1 개요
다음에서, 간단한 개요가 설명된다. 진행중인 표준 통합 음성 및 오디오 코딩의 과정에서, 통합 음성 및 오디오 코딩에서의 향상된 스펙트럼 무잡음 코딩 규약(aka 엔트로피 코딩 규약)이 제안되었다. 이러한 향상된 스펙트럼 무잡음 코딩 규약은 무잡음 방식으로 양자화된 스펙트럼 계수들을 더 효율적으로 코딩하는데 도움을 준다. 따라서, 스펙트럼 계수들은 변수 길이의 상응하는 코드워드들로 매핑된다. 이러한 엔트리 코딩 규약은 콘텍스트 기반 산술 코딩 규약을 기초로 한다. 스펙트럼 계수의 콘텍스트(즉, 인접하는 스펙트럼 계수들)스펙트럼 계수의 산술 코딩을 위하여 사용되는, 확률 분포(누적-주파수-테이블)를 결정한다.
본 발명에 따른 실시 예들은 이전에 통합 음성 및 오디오 코딩에서 제안된 것과 같이, 스펙트럼 코딩 규약을 위하여 업데이트된 테이블들의 세트를 사용한다. 배경 설명을 위하여, 종래의 무잡음 코딩 기술은 첫째로 알고리즘을, 두 번째로 한 세트의 훈련된(trained) 테이블을 포함하는(또는, 적어도 하나의 알고리즘 및 한 세트의 훈련된 테이블들) 것으로 이해되어야 한다. 이러한 종래의 훈련된 테이블들 세트는 통합 음성 및 오디오 코딩 규격 초안 4 비트스트림들을 기초로 한다. 통합 음성 및 오디오 코딩이 이제 규격 초안 7로 진행하였고, 반면에 중요한 변화들이 통합 음성 및 오디오 코딩 사양에 적용되었기 때문에, 본 발명의 실시 예들에서는 최신의 통합 음성 및 오디오 코딩 버전 규격 초안 7을 기초로 하는, 재훈련된 테이블들의 새로운 세트가 사용된다. 알고리즘 자체는 변경되지 않은 채로 남아 있다. 보조 효과로서, 반환된 테이블들은 이전에 존재하는 규약들보다 더 나은 압축 실행을 제공한다.
본 발명에 따라, 종래의 훈련된 테이블들을 증가된 코딩 성능을 야기하는, 여기에 나타나는 것과 같은 재훈련된 테이블들로 대체하기 위하여 본 발명이 제안된다.
13.2 도입
다음에서, 도입부가 제공될 것이다.
통합 음성 및 오디오 코딩 작업 항목을 위하여 무잡음 코딩 규약의 업데이트에 대한 일부 제안들이 이전 회의에서 공동 방식으로 제시되었다. 그러나, 이러한 적업은 기본적으로 89차 회의에서 시작되었다. 그때부터 통합 음성 및 오디오 코딩 규격 초안 4 레퍼런스 품질 비트스트림들 및 규격 초안 4 훈련 데이터베이스 상의 훈련을 기초로 한 성능 결과를 나타내기 위한 스펙트럼 효율 코딩에 대한 모든 제안들이 일반적 습관으로 되었다. 무잡음 코딩 CE들을 위하여 나타난 결과들은 따라서 차선으로 간주되었는데, 그 이유는 그것들이 적어도 규격 초안 버전과 상응하지 않기 때문이다.
따라서, 업데이트된 알고리즘들 및 인코딩되고 디코딩되는 스펙트럼 값들의 통계에 에 더 잘 적용되는 스펙트럼 무잡음 코딩 테이블들이 제안되었다.
13.3 알고리즘의 간단한 설명.
다음에서, 알고리즘의 간단한 설명이 제공될 것이다.
메모리 공간 및 계산 복잡성의 문제를 극복하기 위하여, 규격 초안 6/7에서와 같은 규약을 대체하기 위한 개량된 무잡음 코딩 규약들이 제안되었다. 개발의 주요 초점은 압축효율성을 유지하고 계산 복잡도를 증가시키지 않는 동안의 메모리 요구의 감소에 맞춰졌다. 더 구체적으로는 목적은 압축 성능, 복잡성, 및 메모리 요구사항의 다차원 복잡성 공간에서의 최적 균형에 도달하는 것이었다.
제안된 코딩 규약 제안은 규격 초안 6/7 무잡음 코더의 주요 특징, 주로 콘텍스트 적용을 빌려온다. 콘텍스트는 과거 및 현재 프레임 모두로부터 규격 초안 6/7에서 오는, 이전에 디코딩된 스펙트럼 계수들을 사용하여 파생된다. 그러나, 스펙트럼 계수들은 2-투플을 형성하기 위하여 2개의 계수들을 결합함으로써 새로 코딩된다. 또 다른 차이는 스펙트럼 계수들이 세 부분들, 사인, 가장 중요한 비트들, 및 덜 중요한 비트들로 할당된다는 사실에 있다. 사인은 두 부분들, 두 개의 가장 중요한 비트들 및 만일 존재하면, 나머지 비트들로 더 분할되는 크기로부터 독립적으로 파생된다. 두 엘리먼트의 크기가 3보다 작거나 동일한 2-투플들은 가장 중요한 비트들 코딩에 의해 직접 코딩된다. 그렇지 않으면, 어떤 부가적인 비트 플레인의 시그널링을 위하여 탈출 코드워드가 먼저 전송된다. 기본 버전에서, 누락 정보, 덜 중요한 비트들 및 사인은 균일한 확률 분포를 사용하여 모두 코딩된다.
테이블 크기 감소는 여전히 가능한데, 그 이유는 다음과 같다:
Figure pct00001
17 심볼들을 위한 확률들만이 저장되는데 필요하다: {[0;+3], [0;+3]} + ESC 심볼;
Figure pct00002
그룹 테이블을 저장할 필요가 없다(e그룹들, d그룹들, dg벡터들); 및
Figure pct00003
해시-테이블의 크기는 적절한 훈련으로 감소될 수 있다.
13.3.1 가장 중요한 비트들 코딩
다음에서, 가장 중요한 비트들 코딩이 설명될 것이다.
이미 언급된 것과 같이, 규격 초안 6/7, 이전 제안들 및 현재 제안 사이의 차이는 심볼들의 크기이다. 규격 초안 6/7에서, 콘텍스트 발생 및 무잡음 코딩을 위하여 4-투플들이 고려되었다. 이전 제안에서는, ROM 요구사항을 위하여 1-투플들이 대신 사용되었다. 본 개발 과정에서는, 2-투플들이 계산 복잡도를 증가시키지 않고 ROM 요구사항을 감소시키기 위한 최적 절충인 것으로 나타났다. 콘텍스트 유래를 위하여 네 개의 4-투플들을 고려하는 대신에, 이제 네 개의 2-투플들이 고려된다. 도 25에 도시된 것과 같이, 세 개의 2-투플들은 과거 프레임으로부터 오고 하나는 현재 프레임으로부터 온다.
테이블 크기 감소는 세 가지 주요 요인에 기인한다. 먼저, 17 심볼들을 위한 확률만이 저장되는데 필요하다(예를 들면, {[0;+3], [0;+3]} + ESC 심볼). 그룹 테이블들(즉, e그룹들, d그룹들, dg벡터들)이 더 이상 필요하지 않다. 게다가, 적절한 훈련을 실행함으로써 해시-테이블의 크기가 감소된다.
비록 4에서 2로 크기가 감소되었으나, 복잡도는 규격 초안 6/7에서와 같은 범위로 유지된다. 이는 콘텍스트 발생 및 해시-테이블 액세스 모두를 단순화함으로써 달성되었다.
다른 단순화 및 최적화들은 다른 코딩 성능이 영향을 받지 않았고 심지어 약간 향상된 개량된 방법으로 수행되었다.
13.3.2 덜 중요한 비트들 코딩
균일한 확률 분포로 덜 중요한 비트들이 코딩된다. 규격 초안 6/7과 비교하여, 덜 중요한 비트들은 이제 4개의 t-투플 대신에 2-투플들 내에서 고려된다. 그러나, 덜 중요한 비트들의 다른 코딩도 가능하다.
13.3.3. 사인 코딩
복잡도 감소를 위하여 산술 코어-코더를 사용하지 않고 사인이 코딩된다. 사인은 상응하는 크기가 비-널일 때 단지 1 비트 상으로 전송된다. 0은 양의 값을 의미하고 1은 음의 값을 의미한다.
13.4 제안된 테이블들의 업데이트
본 제안은 통합 음성 및 오디오 코딩 스펙트럼 무잡음 코딩 규약을 위하여 테이블들의 업데이트된 세트를 제공한다. 테이블들은 현재 통합 음성 및 오디오 코딩 규격 초안 6/7 비트스트림들을 기초로 하여 재훈련된다. 훈련 과정을 야기하는, 실제 테이블들을 제외하고, 알고리즘들은 변경되지 않고 남아 있다.
재훈련의 효과를 관찰하기 위하여, 새로운 테이블들의 코딩 효율 및 메모리 요구사항이 이전 제안(M17558) 및 규격 초안 6과 비교된다. 규격 초안 6이 기준으로서 선택되는데 그 이유는 a) 92차 회의에서의 결과들이 이 기준과 관련하여 주어졌으며 b) 규격 초안 6 및 규격 초안 7이 차이는 스펙트럼 계수들의 엔트로피 코딩 또는 분포에 대한 영향을 갖지 않고, 단지 매우 작기 때문이다.
13.4.1 코딩 효율
우선 제안된 테이블들의 새로운 세트의 코딩 효율이 통합 음성 및 오디오 코딩 규격 초안 6 및 M17558에서 제안된 것과 같은 CE에 대하여 비교된다. 순수 재훈련에 의한, 도 26의 테이블 표현에 도시된 것과 같이, 코딩 효율에서의 평균 증가는(규격 초안 6과 비교하여) 1.74%(M17558)부터 2.43%(본 발명의 일 실시 예에 따른, 새로운 제안)로 증가될 수 있다. M17558과 비교하여, 압축 이득은 따라서 본 발명의 실시 예들에서, 약 0.7% 증가될 수 있다.
도 27은 모든 연산 포인트들을 위한 압축 이득을 가시화한다. 도시된 것과 같이, 규격 초안 6과 비교하여 본 발명에 따른 실시 예들을 사용하여 적어도 2%의 최소 압축 이득이 도달될 수 있다. 12 킬로비트들 및 16 킬로비트들과 같은, 낮은 비트레이트들 위하여, 압축 이득은 오히려 약하게 증가된다. 또한 3% 이상의 코딩 효율에서의 상당한 증가가 관찰될 수 있는, 64 킬로비트들과 같은 높은 비트레이트들에서도 뛰어난 성능이 유지된다.
모든 규격 초안 6 기준 품질 비트스트림들의 손실 없는 변환 코딩이 비트 저장기 제한을 위반하지 않고 가능한 것으로 밝혀졌다. 더 상세한 결과들이 13.6에서 설명될 것이다.
13.4.2 메모리 요구 및 복잡도
두 번째로, 메모리 요구 및 복잡도가 통합 음성 및 오디오 코딩 규격 초안 6 및 M17558에서 제안된 CE에 대하여 비교된다. 도 28의 테이블은 규격 초안 6, M17558에서 제안 및 본 발명의 일 실시 예에 따른 새로운 제안과 같은 무잡음 코더를 위한 메모리 요구를 비교한다. 확실히 도시된 것과 같이, 메모리 요구는 M17558에서 제안된 것과 같은, 새로운 알고리즘을 적용함으로써 상당히 감소되었다. 또한 새로운 제안을 위하여 전체 테이블 크기는 거의 80 워드(32 비트)에 의해 약간 감소될 수 있으며, 이는 1441 워드의 전체 ROM 요구, 및 오디오 채널 당 64 워드(32 비트)의 전체 ROM 요구를 야기한다는 것을 알 수 있다. ROM 요구 내의 적은 저장은 규격 초안 6 훈련 비트스트림들의 새로운 세트를 기초로 하는 자동 훈련 알고리즘에 의해 알려진, 확률 모델들의 수 및 해시-테이블 크기 사이의 더 나은 균형의 결과이다. 더 상세한 설명을 위하여, 도 29의 테이블이 참조된다.
복잡도와 관련하여, 새로 제안된 규약의 계산적 복잡도가 통합 음성 및 오디오 코딩에서의 현재 무잡음의 최적화된 버전에 대하여 비교되었다. 이는 "펜과 페이퍼 방법(pen and paper method)"에 의해, 그리고 새로운 코드 규약이 현재 규약과 같은 동일한 규약을 갖는 코드를 명령함으로써 알려졌다. 32 bps 스테레오를 위한 도 30의 테이블 및 12 kbps 모노 연산 포인트들을 위한 도 31의 테이블에서 설명된 것과 같이, 평가된 복잡도는 규격 초안 6의 무잡음 디코더의 최적화된 구현을 넘어 0.006 중량 MOPS 및 0.024 중량 MOPS의 증가를 나타낸다. 약 11.7 PCU [2]의 전체 복잡성과 비교하여, 이러한 차이들은 무시되는 것으로 고려될 수 있다.
13. 5 결론
다음에서, 일부 결론들이 제공될 것이다.
통합 음성 및 오디오 코딩 스펙트럼 무잡음 코딩 규약을 위하여 테이블들의 새로운 세트가 제시되었다.이전 비트스트림들을 기초로 한 훈련의 결과인, 이전 제안과 비교하여, 제안된 새로운 테이블들은 통합 음성 및 오디오 코딩 규격 초안 상에서 훈련되었는데, 고급 훈련 개념이 사용되었다. 이러한 재훈련에 의해, 이전 제안들과 비교하여 낮은 메모리 요구 또는 복잡성의 증가를 희생하지 않고, 현재 통합 음성 및 오디오 코딩 비트스트림들에 대한 코딩 효율이 향상될 수 있다. 통합 음성 및 오디오 코딩 규격 초안 6과 비교하여, 메모리 요구가 상당히 감소될 수 있다.
13.6 규격 초안 6 비트스트림들의 변환코딩에 대한 상세한 정보
규격 초안 6 비트스트림들의 변환코딩에 대한 상세한 정보는 도 32, 33, 34, 35 및 36의 테이블 표현에서 볼 수 있다.
도 32는 본 발명의 일 실시 예 및 규격 초안 6에서의 산술 코더에 의해 생산되는 평균 비트레이트의 테이블 표현을 도시한다.
도 33은 제안된 규약을 사용하여 프레임 기초 상의 통합 음성 및 오디오 코딩의 최소, 최대 및 평균 비트레이트의 테이블 표현을 도시한다.
도 34는 규격 초안 6 산술 코더를 사용하는 통합 음성 및 오디오 코딩 코더 및 본 발명의 일 실시 예에 따른 코더에 의해 생산되는 평균 비트레이트의 테이블 표현을 도시한다.
도 35는 본 발명에 따른 일 실 예를 위한 최상 및 최악의 경우의 테이블 표현을 도시한다.
도 36은 본 발명의 실시 예를 위한 비트 저장기 제한의 테이블 표현을 도시한다.
14. 규격 초안 6 또는 규격 초안 7과 비교할 때의 변화
다음에서, 종래의 무잡음 코딩과 비교할 때 무잡음 코딩의 변화가 설명될 것이다. 따라서, 통합 음성 및 오디오 코딩 규격 초안의 규격 초안 6 또는 규격 초안 7과 비교될 때의 변경과 관련하여 일 실시 예가 정의된다.
특히, 규격 초안 텍스트에 대한 변화들이 설명될 것이다. 바꾸어 말하면, 본 섹션은 통합 음성 및 오디오 코팅 사양 규격 초안 7에 대한 변화들의 완전한 세트를 열거한다.
14.1 기술적 설명의 변화
제안된 새로운 무잡음 코딩은 다음에 설명될 MPEG 통합 음성 및 오디오 코딩 규격 초안에서의 변경을 불러일으킨다. 중요한 차이들이 표시된다.
14.1.1 신택스 패이로드의 변화
도 7은 산술적으로 코딩된 데이터 "arith_data()"의 신택스의 표현을 도시한다. 주요 차이점들이 표시된다.
다음에서, 스펙트럼 무잡음 코더에 대한 변화들이 설명될 것이다.
"선형 예측-도메인" 코딩된 신호 및 "주파수-도메인" 코딩된 신호 모두로부터의 스펙트럼 계수들은 스칼라(scalar) 양자화되고 그리고 나서 적응 콘텍스트 의존 산술 코딩에 의해 무잡음으로 코딩된다. 양자화된 계수들은 가장 낮은 주파수로부터 가장 높은 주파수로 전송되기 전에 2-투플들 내에 함께 수집된다. 2-투플들의 사용은 스펙트럼 무잡음 코딩의 이전 버전과 비교할 때의 변화를 포함하는 것으로 이해되어야 한다.
그러나, 각각의 2-투플이 사인(s), 가장 중요한 2-비트-와이즈-플레인(m), 및 나머지 덜 중요한 비트-플레인들(r)로 분할되는 또 다른 변화가 존재한다. 또한, 값(m)이 계수들의 이웃에 따라 코딩되고, 나머지 덜 중요한 비트-플레인들(r)이 콘텍스트를 고려하지 않고 엔트로피 코딩되는 변화가 존재한다. 또한 값들(m 및 r)이 산술 코더의 심볼들을 형성하는 일부 이전 버전들과 관련하여 변화가 존재한다. 마지막으로, 사인들(s)이 비-널 양자화된 계수 당 1-비트를 사용하여 산술 코더 외부에서 코딩되는 일부 이전 버전들과 관련하여 변화가 존재한다.
상세한 산술 디코딩 과정이 아래의 섹션 14.2.3에서 설명된다.
14.1.2 정의들 및 헬프 엘리먼트들의 변화
다음에서, 일 실시 예에 따른 스펙트럼 무잡음 코딩이 요약될 것이다.
14.2.1 툴 설명
스펙트럼 무잡음 코딩은 양자화된 스펙트럼의 중복을 더 감소시키기 위하여 사용된다.
스펙트럼 무잡음 코딩 방법은 동력학적으로 적용된 콘텍스트와 함께 산술 코딩을 기초로 한다. 무잡음 코딩은 양자화된 스펙트럼 값들에 의해 제공되고 네 개의 이전에 디코딩된 이웃으로부터 유래된 콘텍스트 의존 누적 주파수 테이블들을 사용한다. 여기서, 도 25에 도시된 것과 같이, 시간 및 주파수 모두에서의 이웃이 고려된다. 그리고 나서 변수 길이 이진 코드를 발생시키기 위하여 산술 코더에 의해 누적 주파수 테이블들이 사용된다.
산술 코더는 심보들의 주어진 세트 및 그것들의 각각의 확률들을 위하여 이진 코드를 생산한다. 이진 코드는 심볼들 세트가 위치하는, 확률 구간을 코드워드에 매핑함으로써 발생된다.
14.2.2 정의들
정의들 및 헬프 엘리먼트들이 도 39에 설명된다. 산술 코딩의 이전 버전들과 비교할 때의 변화가 표시된다.
14.2.3 디코딩 과정
양자화된 스펙트럼 계수들(qdec)은 가장 낮은 주파수 계수로부터 시작하여 가장 높은 주파수 계수로 진행하면서 무잡음으로 디코딩된다. 그것들은 이른바 2-투플 {a, b} 내에 모이는 두 개의 연속적인 계수들(a 및 b)의 그룹들에 의해 디코딩된다.
고급 오디오 코딩을 위한 디코딩된 계수들은 그리고 나서 어레이 x_quant[g][win][sfb][bin] 내에 저장된다. 무잡음 코딩 코드워드들의 전송의 순서는 그것들이 어레이 내에 수신되고 저장되는 순서로 디코딩되는 것과 같은데, bin이 가잘 빨리 증대되는 지수이고 g가 가장 느리게 증대되는 지수이다. 코드워드 내에서 디코딩의 순서는 a 그리고 b이다.
변환 코딩 여기를 위한 디코딩된 계수들은 어레이 x_ tcx _ invquant [ win ][ bin ] 내에 저장되고, 무잡음 코딩 코드워드들의 전송의 순서는 그것들이 에레이 내에 수신되고 저장되는 순서로 디코딩되는 것과 같은데, bin이 가잘 빨리 증대되는 지수이고 win이 가장 느리게 증대되는 지수이다. 코드워드 내에서 디코딩의 순서는 a 그리고 b이다.
디코딩 과정은 과거 콘텍스트 내에 저장된 저장된 과거 콘텍스트 및 현재 프레임(q)의 콘텍스트 사이에서 매핑이 수행되는 초기화 단계와 함께 시작한다. 과거 콘텍스트(qs)는 주파수 라인 당 2-비트 상에 저장된다.
상세한 설명을 위하여, 도 40a의 알고리즘 "arith_map_context"의 슈도 프로그램 코드가 참조된다.
무잡음 디코더는 무부호 양자화된 스펙트럼 계수들의 2-투플들을 출력한다. 처음에, 디코딩하기 위한 2-투플을 둘러싸는 이전에 디코딩된 스펙트럼 계수들을 기초로 하여 콘텍스트의 상태(c)가 계산된다. 상태는 단지 두 개의 새로운 2-투플만을 고려하여 마지막으로 디코딩된 2-투플의 콘텍스트 상태를 사용하여 증가하여 업데이트된다. 상태는 17 비트 상에 코딩되고 함수 arith _ get _ context ()에 의해 반환된다.
함수 "arith_get_context()"의 슈도 프로그램 코드 표현이 도 40b에 도시된다.
일단 콘텍스트 상태(c)가 계산되면, 콘텍스트 상태의 확률 모델과 상응하는 적절한 누적 주파수 테이블이 제공되는 arith _ decode ()를 사용하여 가장 중요한 2-비트 와이즈 플레인(m)이 디코딩된다. 함수 arith _ getpk ()에 의해 대응이 만들어진다.
함수 "arith_getpk()의 슈도 프로그램 코드 표현이 도 40c에 도시된다.
값(m)은 누적 주파수 테이블 arith_cf_m[pki][]로 호출되는 함수 arith_decode()를 사용하여 디코딩되는데, pki는 arith_get_pk()에 의해 반환되는 지수와 상응한다. 산술 디코더는 스케일링으로의 태그 발생의 방법을 사용하는 정수 구현이다. 도 40d 및 40e에 도시된 슈도 C-코드는 사용된 알고리즘을 설명한다.
디코딩된 값(m)이 탈출 심볼 ARITH_ESCAPE일 때, 변수(lev 및 esc_nb)는 1에 의해 증가되고 또 다른 값(m)이 디코딩된다. 이 경우에 있어서, 함수 get_pk()가 입력 인수로서 값 c&ESC_nb<<17로 다시 한번 호출되는데, esc_nb는 동일한 2-투플을 위하여 이전에 디코딩되고 7로 경계 지어지는 탈출 심볼들의 수이다.
만일, "ARITH_STOP" 심볼이 충족되지 않으면, 만일 어떤 것이라도 존재하면, 존재하는 2-투플을 위하여 그때 나머지 비트-플레인들이 디코딩된다. 나머지 비트-플레인들은 누적-주파수 테이블 "arith_cf_r[]"로 "lev" 횟수로 "arith_decode()"를 호출함으로써 가장 중요한 레벨로부터 가장 덜 중요한 레벨로 디코딩된다. 디코딩된 비트-플레인들(r)은 이것의 슈도 프로그램 코드가 도 40f에 도시된, 함수 또는 알고리즘에 의해 이전에 디코딩된 값(m)을 개선하도록 허용한다.
이 시점에서, 2-투플 {a, b}의 무부호 값이 완전히 디코딩된다. 콘텍스트(q)는 그리고 나서 그 다음의 2-투플을 위하여 업데이트된다. 두 업데이트 모두 그것의 슈도 프로그램 코드 표현이 도 40g에 도시된, 함수 arith_update_context()에 의해 만들어진다.
그리고 나서 프레임의 그 다음의 2-투플이 1에 의해 i를 증가시키고 함수를 호출함으로써 디코딩된다. 만일 lg/2 2-투플이 이미 프레임과 함께 디코딩되었거나, 또는 정지 심볼 ARITH_STOP이 발생하면, 함수 arith_save_context()가 호출된다. 콘텍스트는 그 다음 프레임을 위하여 qs 내에 저장되고 저장된다. 함수 또는 알고리즘 arith_save_context()의 슈도 프로그램 코드가 도 40h에 도시된다.
일단 무부호 양자화된 스펙트럼 계수들이 디코딩되면, 그리고 나서 사인이 가산된다. qdec의 각각의 비-널 양자화된 값을 위하여 비트가 판독된다. 만일 판독된 비트 값이 0과 동일하면, 양자화된 값은 양이고, 아무것도 수행되지 않으며 사인된 값은 이전에 디코딩된 무부호 값과 동일하다. 그렇지 않으면, 디코딩된 계수는 음이고 무부호 값으로부터 두 개의 보수가 취해진다. 사인된 비트는 낮은 주파수부터 높은 주파수로 판독된다.
14.2.4 업데이트된 테이블들
위에서 설명된 알고리즘들과 함께 사용하기 위한 재훈련된 테이블들 세트가 도 41(a), 41(b), 42(a), 42(b), 42(c), 42(d), 43(a), 43(b), 43(c), 43(d), 43(e), 43(f) 및 44에 도시된다.
도 41(a) 및 41(b)는 본 발명의 일 실시 예에 따른, 테이블 "ari_lookup_m[742]"의 콘텐츠의 테이블 표현을 도시한다.
도 42(a), (b), (c), (d)는 본 발명의 일 실시 예에 따른, 테이블 "ari_hash_m[742]"의 콘텐츠의 테이블 표현을 도시한다.
도 43(a), (b), (c), (d), (e), (f)은 본 발명의 일 실시 예에 따른, 테이블 "ari_cf_m[96][17]"의 콘텐츠의 테이블 표현을 도시한다.
도 44는 본 발명의 일 실시 예에 따른, 테이블 "ari_cf_r[4]"의 테이블 표현을 도시한다.
위를 요약하면, 본 발명에 따른 실시 예들은 계산 복잡도, 메모리 요구사항 및 코딩 효율 사이의 특히 뛰어난 절충을 제공하는 것을 알 수 있다.
15. 비트스트림 신택스
15.1 스펙트럼 무잡음 코더의 패이로드들
다음에서, 스펙트럼 무잡음 코더의 패이로드에 대한 일부 상세한 설명이 설명될 것이다. 일부 실시 예들에서, 예를 들면, 이른바 "선형-예측-도메인" 코딩 모드 및 "주파수-도메인" 코딩 모드와 같은, 복수의 서로 다른 코딩 모드가 존재한다. 선형-예측-도메인 코딩 모드에서, 오디오 신호의 선형-예측 분석을 기초로 하여 무잡음 형상이 실행되며, 잡음-형상 신호는 주파수-도메인 내에 인코딩된다. 주파수-도메인 코딩 모드에서, 심리음향 분석을 기초로 하여 잡음 형상이 실행되고 오디오 콘텐츠의 잡음 형산 버전은 주파수-도메인 내에 인코딩된다.
두 "선형-예측-도메인" 코딩된 신호 및 "주파수-도메인" 코딩된 신호 모두로부터의 스펙트럼 계수들은 스칼라 양자화되고 그리고 나서 적응 콘텍스트 의존 산술 코딩에 의해 무잡음으로 코딩된다. 양자화된 계수들은 가장 낮은 주파수로부터 가장 높은 주파수로 전송되기 전에 2-투플들 내에 함께 수집된다. 그러나, 각각의 2-투플은 사인(s), 가장 중요한 2-비트-와이즈-플레인(m), 및 나머지 덜 중요한 비트-플레인들(r, 만일 있다면)로 분할된다. 값(m)은 계수들의 이웃에 따라 코딩된다. 나머지 덜 중요한 비트-플레인들(r)이 콘텍스트를 고려하지 않고 엔트로피 코딩된다. 값들(m 및 r)에 의해, 이러한 스펙트럼 값들의 크기는 디코더 면 상에 재구성될 수 있다. 모든 비-널 심볼들을 위하여, 사인들(s)이 1-비트를 사용하여 산술 코더 외부에서 코딩된다. 바꾸어 말하면, 값들(m 및 r)은 산술 코더의 심볼들을 형성한다. 마지막으로, 사인들(s)이 비-널 양자화된 계수 당 1-비트를 사용하여 산술 코더의 외부에 코딩된다.
상세한 산술 코딩 과정이 아래에 설명된다.
15.2 도 6a 내지 6j에 따른 신택스 엘리먼트들
다음에서, 산술적으로 인코딩된 스펙트럼 정보를 지니는 비트스트림의 비트스트림 신택스가 도 6a 내지 6j를 참조하여 설명될 것이다.
도 6a는 이른바 통합 음성 및 오디오 코딩 미가공 데이터 블록("usac_raw_data_block()")의 신택스 표현을 도시한다.
통합 음성 및 오디오 코딩 미가공 데이터 블록은 하나 또는 그 이상의 단일 채널 엘리먼트들("single_channel_element()") 및/또는 하나 또는 그 이상의 채널 쌍 엘리먼트들("channel_pair_element()")을 포함한다.
도 6b를 참조하면, 단일 채널 엘리먼트가 설명된다. 단일 채널 엘리먼트는 코어 모드에 따라 선형-예측-도메인 채널 스트림("lpd_chammel_stream()") 또는 주파수-도메인 채널 스트림("fd__chammel_stream()")을 포함한다.
도 6c는 채널 쌍 엘리먼트의 신택스 표현을 도시한다. 채널 쌍 엘리먼트는 코어 모드 정보("core_mode0", "core_mode1")를 포함한다. 게다가, 채널 쌍 엘리먼트는 구성 정보 "ics_info()"를 포함할 수 있다. 부가적으로, 코어 모드 정보에 따라, 채널 쌍 엘리먼트는 채널들의 첫 번째와 관련된 선형-예측-도메인 채널 스트림 또는 주파수-도메인 채널 스트림을 포함하고 채널 쌍 엘리먼트는 또한 채널들의 첫 번째와 관련된 선형-예측-도메인 채널 스트림 또는 주파수-도메인 채널 스트림을 포함한다.
이것의 신택스 표현이 도 6d에 도시된, 구성 정보 "ics_info()"는 본 발명을 위한 특별한 중복이 아닌, 복수의 서로 다른 구성 정보 아이템들을 포함한다.
이것의 신택스 표현이 도 6e에 도시된, 주파수-도메인 채널 스트림("fd__chammel_stream()")은 이득 정보("global_gain") 및 구성 정보("ics_info()")를 포함한다. 게다가, 주파수-도메인 채널 스트림은 서로 다른 스케일 팩터 대역들의 스펙트럼 값들의 스케일링을 위하여 사용되는 스케일 팩터들을 설명하고 예를 들면, 스케일러(150) 및 리스케일러(240)에 의해 적용되는, 스케일 팩터 데이터("scale_factor_data()"를 포함한다. 주파수-도메인 채널 스트림은 또한 산술적으로 인코딩된 스펙트럼 값들을 설명하는, 산술적으로 코딩된 스펙트럼 데이터("ac_spectral_data()")를 포함한다.
이것의 신택스 표현이 도 6f에 도시된, 산술적으로 코딩된 스펙트럼 데이터("ac_spectral_data()")는 위에서 설명된 것과 같이, 콘텍스트를 선택적으로 리셋하기 위하여 사용되는, 선택적 산술 리셋 플래그("arith_reset_flaf()")를 포함한다. 게다가, 산술적으로 코딩된 스펙트럼 데이터는 산술적으로 코딩된 스펙트럼 값들을 지니는, 복수의 산술-데이터 블록들을 포함한다. 산술적으로 코딩된 데이터 블록들의 구조는 다음에서 설명될 것과 같이, 주파수 대역들에 수(변수 "numbands"에 의해 표현되는) 및 또한 산술 리셋 플래그의 상태에 의존한다.
다음에서, 산술적으로 인코딩된 데이터-블록의 구조가 상기 산술적으로 코딩된 데이터-블록들의 신택스 표현이 도시된, 도 6g를 참조하여 설명될 것이다. 산술적으로 코딩된 데이터-블록 내의 데이터 표현은 인코딩되는 스펙트럼 값들의 수(lg), 산술 리셋 플래그의 상태 및 또한 콘텍스트, 즉, 이전에 인코딩된 스펙트럼 값들에 의존한다.
스펙트럼 값의 현재 세트(예를 들면, 2-투플)의 인코딩을 위한 콘텍스트는 참조 번호 660에 도시된 콘텍스트 결정 알고리즘에 따라 결정된다. 콘텍스트 결정 알로리즘에 대한 상세한 설명은 도 5a 및 5b를 참조하여 위에서 설명되었다. 산술적으로 인코딩된 데이터-블록은 코드워드들의 1g/2 세트들을 포함하는데, 코드워드들의 각각의 세트는 복수의(예를 들면, 2-투플) 스펙트럼 값들을 표현한다. 하나의 코드워드 세트는 1 및 20 비트들 사이를 사용하여 스펙트럼 값들의 투플의 가장 중요한 비트-플레인 값(m)을 표현하는, 산술 코드워드 "acod_m[pki][m]"를 포함한다. 게다가, 코드워드 세트는 만일 스펙트럼 값들의 투플이 올바른 표현을 위하여 가장 중요한 비트-플레인보다 더 많은 비트-플레인을 필요로 하면 하나 또는 그 이상의 코드워드들 "acod_r[r]"을 포함한다. 코드워드 "acor_r[r]"는 1 및 14 비트들 사이를 사용하여 덜 중요한 비트-플레인을 표현한다.
그러나, 만일 스펙트럼 값들의 적절한 표현을 위하여 하나 또는 그 이상의 덜 중요한 비트-플레인이 필요하면, 이는 하나 또는 그 이상의 산술 탈출 코드워드("ARITH_ESCAPE")를 사용함으로써 시그널링된다. 따라서, 일반적으로 스펙트럼 값들을 위하여, 얼마나 많은 비트-플레인들(가장 중요한 비트-플레인 및, 가능하면, 하나 또는 그 이상의 덜 중요한 비트-플레인)이 필요한지가 결정된다는 것을 알 수 있다. 만일 하나 또는 그 이상의 덜 중요한 비트-플레인이 필요하면, 이는 변수 "pki"에 의해 주어지는 현재 선택된 누적 주파수 테이블에 따라 선택되는, 하나 또는 그 이상의 산술 탈출 코드워드 "acod_m[pki][ARITH_ESCAPE]"에 의해 시그널링된다. 게다가, 만일 하나 또는 그 이상의 산술 탈출 코드워드가 비트스트림 내에 포함되면, 참조 번호들 664, 662에서 알 수 있는 것과 같이, 콘텍스트가 적용된다. 만일 하나 또는 그 이상의 산술 탈출 코드워드 다음으로, 산술 코드워드 "acod_m[pki][m]"가 참조번호 663에 도시된 것과 같이, 비트스트림 내에 포함되는데, "pki"는 현재 유효한 확률 모델 지수(산술 탈출 코드워드들의 포함에 의해 야기되는 콘텍스트 적용을 고려하여)를 지정하고 m은 인코딩되거나 디코딩되는 스펙트럼 값들의 가장 중요한 비트-플레인 값을 지정한다(m은 "ARITH_ESCAPE"와는 다르다).
위에서 논의된 것과 같이, 어떤 덜 중요한 비트-플레인의 존재는 각각 첫 번째 스펙트럼 값의 덜 중요한 비트-플레인의 1 비트를 표현하고 또한 각각 두 번째 스펙트럼 값의 덜 중요한 비트-플레인의 1 비트를 표현하는, 하나 또는 그 이상의 코드워드 "acod_r[r]"의 존재를 야기한다. 하나 또는 그 이상의 코드워드 "acod_r[r]"는 예를 들면, 상수(constant)이고 콘텍스트-의존형일 수 있는, 상응하는 누적 주파수 테이블에 따라 인코딩된다. 그러나, 하나 또는 그 이상의 코드워드 "acod_r[r]"의 디코딩을 위한 누적 주파수 테이블의 선택을 위하여 서로 다른 메커니즘들이 가능하다.
게다가, 콘텍스트는 콘텍스트가 일반적으로 스펙트럼 값들의 두 개의 뒤따르는 투플들을 인코딩하고 디코딩하기 위하여 서로 다른 것과 같이, 참조 번호 668에 도시된 것과 같이, 스펙트럼 값들의 각각의 투플을 인코딩한 후에 업데이트된다는 것을 이해하여야 한다.
도 6i는 산술적으로 인코딩된 데이터 블록의 신택스를 정의하는 정의들 및 헬프 엘리먼트들의 범례를 나타낸다.
게다가, 도 6j에 도시된 정의들 및 헬프 엘리먼트들의 상응하는 범례와 함께, 산술 데이터 "arith_data()"의 대안의 신택스가 도 6h에 도시된다.
위를 요약하면, 오디오 인코더(100)에 의해 제공될 수 있고 오디오 디코더(200)에 의해 평가될 수 있는, 비트스트림 포맷이 설명되었다. 산술적으로 인코딩된 스펙트럼 값들의 비트스트림은 그것이 위에서 설명된 디코딩 알고리즘에 들어맞는 것과 같이 인코딩된다.
게다가, 일반적으로 코딩은 일반적으로 인코더가 디코더에 의해 실행되는 테이블 룩업에 대략 반대인, 위에서 설명된 테이블들을 사용하여 테이블 룩업을 실행하는 것으로 추정될 수 있는 것과 같이, 디코딩의 역 연산이라는 것을 이해하여야 한다. 일반적으로, 디코딩 알고리즘 및 바람직한 비트스트림 신택스를 이해하는 통상의 지식을 가진 자들은 비트스트림 내에서 정의되고 산술 디코더에 의해 필요한 데이터를 제공하는, 산술 인코더를 쉽게 디자인할 수 있다고 할 수 있다.
게다가, 수치 현재 콘텍스트 값을 결정하고 매핑 룰 지수 값을 유도하기 위한 메커니즘은 오디오 인코더 및 오디오 디코더에서 동일할 수 있는데, 그 이유는 오디오 디코더는 디코딩이 인코딩에 적용되는 것과 같이, 오디오 인코더와 동일한 콘텍스트를 사용하는 것이 일반적으로 바람직하기 때문이다.
15.3 도 6k, 6l, 6m, 6n, 6o 및 6p에 따른 신택스 엘리먼트들
다음에서, 대안의 비트스트림 신택스로부터의 추출이 도 6k, 6l, 6m, 6n, 6o 및 6p를 참조하여 설명될 것이다.
도 6k는 비트스트림 엘리먼트 "UsacSingleChannelElement(indepFlag)"의 신택스 표현을 도시한다. 상기 신택스 엘리먼트 "UsacSingleChannelElement(indepFlag)"는 하나 또는 그 이상의 코어 코더 채널을 설명하는 신택스 엘리먼트 "UsacCoreCoderData"를 포함한다.
도 6l은 비트스트림 엘리먼트 "UsacPairChannelElement(indepFlag)"의 신택스 표현을 도시한다. 상기 신택스 엘리먼트 "UsacPairChannelElement(indepFlag)"는 하나 또는 그 이상의 코어 코더 채널을 설명하는 신택스 엘리먼트 "UsacCoreCoderData"를 포함한다.
도 6m은 비트스트림 엘리먼트 "ics_info()"의 신택스 표현을 도시하는데, 이는 도 6m에 도시된 것과 같이, 파라미터들의 수를 정의들을 포함한다.
도 6n은 비트스트림 엘리먼트 "UsacCoreCoderData()"의 신택스 표현을 도시한다. 비트스트림 엘리먼트"UsacCoreCoderData()"는 하나 또는 그 이상의 선형-예측-도메인 채널 스트림들 "fd_channel_stream()"을 포함한다. 도 6n에 도시된 것과 같이, 일부 다른 제어 정보가 선택적으로 또한 비트스트림 엘리먼트"UsacCoreCoderData()" 내에 포함될 수 있다.
도 6o는 비트스트림 엘리먼트 "fd_channel_stream()"의 신택스 표현을 도시한다. 비트스트림 엘리먼트 "fd_channel_stream()"는 다른 선택적 비트스트림 엘리먼트 중에서, 비트스트림 엘리먼트 "scale_factor_data()" 및 비트스트림 엘리먼트 "ac_spectral_data()"를 포함한다.
도 6p는 비트스트림 엘리먼트 "ac_spectral_data()"의 신택스 표현을 도시한다. 비트스트림 엘리먼트 "ac_spectral_data()"는 선택적으로 비트스트림 엘리먼트 "arith_reset_flag"를 포함한다. 게다가, 비트스트림 엘리먼트는 또한 산술적으로 인코딩된 데이터 "arith_data()"의 수를 포함한다. 산술적으로 인코딩된 데이터는 예를 들면, 도 6g를 참조하여 비트스트림 신택스를 따른다.
16. 대안의 구현들
비록 장치의 콘텍스트에서 일부 양상들이 설명되었으나, 이러한 양상들은 또한 블록 또는 장치가 방법 단계 또는 방법 단계의 프레임과 상응하는, 상응하는 방법의 설명을 표현하는 것이 분명하다. 유사하게, 방법 단계의 콘텍스트에서 설명된 양상들은 또한 상응하는 장치의 상응하는 블록 또는 아이템 또는 특징을 표현한다. 방법 단계들 중 일부 또는 전체는 예를 들면, 마이크로프로세서, 프로그램가능 컴퓨터 또는 전자 회로와 같은, 하드웨어 장치에 의해(또는 사용하여) 실행될 수 있다. 일부 실시 예들에서, 그러한 장치에 의해 일부 하나 또는 그 이상의 가장 중요한 방법 단계가 실행될 수 있다.
본 발명의 인코딩된 오디오 신호는 디지털 저장 매체에 저장될 수 있거나 또는 무선 전송 매체 또는 인터넷과 같은 유선 전송 매체와 같은 전송 매체 상에 전송될 수 있다.
특정 구현 요구사항에 따라, 본 발명의 실시 예들은 하드웨어 또는 소프트웨어에서 구현될 수 있다. 구현은 디지털 저장 매체, 예를 들면, 거기에 저장된 전기적으로 판독가능한 제어 신호들을 갖는, 플로피 디스크, DVD, 블루-레이, CD, ROM, PROM, EPROM, EEPROM, 또는 플래시 메모리를 사용하여 실행될 수 있는데, 이는 각각의 방법이 실행되는 것과 같이 프로그램가능 컴퓨터와 협력할 수 있다. 따라서, 디지털 저장 매체는 컴퓨터로 판독가능할 수 있다.
본 발명에 따른 일부 실시 예들은 여기에 설명된 방법들 중의 하나가 실행되는 것과 같이, 프로그램 가능 컴퓨터와 협력할 수 있는, 전기적으로 판독가능한 제어 신호들을 갖는 데이터 캐리어를 포함할 수 있다.
일반적으로, 본 발명의 실시 예들은 프로그램 코드를 갖는 컴퓨터 프로그램 제품으로서 구현될 수 있는데, 프로그램 코드는 컴퓨터 프로그램 제품이 컴퓨터 상에 구동할 때 방법들 중의 하나를 실행하도록 작동한다. 프로그램 코드는 예를 들면 기계 판독가능 캐리어 상에 저장될 수 있다.
다른 실시 예들은 기계 판독가능 캐리어 상에 저장되는, 여기에 설명된 방법들 중 하나를 실행하기 위한 컴퓨터 프로그램을 포함한다.
바꾸어 말하면, 본 발명의 일 실시 예는 따라서, 컴퓨터 프로그램 제품이 컴퓨터 상에 구동할 때 여기에 설명된 방법들 중의 하나를 실행하기 위한 프로그램 코드를 갖는 컴퓨터 프로그램을 포함한다.
따라서, 본 발명의 방법의 또 다른 실시 예는 거기에 기록되는, 여기에 설명된 방법들 중 하나를 실행하기 위한 컴퓨터 프로그램을 포함하는 데이터 캐리어(또는 디지털 저장 매체, 또는 컴퓨터-판독가능 매체)이다. 데이터 캐리어, 디지털 자정 매체 또는 기록된 매체는 일반적으로 유형이거나 및/또는 비-전이된다.
따라서, 본 발명의 방법의 또 다른 실시 예는 여기에 설명된 방법들 중 하나를 실행하기 위한 컴퓨터 프로그램을 표현하는 데이터 스트림 또는 신호들의 시퀀스이다. 데이터 스트림 또는 신호들의 시퀀스는 예를 들면, 인터넷을 통한, 데이터 통신 연결을 거쳐 전송되도록 구성될 수 있다.
또 다른 실시 예는 처리 수단들, 예를 들면, 여기에 설명된 방법들 중 하나를 실행하도록 구성되는, 컴퓨터, 또는 프로그램가능 논리 장치를 포함한다.
또 다른 실시 예는 여기에 설명된 방법들 중 하나를 실행하기 위하여 거기에 설치된 컴퓨터 프로그램을 갖는 컴퓨터를 포함한다.
본 발명에 따른 또 다른 데이터는 수신기에 여기에 설명된 방법들 중 하나를 실행하기 위한 컴퓨터 프로그램을 전송하도록 구성되는 장치 또는 시스템을 포함한다. 수신기는 예를 들면, 컴퓨터, 모바일 장치, 메모리 장치 등일 수 있다. 장치 또는 시스템은 예를 들면, 컴퓨터 프로그램을 수신기에 전송하기 위한 파일 서버를 포함할 수 있다.
일부 실시 예들에서, 프로그램가능 논리 장치(예를 들면, 필드 프로그램가능 게이트 어레이)는 여기에 설명된 방법들의 기능들 일부 또는 전부를 실행하도록 사용될 수 있다. 일부 실시 예들에서, 필드 프로그램가능 게이트 어레이는 여기에 설명된 방법들 중의 하나를 실행하기 위하여 마이크로프로세서와 협력할 수 있다. 일반적으로 방법들은 바람직하게는 하드웨어 장치에 의해 실행된다.
위에서 설명된 실시 예들은 단지 본 발명의 원리를 위한 설명을 위한 것이다. 여기에 설명된 배치들 및 상세한 설명의 변형 및 변경들은 통상의 지식을 가진 자들에 자명할 것이라는 것을 이해하여야 한다. 따라서, 이는 첨부된 청구항들에 의해서만 한정되고 본 실시 예들의 설명을 위하여 나타낸 특정 내용들에 의해 한정되어서는 안 되는 것으로 의도된다.
17. 결론
결론적으로, 본 발명에 따른 실시 예들은 하나 또는 그 이상의 다음의 양상들을 포함하는데, 상기 양상들은 개별적으로 또는 조합하여 사용될 수 있다.
a) 콘텍스트 상태 해싱 메커니즘
본 발명의 일 양상에 따라, 해시 테이블 내의 상태는 중요한 상태들 및 그룹 경계들로서 고려된다. 이는 필요한 테이블들의 수를 상당히 감소시키도록 허용한다.
b) 증가의 콘텍스트 업데이트
일 양상에 따라, 본 발명의 일부 실시 예들은 콘텍스트를 업데이트하기 위하여 계산적으로 효율적인 방식을 포함한다. 일부 실시 예들은 수치 현재 콘텍스트 값이 수치 이전 콘텍스트 값으로부터 유래되는 증가의 콘텍스트 업데이트를 사용한다.
c) 콘텍스트 유래
본 발명의 일 양상에 따라, 두 개의 절대 값들의 합의 사용은 단절의 연관성이다. 이는 일종의 스펙트럼 계수들의 이득 벡터 양자화이다(종래의 형상 이득 벡터 양자화에의 반대로서). 이는 이웃으로부터 가장 중요한 정보를 전달하는 동안에, 콘텍스트 순서를 한정하는 것을 목표로 한다.
d) 업데이트된 테이블들
본 발명의 일 양상에 따라, 코딩 효율 및 계산적 복잡성 사이의 특히 뛰어난 절충을 제공되는, 최적화된 테이블들 ari_hash_m[742], ari_lookup_m[742] 및 ari_cf_m[64][17]이 적용된다.
본 발명에 따른 실시 예들에 적용되는, 일부 다른 기술들은 국제특허출원 PCT EP2010/065725, PCT EP2010/065726, 및 PCT EP2010/065727에 설명된다. 게다가, 본 발명에 따른 일부 실시 예들에서, 정지 심볼이 사용된다. 게다가, 일부 실시 예들에서, 콘텍스트를 위하여 무부호 값들만이 고려된다.
그러나, 위에서 설명된 국제특허 출원서들은 본 발명에 따른 일부 실시 예들에서 여전히 사용되는 양상들을 개시한다.
예를 들면, 본 발명의 일부 실시 예들에서 제로-영역의 식별이 사용된다. 따라서, 이른바 "작은-값-플래그(small-value-flag)"가 설정된다(예를 들면, 수치 현재 콘텍스트 값(c)의 비트 16).
일부 실시 예들에서, 영역-의존 콘텍스트 계산이 사용될 수 있다. 그러나, 다른 실시 예들에서, 영역-의존 콘텍스트 계산은 복잡도 및 테이블들의 크기를 합리적으로 작게 유지하기 위하여 생략될 수 있다.
게다가, 해시 함수를 사용하는 콘텍스트 해싱은 본 발명의 주요한 양상이다. 콘텍스트 해싱은 위에서 참조된 비공개된 국제특허 출원에서 설명된 2-테이블 개념을 기초로 할 수 있다. 그러나, 계산적 효율성을 증가시키기 위하여 일부 예들에서 콘텍스트 해싱의 특정 적용들이 사용될 수 있다. 그럼에도 불구하고, 본 발명에 따른 일부 다른 실시 예들에서, 위에서 참조된 비공개된 국제특허 출원에서 설명된 콘텍스트 해싱이 사용될 수 있다.
게다가, 증가의 콘텍스트 해싱은 오히려 간단하고 계산적으로 효율적이라는 것을 이해하여야 한다. 또한 본 발명이 일부 실시 예들에서 사용되는, 값들의 사인으로부터의 콘텍스트-의존성은 콘텍스트를 단순화하는데 도움을 주며, 이렇게 함으로써 메모리 요구사항을 합리적으로 낮게 유지한다.
본 발명의 일부 실시 예들에서, 두 개의 스펙트럼 값들의 합을 사용하는 콘텍스트 유래 및 콘텍스트 제한이 사용된다. 이러한 두 가지 양상은 조합될 수 있다. 두 가지 모두 이웃으로부터 가장 중요한 정보를 전송함으로써 콘텍스트 순서를 제한하는 것을 목표로 한다.
일부 실시 예들에서, 복수의 제로 값들의 그룹의 식별과 유사할 수 있는 작은-값-플래그가 사용된다.
본 발명에 따른 일부 실시 예들에서, 산술 정지 메커니즘이 사용된다. 개념은 비교 함수를 갖는, JPEG에서의 심볼 "블록 끝(end-of-block)"의 사용과 유사하다. 그러나, 본 발명의 일부 실시 예들에서, 심볼("ARITH_STOP")은 분명히 엔트로피 코더 내에 포함되지 않는다. 대신에, 이전에 발생할 수 없었던, 이미 존재하는 심볼들의 조합, 즉, "ESC+0"이 사용된다. 바꾸어 말하면, 오디오 디코더는 수치 값을 표현하기 위하여 정상적으로 사용되지 않는, 존재하는 심볼들의 조합을 검출하고, 산술 정지 상태로서 이미 존재하는 그러한 조합의 발생을 해석하도록 구성된다.
본 발명에 따른 일 실시 예는 2-테이블 콘텍스트 해싱 메커니즘을 사용한다.
더 요약하면, 본 발명에 따른 일부 실시 예들은 하나 또는 그 이상의 다음의 5가지 주요 양상들을 포함할 수 있다.
Figure pct00004
향상된 테이블들;
Figure pct00005
이웃 내의 제로-영역들 또는 작은 크기 영역들 중 하나를 검출하기 위한 확장된 콘텍스트;
Figure pct00006
콘텍스트 해싱;
Figure pct00007
콘텍스트 상태 발생: 콘텍스트 상태의 증가의 업데이트; 및
Figure pct00008
콘텍스트 유래: 진폭 및 제한의 합을 포함하는 콘텍스트 값들의 특정 양자화
결론적으로, 본 발명에 따른 실시 예들의 일 양상은 증가의 콘텍스트 업데이트에 있다. 본 발명에 따른 실시 예들은 규격 초안(예를 들면, 규격 초안 5)의 광범위한 계산을 방지하는, 콘텍스트의 업데이트를 위한 효율적인 개념을 포함한다. 오히려, 일부 실시 예들에서 간단한 시프트 연산 및 논리 연산이 사용된다. 간단한 콘텍스트 업데이트는 콘텍스트의 계산을 상당히 용이하게 한다.
일부 실시 예들에서, 콘텍스트는 값들(예를 들면, 디코딩된 스펙트럼 값들)의 사인으로부터 독립된다. 값들의 사인으로부터의 콘텍스트의 독립은 콘텍스트 변수의 감소된 복잡도를 가져온다. 이러한 개념은 콘텍스트 내의 사인의 방치가 코딩 효율의 심각한 저하를 가져오지 않는다는 사실을 기초로 한다.
본 발명의 일 양상에 따라, 콘텍스트는 두 스펙트럼 값들의 합을 사용하여 유래된다. 따라서, 콘텍스트의 저장을 위한 메모리 요구사항이 상당히 감소된다. 따라서, 두 스펙트럼 값들의 합을 표현하는, 콘텍스트 값의 사용은 일부 실시 예들에서 바람직한 것으로 고려될 수 있다.
또한 콘텍스트 제한은 일부 경우에 있어서 상당한 향상을 가져온다. 두 스펙트럼 값들의 합을 사용하는 콘텍스트의 유래에 더하여, 콘텍스트 어레이 "q"의 엔트리들이 일부 실시 예들에서 차례로 메모리 요구사항의 제한을 야기하는, "0xF"의 초대 값으로 제한된다. 콘텍스트 어레이 "q"의 값들의 이러한 제한은 일부 장점들을 가져온다.
일부 실시 예들에서, 이른바 "작은 값 플래그"가 사용된다. 콘텍스트 변수(c, 또한 수치 현재 콘텍스트 값으로서 지정되는)를 획득함에 있어서, 만일 일부 엔트리들 "q[1][i-3]" 내지 "q[1][i-1]"의 값이 매우 작으면 플래그가 설정된다. 따라서, 콘텍스트의 계산이 고효율적으로 실행될 수 있다. 특히 중요한 콘텍스트 값(예를 들면, 수치 현재 콘텍스트 값)이 획득될 수 있다.
일부 실시 예들에서, 산술 정지 메커니즘이 사용된다. "ARITH_STOP" 메커니즘은 만일 왼쪽에 제로 값만 존재하면 산술 인코딩 또는 디코딩의 효율적인 정지를 허용한다. 따라서, 복잡성과 관련하여 싼 비용으로 코딩 효율이 향상될 수 있다.
본 발명의 일 양상에 따라, 2-테이블 콘텍스트 해싱 메커니즘이 사용된다. 콘텍스트의 매핑은 테이블 "ari_lookup_m"의 뒤따르는 룩업 테이블 평가에 따라 테이블 "ari_hash_m"을 평가하는 구간-분할 알고리즘을 사용하여 실행된다. 이러한 알고리즘은 규격 초안 3 알고리즘보다 더 효율적이다.
다음에서, 일부 부가적인 설명들이 논의될 것이다
여기서 "ari_hash_m[742]" 및 "ari_lookup_m[742]"는 두 개의 구별되는 테이블들이라는 것을 이해하여야 한다. 첫 번째는 단일 콘텍스트 지수(예를 들면, 수치 콘텍스트 값)를 확률 모델 지수(예를 들면, 메핑 룰 지수 값)에 매핑하기 위하여 사용되고 두 번째는 "ari_hash_m[742]" 내의 콘텍스트 지수들에 의해 한정되는, 연이은 콘텍스트들의 그룹을 단일 확률 모델 내로 매핑하기 위하여 사용된다.
또한 테이블 "arith_cf_msb[64][16]은 비록 크기들이 약간 다르더라도, 테이블 "arith_cf_m[64][17]의 대안으로서 사용될 수 있다는 것을 이해하여야 한다. "ari_cf_m[][]" 및 "arith_cf_msb[][]은 확률 모델들의 17차 계수들이 항상 제로인 것과 같이, 동일한 테이블로서 언급될 수 있다. 때때로 테이블들을 저장하기 위하여 필요한 공간을 계산할 때는 이것은 고려되지 않는다.
위를 요약하면, 본 발명에 따른 일부 실시 예들은 MPEG 통합 음성 및 오디오 코딩 규격 초안에서의(예를 들면, MPEG 통합 음성 및 오디오 코딩 규격 초안 5) 변경을 불러일으키는, 제안된 새로운 무잡음 코딩(인코딩 또는 디코딩)을 제공한다. 상기 변경들은 첨부된 도면들 및 또한 관련 설명들에서 알 수 있다.
결론으로서, 변수들, 어레이들, 함수들 등의 이름에서 접두어 "ari" 및 접두어 "arith"는 호환하여 사용될 수 있다.
100 : 오디오 인코더
110 : 입력 오디오 정보
112 : 비트스트림
120 : 전처리기
130 : 에너지-압축 시간-도메인 대 주파수-도메인 신호 변환기
130a : 변형 이산 코사인 변환 변환기
132 : 주파수-도메인 오디오 표현
140 : 스펙트럼 후처리기
142 : 후처리된 주파수-도메인 오디오 표현
150 : 스케일러/양자화기
152 : 스케일링되고 양자화된 주파수-도메인 오디오 표현
160 : 심리 음향 모델 처리기
170 : 산술 인코더
174 : 가장 중요한 비트-플레인-추출기
176 : 가장 중요한 비트-플레인 값
180 : 제 1 코드워드 결정기
182 : 상태 트래커
184 : 상태 정보
186 : 누적-주파수-테이블 선택기
190 : 비트스트림 패이로드 포맷터
200 : 오디오 디코더
210 : 비트스트림
212 : 디코딩된 오디오 정보
220 : 비트스트림 패이로드 디포맷터
222 : 인코딩된 주파수-도메인 오디오 표현
224 : 상태 리셋 정보
230 : 산술 디코더
232 : 디코딩된 주파수-도메인 오디오 표현
240 : 선택적 역 양자화기/리스케일러
242 : 역으로 양자화되고 리스케일링된 주파수-도메인 오디오 표현
250 : 스펙트럼 전처리기
260 : 주파수-도메인 대 시간-도메인 신호 변환기
262 : 시간-도메인 표현
270 : 시간-도메인 후처리기
284 : 가장 중요한 비트-플레인 결정기
286 : 가장 중요한 비트-플레인의 값
288 : 덜 중요한 비트-플레인 결정기
292 : 비트-플레인 결합기
299 : 상태 트래커
310 : 콘텍스트의 초기화 단계
312 : 스펙트럼 값 디코딩
312a : 콘텍스트-값 계산
312b : 가장 중요한 비트-플레인 디코딩
312c : 산술 정지 심볼 검출
312d : 덜 중요한 비트-플레인 추가
312e : 어레이 업데이트
313 : 콘텍스트 업데이트
314 : 알고리즘
315 : 완료 알고리즘
410 : 가로좌표
412 : 세로좌표
420 : 투플
506a : 변수 초기화
506b : 테이블 검색
570c : 반복 누적-주파수-테이블 검색
570e : 구간 재규격화
570fa : 시프트-하향 연산
570fb : 구간-증가-연산
700 : 오디오 인코더
710 : 입력 오디오 정보
712 : 인코딩된 오디오 정보
720 : 에너지-압축 시간-도메인-대-주파수-도메인 변환기
730 : 산술 인코더
740 : 스펙트럼 값 인코딩
742 : 매핑 룰 정보
750 : 상태 트래커
752 : 해시 테이블
754 : 수치 현재 콘텍스트 값
760 : 매핑 룰 선택기
762 : 해시 테이블
800 : 오디오 디코더
810 : 인코딩된 오디오 정보
812 : 디코딩된 오디오 정보
820 : 산술 디코더
821 : 스펙트럼 값들의 산술적으로 인코딩된 표현
822 : 디코딩된 스펙트럼 값
824 : 스펙트럼 값 결정기
826 : 상태 트래커
826a : 수치 현재 콘텍스트 값
828 : 매핑 룰 선택기
828a : 매핑 룰 정보
829 : 해시 테이블
850 : 주파수-도메인-대-시간-도메인 변환기
932, 934, 936 : 수치 콘텍스 값들의 구간
1000 : 오디오 인코더
1030 : 산술 인코더
1050 : 상태 트래커
1052 : 수 표현 변경기
1060 : 매핑 룰 선택기
1100 : 오디오 디코더
1120 : 산술 디코더
1126 : 상태 트래커
1126a : 콘텍스트 상태 정보
1127 : 수 표현 변경기
1128 : 매핑 룰 선택기
1200 : 오디오 인코더
1230 : 산술 인코더
1250 : 상태 트래커
1252 : 콘텍스트 서브-영역 값 컴퓨터
1260 : 매핑 룰 선택기
1300 : 오디오 디코더
1320 : 산술 디코더
1326 : 상태 트래커
1326a : 현재 콘텍스트 상태 정보
2310 : 첫 번째 서브-블록
2312, 2396 : 서브-블록

Claims (19)

  1. 스펙트럼 값들의 산술적으로 인코딩된 표현(222; 821)을 기초로 하여 복수의 디코딩된 스펙트럼 값들(232; 822을 제공하기 위한 산술 디코더(230; 820); 및
    디코딩된 오디오 정보(212, 812)를 획득하기 위하여, 상기 디코딩된 스펙트럼 값들(232; 822)을 사용하여 시간-도메인 오디오 표현(262; 812)을 제공하기 위한 주파수-도메인-대-시간-도메인 변환기(260; 830)를 포함하되,
    상기 산술 디코더(230; 820)는 수치 현재 콘텍스트 값(c)에 의해 설명되는 콘텍스트 상태(s)에 따라, 인코딩된 형태로, 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인을 표현하는 코드 값(값)의, 디코딩된 형태로, 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인을 표현하는 심볼 코드(심볼) 상으로의 매핑을 설명하는 매핑 룰(297; cum_freq[])을 선택하도록 구성되고;
    상기 산술 디코더(230; 820)는 이전에 디코딩된 복수의 스펙트럼 값들에 따라 상기 수치 현재 콘텍스트 값(c)을 결정하도록 구성되며;
    상기 산술 디코더는 상기 매핑 룰을 선택하기 위하여, 이것의 엔트리들이 수치 콘텍스트 값들 중에서 중요한 상태 값들 및 상기 수치 콘텍스트 값들의 구간들의 경계들 모두를 정의하는, 해시 테이블(ari_hash_m[])을 평가하도록 구성되며;
    상기 산술 디코더는 값 ari_hash_m[i-1]>>8이 상기 수치 현재 콘텍스트 값(c)과 동일하거나 크면 해시 테이블 지수 값 i을 찾기 위하여 상기 해시 테이블을 평가하도록 구성되며, 반면에, 만일 찾아낸 상기 해시 테이블 지수 값 i이 0보다 크면, 값 ari_hash_m[i-1]>>8은 상기 수치 현재 콘텍스트 값(c)보다 작으며;
    상기 산술 디코더는 ari_hash_m[i]>>8이 상기 c와 동일하거나, 또는 그렇지 않으면 ari_lookup_m[i]과 동일할 때, ari_hash_m[i]&&0xFF와 동일한 확률 모델 지수(pki)에 의해 결정되는 매핑 룰을 선택하도록 구성되며;
    상기 해시 테이블 ari_hash_m은 도 22(a), 22(b), 22(c) 및 22(d)에 주어진 것과 같이 정의되며; 및
    상기 매핑 테이블 ari_lookup_m은 도 21에 주어진 것과 같이 정의되는; 것을 특징으로 하는, 인코딩된 오디오 정보(210; 810)를 기초로 하여 디코딩된 오디오 정보(212; 812)를 제공하기 위한 오디오 디코더(200; 800).
  2. 제 1항에 있어서, 상기 산술 디코더는 다음의 알고리즘을 사용하는 해시 테이블을 평가하도록 구성되나:
    i=i_min;
    while ((i_max-i_min)>1)
    {
    i=i_min+(i_max-i_min)/2);
    j=ari_hash_m[i];
    if(c<(j>>8))
    i_max=i;
    else if(c>(j>>8))
    i_min=i;
    else
    return(j&0xFF);
    }
    return ari_lookup_m[i_max];

    상기 c는 상기 수치 현재 콘텍스트 값 또는 그것의 스케일링된 버전을 지정하고;
    상기 i는 현재 해시 테이블 지수 값을 설명하는 변수이며;
    상기 i_min은 상기 해시 테이블의 첫 번째 엔트리의 해시 테이블 지수 값을 지정하기 위하여 초기화되고 상기 c 및 (j>>8)) 사이의 비교에 따라 선택적으로 업데이트되는 변수이며;
    상기 상태 "c<(j>>8)"는 상기 변수 c에 의해 설명되는 상태 값이 상기 테이블 엔트리 ari_hash_m[i]에 의해 설명되는 상태 값보다 작다는 것을 정의하며;
    상기 "j&0xFF"는 상기 테이블 엔트리 ari_hash_m[i]에 의해 설명되는 매핑 룰 지수 값을 설명하며;
    상기 i_max는 상기 해시 테이블의 마지막 엔트리의 해시 테이블 지수 값을 지정하기 위하여 초기화되고 상기 c 및 (j>>8)) 사이의 비교에 따라 선택적으로 업데이트되는 변수이며;
    상기 "c>(j>>8)"는 상기 변수 c에 의해 설명되는 상태 값이 상기 테이블 엔트리 ari_hash_m[i]에 의해 설명되는 상태 값보다 크다는 것을 정의하며;
    상기 j는 변수이며;
    상기 반환 값은 확률 모델의 지수 pki를 지정하고, 매핑 룰 지수 값이며;
    상기 ari_hash_m은 상기 해시 테이블을 지정하며;
    상기 ari_hash_m[i]는 해시 테이블 지수 값 i를 갖는 상기 해시 테이블 ari_hash_m의 엔트리를 지정하며;
    상기 ari_lookup_m은 매핑 테이블을 지정하며; 및
    상기 ari_lookup_m[i_max]은 매핑 테이블 지수 값 i_max를 갖는 상기 매핑 테이블 ari_lookup_m의 엔트리를 지정하는; 것을 특징으로 하는 오디오 디코더(200; 800).
  3. 제 1항 또는 2항에 있어서,
    상기 산술 디코더는 상기 매핑 룰 지수 값 pki을 기초로 하여 코드 값(값)의 심볼 코드(심볼) 상으로의 매핑을 설명하는 매핑 룰(297; cum_freq[])을 선택하도록 구성되는 것을 특징으로 하는 오디오 디코더(200; 800).
  4. 제 3항에 있어서,
    상기 산술 디코더는 코드 값(값)의 심볼 코드(심볼) 상으로의 매핑을 설명하는 상기 매핑 룰(297; cum_freq[])을 선택하기 위하여 테이블 지수 값으로서 상기 매핑 룰 지수 값을 사용하도록 구성되는 것을 특징으로 하는 오디오 디코더(200; 800).
  5. 제 1항 내지 4항 중 어느 한 항에 있어서, 상기 산술 디코더는 선택된 매핑 룰로서 도 23(a), 23(b), 23(c)에 주어진 것과 같은 테이블 ari_cf_m[64][17]의 서브-테이블들(ari_cf_m[pki][17]) 중의 하나를 선택하도록 구성되는 것을 특징으로 하는 오디오 디코더(200; 800).
  6. 제 1항 내지 5항 중 어느 한 항에 있어서,
    상기 산술 디코더는 아래의 알고리즘을 사용하는 수치 이전 콘텍스트 값을 기초로 하여 상기 수치 현재 콘텍스트 값을 획득하도록 구성되나:
    c=c>>4
    if(i<N/4-1)
    c=c+(q[0][i+1]<<12);
    c=(c&0xFFF0);
    if(i>0)
    c=c+(q[1][i-1]);
    if(i>3){
    if((q[1][i-3]+q[1][i-2]+q[1][i-1])<5)
    return(c+0x10000);
    }
    return(c);

    상기 알고리즘은 입력 값들로서, 스펙트럼 값들의 벡터 내에서 디코딩하기 위하여 상기 수치 이전 콘텍스트 값의 값 또는 변수 c, 및 스펙트럼 값들의 2-투플의 지수를 표현하는 값 또는 변수 i를 수신하며;
    상기 값 또는 변수 N은 상기 주파수-도메인-대-시간-도메인 변환기의 재구성 윈도우의 윈도우 길이를 표현하며;
    상기 알고리즘은 출력 값들로서, 상기 수치 현재 콘텍스트 값을 표현하는 업데이트된 값 또는 변수(c)를 제공하며;
    상기 연산 "c>>4"은 상기 값 또는 변수 c의 4 비트에 의해 오른쪽으로의 시프트를 설명하며;
    상기 q[0][i+1]은 이전 오디오 프레임과 관련되고 현재 디코딩되는 스펙트럼 값들의 2-투플의 현재 주파수 지수보다 1이 높은, 관련된 더 높은 주파수 i+1을 갖는 콘텍스트 서브 영역 값을 지정하며;
    상기 q[1][i-1]은 현재 오디오 프레임과 관련되고 현재 디코딩되는 스펙트럼 값들의 2-투플의 현재 주파수 지수보다 1이 작은, 관련된 더 작은 주파수 i-1을 갖는 콘텍스트 서브 영역 값을 지정하며;
    상기 q[1][i-2]는 현재 오디오 프레임과 관련되고 현재 디코딩되는 스펙트럼 값들의 2-투플의 현재 주파수 지수보다 2가 작은, 관련된 더 작은 주파수 i-2를 갖는 콘텍스트 서브 영역 값을 지정하며;
    상기 q[1][i-3]은 현재 오디오 프레임과 관련되고 현재 디코딩되는 스펙트럼 값들의 2-투플의 현재 주파수 지수보다 3이 작은, 관련된 작은 주파수 i-3을 갖는 콘텍스트 서브 영역 값을 지정하는; 것을 특징으로 하는 오디오 디코더.
  7. 제 6항에 있어서,
    상기 산술 디코더는 현재 디코딩되는 복수의 스펙트럼 값들의 조합을 사용하여, 현재 오디오 프레임과 관련되고 현재 디코딩되는 스펙트럼 값들의 2-투플의 관련 현재 주파수 지수를 갖는 콘텍스트 서브 영역 값 q[1][i]을 업데이트하도록 구성되는 것을 특징으로 하는 오디오 디코더.
  8. 제 6항 또는 7항에 있어서,
    상기 산술 디코더는 다음의 알고리즘을 사용하여 현재 오디오 프레임과 관련되고 현재 디코딩되는 스펙트럼 값들의 2-투플의 관련 현재 주파수 지수를 갖는 콘텍스트 서브 영역 값 q[1][i]을 업데이트하도록 구성되나:
    {
    q[1][i]=a+b+i;
    if(q[1][i]>0xF)
    q[1][i]=0xF;
    }
    상기 a 및 b는 상기 현재 디코딩되는 스펙트럼 값들의 2-투플의 디코딩된 무부호 양자화된 스펙트럼 계수들이고; 및
    상기 i는 상기 현재 디코딩되는 스펙트럼 값들의 2-투플의 주파수 지수인 것을 특징으로 하는 오디오 디코더.
  9. 제 1항 내지 8항 중 어느 한 항에 있어서,
    상기 산술 디코더는 다음의 산술 디코딩 알고리즘을 사용하여 디코딩된 스펙트럼 값들의 2-투플을 표현하는 디코딩된 값 m을 제공하도록 구성되나:
    {
    if (arith_first_symbol()) {
    value = 0;
    for (i=1; i<=16; i++) {
    value = (value<<1) | arith_get_next_bit();
    }
    low = 0;
    high = 65535;
    }
    range = high-low+1;
    cum =((((int) (value-low+1))<<14)-((int) 1))/range;
    p = cum_freq-1;
    do {
    q = p + (cfl>>1);
    if ( *q > cum ) { p=q; cfl++; }
    cfl>>=1;
    }
    while ( cfl>1 );
    symbol = p-cum_freq+1;
    if (symbol)
    high = low + (range*cum_freq[symbol-1])>>14 - 1;
    low += (range * cum_freq[symbol])>>14;
    for (;;) {
    if (high<32768) { }
    else if (low>=32768) {
    value -= 32768;
    low -= 32768;
    high -= 32768;
    }
    else if (low>=16384 && high<49152) {
    value -= 16384;
    low -= 16384;
    high -= 16384;
    }
    else break;
    low += low;
    high += high+1;
    value = (value<<1) | arith_get_next_bit();
    }
    return symbol;
    }
    상기 "cum_freq"는 코드 값(값)의 심볼 코드(심볼) 상으로의 매핑을 설명하는 선택된 테이블 또는 서브-테이블(ari_cf_m[pki][17])의 시작을 설명하는 값 또는 변수이고;
    상기 "cfl"은 코드 값(값)의 심볼 코드(심볼) 상으로의 매핑을 설명하는 선택된 테이블 또는 서브-테이블(ari_cf_m[pki][17])의 길이를 설명하는 값 또는 변수이며;
    상기 헬퍼 함수 arith_first_symbol()는 만일 디코딩되는 심볼이 심볼들의 시퀀스의 첫 번째 심볼이면 참을 반환하고, 그렇지 않으면 거짓을 반환하며;
    상기 헬퍼 함수 get_next_bit()는 비트스트림의 그 다음의 비트를 제공하며;
    상기 변수 "low"는 글로벌 변수이며;
    상기 변수 "high"는 글로벌 변수이며;
    상기 변수 "value"는 글로벌 변수이며;
    상기 "range"는 변수이며;
    상기 "cum"은 변수이며;
    상기 "p"는 코드 값(값)의 심볼 코드(심볼) 상으로의 매핑을 설명하는 선택된 테이블 또는 서브-테이블(ari_cf_m[pki][17])의 엘리먼트를 가리키는 변수이며;
    상기 "q"는 q가 가리키는 코드 값(값)의 심볼 코드(심볼) 상으로의 매핑을 설명하는 선택된 테이블 또는 서브-테이블(ari_cf_m[pki][17])의 테이블 엘리먼트 또는 서브-테이블 엘리먼트이며;
    상기 변수 "symbol"은 상기 산술 디코딩 알고리즘에 의해 반환되며; 및
    상기 산술 디코더는 상기 산술 디코딩 알고리즘의 반환 값으로부터 스펙트럼 값들의 현재 디코딩되는 2-투플의 가장 중요한 비트-플레인 값들을 유래하도록 구성되는; 것을 특징으로 하는 오디오 디코더.
  10. 스펙트럼 값들의 산술적으로 인코딩된 표현(222; 821)을 기초로 하여 복수의 디코딩된 스펙트럼 값들을 제공하기 위한 산술 디코더(230; 820); 및
    디코딩된 오디오 정보(212, 812)를 획득하기 위하여, 상기 디코딩된 스펙트럼 값들(232; 822)을 사용하여 시간-도메인 오디오 표현(262; 812)을 제공하기 위한 주파수-도메인-대-시간-도메인 변환기(260; 830)를 포함하되,
    상기 산술 디코더(230; 820)는 수치 현재 콘텍스트 값(c)에 의해 설명되는 콘텍스트 상태(s)에 따라, 인코딩된 형태로, 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인을 표현하는 코드 값(값)의, 디코딩된 형태로, 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인을 표현하는 심볼 코드(심볼) 상으로의 매핑을 설명하는 매핑 룰(297; cum_freq[])을 선택하도록 구성되고;
    상기 산술 디코더(230; 820)는 복수의 이전에 디코딩된 스펙트럼 값들에 따라 상기 수치 현재 콘텍스트 값(c)을 결정하도록 구성되며;
    상기 산술 디코더는 상기 매핑 룰을 선택하기 위하여, 이것의 엔트리들이 수치 콘텍스트 값들 중에서 중요한 상태 값들 및 상기 수치 콘텍스트 값들의 구간들의 경계들 모두를 정의하는, 해시 테이블(ari_hash_m[])을 평가하도록 구성되며;
    상기 해시 테이블 ari_hash_m은 도 22(a), 22(b), 22(c) 및 22(d)에 주어진 것과 같이 정의되며; 및
    상기 산술 디코더는 상기 수치 현재 콘텍스트 값이 상기 해시 테이블(ari_hash_m)의 엔트리에 의해 설명되는 테이블 콘텍스트 값과 동일한지를 결정하거나 또는 상기 수치 현재 콘텍스트 값이 위치하는 상기 해시 테이블(ari_hash_m)의 엔트리들에 의해 설명되는 구간을 결정하기 위하여 상기 해시 테이블(ari_hash_m)을 평가하도록 구성되고, 상기 평가의 결과에 따라 선택된 매핑 룰을 설명하는 매핑 룰 지수 값(pki)을 유래하도록 구성되는 것을 특징으로 하는, 인코딩된 오디오 정보(210; 810)를 기초로 하여 디코딩된 오디오 정보(212; 812)를 제공하기 위한 오디오 디코더(200; 800).
  11. 제 10항에 있어서,
    상기 산술 디코더는 상기 수치 현재 콘텍스트 값(c)이 획득된 해시 테이블 지수 값(i_max) 및 인접한 해시 테이블 엔트리(ari_hash_m[i_max-1])에 의해 지정되는 획득된 해시 테이블 엔트리(ari_hash_m[i_max])에 의해 정의되는 구간 내에 위치하는 것과 같이, 테이블 엔트리(ari_lookup_m[i_max])의 상기 해시 테이블 지수 값(i_max)를 획득하기 위하여, 상기 수치 현재 콘텍스트 값(c), 또는 상기 수치 현재 콘텍스트 값의 스케일링된 버전(s)을 상기 해시 테이블(arish_m[])의 일련의 수치적으로 순서화된 엔트리들(j=ari_hash_m[i]) 또는 서브-엔트리들과 비교하도록 구성되며,
    상기 산술 디코더는 상기 수치 현재 콘텍스트 값(c), 또는 상기 수치 현재 콘텍스트 값의 스케일링된 버전(s) 및 상기 해시 테이블의 현재 엔트리 또는 서브-엔트리(ari_hash_m[i]) 사이의 비교의 결과에 따라 상기 해시 테이블(ari_hash_m[])의 일련의 엔트리들의 그 다음의 엔트리를 결정하도록 구성되는 것을 특징으로 하는 오디오 디코더.
  12. 제 11항에 있어서,
    상기 산술 디코더는 만일 상기 수치 현재 콘텍스트 값(c) 또는 그것의 스케일링된 버전(s)이 상기 현재 해시 테이블 지수 값(i)에 의해 지정되는 상기 해시 테이블(j=ari_hash_m[i])의 첫 번째 서브-엔트리(j>>8)과 동일한 것으로 밝혀지면 상기 현재 해시 테이블 지수 값(i)에 의해 지정되는 상기 해시 테이블(ari_hash_m)의 두 번째 서브-엔트리(j&0xFF)에 의해 정의되는 매핑 룰을 선택하도록 구성되는 것을 특징으로 하는 오디오 디코더.
  13. 제 11항 또는 12항에 있어서,
    상기 산술 디코더는 만일 상기 수치 현재 콘텍스트 값이 상기 해시 테이블(ari_hash_m)의 서브-엔트리와 동일하지 않은 것으로 밝혀지면 매핑 테이블 ari_lookup_m의 엔트리 또는 서브-엔트리(ari_lookup_m[i_max])에 의해 정의되는 매핑 룰을 선택하도록 구성되며, 상기 산술 디코더는 상기 반복적으로 획득되는 해시 테이블 지수 값(i_max)에 따라 상기 매핑 테이블의 엔트리 또는 서브-엔트리를 선택하도록 구성되는 것을 특징으로 하는 오디오 디코더.
  14. 제 10항 내지 13항 중 어느 한 항에 있어서, 상기 산술 디코더는 만일 상기 수치 현재 콘텍스트 값(c)이 상기 현재 해시 테이블 지수 값(i)에 의해 지정되는 상기 해시 테이블의 엔트리(ari_hash_m[i])에 의해 정의되는 값(j>>8)과 동일한 것으로 밝혀지면 상기 현재 해시 테이블 지수 값에 의해 지정되는 상기 해시 테이블의 엔트리에 의해 정의되는 매핑 룰 지수 값을 선택적으로 제공하는 것을 특징으로 하는 오디오 디코더.
  15. 스펙트럼 값들의 산술적으로 인코딩된 표현(222; 821)을 기초로 하여 복수의 디코딩된 오디오 정보(232; 822)를 제공하는 단계; 및
    디코딩된 오디오 정보(212, 812)를 획득하기 위하여, 상기 디코딩된 스펙트럼 값들(232; 822)을 사용하여 시간-도메인 오디오 표현(262; 812)을 제공하는 단계를 포함하되,
    상기 복수의 디코딩된 스펙트럼 값들을 제공하는 단계는 수치 현재 콘텍스트 값(c)에 의해 설명되는 콘텍스트 상태(s)에 따라, 인코딩된 형태로, 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인을 표현하는 코드 값(값)의, 디코딩된 형태로, 스펙트럼 값, 또는 상기 스펙트럼 값의 가장 중요한 비트-플레인을 표현하는 심볼 값(심볼) 상으로의 매핑을 설명하는 매핑 룰(297; cum_freq[])을 선택하는 단계를 포함하며;
    상기 수치 현재 콘텍스트 값(c)은 복수의 이전에 디코딩된 스펙트럼 값들에 따라 결정되며;
    상기 매핑 룰을 선택하기 위하여 이것의 엔트리들이 상기 수치 콘텍스트 값들 사이의 중요한 상태 값들 및 상기 수치 콘텍스트 값들의 구간들의 경계들 모두를 정의하는, 해시 테이블(ari_hash_m[])이 평가되며;
    상기 해시 테이블은 다음의 알고리즘을 사용하여 평가되며:
    i=i_min
    while(i_max-i_min)>1)
    {
    i=i_min+((i_max-i_min)/2);
    j=ari_hash_m[i];
    if(c<(j>>8))
    i_max=i;
    else if(c>(j>>8))
    i_min=i;
    else
    return(j&0xFF);
    }
    return ari_lookup_m[i_max];
    상기 c는 상기 수치 현재 콘텍스트 값 또는 그것의 스케일링된 버전을 지정하며;
    상기 i는 현재 해시 테이블 지수 값을 설명하는 변수이며;
    상기 i_min은 상기 해시 테이블의 첫 번째 엔트리의 해시 테이블 지수 값을 지정하기 위하여 초기화되고 상기 c 및 상기 (j>>8) 사이의 비교에 따라 선택적으로 업데이트되는 변수이며;
    상기 상태 "c<(j>>8)"는 상기 변수 c에 의해 설명되는 상태 값이 상기 테이블 엔트리 ari_hash_m[i]에 의해 설명되는 상태 값보다 작다는 것을 정의하며;
    상기 "j&0xFF"는 상기 테이블 엔트리 ari_hash_m[i]에 의해 설명되는 매핑 룰 지수 값을 설명하며;
    상기 i_max는 상기 해시 테이블의 마지막 엔트리의 해시 테이블 지수 값을 지정하기 위하여 초기화되고 상기 c 및 상기 (j>>8) 사이의 비교에 따라 선택적으로 업데이트되는 변수이며;
    상기 상태 "c>(j>>8)"는 상기 변수 c에 의해 설명되는 상태 값이 상기 테이블 엔트리 ari_hash_m[i]에 의해 설명되는 상태 값보다 크다는 것을 정의하며;
    상기 j는 변수이며;
    상기 반환 값은 확률 모델의 지수 pki를 지정하고, 매핑 룰 지수 값이며;
    상기 ari_hash_m은 해시 테이블을 지정하며;
    상기 ari_hash_m[i]는 해시 테이블 지수 값 i를 갖는 상기 해시 테이블 ari_hash_m의 엔트리를 지정하며;
    상기 ari_lookup_m[i_max]는 매핑 테이블 지수 값 i_max를 갖는 상기 매핑 테이블 ari_lookup_m의 엔트리를 지정하며;
    상기 해시 테이블 ari_hash_m은 도 22(a), 22(b), 22(c), 22(d)에 주어진 것과 같이 정의되며; 및
    상기 매핑 테이블 ari_lookup_m은 도 21에 주어진 것과 같이 정의되는 것을 특징으로 하는, 인코딩된 오디오 정보(210; 810)를 기초로 하여 디코딩된 오디오 정보(212; 812)를 제공하기 위한 방법.
  16. 스펙트럼 값들의 산술적으로 인코딩된 표현(222; 821)을 기초로 하여 복수의 디코딩된 오디오 정보(232; 822)를 제공하는 단계; 및
    디코딩된 오디오 정보(212, 812)를 획득하기 위하여, 상기 디코딩된 스펙트럼 값들(232; 822)을 사용하여 시간-도메인 오디오 표현(262; 812)을 제공하는 단계를 포함하되,
    상기 복수의 디코딩된 스펙트럼 값들을 제공하는 단계는 수치 현재 콘텍스트 값(c)에 의해 설명되는 콘텍스트 상태(s)에 따라, 인코딩된 형태로, 스펙트럼 값, 또는 상기 스펙트럼 값의 가장 중요한 비트-플레인을 표현하는 코드 값(값)의, 디코딩된 상태로, 스펙트럼 값, 또는 상기 스펙트럼 값의 가장 중요한 비트-플레인을 표현하는 심볼 값(심볼) 상으로의 매핑을 설명하는 매핑 룰(297; cum_freq[])을 선택하는 단계를 포함하며;
    상기 수치 현재 콘텍스트 값(c)은 복수의 이전에 디코딩된 스펙트럼 값들에 따라 결정되며;
    상기 매핑 룰을 선택하기 위하여 이것의 엔트리들이 상기 수치 콘텍스트 값들 사이의 중요한 상태 값들 및 상기 수치 콘텍스트 값들의 구간들의 경계들 모두를 정의하는, 해시 테이블(ari_hash_m[])이 평가되며;
    상기 해시 테이블(ari_hash_m)은 상기 수치 현재 콘텍스트 값이 상기 해시 테이블(ari_hash_m)의 엔트리에 의해 설명되는 테이블 콘텍스트 값과 동일한지를 결정하거나 또는 상기 수치 현재 콘텍스트 값이 위치하는 상기 해시 테이블(ari_hash_m)의 엔트리에 의해 설명되는 구간을 결정하기 위하여 평가되며;
    상기 평가의 결과에 따라 선택된 매핑 룰을 설명하는 매핑 룰 지수 값이 유래되는; 것을 특징으로 하는, 인코딩된 오디오 정보(210; 810)를 기초로 하여 디코딩된 오디오 정보(212; 812)를 제공하기 위한 방법.
  17. 주파수-도메인 오디오 표현(132; 722)이 한 세트의 스펙트럼 값들을 포함하는 것과 같이, 입력 오디오 정보의 시간-도메인 표현(110; 710)을 기초로 하여 상기 주파수-도메인 오디오 표현(132; 722)을 제공하기 위한 에너지 압축 시간-도메인-대-주파수-도메인 변환기(130; 720); 및
    가변 길이 코드워드(acod_m, acod_r)를 사용하여 스펙트럼 값들(a) 또는 그것의 전처리된 버전을 인코딩하도록 구성되는 산술 인코더(170, 730)를 포함하되,
    상기 산술 인코더(170, 730)는 상기 스펙트럼 값(a) 또는 상기 스펙트럼 값(a)의 가장 중요한 비트-플레인의 값(m)을 코드 값(acod_m) 상으로 매핑하도록 구성되고;
    상기 산술 인코더는 수치 현재 콘텍스트 값(c)에 의해 설명되는 콘텍스트 상태(s)에 따라, 스펙트럼 값, 또는 스펙트럼 값의 가장 중요한 비트-플레인의 코드 값 상으로의 매핑을 설명하는 매핑 룰을 선택하도록 구성되며;
    상기 산술 인코더는 이전에 인코딩된 복수의 스펙트럼 값들에 따라 상기 수치 현재 콘텍스트 값(c)을 결정하도록 구성되며;
    상기 산술 인코더는 이것의 엔트리들이 상기 수치 콘텍스트 값들 중에서 중요한 상태 값들 및 상기 수치 콘텍스트 값들의 구간들의 경계들 모두를 정의하는, 해시 테이블을 평가하도록 구성되며;
    상기 해시 테이블 ari_hash_m은 도 22(a), 22(b), 22(c) 및 22(d)에 주어진 것과 같이 정의되며;
    상기 산술 인코더는 상기 수치 현재 콘텍스트 값이 상기 해시 테이블(ari_hash_m)의 엔트리에 의해 설명되는 테이블 콘텍스트 값과 동일한지를 결정하거나 또는 상기 수치 현재 콘텍스트 값이 위치하는 상기 해시 테이블(ari_hash_m)의 엔트리들에 의해 설명되는 구간을 결정하기 위하여, 상기 해시 테이블(ari_hash_m)을 평가하고, 상기 평가의 결과에 따라 선택된 매핑 룰을 설명하는 매핑 룰 지수 값(pki)을 유래하도록 구성되는 것을 특징으로 하는, 입력 오디오 정보(110; 710)를 기초로 하여 인코딩된 오디오 정보(112; 712)를 제공하기 위한 오디오 인코더(100; 700).
  18. 주파수-도메인 오디오 표현(132; 722)이 한 세트의 스펙트럼 값들을 포함하는 것과 같이, 입력 오디오 정보의 시간-도메인 표현(110; 710)을 기초로 하여 상기 주파수-도메인 오디오 표현(132; 722)을 제공하는 단계; 및
    가변 길이 코드워드(acod_m, acod_r)를 사용하여 스펙트럼 값들(a) 또는 그것의 전처리된 버전을 인코딩하는 단계;를 포함하되,
    상기 스펙트럼 값(a), 또는 상기 스펙트럼 값(a)의 가장 중요한 비트-플레인의 값(m)은 코드 값(acod_m) 상으로 매핑되고;
    수치 현재 콘텍스트 값(c)에 의해 설명되는 콘텍스트 상태(s)에 따라, 상기 스펙트럼 값, 또는 상기 스펙트럼 값의 가장 중요한 비트-플레인의 코드 값 상으로의 매핑을 설명하는 매핑 룰이 선택되며;
    상기 수치 현재 콘텍스트 값(c)은 복수의 이전에 인코딩된 스펙트럼 값들에 따라 결정되며;
    상기 매핑 룰을 선택하기 위하여 이것의 엔트리들이 상기 수치 콘텍스트 값들 중에서 중요한 상태 값들 및 상기 수치 콘텍스트 값들의 구간들의 경계들 모두를 정의하는, 해시 테이블이 평가되며;
    상기 해시 테이블 ari_hash_m은 도 22(a), 22(b), 22(c) 및 22(d)에 주어진 것과 같이 정의되며; 및
    상기 수치 현재 콘텍스트 값이 상기 해시 테이블(ari_hash_m)의 엔트리에 의해 설명되는 테이블 콘텍스트 값과 동일한지를 결정하거나 또는 상기 수치 현재 콘텍스트 값이 위치하는 상기 해시 테이블(ari_hash_m)의 엔트리들에 의해 설명되는 구간을 결정하기 위하여, 상기 해시 테이블(ari_hash_m)이 평가되고, 상기 평가의 결과에 따라 선택된 매핑 룰을 설명하는 매핑 룰 지수 값(pki)이 유래되는 것을 특징으로 하는, 입력 오디오 정보(110; 710)를 기초로 하여 인코딩된 오디오 정보(112; 712)를 제공하기 위한 방법.
  19. 컴퓨터 프로그램이 컴퓨터 상에서 구동할 때, 제 16항 또는 18항에 따른 방법을 실행하기 위한 컴퓨터 프로그램이 저장된 매체.
KR1020137004188A 2010-07-20 2011-07-20 오디오 인코더, 오디오 디코더, 오디오 정보를 인코딩하기 위한 방법, 오디오 정보를 디코딩하기 위한 방법 및 최적화된 해시 테이블을 사용하는 컴퓨터 프로그램 KR101573829B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US36593610P 2010-07-20 2010-07-20
US61/365,936 2010-07-20
PCT/EP2011/062478 WO2012016839A1 (en) 2010-07-20 2011-07-20 Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using an optimized hash table

Publications (2)

Publication Number Publication Date
KR20130054993A true KR20130054993A (ko) 2013-05-27
KR101573829B1 KR101573829B1 (ko) 2015-12-02

Family

ID=44509264

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137004188A KR101573829B1 (ko) 2010-07-20 2011-07-20 오디오 인코더, 오디오 디코더, 오디오 정보를 인코딩하기 위한 방법, 오디오 정보를 디코딩하기 위한 방법 및 최적화된 해시 테이블을 사용하는 컴퓨터 프로그램

Country Status (16)

Country Link
US (1) US8914296B2 (ko)
EP (3) EP2596494B1 (ko)
JP (1) JP5600805B2 (ko)
KR (1) KR101573829B1 (ko)
CN (1) CN103119646B (ko)
AU (1) AU2011287747B2 (ko)
CA (1) CA2806000C (ko)
ES (2) ES2937066T3 (ko)
FI (1) FI3751564T3 (ko)
MX (1) MX338171B (ko)
MY (1) MY179769A (ko)
PL (2) PL2596494T3 (ko)
PT (2) PT3751564T (ko)
RU (1) RU2568381C2 (ko)
SG (1) SG187164A1 (ko)
WO (1) WO2012016839A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200077579A (ko) * 2017-11-10 2020-06-30 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 신호 필터링(signal filtering)
US11562754B2 (en) 2017-11-10 2023-01-24 Fraunhofer-Gesellschaft Zur F Rderung Der Angewandten Forschung E.V. Analysis/synthesis windowing function for modulated lapped transformation
US12033646B2 (en) 2017-11-10 2024-07-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Analysis/synthesis windowing function for modulated lapped transformation

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI451403B (zh) * 2009-10-20 2014-09-01 Fraunhofer Ges Forschung 音訊編碼器、音訊解碼器、用以將音訊資訊編碼之方法、用以將音訊資訊解碼之方法及使用區域從屬算術編碼對映規則之電腦程式
KR101647576B1 (ko) * 2012-05-29 2016-08-10 노키아 테크놀로지스 오와이 스테레오 오디오 신호 인코더
CN103035249B (zh) * 2012-11-14 2015-04-08 北京理工大学 一种基于时频平面上下文的音频算术编码方法
TR201900472T4 (tr) * 2014-04-24 2019-02-21 Nippon Telegraph & Telephone Frekans alanı parametre dizisi oluşturma metodu, kodlama metodu, kod çözme metodu, frekans alanı parametre dizisi oluşturma aparatı, kodlama aparatı, kod çözme aparatı, programı ve kayıt ortamı.
US9640376B1 (en) 2014-06-16 2017-05-02 Protein Metrics Inc. Interactive analysis of mass spectrometry data
US9385751B2 (en) * 2014-10-07 2016-07-05 Protein Metrics Inc. Enhanced data compression for sparse multidimensional ordered series data
US20160227235A1 (en) * 2015-02-02 2016-08-04 Yaniv Frishman Wireless bandwidth reduction in an encoder
US10354421B2 (en) 2015-03-10 2019-07-16 Protein Metrics Inc. Apparatuses and methods for annotated peptide mapping
CN105070292B (zh) * 2015-07-10 2018-11-16 珠海市杰理科技股份有限公司 音频文件数据重排序的方法和***
RU2611022C1 (ru) * 2016-01-28 2017-02-17 федеральное государственное казенное военное образовательное учреждение высшего образования "Военная академия связи имени Маршала Советского Союза С.М. Буденного" Министерства обороны Российской Федерации Способ совместного арифметического и помехоустойчивого кодирования (варианты)
FR3048808A1 (fr) * 2016-03-10 2017-09-15 Orange Codage et decodage optimise d'informations de spatialisation pour le codage et le decodage parametrique d'un signal audio multicanal
US10319573B2 (en) 2017-01-26 2019-06-11 Protein Metrics Inc. Methods and apparatuses for determining the intact mass of large molecules from mass spectrographic data
GB2559200A (en) 2017-01-31 2018-08-01 Nokia Technologies Oy Stereo audio signal encoder
US10546736B2 (en) 2017-08-01 2020-01-28 Protein Metrics Inc. Interactive analysis of mass spectrometry data including peak selection and dynamic labeling
US11626274B2 (en) 2017-08-01 2023-04-11 Protein Metrics, Llc Interactive analysis of mass spectrometry data including peak selection and dynamic labeling
US10510521B2 (en) 2017-09-29 2019-12-17 Protein Metrics Inc. Interactive analysis of mass spectrometry data
EP3483886A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Selecting pitch lag
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
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
EP3483880A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Temporal noise shaping
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
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
US11044495B1 (en) 2018-02-13 2021-06-22 Cyborg Inc. Systems and methods for variable length codeword based data encoding and decoding using dynamic memory allocation
GB2574873A (en) * 2018-06-21 2019-12-25 Nokia Technologies Oy Determination of spatial audio parameter encoding and associated decoding
US11640901B2 (en) 2018-09-05 2023-05-02 Protein Metrics, Llc Methods and apparatuses for deconvolution of mass spectrometry data
GB2579568B (en) * 2018-12-03 2022-04-27 Advanced Risc Mach Ltd Encoding data arrays
US11093682B2 (en) 2019-01-14 2021-08-17 Microsoft Technology Licensing, Llc Language and compiler that generate synchronous digital circuits that maintain thread execution order
US11106437B2 (en) * 2019-01-14 2021-08-31 Microsoft Technology Licensing, Llc Lookup table optimization for programming languages that target synchronous digital circuits
US11113176B2 (en) 2019-01-14 2021-09-07 Microsoft Technology Licensing, Llc Generating a debugging network for a synchronous digital circuit during compilation of program source code
US11275568B2 (en) 2019-01-14 2022-03-15 Microsoft Technology Licensing, Llc Generating a synchronous digital circuit from a source code construct defining a function call
US11144286B2 (en) 2019-01-14 2021-10-12 Microsoft Technology Licensing, Llc Generating synchronous digital circuits from source code constructs that map to circuit implementations
US10491240B1 (en) * 2019-01-17 2019-11-26 Cyborg Inc. Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation
US11308036B2 (en) * 2019-04-11 2022-04-19 EMC IP Holding Company LLC Selection of digest hash function for different data sets
US11346844B2 (en) 2019-04-26 2022-05-31 Protein Metrics Inc. Intact mass reconstruction from peptide level data and facilitated comparison with experimental intact observation
RU2739936C1 (ru) * 2019-11-20 2020-12-29 Публичное Акционерное Общество "Сбербанк России" (Пао Сбербанк) Способ внесения цифровых меток в цифровое изображение и устройство для осуществления способа
WO2022047368A1 (en) 2020-08-31 2022-03-03 Protein Metrics Inc. Data compression for multidimensional time series data

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269338B1 (en) * 1996-10-10 2001-07-31 U.S. Philips Corporation Data compression and expansion of an audio signal
AU2003221378B9 (en) * 2002-03-27 2009-01-08 Panasonic Intellectual Property Corporation Of America Variable length encoding method, storage medium, and variable length encoding device.
US6915256B2 (en) * 2003-02-07 2005-07-05 Motorola, Inc. Pitch quantization for distributed speech recognition
KR20050087956A (ko) * 2004-02-27 2005-09-01 삼성전자주식회사 무손실 오디오 부호화/복호화 방법 및 장치
KR100561869B1 (ko) * 2004-03-10 2006-03-17 삼성전자주식회사 무손실 오디오 부호화/복호화 방법 및 장치
KR101346358B1 (ko) * 2006-09-18 2013-12-31 삼성전자주식회사 대역폭 확장 기법을 이용한 오디오 신호의 부호화/복호화방법 및 장치
DE102007017254B4 (de) * 2006-11-16 2009-06-25 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung zum Kodieren und Dekodieren
EP2077551B1 (en) * 2008-01-04 2011-03-02 Dolby Sweden AB Audio encoder and decoder
KR101247891B1 (ko) * 2008-04-28 2013-03-26 고리츠다이가쿠호징 오사카후리츠다이가쿠 물체 인식용 화상 데이터베이스의 작성 방법, 처리 장치 및 처리용 프로그램
PL2346029T3 (pl) * 2008-07-11 2013-11-29 Fraunhofer Ges Forschung Koder sygnału audio, sposób kodowania sygnału audio i odpowiadający mu program komputerowy
EP2144230A1 (en) 2008-07-11 2010-01-13 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Low bitrate audio encoding/decoding scheme having cascaded switches
EP3937167B1 (en) * 2008-07-11 2023-05-10 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoder and audio decoder
MX2011003824A (es) * 2008-10-08 2011-05-02 Fraunhofer Ges Forschung Esquema de codificacion/decodificacion de audio conmutado de resolucion multiple.
KR20100136890A (ko) * 2009-06-19 2010-12-29 삼성전자주식회사 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
TWI451403B (zh) * 2009-10-20 2014-09-01 Fraunhofer Ges Forschung 音訊編碼器、音訊解碼器、用以將音訊資訊編碼之方法、用以將音訊資訊解碼之方法及使用區域從屬算術編碼對映規則之電腦程式

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200077579A (ko) * 2017-11-10 2020-06-30 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 신호 필터링(signal filtering)
US11545167B2 (en) 2017-11-10 2023-01-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Signal filtering
US11562754B2 (en) 2017-11-10 2023-01-24 Fraunhofer-Gesellschaft Zur F Rderung Der Angewandten Forschung E.V. Analysis/synthesis windowing function for modulated lapped transformation
US12033646B2 (en) 2017-11-10 2024-07-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Analysis/synthesis windowing function for modulated lapped transformation

Also Published As

Publication number Publication date
EP3751564B1 (en) 2022-10-26
PT2596494T (pt) 2020-11-05
WO2012016839A1 (en) 2012-02-09
RU2568381C2 (ru) 2015-11-20
EP2596494A1 (en) 2013-05-29
US20130226594A1 (en) 2013-08-29
JP2013538364A (ja) 2013-10-10
PL2596494T3 (pl) 2021-01-25
CA2806000C (en) 2016-07-05
MX338171B (es) 2016-04-06
CN103119646A (zh) 2013-05-22
US8914296B2 (en) 2014-12-16
SG187164A1 (en) 2013-02-28
EP3751564A1 (en) 2020-12-16
EP2596494B1 (en) 2020-08-05
PL3751564T3 (pl) 2023-03-06
EP4131258A1 (en) 2023-02-08
FI3751564T3 (fi) 2023-01-31
ES2828429T3 (es) 2021-05-26
AU2011287747B2 (en) 2015-02-05
PT3751564T (pt) 2023-01-06
CA2806000A1 (en) 2012-02-09
AU2011287747A1 (en) 2013-02-28
MX2013000749A (es) 2013-05-17
ES2937066T3 (es) 2023-03-23
RU2013107375A (ru) 2014-08-27
KR101573829B1 (ko) 2015-12-02
CN103119646B (zh) 2016-09-07
MY179769A (en) 2020-11-13
JP5600805B2 (ja) 2014-10-01

Similar Documents

Publication Publication Date Title
KR101573829B1 (ko) 오디오 인코더, 오디오 디코더, 오디오 정보를 인코딩하기 위한 방법, 오디오 정보를 디코딩하기 위한 방법 및 최적화된 해시 테이블을 사용하는 컴퓨터 프로그램
KR101339058B1 (ko) 오디오 인코더, 오디오 디코더, 오디오 정보 인코딩 방법, 오디오 정보 디코딩 방법, 및 유효 상태 값들과 구간 경계들을 모두 기술하는 해시 테이블을 이용하는 컴퓨터 프로그램
KR101419151B1 (ko) 영역-의존 산술 코딩 매핑 규칙을 이용하는 오디오 인코더, 오디오 디코더, 오디오 정보를 인코딩하기 위한 방법, 오디오 정보를 디코딩하기 위한 방법 및 컴퓨터 프로그램

Legal Events

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

Payment date: 20181031

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191119

Year of fee payment: 5