KR102697685B1 - 통합 음성 및 오디오 디코딩 및 인코딩 qmf 기반 고조파 트랜스포저 개선을 위한 방법, 장치 및 시스템 - Google Patents

통합 음성 및 오디오 디코딩 및 인코딩 qmf 기반 고조파 트랜스포저 개선을 위한 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR102697685B1
KR102697685B1 KR1020207020404A KR20207020404A KR102697685B1 KR 102697685 B1 KR102697685 B1 KR 102697685B1 KR 1020207020404 A KR1020207020404 A KR 1020207020404A KR 20207020404 A KR20207020404 A KR 20207020404A KR 102697685 B1 KR102697685 B1 KR 102697685B1
Authority
KR
South Korea
Prior art keywords
sub
complex
valued
band
real
Prior art date
Application number
KR1020207020404A
Other languages
English (en)
Other versions
KR20200099560A (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 KR20200099560A publication Critical patent/KR20200099560A/ko
Application granted granted Critical
Publication of KR102697685B1 publication Critical patent/KR102697685B1/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/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/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] 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/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
    • G10L19/0204Speech 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 using subband decomposition
    • 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
    • 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/16Vocoder architecture
    • G10L19/18Vocoders using multiple modes
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L21/00Speech or voice signal processing techniques to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
    • G10L21/02Speech enhancement, e.g. noise reduction or echo cancellation
    • G10L21/038Speech enhancement, e.g. noise reduction or echo cancellation using band spreading techniques
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L21/00Speech or voice signal processing techniques to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
    • G10L21/02Speech enhancement, e.g. noise reduction or echo cancellation
    • G10L21/038Speech enhancement, e.g. noise reduction or echo cancellation using band spreading techniques
    • G10L21/0388Details of processing therefor
    • 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/16Vocoder architecture
    • G10L19/18Vocoders using multiple modes
    • G10L19/24Variable rate codecs, e.g. for generating different qualities using a scalable representation such as hierarchical encoding or layered encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Mathematical Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 개시는 인코딩된 통합 오디오 및 음성 스트림을 디코딩하기 위한 장치에 관한 것이다. 장치는 인코딩된 통합 오디오 및 음성 스트림을 디코딩하기 위한 코어 디코더를 포함한다. 코어 디코더는 입력 신호의 대역폭을 확장하기 위한 eSBR 유닛을 포함하고, eSBR 유닛은 QMF 기반의 고조파 트랜스포저를 포함한다. QMF 기반의 고조파 트랜스포저는 입력 신호의 대역폭을 확장하기 위해 복수의 합성 부대역 각각에서 QMF 도메인의 입력 신호를 처리하도록 구성된다. 상기 QMF 기반의 고조파 트랜스포저는 미리 계산된 정보에 적어도 부분적으로 기초하여 동작하도록 구성된다. 본 개시는 대응하는 방법 및 저장 매체에 더 관련된다.

Description

통합 음성 및 오디오 디코딩 및 인코딩 QMF 기반 고조파 트랜스포저 개선을 위한 방법, 장치 및 시스템
연관된 출원에 대한 상호 참조
본 출원은 다음 우선권 출원: 2017년 12월 19일자로 출원된 인도 가출원 201741045576(참조: D17116BINP1), 및 2018년 5월 2일자로 출원된 미국 가출원 62/665,741(참조: D17116BUSP1)의 우선권을 주장하며, 이들은 본원에 참조로 통합된다.
기술분야
본 문서는 인코딩된 통합 오디오 및 음성(Unified Audio and Speech, USAC) 스트림을 디코딩하기 위한 장치 및 방법에 관한 것이다. 본 문서는 런타임(run time)에 계산 부하를 감소시키는 그러한 장치 및 방법에 더 관련된다.
국제 표준 ISO/IEC 23003-3:2012(이하에서 USAC 표준으로 지칭됨)에 지정된 통합 음성 및 오디오 코딩(unified speech and audio coding, USAC)을 위한 인코더 및 디코더는 다수의 복소수 계산 단계를 필요로 하는 여러 모듈(유닛)을 포함한다. 이들 계산 단계의 각각은 이들 인코더 및 디코더를 구현하는 하드웨어 시스템에 대해 부담을 줄 수 있다(taxing). 이러한 모듈의 예시는 MPS212 모듈(또는 툴), QMF 고조파 트랜스포저(harmonic transposer), LPC 모듈 및 IMDCT 모듈을 포함한다.
따라서, 런타임 동안 계산 부하를 감소시키는 USAC 인코더 및 디코더의 모듈의 구현에 대한 요구가 있다.
위의 문제점을 고려하여, 본 문서는 인코딩된 통합 오디오 및 음성(USAC) 스트림을 디코딩하기 위한 장치 및 방법뿐만 아니라, 각각의 독립 청구항의 특징을 갖는 대응하는 컴퓨터 프로그램 및 저장 매체를 제공한다.
본 개시의 일 양상은 인코딩된 USAC 스트림을 디코딩하기 위한 장치에 관련된다. 장치는 인코딩된 USAC 스트림을 디코딩하기 위한 코어(core) 디코더를 포함할 수 있다. 코어 디코더는 모노 대 스테레오 업믹싱(mono to stereo upmixing)을 수행하도록 구성된(adapted) 업믹싱(upmixing) 유닛을 포함할 수 있다. 업믹싱 유닛은 입력 신호에 비상관(decorrelation) 필터를 적용하도록 구성된 비상관기(decorrelator) 유닛(D)을 포함할 수 있다. 비상관기 유닛은 미리 계산된 값을 참조함으로써 비상관 필터에 대한 필터 계수를 결정하도록 구성될 수 있다.
본 개시의 다른 양상은 오디오 신호를 USAC 스트림으로 인코딩하기 위한 장치에 관련된다. 장치는 USAC 스트림을 인코딩하기 위한 코어 인코더를 포함할 수 있다. 코어 인코더는 USAC 스트림을 디코딩하기 위한 디코더의 업믹싱 유닛에서 사용하기 위해 비상관 필터에 대한 필터 계수를 오프라인(off-line)으로 결정하도록 구성될 수 있다.
본 개시의 다른 양상은 인코딩된 USAC 스트림을 디코딩하는 방법에 관련된다. 방법은 인코딩된 USAC 스트림을 디코딩하는 것을 포함할 수 있다. 디코딩은 모노 대 스테레오 업믹싱을 포함할 수 있다. 모노 대 스테레오 업믹싱은 입력 신호에 비상관 필터를 적용하는 것을 포함할 수 있다. 비상관 필터를 적용하는 것은 미리 계산된 값을 참조함으로써 비상관 필터에 대한 필터 계수를 결정하는 것을 포함할 수 있다.
본 개시의 다른 양상은 오디오 신호를 USAC 스트림으로 인코딩하는 방법에 관련된다. 방법은 USAC 스트림을 인코딩하는 것을 포함할 수 있다. 인코딩은 인코딩된 USAC 스트림을 디코딩하기 위해 디코더의 업믹싱 유닛에서 사용하기 위해 비상관 필터에 대한 필터 계수를 오프라인으로 결정하는 것을 포함할 수 있다.
본 개시의 다른 양상은 인코딩된 USAC 스트림을 디코딩하기 위한 추가적인 장치에 관련된다. 장치는 인코딩된 USAC 스트림을 디코딩하기 위한 코어 디코더를 포함할 수 있다. 코어 디코더는 입력 신호의 대역폭을 확장하기 위한 eSBR 유닛을 포함할 수 있다. eSBR 유닛은 QMF 기반의 고조파 트랜스포저를 포함할 수 있다. QMF 기반의 고조파 트랜스포저는 입력 신호의 대역폭을 확장하기 위해 복수의 합성 부대역 각각에서 QMF 도메인(QMF domain)의 입력 신호를 처리하도록 구성될 수 있다. QMF 기반의 고조파 트랜스포저는 미리 계산된 정보에 적어도 부분적으로 기초하여 동작하도록 더 구성될 수 있다.
본 개시의 다른 양상은 인코딩된 USAC 스트림을 디코딩하는 추가적인 방법에 관련된다. 방법은 인코딩된 USAC 스트림을 디코딩하는 것을 포함할 수 있다. 디코딩은 입력 신호의 대역폭을 확장하는 것을 포함할 수 있다. 입력 신호의 대역폭을 확장하는 것은 복수의 합성 부대역 각각에서 QMF 도메인의 입력 신호를 처리하는 것을 수반할 수 있다. QMF 도메인의 입력 신호를 처리하는 것은 미리 계산된 정보에 적어도 부분적으로 기초하여 동작할 수 있다.
본 개시의 다른 양상은 인코딩된 USAC 스트림을 디코딩하기 위한 추가적인 장치에 관련된다. 장치는 인코딩된 USAC 스트림을 디코딩하기 위한 코어 디코더를 포함할 수 있다. 코어 디코더는 쿨리-튜키(Cooley-Tuckey) 알고리즘을 기초로 하는 고속 푸리에 변환(fast Fourier transform, FFT) 모듈 구현을 포함할 수 있다. FFT 모듈은 이산 푸리에 변환(discrete Fourier transform, DFT)을 결정하도록 구성될 수 있다. DFT를 결정하는 것은 쿨리-튜커(Cooley-Tucker) 알고리즘을 기초로 DFT를 작은 FFT로 재귀적으로 나누는(breaking down) 것을 포함할 수 있다. DFT를 결정하는 것은 FFT의 점의 개수가 4의 거듭 제곱(power)인 경우 기수-4(radix-4)를 사용하는 것, 및 개수가 4의 거듭 제곱이 아닌 경우, 혼합 기수(mixed radix)를 사용하는 것을 더 수반할 수 있다. 작은 FFT를 수행하는 것은 회전 인자(twiddle factors)를 적용하는 것을 수반할 수 있다. 회전 인자를 적용하는 것은 회전 인자에 대해 미리 계산된 값을 참조하는 것을 수반할 수 있다.
본 개시의 다른 양상은 인코딩된 USAC 스트림을 디코딩하기 위한 추가적인 장치에 관련된다. 장치는 인코딩된 USAC 스트림을 디코딩하기 위한 코어 디코더를 포함할 수 있다. 인코딩된 USAC 스트림은 선형 스펙트럼 주파수(line spectral frequency, LSF) 표현을 사용하여 양자화된 선형 예측 코딩(linear predictive coding, LPC) 필터의 표현을 포함할 수 있다. 코어 디코더는 USAC 스트림으로부터 LPC 필터를 디코딩하도록 구성될 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 LSF 벡터의 제1 스테이지(first-stage) 근사치를 계산하는 것을 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 잔여(residual) LSF 벡터를 재구성하는 것을 더 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 LPC 필터를 양자화하기 위해 절대 양자화 모드가 사용되는 경우, 역 LSF 가중치 또는 그의 각각의 대응하는 LSF 가중치에 대해 미리 계산된 값을 참조함으로써, 잔여 LSF 벡터의 역 가중(inverse weighting)을 위해 역 LSF 가중치를 결정하는 것을 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 결정된 역 LSF 가중치만큼 잔여 LSF 벡터를 역 가중하는 것을 더 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 역 가중된 잔여 LSF 벡터 및 LSF 벡터의 제1 스테이지 근사치를 기초로 LPC 필터를 계산하는 것을 더 포함할 수 있다. LSF 가중치는 다음의 방정식을 사용하여 획득될 수 있고
,
여기서, i는 LSF 벡터의 성분을 나타내는 인덱스이고, w(i)는 LSF 가중치이고, W는 크기 조정 인자(scaling factor)이며, LSF1st는 LSF 벡터의 제1 스테이지 근사치이다.
본 개시의 다른 양상은 인코딩된 USAC 스트림을 디코딩하기 위한 추가적인 방법에 관련된다. 방법은 인코딩된 USAC 스트림을 디코딩하는 것을 포함할 수 있다. 디코딩은 쿨리-튜키 알고리즘을 기초로 하는 고속 푸리에 변환(FFT) 모듈 구현을 사용하는 것을 포함할 수 있다. FFT 모듈 구현은 이산 푸리에 변환(DFT)을 결정하는 것을 포함할 수 있다. DFT를 결정하는 것은 쿨리-튜커 알고리즘을 기초로 DFT를 더욱 작은 FFT로 재귀적으로 나누는 것을 수반할 수 있다. DFT를 결정하는 것은 FFT의 점의 개수가 4의 거듭 제곱인 경우 기수-4를 사용하는 것, 및 개수가 4의 거듭 제곱이 아닌 경우 혼합 기수를 사용하는 것을 더 수반할 수 있다. 작은 FFT를 수행하는 것은 회전 인자를 적용하는 것을 수반할 수 있다. 회전 인자를 적용하는 것은 회전 인자에 대해 미리 계산된 값을 참조하는 것을 수반할 수 있다.
본 개시의 다른 양상은 인코딩된 USAC 스트림을 디코딩하는 추가적인 방법에 관련된다. 방법은 인코딩된 USAC 스트림을 디코딩하는 것을 포함할 수 있다. 인코딩된 USAC 스트림은 선형 스펙트럼 주파수(LSF) 표현을 사용하여 양자화된 선형 예측 코딩(LPC) 필터의 표현을 포함할 수 있다. 디코딩은 USAC 스트림으로부터 LPC 필터를 디코딩하는 것을 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 LSF 벡터의 제1 스테이지 근사치를 계산하는 것을 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 잔여 LSF 벡터를 재구성하는 것을 더 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 LPC 필터를 양자화하기 위해 절대 양자화 모드가 사용되는 경우, 역 LSF 가중치 또는 그의 각각의 대응하는 LSF 가중치에 대해 미리 계산된 값을 참조함으로써, 잔여 LSF 벡터의 역 가중을 위해 역 LSF 가중치를 결정하는 것을 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 결정된 역 LSF 가중치만큼 잔여 LSF 벡터를 역 가중하는 것을 더 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 역 가중된 잔여 LSF 벡터 및 LSF 벡터의 제1 스테이지 근사치를 기초로 LPC 필터를 계산하는 것을 더 포함할 수 있다. LSF 가중치는 다음의 방정식을 사용하여 획득 가능하고
,
여기서, i는 LSF 벡터의 성분을 나타내는 인덱스이고, w(i)는 LSF 가중치이고, W는 크기 조정 인자이며, LSF1st는 LSF 벡터의 제1 스테이지 근사치이다.
본 개시의 추가적인 양상은 본 개시의 위의 양상에 따른, 방법의 방법 단계를 수행하고, 프로세서 상에서 실행하도록 구성되는 소프트웨어 프로그램을 포함하는 기록 매체에 관련된다.
도 1은 USAC를 위한 인코더의 일 예시를 개략적으로 도시하고,
도 2는 USAC를 위한 디코더의 일 예시를 개략적으로 도시하고,
도 3은 도 2의 디코더의 OTT 박스를 개략적으로 도시하고,
도 4도 3의 OTT 박스의 비상관기 블록을 개략적으로 도시하고,
도 5는 LPC 필터의 역 양자화를 개략적으로 도시하는 블록도이고,
도 6도 2의 디코더의 IMDCT 블록을 개략적으로 도시하며, 그리고
도 7도 8은 인코딩된 USAC 스트림을 디코딩하는 방법의 예시를 개략적으로 도시하는 흐름도이다.
도 1도 2는 각각, 통합 음성 및 오디오 코딩(USAC)을 위한 인코더(1000)의 일 예시 및 디코더(2000)의 일 예시를 도시한다.
도 1은 USAC 인코더(1000)의 일 예시를 도시한다. USAC 인코더(1000)는 스테레오 또는 다중 채널 처리를 다루기 위한 MPEG 서라운드(MPEG Surround, MPEGS) 기능 유닛(1902) 및 입력 신호에서 더욱 높은 오디오 주파수의 파라메트릭 표현(parametric representation)을 다루는 향상된 SBR(enhanced SBR, eSBR) 유닛(1901)을 포함한다. 그 다음, 두 개의 브랜치(1100, 1200)가 있고, 제1 경로(1100)는 수정된 고급 오디오 코딩(Advanced Audio Coding, AAC) 툴 경로를 포함하고, 제2 경로(1200)는 선형 예측 코딩(LP 또는 LPC 도메인) 기반의 경로를 포함하며, 이는 차례로, LPC 잔여물의 주파수 도메인 표현 또는 시간 도메인 표현의 특징을 이룬다. AAC 및 LPC 양자에 대한 모든 송신된 스펙트럼은 양자화 및 산술 코딩 이후에 MDCT 도메인에 나타날 수 있다. 시간 도메인 표현은 ACELP 여기(excitation) 코딩 방식을 사용할 수 있다.
위에서 주목된 바와 같이, 스테레오 또는 다중 채널 처리를 다루기 위한 MPEGS 기능 유닛(1902), 및 입력 신호에서 더욱 높은 오디오 주파수의 파라메트릭 표현을 다루고, 본 문서에서 서술된(outlined) 고조파 전위 방법(harmonic transposition methods)을 사용할 수 있는 eSBR 유닛(2901)에 의해 각각 수행되는 공통 (초기) 전/후 처리 프로세스일 수 있다.
인코더(1000)의 eSBR 유닛(1901)은 본 문서에 서술된 고주파 재구성 시스템을 포함할 수 있다. 특히, eSBR 유닛(1901)은 복수의 분석 부대역 신호를 생성하기 위해 분석 필터 뱅크(analysis filter bank)를 포함할 수 있다. 이 분석 부대역 신호는 그 후, 복수의 합성 부대역 신호를 생성하기 위해 비선형 처리 유닛에서 전위(transposed)될 수 있으며, 이는 이후에 고주파 성분을 생성하기 위해 합성 필터 뱅크에 입력될 수 있다. 고주파 성분에 관련된 인코딩된 데이터는 비트스트림 멀티플렉서에서 다른 인코딩된 정보와 병합되고(merged), 인코딩된 오디오 스트림으로서 대응하는 디코더(2000)에 전달된다.
도 2는 USAC 디코더(2000)의 일 예시를 도시한다. USAC 디코더(2000)는 스테레오 또는 다중 채널 처리를 다루기 위한 MPEG 서라운드 기능 유닛(2902)을 포함한다. MPEG 서라운드 기능 유닛(2902)은 예를 들어, USAC 표준의 7.11절에서 서술될 수 있다. 이 절은 그 전체가 본원에 참조로 통합된다. MPEG 서라운드 기능 유닛(2902)은 모노 대 스테레오 업믹싱을 수행할 수 있는, 업믹싱 유닛의 일 예시로서 OTT 박스(OTT 디코딩 블록)를 포함할 수 있다. OTT 박스(300)의 일 예시가 도 3에 도시된다. OTT 박스(300)는 모노 입력 신호(M0)가 제공되는 비상관기(D, 310)(비상관기 블록)를 포함할 수 있다. OTT 박스(300)는 혼합 행렬(또는 혼합 행렬을 적용하는 혼합 모듈)(320)를 더 포함할 수 있다. 비상관기(D, 310)는 입력 모노 신호 M0의 비상관된 버전을 제공할 수 있다. 혼합 행렬(320)은 바람직한 스테레오 신호의 채널(예를 들어, 좌, 우)을 생성하기 위해, 입력 모노 신호(M0) 및 그의 비상관된 버전을 혼합할 수 있다. 혼합 행렬은 예를 들어, 제어 파라미터 CLD, ICC 및 IPD를 기초로 할 수 있다. 비상관기(D, 310)는 전역-통과(all-pass) 비상관기(DAP)를 포함할 수 있다.
비상관기(D, 310)의 일 예시가 도 4에 도시된다. 비상관기(D, 310)는 (예를 들어, 과도(transient) 분리를 위한) 신호 분리기(410), 두 개의 비상관기 구조(420, 430) 및 신호 결합기(440)를 포함할 수 있다(예를 들어, 이로 구성될 수 있다). 신호 분리기(410)(분리 유닛)는 입력 신호의 비-과도 신호 성분으로부터 입력 신호의 과도 신호 성분을 분리할 수 있다. 비상관기(D)의 비상관기 구조 중 하나는 전역-통과 비상관기(DAP, 420)일 수 있다. 비상관기 구조 중 다른 하나는 과도 비상관기(DTR, 430)일 수 있다. 과도 비상관기(DTR, 430)은 예를 들어, 이 신호에 페이즈를 적용함으로써, 그에 제공되는 신호를 처리할 수 있다. 전역-통과 비상관기(DAP, 420)는 주파수-종속 사전-지연을 갖고 전역-통과(예를 들어, IIR) 섹션이 후속하는 비상관 필터를 포함할 수 있다. 필터 계수는 소수 지연(fractional delay)의 사용 여부에 의존하는 다양한 방식으로 격자 계수로부터 도출될 수 있다. 다시 말해서, 필터 계수는 소수 지연의 사용 여부에 의존하는 상이한 방식으로 격자 계수로부터 도출된다. 소수 지연 비상관기에 대해, 주파수 지연은 주파수 종속 페이즈-오프셋(frequency dependent phase-offset)을 격자 계수에 추가함으로써 적용된다. 전역-통과 필터 계수는 격자 계수를 사용하여 오프라인으로 결정될 수 있다. 즉, 전역-통과 필터 계수가 미리 계산될 수 있다. 런타임에서, 미리 계산된 전역-통과 필터 계수는 전역-통과 비상관기(DAP, 420)에 대해 획득되고 사용될 수 있다. 예를 들어, 전역-통과 필터 계수는 하나 이상의 룩업 테이블을 기초로 결정될 수 있다.
일반적으로, 격자 계수(또한, 반사 계수(reflection coefficients)로도 알려짐)는 다음에 따라 필터 계수 ax n,k 및 bx n,k로 변환된다.
위의 공식은 런타임 이전에 필터 계수를 유도하기 위해(예를 들어, 미리 계산하기 위해) 오프라인으로 구현될 수 있다. 런타임에서, 미리 계산된 전역-통과 필터 계수는 필요한 경우, 격자 계수로부터 이를 계산하지 않으면서 참조(referred)될 수 있다. 예를 들어, 전역-통과 필터 계수는 하나 이상의 룩업 테이블로부터 획득(예를 들어, 판독, 검색)될 수 있다. 디코더가 런타임에 적절한 전역-통과 필터 계수(들)를 검색하기 위한 루틴을 제공받는 한, 룩업 테이블(들) 내의 전역-통과 필터 계수의 실제 배열은 변할 수 있다.
전역-통과 필터 계수를 미리 계산할 때, 주파수 축은 복수의 비-중첩되고 연속적인 영역, 예를 들어 제1 내지 제4 영역으로 세분화될 수 있다. 통상적으로, 각 영역은 연속적인 주파수 대역의 세트에 대응할 수 있다. 그 후, 각 영역에 대해 별개의 룩업 테이블이 제공될 수 있으며, 각각의 룩업 테이블은 그 주파수 영역에 대한 전역-통과 필터 계수를 포함한다.
예를 들어, 주파수 축을 따른 제1 영역에 대한 격자 계수에 대한 필터 계수는 다음을 기초로 결정될 수 있다:
static FLOAT32 lattice_coeff_0_filt_den_coeff[DECORR_FILT_0_ORD + 1] =
{1.000000f, -0.314818f, -0.256828f, -0.173641f, -0.115077f, 0.000599f, 0.033343f, 0.122672f, -0.356362f, 0.128058f, 0.089800f};
static FLOAT32 lattice_coeff_0_filt_num_coeff[DECORR_FILT_0_ORD+ 1] =
{0.089800f, 0.128058f, -0.356362f, 0.122672f, 0.033343f, 0.000599f, -0.115077f, -0.173641f, -0.256828f, -0.314818f, 1.000000f};
주파수 축을 따른 제2 영역에 대한 격자 계수에 대한 필터 계수는 다음을 기초로 결정될 수 있다:
static FLOAT32 lattice_coeff_1_filt_den_coeff[DECORR_FILT_1_ORD + 1] =
{1.000000f, -0.287137f, -0.088940f, 0.123204f, -0.126111f, 0.064218f, 0.045768f, -0.016264f, -0.122100f};
static FLOAT32 lattice_coeff_1_filt_num_coeff[DECORR_FILT_1_ORD + 1] =
{-0.122100f, -0.016264f, 0.045768f, 0.064218f, -0.126111f, 0.123204f, -0.088940f, -0.287137f, 1.000000f};
주파수 축을 따른 제3 영역에 대한 격자 계수에 대한 필터 계수는 다음을 기초로 결정될 수 있다:
static FLOAT32 lattice_coeff_2_filt_den_coeff[DECORR_FILT_2_ORD + 1] =
{1.000000f, 0.129403f, -0.032633f, 0.035700f};
static FLOAT32 lattice_coeff_2_filt_num_coeff[DECORR_FILT_2_ORD+ 1] =
{0.035700f, -0.032633f, 0.129403f, 1.000000f};
주파수 축을 따른 제4 영역에 대한 격자 계수에 대한 필터 계수는 다음을 기초로 결정될 수 있다:
static FLOAT32 lattice_coeff_3_filt_den_coeff[DECORR_FILT_3_ORD + 1] =
{1.000000f, 0.034742f, -0.013000f};
static FLOAT32 lattice_coeff_3_filt_num_coeff[DECORR_FILT_3_ORD + 1] =
{-0.013000f, 0.034742f, 1.000000f}.
아래 함수에서 ixheaacd_mps_decor_filt_init self->den은 잔향 대역(reverberation band)에 기초하여 대응하는 필터 계수(lattice_coeff_0_filt_den_coeff/ lattice_coeff_1_filt_den_coeff/ lattice_coeff_2_filt_den_coeff/ lattice_coeff_3_filt_den_coeff)로 초기화된다. 이 self-> den(필터 계수에 대한 포인터)은 아래에 도시된 바와 같이, ixheaacd_mps_allpass_apply에 사용된다.
static void ixheaacd_mps_decor_filt_init(ia_mps_decor_filt_struct * self,
WORD32 qmf_band, WORD32 reverb_band) {
switch (reverb_band) {
case 0:
self->num_len = self->den_len = DECORR_FILT_0_ORD + 1;
self->num = lattice_coeff_0_filt_num_coeff;
self->den = lattice_coeff_0_filt_den_coeff;
break;
case 1:
self->num_len = self->den_len = DECORR_FILT_1_ORD + 1;
self->num = lattice_coeff_1_filt_num_coeff;
self->den = lattice_coeff_1_filt_den_coeff;
break;
case 2:
self->num_len = self->den_len = DECORR_FILT_2_ORD + 1;
self->num = lattice_coeff_2_filt_num_coeff;
self->den = lattice_coeff_2_filt_den_coeff;
break;
case 3:
self->num_len = self->den_len = DECORR_FILT_3_ORD + 1;
self->num = lattice_coeff_3_filt_num_coeff;
self->den = lattice_coeff_3_filt_den_coeff;
break;
}
self->state_len = self->num_len;
memset(self->state, 0,
sizeof(ia_cmplx_flt_struct) * (MAX_DECORR_FIL_ORDER + 1));
return;
}
static VOID ixheaacd_mps_allpass_apply(ia_mps_decor_filt_struct * self,
ia_cmplx_flt_struct *input, WORD32 len, ia_cmplx_flt_struct *output) {
WORD32 i, j;
for (i = 0; i < len; i++) {
output[i].re = self->state[0].re + input[i].re * self->num[0];
output[i].im = self->state[0].im + input[i].im * self->num[0];
for (j = 1; j < self->num_len; j++) {
self->state[j - 1].re = self->state[j].re
+ self->num[j] * input[i].re - self->den[j] * output[i].re;
self->state[j - 1].im = self->state[j].im
+ self->num[j] * input[i].im - self->den[j] * output[i].im;
}
}
}
요약하면, 상기는 다음과 같이 구성된 인코딩된 USAC 스트림을 디코딩하기 위한 장치의 처리에 대응할 수 있다. 장치는 인코딩된 USAC 스트림을 디코딩하기 위한 코어 디코더를 포함할 수 있다. 코어 디코더는 모노 대 스테레오 업믹싱을 수행하도록 구성된 업믹싱 유닛(예를 들어, OTT 박스)을 포함할 수 있다. 업믹싱 유닛은 차례로, 입력 신호에 비상관 필터를 적용하도록 구성된 비상관기 유닛(D)을 포함할 수 있다. 비상관기 유닛(D)은 미리 계산된 값을 참조함으로써 비상관 필터에 대한 필터 계수를 결정하도록 구성될 수 있다. 비상관 필터에 대한 필터 계수는 오프라인으로 및 런타임 이전에(예를 들어, 디코딩 이전에) 미리 계산될 수 있고, 하나 이상의 룩업 테이블에 저장될 수 있다. 복수의 주파수 대역의 비-중첩 범위 각각에 대해 별개의 룩업 테이블이 제공될 수 있다. 필터 계수를 결정하는 것은 디코딩 동안 하나 이상의 룩업 테이블로부터 필터 계수에 대해 미리 계산된 값을 호출하는 것을 수반할 수 있다.
코어 디코더는 업믹싱 유닛을 포함하는 MPEG 서라운드 기능 유닛을 포함할 수 있다. 비상관 필터는 전역-통과 섹션이 후속하는, 주파수-종속 사전-지연을 포함할 수 있다 필터 계수는 전역-통과 섹션에 대해 결정될 수 있다. 업믹싱 유닛은 모노 대 스테레오 업믹싱을 수행할 수 있는 OTT 박스일 수 있다.
입력 신호는 모노 신호일 수 있다. 업믹싱 유닛은 입력 신호를 비상관기 유닛의 출력과 혼합하기 위해 혼합 행렬을 적용하기 위한 혼합 모듈을 더 포함할 수 있다. 비상관기 유닛은 입력 신호의 비-과도 신호 성분으로부터 입력 신호의 과도 신호 성분을 분리하기 위한 분리 유닛, 입력 신호의 비-과도 신호 성분에 비상관 필터를 적용하도록 구성된 전역-통과 비상관기 유닛, 입력 신호의 과도 신호 성분을 처리하도록 구성된 과도 비상관기 유닛, 및 전역-통과 비상관기 유닛의 출력과 과도 비상관기 유닛의 출력을 결합하기 위한 신호 결합 유닛을 포함할 수 있다. 전역-통과 비상관기 유닛은 미리 계산된 값을 참조함으로써 비상관 필터에 대한 필터 계수를 결정하도록 구성될 수 있다.
인코딩된 USAC 스트림을 디코딩할 때 모노 대 스테레오 업믹싱의 맥락에서 비상관 필터를 적용하는 대응하는 방법(700)의 예시가 도 7의 흐름도로 도시된다.
단계 S710에서, 입력 신호의 과도 신호 성분은 입력 신호의 비-과도 신호 성분으로부터 분리된다. 단계 S720에서, 비상관 필터는 전역-통과 비상관기 유닛에 의해 입력 신호의 비-과도 신호 성분에 적용된다. 비상관 필터에 대한 필터 계수는 미리 계산된 값을 참조함으로써 결정된다. 단계 S730에서, 입력 신호의 과도 신호 성분은 과도 비상관기 유닛에 의해 처리된다. 단계 S740에서, 전역-통과 비상관기 유닛의 출력 및 과도 비상관기 유닛의 출력이 결합된다.
도 2에 도시된 바와 같이, USAC 디코더(2000)는 향상된 스펙트럼 대역폭 복제(enhanced Spectral Bandwidth Replication, eSBR) 유닛(2901)을 더 포함한다. eSBR 유닛(2901)은 예를 들어, USAC 표준의 7.5 절에서 서술될 수 있다. 이 절은 그 전체가 본원에 참조로 통합된다. eSBR 유닛(2901)은 인코더로부터 인코딩된 오디오 비트스트림 또는 인코딩된 신호를 수신한다. eSBR 유닛(2901)은 디코딩된 신호를 생성하기 위해 디코딩된 저주파수 성분과 병합되는, 신호의 고주파 성분을 생성할 수 있다. 다시 말해, eSBR 유닛(2901)은 오디오 신호의 고대역을 재생성할 수 있다. 이는 인코딩하는 동안 잘린(truncated) 고조파 시퀀스의 복제에 기초하는 것일 수 있다. 또한, 이는 원래의 신호의 스펙트럼 특성을 되살리기(recreate) 위해, 생성된 고대역의 스펙트럼 포락선(spectral envelope)을 조정하고, 역 필터링(inverse filtering)을 적용하며, 잡음 및 사인파 성분을 추가할 수 있다. eSBR 툴의 출력은 예를 들어 MPS212가 사용되는 경우, 신호의 시간 도메인 신호 또는 필터 뱅크 도메인(예를 들어, QMF 도메인) 표현일 수 있다.
eSBR 유닛(2901)은 분석 필터 뱅크, 비선형 처리 유닛 및 합성 필터 뱅크와 같은 상이한 구성 요소를 포함할 수 있다. eSBR 유닛(2901)은 QMF 기반의 고조파 트랜스포저를 포함할 수 있다. QMF 기반의 고조파 트랜스포저는 예를 들어, USAC 표준의 7.5.4절에 서술될 수 있다. 이 절은 그 전체가 본원에 참조로 통합된다. QMF 기반의 고조파 트랜스포저에서, 입력 신호(예를 들어, 코어 코더 시간 도메인 신호)의 대역폭 확장은 예를 들어 수정된 페이즈 보코더 구조(modified phase vocoder structure)를 사용하고, 매 QMF 부대역에 대해 시간 스트레칭(time stretching)이 후속하는 데시메이션(decimation)을 수행하는 것에 의해, QMF 도메인에서, 전체적으로 수행될 수 있다. 여러 전위 인자(transpositions factors)(예를 들어, T=2, 3, 4)를 사용하는 전위는 공통 QMF 분석/합성 변환 스테이지에서 수행될 수 있다. 예를 들어, sbrRatio="2:1"의 경우, 트랜스포저의 출력 신호는 입력 신호의 것에 두 배인 샘플링 속도를 가질 것이며(sbrRatio="8:3": 8/3 샘플링 주파수인 것에 대하여), 이는 T=2의 전위 인자에 대해, 복합 트랜스포저 QMF 분석 뱅크로부터 생성된 복소수 QMF 부대역 신호가 시간 스트레칭되지만, 데시메이팅되지는 않고 트랜스포저 QMF 분석 뱅크에서와 같이 물리적인 부대역 간격의 두 배의 QMF 합성 뱅크로 공급됨을 의미한다. 결합된 시스템은 각각 2, 3 및 4의 전위 인자를 사용하는 세 개의 병렬 트랜스포저로 해석될 수 있다. 복잡성을 감소시키기 위해, 인자 3 및 4 트랜스포저(3차 및 4차 트랜스포저)는 보간(interpolation)에 의해 인자 2 트랜스포저(2차 트랜스포저)에 통합될 수 있다. 그러므로, QMF 분석 및 합성 변환 스테이지만이 2차 트랜스포저에 대해 요구되는 스테이지이다. QMF 기반의 고조파 트랜스포저가 신호 적응형 주파수 도메인 오버샘플링을 특징으로 하지 않기 때문에, 비트스트림에서 대응하는 플래그는 무시된다.
QMF 트랜스포저에서, 모든 합성 부대역에 대해 복소수 출력 이득 값은 다음을 기초로 정의될 수 있다:
k는 부대역 샘플을 나타낸다.
런타임 동안 복소수 출력 이득의 복소수 지수의 실수 부분 및 허수 부분을 계산하는 것 대신에, 이들 값은 오프라인으로 미리 계산되고(저장되며), 런타임에 예를 들어, 대응하는 룩업 테이블로부터 액세스된다.
즉, 복소수 지수의 실수 부분 및 허수 부분은 (오프라인으로) 미리 계산되고 저장된다. 런타임에, 미리 계산된 복소수 지수의 실수 부분 및 허수 부분은 필요한 경우, 계산 없이 참조될 수 있다. 예를 들어, 복소수 지수의 실수 부분 및 허수 부분은 하나 이상의 룩업 테이블로부터 획득(예를 들어, 판독, 검색)될 수 있다. 디코더가 런타임에 적절한 복소수 지수의 실수 부분 및 허수 부분을 검색하기 위한 루틴을 제공받는 한, 룩업 테이블(들) 내의 복소수의 실수 부분 및 허수 부분의 실제 배열은 변할 수 있다.
예를 들어, 하나의 룩업 테이블은 복소수 지수의 실수 부분(예를 들어, 테이블 phase_vocoder_cos_tab)에 대해 제공될 수 있고, 다른 룩업 테이블은 복소수 지수의 허수 부분(예를 들어, 테이블 phase_vocoder_sin_tab)에 대해 제공될 수 있다. 런타임에서, 대역 인덱스(k)(qmf_band_idx로 표기될 수 있음)는 이들 룩업 테이블을 참조하고 적절한 실수 부분 및 허수 부분을 검색하는 데 사용될 수 있다.
출력 이득(Ω(k))을 적용하기 위해 각 합성 부대역에서의 출력 이득과 QMF 샘플의 복소수의 곱셈은 아래에 주어진 ixheaacd_qmf_hbe_apply(ixheaacd_hbe_trans.c) 함수를 기초로 수행될 수 있으며, 여기서 qmf_r_out_buf[i] 및 qmf_i_out_buf[i]는 각각의 합성 부대역(인덱스 qmf_band_idx로 표기됨)에서 QMF 샘플 i의 실수 부분 및 허수 부분을 각각 나타낸다.
위에서 주목된 바와 같이, 출력 이득 Ω(k)을 적용하기 위한 곱셈은 (실수 부분에 대한) phase_vocoder_cos_tab[k] 테이블 및 (허수 부분에 대한) phase_vocoder_sin_tab[k] 테이블에 기초할 수 있으며, 이는 다음과 같이 주어질 수 있다:
const FLOAT32 phase_vocoder_cos_tab[64] =
{
0.012272f, -0.036807f, 0.061321f, -0.085797f,
0.110222f, -0.134581f, 0.158858f, -0.183040f,
0.207111f, -0.231058f, 0.254866f, -0.278520f,
0.302006f, -0.325310f, 0.348419f, -0.371317f,
0.393992f, -0.416430f, 0.438616f, -0.460539f,
0.482184f, -0.503538f, 0.524590f, -0.545325f,
0.565732f, -0.585798f, 0.605511f, -0.624859f,
0.643832f, -0.662416f, 0.680601f, -0.698376f,
0.715731f, -0.732654f, 0.749136f, -0.765167f,
0.780737f, -0.795837f, 0.810457f, -0.824589f,
0.838225f, -0.851355f, 0.863973f, -0.876070f,
0.887640f, -0.898674f, 0.909168f, -0.919114f,
0.928506f, -0.937339f, 0.945607f, -0.953306f,
0.960431f, -0.966976f, 0.972940f, -0.978317f,
0.983105f, -0.987301f, 0.990903f, -0.993907f,
0.996313f, -0.998118f, 0.999322f, -0.999925f,
};
const FLOAT32 phase_vocoder_sin_tab[64] =
{
0.999925f, -0.999322f, 0.998118f, -0.996313f,
0.993907f, -0.990903f, 0.987301f, -0.983105f,
0.978317f, -0.972940f, 0.966976f, -0.960431f,
0.953306f, -0.945607f, 0.937339f, -0.928506f,
0.919114f, -0.909168f, 0.898674f, -0.887640f,
0.876070f, -0.863973f, 0.851355f, -0.838225f,
0.824589f, -0.810457f, 0.795837f, -0.780737f,
0.765167f, -0.749136f, 0.732654f, -0.715731f,
0.698376f, -0.680601f, 0.662416f, -0.643832f,
0.624859f, -0.605511f, 0.585798f, -0.565732f,
0.545325f, -0.524590f, 0.503538f, -0.482184f,
0.460539f, -0.438616f, 0.416430f, -0.393992f,
0.371317f, -0.348419f, 0.325310f, -0.302006f,
0.278520f, -0.254866f, 0.231058f, -0.207111f,
0.183040f, -0.158858f, 0.134581f, -0.110222f,
0.085797f, -0.061321f, 0.036807f, -0.012272f,
};
요약하면, 상기는 다음과 같이 구성된 인코딩된 USAC 스트림을 디코딩하기 위한 장치의 처리에 대응할 수 있다. 장치는 인코딩된 USAC 스트림을 디코딩하기 위한 코어 디코더를 포함할 수 있다. 코어 디코더는 입력 신호의 대역폭을 확장하기 위한 eSBR 유닛을 포함할 수 있으며, eSBR 유닛은 QMF 기반의 고조파 트랜스포저를 포함한다. QMF 기반의 고조파 트랜스포저는 입력 신호의 대역폭을 확장하기 위해 복수의 합성 부대역 각각에서 QMF 도메인의 입력 신호를 처리하도록 구성될 수 있다. QMF 기반의 고조파 트랜스포저는 미리 계산된 정보에 적어도 부분적으로 기초하여 동작하도록 더 구성될 수 있다.
미리 계산된 정보는 하나 이상의 룩업 테이블에 저장될 수 있다. 그 후, QMF 기반의 고조파 트랜스포저는 런타임에 하나 이상의 룩업 테이블로부터 미리 계산된 정보에 액세스하도록 구성될 수 있다.
eSBR 유닛은 인코딩 동안 잘린 고조파 시퀀스의 복제를 기초로, 입력 신호의 고대역 주파수 성분을 재생성하고, 그를 통해 입력 신호의 대역폭을 확장하도록 구성될 수 있다. eSBR 유닛은 입력 신호에서 더욱 높은 오디오 주파수의 파라메트릭 표현을 다루도록 구성될 수 있다.
QMF 기반의 고조파 트랜스포저는 복수의 합성 부대역 각각에 대한 각각의 복소수 출력 이득 값을 획득하고, 복소수 출력 이득 값을 그 각각의 합성 부대역에 적용하도록 구성될 수 있다. 미리 계산된 정보는 복소수 출력 이득 값에 관련될 수 있다. 복소수 출력 이득 값은 런타임에 하나 이상의 룩업 테이블로부터 액세스되는 실수 부분 및 허수 부분을 포함할 수 있다.
또한, QMF 트랜스포저에서, 코어 코더 시간-입력 신호는 coreCoderFrameLength 입력 샘플의 블록을 사용하여, QMF 도메인으로 변환될 수 있다. 계산 복잡성을 덜기 위해, 변환은 SBR 툴에 이미 존재하는 32-대역 분석 QMF 뱅크로부터 부대역 신호상에 임계(critical) 샘플링 처리를 적용함으로써 구현된다. 임계 샘플링 처리는 행렬 XLow를 부대역 샘플과 2배의 분해능을 갖는 새로운 QMF 부분 행렬(submatrices) Γ(μ, v)로 변환할 수 있다. 이들 QMF 부분 행렬(submatrices)은 1에 동일한 부대역 샘플 스트라이드(subband sample stride)에서 12 부대역 샘플의 시간 범위를 통한 부대역 블록 처리에 의해 동작될 수 있다. 처리는 이들 부분 행렬에 대해 선형 추출 및 비선형 연산을 수행하고, 2에 동일한 부대역 샘플 스트라이드에서 수정된 부분 행렬을 중첩-가산(overlap-adds)할 수 있다. 결과는 QMF 출력은 인자 2의 부대역 도메인 스트레치 및 인자 T/2 = 1, 3/2, 2의 부대역 도메인 전이를 겪는다. 트랜스포저 분석 뱅크로서 물리적인 부대역 간격의 두 배의 QMF 뱅크와 합성 시, 인자 T = 2, 3, 4를 갖는 요구되는 전위가 발생할 것이다.
일 예시에서, 샘플의 단일 부분 행렬의 비선형 처리는 부분 행렬의 위치를 나타내는 변수 u=0, 1, 2, ...를 기초로 제공될 수 있다. 표기 목적으로, 이 인덱스는 고정되기 때문에, 다음과 같이 생략될 수 있다. 그 대신에, 다음의 부분 행렬의 인덱싱이 사용될 수 있다:
비선형 수정의 출력은 Y(m, k)로 표기되며, 여기서 m=-6, ..., 5이고 xOverQMF(0) ≤ k < xOverQmf(numPatches)이다. 인덱스 k를 갖는 각 합성 부대역은 하나의 전위 순서의 결과일 수 있으며, 처리가 이 순서에 의존하여 약간 상이할 수 있기 때문이다. 공통 특징은 인덱스 약 2k/T를 갖는 분석 부대역이 선택된다는 것이다.
일 경우에서, xOverQmf(1) k < xOverQmf(2) - T=3 -의 경우, 비선형 처리는 비-정수인 부대역 샘플의 추출을 위해 선형 보간을 사용할 수 있다.
두 개의 분석 부대역 인덱스 n과 이 정의될 수 있다. 예를 들어, 분석 부대역 인덱스 는 2k/T = 2k/3의 정수 부분으로 정의될 수 있고, 분석 부대역 인덱스 n은 n = + κ로 정의될 수 있으며, 여기서
며, Z+는 양의 정수 세트를 나타낸다.
주어진 시간 범위(예를 들어, 8 부대역 샘플)를 갖는 블록은 다음과 같이 에 대해 추출될 수 있다:
비-정수인 부대역 샘플 엔트리는 다음의 형태의 두 개의 탭 보간으로 획득될 수 있고:
필터 계수는 아래에 의해, 및 ε = 0,1에 대해 정의된다:
이 방식으로 획득된 QMF 샘플 X(m, v)는 다음과 같이 에 대해 극좌표로 변환될 수 있다.
그 후, 출력은 다음과 같이 m = -4, ... , 3에 대해 정의될 수 있고,
Y(3)(m,k)는 m∈{-6,-5,4,5}에 대해 0으로 확장될 수 있다. 이 후자의 동작은 길이가 8인 직사각형 윈도우를 갖는 합성 윈도우에 동등할 수 있다. 복소수 출력 이득 Ω(k)에 의한 곱셈은 전술한 기법을 수반할 수 있다.
비-정수인 부대역 샘플 엔트리를 결정할 필요성이 다음에 서술되는 외적(cross products)의 추가의 맥락에서 또한, 발생할 수 있다.
xOverQmf(0) ≤ k ≤ xOverQmf(numPatches)인 각 k에 대해, 고유한 전위 인자 T=2, 3, 4는 규칙 xOverQmf(T-2) ≤ k ≤ xOverQmf(T-1)에 의해 정의된다. 외적 피치 파라미터(cross product pitch parameter)가 p < 1을 만족하는 경우, 외적 이득 ΩC(m,k)는 0으로 설정된다. p는 다음과 같이 비트스트림 파라미터 sbrPitchInBins[ch]로부터 결정될 수 있다:
p = sbrPitchInBins[ch] / 12
p≥1인 경우, ΩC(m,k) 및 중간 정수 파라미터 μ1(k), μ2(k) 및 t(k)는 다음 절차에 의해 정의될 수 있다. M을 최대 값 T-1값에서 min{|B(0, n1)|, |B(0, n2)|}의 최대인 것으로 하며,
- n1의 정수 부분이고, n1> 0이며;
- n2는 n1 + p 및 n2 < 2MS의 정수 부분이고;
- t = 1,...T-1이다.
M≤|B(0, μ(k))| - μ(k)는 2k/T의 정수 부분으로 정의됨 - 인 경우, 외적 추가가 취소되고 ΩC(m, k) = 0이다. 그렇지 않은 경우, min{|B(0, n1)|, |B(0, n2)|}M인 것에 대하여 t(k)는 가장 작은 t = 1, ... , T-1로 정의되고 정수 쌍(μ1(k), μ2(k))은 대응하는 최대 쌍(n1, n2)으로 정의된다. 두 개의 다운 샘플링 인자 D1(k) 및 D2(k)는 다음의 테이블에 주어진 방정식 (T-t(k))D1+t(k)D2=T/2에 대한 특수해(particular solutions)으로서의 T 및 t(k)의 값으로부터 결정될 수 있다
p≥1 및 M>|B(0, μ(k))|인 경우, 외적 이득은 다음에 의해 정의될 수 있다:
예를 들어, 두 부대역 샘플의 시간 범위를 갖는 두 개의 블록이 추출될 수 있다. 예를 들어, 이 추출은 다음에 따라 수행될 수 있다:
0에 동일한 다운샘플링 인자의 사용은 단일 부대역 샘플 값의 반복에 대응할 수 있으며, 비-정수 다운샘플링 인자의 사용은 비-정수인 부대역 샘플 엔트리의 계산을 요구할 것이다. 이들 엔트리는 다음 형태의 동일한 두 개의 탭 보간에 의해 획득될 수 있다:
필터 계수는 아래에 의해, 및 ε = 0,1에 대해 정의된다:
추출된 QMF 샘플 X1(m) 및 X2(m)은 극좌표로 변환된다.
그 후, 외적 항은 다음과 같이 계산된다:
YC T(m,k)는 m∈{-6,-5,-4,-3,-2,1,2,3,4,5}에 대해 0으로 확장될 수 있다.
그 후, 기여(contributions) Y(T) 및 YC (T)를 추가함으로써 결합된 QMF 출력이 획득될 수 있다.
hε(v)에 대한 위의 공식으로부터 아래를 참조할 수 있다.
Real(h 1 (v)) = Real(h 0 (v))
Imag(h 1 (v)) = -Imag(h 0 (v)) 및
Real(h 0 (v)) = cos(((2* v + 1 ) *π)/4)
Imag(h 0 (v)) = sin(((2* v + 1 ) *π)/4)
Real(h s (v)) h s (v) 의 실수 부분을 지칭하고, Imag(h s (v)) 는 복소수 h s (v) 의 허수 부분을 지칭한다. 따라서, (오직) 관련된 값은 Real h0(v) 및 Imag h0(v)이다.
필터 계수 hε(v)(또는 동등하게 Real h0(v) 및 Imag h0(v))를 결정하기 위한 공식은 런타임 이전에 필터 계수를 도출(예를 들어, 미리 계산)하기 위해 오프라인으로 구현될 수 있다. 런타임에, 미리 계산된 필터 계수 hε(v)는 필요한 경우, 계산 없이 참조될 수 있다. 예를 들어, 필터 계수 hε(v)는 하나 이상의 룩업 테이블로부터 획득(예를 들어, 판독, 검색)될 수 있다. 디코더가 런타임에 적절한 필터 계수(들)를 검색하기 위한 루틴을 제공받는 한, 룩업 테이블(들) 내의 필터 계수 hε(v)의 실제 배열은 변할 수 있다.
예를 들어, 룩업 테이블은 v의 값을 기초로 액세스될 수 있다. 예를 들어, 다음 테이블은 v 의 값을 기초로 액세스되며, 테이블 값은 다음으로 주어진 v 에 대응한다:
Real(h 0 (v)) = hbe_post_anal_proc_interp_coeff[(( v + 1) & 3)][0];
Imag(h 0 (v)) = hbe_post_anal_proc_interp_coeff[( v + 1) & 3)][1];
const FLOAT32 hbe_post_anal_proc_interp_coeff[4][2] =
{
/*real imag */
{0.3984033437f, 0.3984033437f},
{0.3984033437f, -0.3984033437f},
{-0.3984033437f, -0.3984033437f},
{-0.3984033437f, 0.3984033437f},
};
테이블로부터, 계수의 실수 부분 및 허수 부분의 절대 값이 동일하다는 것이 관찰될 수 있다. 따라서, 필터 계수 hε(v)와의 곱셈은 0.3984033437(0.3984033437f)와 결과의 단일 곱셈이 후속하는, (예를 들어, 정수 부대역 샘플 B(μ, v) 및 B(μ+1, v) 각각의 정수, 허부 부분의) 가산 및 감산으로 대체될 수 있다.
요약하면, 상기는 복수의 합성 부대역이 소수의 부대역 인덱스를 갖는 비-정수인 합성 부대역을 포함할 수 있는, 상술한 바와 같이(다른 것들 중, QMF 고조파 트랜스포저를 포함하는) 인코딩된 USAC 스트림을 디코딩하기 위한 장치의 처리에 대응할 수 있다. QMF 기반의 고조파 트랜스포저는 이들 비-정수인 합성 부대역 내의 입력 신호로부터 추출된 샘플을 처리하도록 구성될 수 있다. 미리 계산된 정보는 정수 부대역 인덱스를 갖는 이웃하는 정수 부대역의 샘플로부터 비-정수인 부대역 내의 샘플을 보간하기 위한 보간 계수에 관련될 수 있다. 보간 계수는 오프라인으로 결정되고, 하나 이상의 룩업 테이블에 저장될 수 있다. QMF 기반의 고조파 트랜스포저는 런타임에 하나 이상의 룩업 테이블로부터 보간 계수에 액세스하도록 구성될 수 있다.
또한, 다음 공식:
에 의해 정의된 외적 이득 값의 결정은 런타임 이전에 외적 이득을 도출하기 위해(예를 들어, 미리 계산하기 위해) 오프라인으로 구현될 수 있다. 런타임에, 미리 계산된 외적 이득은 필요한 경우, 계산 없이 참조될 수 있다. 예를 들어, 외적 이득은 하나 이상의 룩업 테이블로부터 획득(예를 들어, 판독, 검색)될 수 있다. 디코더가 런타임에 적절한 외적 이득(들)을 검색하기 위한 루틴을 제공받는 한, 룩업 테이블(들) 내의 외적 이득의 실제 배열은 변할 수 있다. 미리 계산된 외적 이득을 검색하는 것은 전술한 것과 동일한 비-선형 처리 블록에 의해 수행될 수 있다.
예를 들어, 위의 복소수의 외적 이득 값은 다음 룩업 테이블로 대체될 수 있다.
hbe_x_prod_cos_table_trans_2, hbe_x_prod_cos_table_trans_3, hbe_x_prod_cos_table_trans_4
이들 테이블은 이들 값의 직접적인 대체에 의해 계산될 수 있으며, t(k), D1(k) 및 D2(k)의 값을 기초로 액세스될 수 있다. 예를 들어 테이블은 다음으로 주어질 수 있다:
const FLOAT32 hbe_x_prod_cos_table_trans_2[(128 + 128) * 2] =
{
{
/*4에 동일하지 않은 업 샘플링 인자에 대해*/
1.000000, 0.000000, 0.991445, 0.130526, 0.965926, 0.258819,
0.923880, 0.382683, 0.866025, 0.500000, 0.793353, 0.608761,
0.707107, 0.707107, 0.608761, 0.793353, 0.500000, 0.866025,
0.382683, 0.923880, 0.258819, 0.965926, 0.130526, 0.991445,
-0.000000, 1.000000,-0.130526, 0.991445,-0.258819, 0.965926,
-0.382683, 0.923880,-0.500000, 0.866025,-0.608761, 0.793353,
-0.707107, 0.707107,-0.793353, 0.608761,-0.866025, 0.500000,
-0.923880, 0.382683,-0.965926, 0.258819,-0.991445, 0.130526,
-1.000000,-0.000000,-0.991445,-0.130526,-0.965926,-0.258819,
-0.923880,-0.382683,-0.866025,-0.500000,-0.793353,-0.608762,
-0.707107,-0.707107,-0.608761,-0.793353,-0.500000,-0.866025,
-0.382683,-0.923880,-0.258819,-0.965926,-0.130526,-0.991445,
0.000000,-1.000000, 0.130526,-0.991445, 0.258819,-0.965926,
0.382684,-0.923879, 0.500000,-0.866025, 0.608762,-0.793353,
0.707107,-0.707107, 0.793353,-0.608761, 0.866026,-0.500000,
0.923880,-0.382683, 0.965926,-0.258819, 0.991445,-0.130526,
1.000000, 0.000000, 0.991445, 0.130527, 0.965926, 0.258819,
0.923879, 0.382684, 0.866025, 0.500000, 0.793353, 0.608762,
0.707107, 0.707107, 0.608761, 0.793353, 0.500000, 0.866026,
0.382683, 0.923880, 0.258819, 0.965926, 0.130526, 0.991445,
-0.000000, 1.000000,-0.130526, 0.991445,-0.258819, 0.965926,
-0.382684, 0.923879,-0.500000, 0.866025,-0.608762, 0.793353,
-0.707107, 0.707106,-0.793353, 0.608761,-0.866026, 0.500000,
-0.923880, 0.382684,-0.965926, 0.258819,-0.991445, 0.130526,
-1.000000,-0.000000,-0.991445,-0.130527,-0.965926,-0.258819,
-0.923879,-0.382684,-0.866025,-0.500000,-0.793353,-0.608762,
-0.707107,-0.707107,-0.608761,-0.793353,-0.500000,-0.866025,
-0.382683,-0.923880,-0.258819,-0.965926,-0.130526,-0.991445,
0.000000,-1.000000, 0.130526,-0.991445, 0.258819,-0.965926,
0.382684,-0.923880, 0.500000,-0.866025, 0.608762,-0.793353,
0.707107,-0.707107, 0.793354,-0.608761, 0.866026,-0.500000,
0.923880,-0.382683, 0.965926,-0.258819, 0.991445,-0.130526,
1.000000, 0.000000, 0.991445, 0.130526, 0.965926, 0.258820,
0.923879, 0.382684, 0.866025, 0.500000, 0.793353, 0.608761,
0.707107, 0.707107, 0.608761, 0.793354, 0.500000, 0.866025,
0.382683, 0.923880, 0.258819, 0.965926, 0.130526, 0.991445,
-0.000000, 1.000000,-0.130527, 0.991445,-0.258819, 0.965926,
-0.382684, 0.923879,-0.500000, 0.866025,-0.608762, 0.793353,
-0.707107, 0.707107,-0.793354, 0.608761,-0.866026, 0.499999,
-0.923880, 0.382683,-0.965926, 0.258819,-0.991445, 0.130526,
-1.000000,-0.000001,-0.991445,-0.130527,-0.965926,-0.258819,
-0.923879,-0.382683,-0.866025,-0.500000,-0.793353,-0.608762,
-0.707106,-0.707107,-0.608761,-0.793354
/*4에 동일한 업 샘플링 인자에 대해*/
1.000000, 0.000000, 0.997859, 0.065403, 0.991445, 0.130526,
0.980785, 0.195090, 0.965926, 0.258819, 0.946930, 0.321439,
0.923880, 0.382683, 0.896873, 0.442289, 0.866025, 0.500000,
0.831470, 0.555570, 0.793353, 0.608761, 0.751840, 0.659346,
0.707107, 0.707107, 0.659346, 0.751840, 0.608761, 0.793353,
0.555570, 0.831470, 0.500000, 0.866025, 0.442289, 0.896873,
0.382683, 0.923880, 0.321439, 0.946930, 0.258819, 0.965926,
0.195090, 0.980785, 0.130526, 0.991445, 0.065403, 0.997859,
-0.000000, 1.000000,-0.065403, 0.997859,-0.130526, 0.991445,
-0.195090, 0.980785,-0.258819, 0.965926,-0.321440, 0.946930,
-0.382683, 0.923880,-0.442289, 0.896873,-0.500000, 0.866025,
-0.555570, 0.831470,-0.608761, 0.793353,-0.659346, 0.751840,
-0.707107, 0.707107,-0.751840, 0.659346,-0.793353, 0.608761,
-0.831470, 0.555570,-0.866025, 0.500000,-0.896873, 0.442289,
-0.923880, 0.382683,-0.946930, 0.321439,-0.965926, 0.258819,
-0.980785, 0.195090,-0.991445, 0.130526,-0.997859, 0.065403,
-1.000000,-0.000000,-0.997859,-0.065403,-0.991445,-0.130526,
-0.980785,-0.195090,-0.965926,-0.258819,-0.946930,-0.321440,
-0.923880,-0.382683,-0.896873,-0.442289,-0.866025,-0.500000,
-0.831470,-0.555570,-0.793353,-0.608762,-0.751840,-0.659346,
-0.707107,-0.707107,-0.659346,-0.751840,-0.608761,-0.793353,
-0.555570,-0.831470,-0.500000,-0.866025,-0.442289,-0.896873,
-0.382683,-0.923880,-0.321439,-0.946930,-0.258819,-0.965926,
-0.195090,-0.980785,-0.130526,-0.991445,-0.065403,-0.997859,
0.000000,-1.000000, 0.065403,-0.997859, 0.130526,-0.991445,
0.195090,-0.980785, 0.258819,-0.965926, 0.321440,-0.946930,
0.382684,-0.923879, 0.442289,-0.896873, 0.500000,-0.866025,
0.555570,-0.831469, 0.608762,-0.793353, 0.659346,-0.751840,
0.707107,-0.707107, 0.751840,-0.659346, 0.793353,-0.608761,
0.831470,-0.555570, 0.866026,-0.500000, 0.896873,-0.442289,
0.923880,-0.382683, 0.946930,-0.321439, 0.965926,-0.258819,
0.980785,-0.195090, 0.991445,-0.130526, 0.997859,-0.065403,
1.000000, 0.000000, 0.997859, 0.065403, 0.991445, 0.130527,
0.980785, 0.195091, 0.965926, 0.258819, 0.946930, 0.321439,
0.923879, 0.382684, 0.896873, 0.442289, 0.866025, 0.500000,
0.831470, 0.555571, 0.793353, 0.608762, 0.751840, 0.659346,
0.707107, 0.707107, 0.659346, 0.751840, 0.608761, 0.793353,
0.555570, 0.831470, 0.500000, 0.866026, 0.442289, 0.896873,
0.382683, 0.923880, 0.321439, 0.946930, 0.258819, 0.965926,
0.195090, 0.980785, 0.130526, 0.991445, 0.065403, 0.997859,
-0.000000, 1.000000,-0.065403, 0.997859,-0.130526, 0.991445,
-0.195091, 0.980785,-0.258819, 0.965926,-0.321440, 0.946930,
-0.382684, 0.923879, -0.442289, 0.896873
};
const FLOAT32 hbe_x_prod_cos_table_trans_3[(128 + 128)*2] =
{
/*4에 동일하지 않은 업 샘플링 인자에 대해*/
1.000000, 0.000000, 0.965926, 0.258819, 0.866025, 0.500000,
0.707107, 0.707107, 0.500000, 0.866025, 0.258819, 0.965926,
-0.000000, 1.000000,-0.258819, 0.965926,-0.500000, 0.866025,
-0.707107, 0.707107,-0.866025, 0.500000,-0.965926, 0.258819,
-1.000000,-0.000000,-0.965926,-0.258819,-0.866025,-0.500000,
-0.707107,-0.707107,-0.500000,-0.866025,-0.258819,-0.965926,
0.000000,-1.000000, 0.258819,-0.965926, 0.500000,-0.866025,
0.707107,-0.707107, 0.866026,-0.500000, 0.965926,-0.258819,
1.000000, 0.000000, 0.965926, 0.258819, 0.866025, 0.500000,
0.707107, 0.707107, 0.500000, 0.866026, 0.258819, 0.965926,
-0.000000, 1.000000,-0.258819, 0.965926,-0.500000, 0.866025,
-0.707107, 0.707106,-0.866026, 0.500000,-0.965926, 0.258819,
-1.000000,-0.000000,-0.965926,-0.258819,-0.866025,-0.500000,
-0.707107,-0.707107,-0.500000,-0.866025,-0.258819,-0.965926,
0.000000,-1.000000, 0.258819,-0.965926, 0.500000,-0.866025,
0.707107,-0.707107, 0.866026,-0.500000, 0.965926,-0.258819,
1.000000, 0.000000, 0.965926, 0.258820, 0.866025, 0.500000,
0.707107, 0.707107, 0.500000, 0.866025, 0.258819, 0.965926,
-0.000000, 1.000000,-0.258819, 0.965926,-0.500000, 0.866025,
-0.707107, 0.707107,-0.866026, 0.499999,-0.965926, 0.258819,
-1.000000,-0.000001,-0.965926,-0.258819,-0.866025,-0.500000,
-0.707106,-0.707107,-0.500000,-0.866026,-0.258819,-0.965926,
0.000000,-1.000000, 0.258820,-0.965926, 0.500000,-0.866025,
0.707107,-0.707107, 0.866026,-0.499999, 0.965926,-0.258818,
1.000000, 0.000000, 0.965926, 0.258820, 0.866025, 0.500001,
0.707106, 0.707107, 0.500000, 0.866025, 0.258819, 0.965926,
-0.000001, 1.000000,-0.258820, 0.965926,-0.500000, 0.866026,
-0.707107, 0.707106,-0.866026, 0.500000,-0.965926, 0.258819,
-1.000000,-0.000001,-0.965926,-0.258820,-0.866025,-0.500000,
-0.707106,-0.707107,-0.499999,-0.866026,-0.258818,-0.965926,
0.000001,-1.000000, 0.258820,-0.965925, 0.500001,-0.866025,
0.707107,-0.707107, 0.866026,-0.500000, 0.965926,-0.258818,
1.000000, 0.000001, 0.965926, 0.258819, 0.866025, 0.500001,
0.707106, 0.707107, 0.499999, 0.866026, 0.258818, 0.965926,
-0.000001, 1.000000,-0.258820, 0.965926,-0.500001, 0.866025,
-0.707107, 0.707106,-0.866026, 0.499999,-0.965926, 0.258818,
-1.000000,-0.000000,-0.965926,-0.258820,-0.866025,-0.500001,
-0.707106,-0.707107,-0.499999,-0.866026,-0.258818,-0.965926,
0.000001,-1.000000, 0.258820,-0.965926, 0.500001,-0.866025,
0.707107,-0.707106, 0.866026,-0.500000, 0.965926,-0.258819,
1.000000, 0.000001, 0.965926, 0.258820, 0.866025, 0.500000,
0.707106, 0.707107, 0.499999, 0.866025, 0.258818, 0.965926,
-0.000001, 1.000000, -0.258820, 0.965925
/*4에 동일한 업 샘플링 인자에 대해*/
1.000000, 0.000000, 0.991445, 0.130526, 0.965926, 0.258819,
0.923880, 0.382683, 0.866025, 0.500000, 0.793353, 0.608761,
0.707107, 0.707107, 0.608761, 0.793353, 0.500000, 0.866025,
0.382683, 0.923880, 0.258819, 0.965926, 0.130526, 0.991445,
-0.000000, 1.000000,-0.130526, 0.991445,-0.258819, 0.965926,
-0.382683, 0.923880,-0.500000, 0.866025,-0.608761, 0.793353,
-0.707107, 0.707107,-0.793353, 0.608761,-0.866025, 0.500000,
-0.923880, 0.382683,-0.965926, 0.258819,-0.991445, 0.130526,
-1.000000,-0.000000,-0.991445,-0.130526,-0.965926,-0.258819,
-0.923880,-0.382683,-0.866025,-0.500000,-0.793353,-0.608762,
-0.707107,-0.707107,-0.608761,-0.793353,-0.500000,-0.866025,
-0.382683,-0.923880,-0.258819,-0.965926,-0.130526,-0.991445,
0.000000,-1.000000, 0.130526,-0.991445, 0.258819,-0.965926,
0.382684,-0.923879, 0.500000,-0.866025, 0.608762,-0.793353,
0.707107,-0.707107, 0.793353,-0.608761, 0.866026,-0.500000,
0.923880,-0.382683, 0.965926,-0.258819, 0.991445,-0.130526,
1.000000, 0.000000, 0.991445, 0.130527, 0.965926, 0.258819,
0.923879, 0.382684, 0.866025, 0.500000, 0.793353, 0.608762,
0.707107, 0.707107, 0.608761, 0.793353, 0.500000, 0.866026,
0.382683, 0.923880, 0.258819, 0.965926, 0.130526, 0.991445,
-0.000000, 1.000000,-0.130526, 0.991445,-0.258819, 0.965926,
-0.382684, 0.923879,-0.500000, 0.866025,-0.608762, 0.793353,
-0.707107, 0.707106,-0.793353, 0.608761,-0.866026, 0.500000,
-0.923880, 0.382684,-0.965926, 0.258819,-0.991445, 0.130526,
-1.000000,-0.000000,-0.991445,-0.130527,-0.965926,-0.258819,
-0.923879,-0.382684,-0.866025,-0.500000,-0.793353,-0.608762,
-0.707107,-0.707107,-0.608761,-0.793353,-0.500000,-0.866025,
-0.382683,-0.923880,-0.258819,-0.965926,-0.130526,-0.991445,
0.000000,-1.000000, 0.130526,-0.991445, 0.258819,-0.965926,
0.382684,-0.923880, 0.500000,-0.866025, 0.608762,-0.793353,
0.707107,-0.707107, 0.793354,-0.608761, 0.866026,-0.500000,
0.923880,-0.382683, 0.965926,-0.258819, 0.991445,-0.130526,
1.000000, 0.000000, 0.991445, 0.130526, 0.965926, 0.258820,
0.923879, 0.382684, 0.866025, 0.500000, 0.793353, 0.608761,
0.707107, 0.707107, 0.608761, 0.793354, 0.500000, 0.866025,
0.382683, 0.923880, 0.258819, 0.965926, 0.130526, 0.991445,
-0.000000, 1.000000,-0.130527, 0.991445,-0.258819, 0.965926,
-0.382684, 0.923879,-0.500000, 0.866025,-0.608762, 0.793353,
-0.707107, 0.707107,-0.793354, 0.608761,-0.866026, 0.499999,
-0.923880, 0.382683,-0.965926, 0.258819,-0.991445, 0.130526,
-1.000000,-0.000001,-0.991445,-0.130527,-0.965926,-0.258819,
-0.923879,-0.382683,-0.866025,-0.500000,-0.793353,-0.608762,
-0.707106,-0.707107, -0.608761,-0.793354
};
const FLOAT32 hbe_x_prod_cos_table_trans_4[(128 + 128) *2] =
{
/*4에 동일하지 않은 업 샘플링 인자에 대해*/
1.000000, 0.000000, 0.923880, 0.382683, 0.707107, 0.707107,
0.382683, 0.923880,-0.000000, 1.000000,-0.382683, 0.923880,
-0.707107, 0.707107,-0.923880, 0.382683,-1.000000,-0.000000,
-0.923880,-0.382683,-0.707107,-0.707107,-0.382683,-0.923880,
0.000000,-1.000000, 0.382684,-0.923879, 0.707107,-0.707107,
0.923880,-0.382683, 1.000000, 0.000000, 0.923879, 0.382684,
0.707107, 0.707107, 0.382683, 0.923880,-0.000000, 1.000000,
-0.382684, 0.923879,-0.707107, 0.707106,-0.923880, 0.382684,
-1.000000,-0.000000,-0.923879,-0.382684,-0.707107,-0.707107,
-0.382683,-0.923880, 0.000000,-1.000000, 0.382684,-0.923880,
0.707107,-0.707107, 0.923880,-0.382683, 1.000000, 0.000000,
0.923879, 0.382684, 0.707107, 0.707107, 0.382683, 0.923880,
-0.000000, 1.000000,-0.382684, 0.923879,-0.707107, 0.707107,
-0.923880, 0.382683,-1.000000,-0.000001,-0.923879,-0.382683,
-0.707106,-0.707107,-0.382683,-0.923880, 0.000000,-1.000000,
0.382684,-0.923879, 0.707107,-0.707107, 0.923880,-0.382683,
1.000000, 0.000000, 0.923879, 0.382684, 0.707106, 0.707107,
0.382683, 0.923880,-0.000001, 1.000000,-0.382684, 0.923880,
-0.707107, 0.707106,-0.923880, 0.382683,-1.000000,-0.000001,
-0.923879,-0.382684,-0.707106,-0.707107,-0.382683,-0.923880,
0.000001,-1.000000, 0.382684,-0.923879, 0.707107,-0.707107,
0.923880,-0.382682, 1.000000, 0.000001, 0.923879, 0.382683,
0.707106, 0.707107, 0.382683, 0.923880,-0.000001, 1.000000,
-0.382684, 0.923879,-0.707107, 0.707106,-0.923880, 0.382683,
-1.000000,-0.000000,-0.923879,-0.382685,-0.707106,-0.707107,
-0.382683,-0.923880, 0.000001,-1.000000, 0.382684,-0.923880,
0.707107,-0.707106, 0.923880,-0.382683, 1.000000, 0.000001,
0.923879, 0.382684, 0.707106, 0.707107, 0.382683, 0.923880,
-0.000001, 1.000000,-0.382684, 0.923880,-0.707107, 0.707106,
-0.923880, 0.382682,-1.000000,-0.000003,-0.923879,-0.382683,
-0.707106,-0.707108,-0.382683,-0.923880, 0.000001,-1.000000,
0.382684,-0.923879, 0.707107,-0.707106, 0.923880,-0.382681,
1.000000, 0.000000, 0.923879, 0.382685, 0.707106, 0.707108,
0.382682, 0.923879,-0.000001, 1.000000,-0.382684, 0.923879,
-0.707108, 0.707105,-0.923880, 0.382683,-1.000000,-0.000001,
-0.923879,-0.382686,-0.707106,-0.707107,-0.382682,-0.923880,
0.000001,-1.000000, 0.382685,-0.923880, 0.707108,-0.707106,
0.923880,-0.382682, 1.000000, 0.000003, 0.923879, 0.382683,
0.707106, 0.707108, 0.382682, 0.923880,-0.000001, 1.000000,
-0.382685, 0.923879,-0.707108, 0.707106,-0.923880, 0.382681,
-1.000000,-0.000000,-0.923879,-0.382685,-0.707106,-0.707108,
-0.382682,-0.923879, 0.000001,-1.000000, 0.382685,-0.923879,
0.707108,-0.707105, 0.923880,-0.382683
/*4에 동일한 업 샘플링 인자에 대해*/
1.000000, 0.000000, 0.980785, 0.195090, 0.923880, 0.382683,
0.831470, 0.555570, 0.707107, 0.707107, 0.555570, 0.831470,
0.382683, 0.923880, 0.195090, 0.980785,-0.000000, 1.000000,
-0.195090, 0.980785,-0.382683, 0.923880,-0.555570, 0.831470,
-0.707107, 0.707107,-0.831470, 0.555570,-0.923880, 0.382683,
-0.980785, 0.195090,-1.000000,-0.000000,-0.980785,-0.195090,
-0.923880,-0.382683,-0.831470,-0.555570,-0.707107,-0.707107,
-0.555570,-0.831470,-0.382683,-0.923880,-0.195090,-0.980785,
0.000000,-1.000000, 0.195090,-0.980785, 0.382684,-0.923879,
0.555570,-0.831469, 0.707107,-0.707107, 0.831470,-0.555570,
0.923880,-0.382683, 0.980785,-0.195090, 1.000000, 0.000000,
0.980785, 0.195091, 0.923879, 0.382684, 0.831470, 0.555571,
0.707107, 0.707107, 0.555570, 0.831470, 0.382683, 0.923880,
0.195090, 0.980785,-0.000000, 1.000000,-0.195091, 0.980785,
-0.382684, 0.923879,-0.555570, 0.831470,-0.707107, 0.707106,
-0.831470, 0.555570,-0.923880, 0.382684,-0.980785, 0.195090,
-1.000000,-0.000000,-0.980785,-0.195091,-0.923879,-0.382684,
-0.831469,-0.555571,-0.707107,-0.707107,-0.555570,-0.831470,
-0.382683,-0.923880,-0.195090,-0.980785, 0.000000,-1.000000,
0.195091,-0.980785, 0.382684,-0.923880, 0.555570,-0.831469,
0.707107,-0.707107, 0.831470,-0.555570, 0.923880,-0.382683,
0.980785,-0.195090, 1.000000, 0.000000, 0.980785, 0.195090,
0.923879, 0.382684, 0.831469, 0.555570, 0.707107, 0.707107,
0.555570, 0.831470, 0.382683, 0.923880, 0.195090, 0.980785,
-0.000000, 1.000000,-0.195091, 0.980785,-0.382684, 0.923879,
-0.555571, 0.831469,-0.707107, 0.707107,-0.831470, 0.555570,
-0.923880, 0.382683,-0.980785, 0.195090,-1.000000,-0.000001,
-0.980785,-0.195091,-0.923879,-0.382683,-0.831469,-0.555571,
-0.707106,-0.707107,-0.555570,-0.831469,-0.382683,-0.923880,
-0.195090,-0.980785, 0.000000,-1.000000, 0.195091,-0.980785,
0.382684,-0.923879, 0.555571,-0.831469, 0.707107,-0.707107,
0.831470,-0.555570, 0.923880,-0.382683, 0.980785,-0.195089,
1.000000, 0.000000, 0.980785, 0.195091, 0.923879, 0.382684,
0.831469, 0.555570, 0.707106, 0.707107, 0.555570, 0.831470,
0.382683, 0.923880, 0.195090, 0.980785,-0.000001, 1.000000,
-0.195091, 0.980785,-0.382684, 0.923880,-0.555571, 0.831469,
-0.707107, 0.707106,-0.831470, 0.555571,-0.923880, 0.382683,
-0.980785, 0.195090,-1.000000,-0.000001,-0.980785,-0.195090,
-0.923879,-0.382684,-0.831469,-0.555571,-0.707106,-0.707107,
-0.555570,-0.831470,-0.382683,-0.923880,-0.195090,-0.980786,
0.000001,-1.000000, 0.195091,-0.980785, 0.382684,-0.923879,
0.555571,-0.831470, 0.707107,-0.707107, 0.831470,-0.555569,
0.923880,-0.382682, 0.980785,-0.195090
};
const FLOAT32 hbe_x_prod_cos_table_trans_4_1[2*(128 + 128)] =
{
/*4에 동일하지 않은 업 샘플링 인자에 대해*/
1.000000, 0.000000, 0.965926, 0.258819, 0.866025, 0.500000,
0.707107, 0.707107, 0.500000, 0.866025, 0.258819, 0.965926,
-0.000000, 1.000000,-0.258819, 0.965926,-0.500000, 0.866025,
-0.707107, 0.707107,-0.866025, 0.500000,-0.965926, 0.258819,
-1.000000,-0.000000,-0.965926,-0.258819,-0.866025,-0.500000,
-0.707107,-0.707107,-0.500000,-0.866025,-0.258819,-0.965926,
0.000000,-1.000000, 0.258819,-0.965926, 0.500000,-0.866025,
0.707107,-0.707107, 0.866026,-0.500000, 0.965926,-0.258819,
1.000000, 0.000000, 0.965926, 0.258819, 0.866025, 0.500000,
0.707107, 0.707107, 0.500000, 0.866026, 0.258819, 0.965926,
-0.000000, 1.000000,-0.258819, 0.965926,-0.500000, 0.866025,
-0.707107, 0.707106,-0.866026, 0.500000,-0.965926, 0.258819,
-1.000000,-0.000000,-0.965926,-0.258819,-0.866025,-0.500000,
-0.707107,-0.707107,-0.500000,-0.866025,-0.258819,-0.965926,
0.000000,-1.000000, 0.258819,-0.965926, 0.500000,-0.866025,
0.707107,-0.707107, 0.866026,-0.500000, 0.965926,-0.258819,
1.000000, 0.000000, 0.965926, 0.258820, 0.866025, 0.500000,
0.707107, 0.707107, 0.500000, 0.866025, 0.258819, 0.965926,
-0.000000, 1.000000,-0.258819, 0.965926,-0.500000, 0.866025,
-0.707107, 0.707107,-0.866026, 0.499999,-0.965926, 0.258819,
-1.000000,-0.000001,-0.965926,-0.258819,-0.866025,-0.500000,
-0.707106,-0.707107,-0.500000,-0.866026,-0.258819,-0.965926,
0.000000,-1.000000, 0.258820,-0.965926, 0.500000,-0.866025,
0.707107,-0.707107, 0.866026,-0.499999, 0.965926,-0.258818,
1.000000, 0.000000, 0.965926, 0.258820, 0.866025, 0.500001,
0.707106, 0.707107, 0.500000, 0.866025, 0.258819, 0.965926,
-0.000001, 1.000000,-0.258820, 0.965926,-0.500000, 0.866026,
-0.707107, 0.707106,-0.866026, 0.500000,-0.965926, 0.258819,
-1.000000,-0.000001,-0.965926,-0.258820,-0.866025,-0.500000,
-0.707106,-0.707107,-0.499999,-0.866026,-0.258818,-0.965926,
0.000001,-1.000000, 0.258820,-0.965925, 0.500001,-0.866025,
0.707107,-0.707107, 0.866026,-0.500000, 0.965926,-0.258818,
1.000000, 0.000001, 0.965926, 0.258819, 0.866025, 0.500001,
0.707106, 0.707107, 0.499999, 0.866026, 0.258818, 0.965926,
-0.000001, 1.000000,-0.258820, 0.965926,-0.500001, 0.866025,
-0.707107, 0.707106,-0.866026, 0.499999,-0.965926, 0.258818,
-1.000000,-0.000000,-0.965926,-0.258820,-0.866025,-0.500001,
-0.707106,-0.707107,-0.499999,-0.866026,-0.258818,-0.965926,
0.000001,-1.000000, 0.258820,-0.965926, 0.500001,-0.866025,
0.707107,-0.707106, 0.866026,-0.500000, 0.965926,-0.258819,
1.000000, 0.000001, 0.965926, 0.258820, 0.866025, 0.500000,
0.707106, 0.707107, 0.499999, 0.866025, 0.258818, 0.965926,
-0.000001, 1.000000,-0.258820, 0.965925
/*4에 동일한 업 샘플링 인자에 대해*/
1.000000, 0.000000, 0.991445, 0.130526, 0.965926, 0.258819,
0.923880, 0.382683, 0.866025, 0.500000, 0.793353, 0.608761,
0.707107, 0.707107, 0.608761, 0.793353, 0.500000, 0.866025,
0.382683, 0.923880, 0.258819, 0.965926, 0.130526, 0.991445,
-0.000000, 1.000000,-0.130526, 0.991445,-0.258819, 0.965926,
-0.382683, 0.923880,-0.500000, 0.866025,-0.608761, 0.793353,
-0.707107, 0.707107,-0.793353, 0.608761,-0.866025, 0.500000,
-0.923880, 0.382683,-0.965926, 0.258819,-0.991445, 0.130526,
-1.000000,-0.000000,-0.991445,-0.130526,-0.965926,-0.258819,
-0.923880,-0.382683,-0.866025,-0.500000,-0.793353,-0.608762,
-0.707107,-0.707107,-0.608761,-0.793353,-0.500000,-0.866025,
-0.382683,-0.923880,-0.258819,-0.965926,-0.130526,-0.991445,
0.000000,-1.000000, 0.130526,-0.991445, 0.258819,-0.965926,
0.382684,-0.923879, 0.500000,-0.866025, 0.608762,-0.793353,
0.707107,-0.707107, 0.793353,-0.608761, 0.866026,-0.500000,
0.923880,-0.382683, 0.965926,-0.258819, 0.991445,-0.130526,
1.000000, 0.000000, 0.991445, 0.130527, 0.965926, 0.258819,
0.923879, 0.382684, 0.866025, 0.500000, 0.793353, 0.608762,
0.707107, 0.707107, 0.608761, 0.793353, 0.500000, 0.866026,
0.382683, 0.923880, 0.258819, 0.965926, 0.130526, 0.991445,
-0.000000, 1.000000,-0.130526, 0.991445,-0.258819, 0.965926,
-0.382684, 0.923879,-0.500000, 0.866025,-0.608762, 0.793353,
-0.707107, 0.707106,-0.793353, 0.608761,-0.866026, 0.500000,
-0.923880, 0.382684,-0.965926, 0.258819,-0.991445, 0.130526,
-1.000000,-0.000000,-0.991445,-0.130527,-0.965926,-0.258819,
-0.923879,-0.382684,-0.866025,-0.500000,-0.793353,-0.608762,
-0.707107,-0.707107,-0.608761,-0.793353,-0.500000,-0.866025,
-0.382683,-0.923880,-0.258819,-0.965926,-0.130526,-0.991445,
0.000000,-1.000000, 0.130526,-0.991445, 0.258819,-0.965926,
0.382684,-0.923880, 0.500000,-0.866025, 0.608762,-0.793353,
0.707107,-0.707107, 0.793354,-0.608761, 0.866026,-0.500000,
0.923880,-0.382683, 0.965926,-0.258819, 0.991445,-0.130526,
1.000000, 0.000000, 0.991445, 0.130526, 0.965926, 0.258820,
0.923879, 0.382684, 0.866025, 0.500000, 0.793353, 0.608761,
0.707107, 0.707107, 0.608761, 0.793354, 0.500000, 0.866025,
0.382683, 0.923880, 0.258819, 0.965926, 0.130526, 0.991445,
-0.000000, 1.000000,-0.130527, 0.991445,-0.258819, 0.965926,
-0.382684, 0.923879,-0.500000, 0.866025,-0.608762, 0.793353,
-0.707107, 0.707107,-0.793354, 0.608761,-0.866026, 0.499999,
-0.923880, 0.382683,-0.965926, 0.258819,-0.991445, 0.130526,
-1.000000,-0.000001,-0.991445,-0.130527,-0.965926,-0.258819,
-0.923879,-0.382683,-0.866025,-0.500000,-0.793353,-0.608762,
-0.707106,-0.707107,-0.608761,-0.793354
};
요약하면, 상기는 QMF 기반의 고조파 트랜스포저가 입력 신호의 부대역으로부터 샘플을 추출하고, 추출된 샘플의 쌍에 대한 외적 이득 값을 획득하며, 추출된 샘플의 각각의 쌍에 외적 이득 값을 적용하도록 구성될 수 있는, 상술한 바와 같이(다른 것들 중, QMF 고조파 트랜스포저를 포함하는) 인코딩된 USAC 스트림을 디코딩하기 위한 장치의 처리에 대응할 수 있다. 미리 계산된 정보는 외적 이득 값에 관련될 수 있다. 외적 이득 값은 외적 이득 공식 인자를 기초로 오프라인으로 결정될 수 있고, 하나 이상의 룩업 테이블에 저장될 수 있다. QMF 기반의 고조파 트랜스포저는 런타임에 하나 이상의 룩업 테이블로부터 외적 이득 값에 액세스하도록 구성될 수 있다.
QMF 트랜스포저는 QMF 임계 샘플링 처리를 위해 서브-샘플링된 필터 뱅크를 포함할 수 있다. QMF 임계 샘플링 처리를 위한 이러한 서브-샘플링된 필터 뱅크는 예를 들어, USAC 표준의 7.5.4.2절에서 서술될 수 있으며, 이 절은 그 전체가 본원에 참조로 통합된다. 트랜스포저에 대한 소스 범위를 커버하는 부대역의 서브세트는 작은 서브-샘플링된 실제 값 QMF 뱅크에 의해 시간 도메인으로 합성될 수 있다. 그 후, 이 필터 뱅크로부터 출력된 시간 도메인은 필터 뱅크 크기의 두 배인 복소수 값의 분석 QMF 뱅크로 공급된다. 이 접근법은 관련된 소스 범위만이 두 배의 주파수 분해능을 갖는 QMF 부대역 도메인으로 변환되므로, 계산 복잡성의 상당한 감소를 가능하게 한다. 작은 QMF 뱅크는 원래의 64-대역 QMF 뱅크의 서브-샘플링에 의해 획득되며, 프로토타입 필터 계수는 원래의 프로토타입 필터의 선형 보간에 의해 획득된다.
QMF 트랜스포저는 실수 값의 서브-샘플링된 MS-채널 합성 필터 뱅크를 포함할 수 있다. QMF 트랜스포저의 실수 값의 서브-샘플링된 MS-채널 합성 필터 뱅크는 예를 들어, USAC 표준의 7.5.4.2.2절에 서술될 수 있다. 이 절은 그 전체가 본원에 참조로 통합된다. 필터 뱅크에서, MS 실수 값의 부대역 샘플의 세트는 MS 새로운 복소수 값의 부대역 샘플로부터 다음에 따라 계산될 수 있다:
방정식에서 exp()는 복소수 지수 함수를 나타내고, i는 허수 단위이다. kL은 서브-샘플링된 합성 필터 뱅크 즉, 시작 대역에 들어가기 위한 QMF 뱅크(예를 들어, 32-대역 QMF 뱅크)로부터의 제1 채널의 부대역 인덱스를 나타낸다. coreCoderFrameLength = 768 샘플이고 kL + MS> 24일 때, kL은 kL = 24 - MS로 계산된다.
복소수 계수(즉, 복소수 지수)를 결정하기 위한 공식은 런타임 이전에 복소수 계수를 도출하기 위해(예를 들어, 미리 계산하기 위헤) 오프라인으로 구현될 수 있다. 런타임에서, 미리 계산된 복소수 계수는 필요한 경우, 계산 없이 참조될 수 있다. 예를 들어, 복소수 계수는 하나 이상의 룩업 테이블로부터 획득(예를 들어, 판독, 검색)될 수 있다. 디코더가 런타임에 적절한 복소수 계수(들)를 검색하기 위한 루틴을 제공받는 한, 룩업 테이블(들) 내의 복소수 계수의 실제 배열은 변할 수 있다.
예를 들어, QMF 뱅크에서 실수 값의 서브-샘플링된 MS-채널 합성을 결정하기 위한 프로세스에서, 위에서 언급된 복소수 계수(즉, 복소수 지수)는 룩업 테이블을 기초로 결정될 수 있다. 그 테이블에서 홀수인 인덱스된 값은 사인(복소수 값의 허수 성분)에 대응할 수 있으며, 짝수인 인덱스된 값은 코사인(복소수 값의 실수 성분)에 대응할 수 있다. 상이한 시작 대역 kL에 대해 상이한 테이블이 제공될 수 있다.
예를 들어, 룩업 테이블은 (MS = 32에 대해) 다음과 같이 주어질 수 있다.
요약하면, 상기는 QMF 기반의 고조파 트랜스포저가 MS 새로운 복소수 값의 부대역 샘플의 세트로부터 MS 실수 값의 부대역 샘플의 세트를 계산하도록 구성된 실수 값의 MS 채널 합성 필터 뱅크를 포함할 수 있는, 상술한 바와 같이(다른 것들 중, QMF 고조파 트랜스포저를 포함하는) 인코딩된 USAC 스트림을 디코딩하기 위한 장치의 처리에 대응할 수 있다. 각 실수 값의 부대역 샘플 및 각 새로운 복소수 값의 부대역 샘플은 MS 부대역 중 각각의 부대역과 연관될 수 있다. MS 새로운 복소수 값의 부대역 샘플의 세트로부터 MS 실수 값의 부대역 샘플의 세트를 계산하는 것은, MS 새로운 복소수 값의 부대역 샘플의 각각에 대해, 그 새로운 복소수 값의 부대역 샘플에 각각의 복소수 지수를 적용하는 것 및 그의 실수 부분을 취하는 것을 수반할 수 있다. 각각의 복소수 지수는 새로운 복소수 값의 부대역 샘플의 부대역 인덱스에 의존할 수 있다. 미리 계산된 정보는 MS 부대역에 대한 복소수 지수에 관련될 수 있다. 복소수 지수는 오프라인으로 결정되며, 하나 이상의 룩업 테이블에 저장될 수 있다. QMF 기반의 고조파 트랜스포저는 런타임에서 하나 이상의 룩업 테이블로부터 복소수 지수에 액세스하도록 구성될 수 있다.
또한, QMF 트랜스포저의 실수 값의 서브-샘플링된 MS-채널 합성 필터 뱅크에서, 어레이(v)의 샘플은 2MS 위치만큼 시프트될 수 있다. 가장 오래된 2MS 샘플이 폐기될 수 있다. MS 실수 값의 부대역 샘플은 행렬 N에 의해 곱해질 수 있고 즉, 행렬-벡터 곱 N·V이 계산되며, 여기서 행렬 N의 엔트리는 다음과 같이 주어진다.
행렬 N(즉, 그의 엔트리)은 런타임 이전에 MS의 모든 가능한 값에 대해 (오프라인으로) 미리 계산될 수 있다. 런타임에서, 미리 계산된 행렬 N(즉, 그들 엔트리)은 필요한 경우, 계산 없이 참조될 수 있다. 예를 들어, 행렬 N은 하나 이상의 룩업 테이블로부터 획득(예를 들어, 판독, 검색)될 수 있다. 디코더가 런타임에 적절한 행렬(엔트리)을 검색하기 위한 루틴을 제공받는 한, 룩업 테이블(들) 내의 행렬 N의 엔트리의 실제 배열은 변할 수 있다.
예를 들어, MS의 모든 가능한 값에 대한 행렬 N의 엔트리(예를 들어, MS = 4, 8, 12, 16, 20)은 미리 계산되고, 다음 테이블에 미리 저장될 수 있다: synth_cos_tab_kl_4, synth_cos_tab_kl_8, synth_cos_tab_kl_12, synth_cos_tab_kl_16, synth_cos_tab_kl_20
const FLOAT32 synth_cos_tab_kl_4 [8 * 4] =
{
0.176777f, -0.176777f, -0.176777f, 0.176777f,
0.230970f, 0.095671f, -0.095671f, -0.230970f,
0.250000f, 0.250000f, 0.250000f, 0.250000f,
0.230970f, 0.095671f, -0.095671f, -0.230970f,
0.176777f, -0.176777f, -0.176777f, 0.176777f,
0.095671f, -0.230970f, 0.230970f, -0.095671f,
0.000000f, -0.000000f, 0.000000f, -0.000000f,
-0.095671f, 0.230970f, -0.230970f, 0.095671f,
};
const FLOAT32 synth_cos_tab_kl_8 [16 * 8] = {
0.088388f, -0.088388f, -0.088388f, 0.088388f,
0.088388f, -0.088388f, -0.088388f, 0.088388f,
0.103934f, -0.024386f, -0.122598f, -0.069446f,
0.069446f, 0.122598f, 0.024386f, -0.103934f,
0.115485f, 0.047835f, -0.047835f, -0.115485f,
-0.115485f, -0.047835f, 0.047835f, 0.115485f,
0.122598f, 0.103934f, 0.069446f, 0.024386f,
-0.024386f, -0.069446f, -0.103934f, -0.122598f,
0.125000f, 0.125000f, 0.125000f, 0.125000f,
0.125000f, 0.125000f, 0.125000f, 0.125000f,
0.122598f, 0.103934f, 0.069446f, 0.024386f,
-0.024386f, -0.069446f, -0.103934f, -0.122598f,
0.115485f, 0.047835f, -0.047835f, -0.115485f,
-0.115485f, -0.047835f, 0.047835f, 0.115485f,
0.103934f, -0.024386f, -0.122598f, -0.069446f,
0.069446f, 0.122598f, 0.024386f, -0.103934f,
0.088388f, -0.088388f, -0.088388f, 0.088388f,
0.088388f, -0.088388f, -0.088388f, 0.088388f,
0.069446f, -0.122598f, 0.024386f, 0.103934f,
-0.103934f, -0.024386f, 0.122598f, -0.069446f,
0.047835f, -0.115485f, 0.115485f, -0.047835f,
-0.047835f, 0.115485f, -0.115485f, 0.047835f,
0.024386f, -0.069446f, 0.103934f, -0.122598f,
0.122598f, -0.103934f, 0.069446f, -0.024386f,
0.000000f, -0.000000f, 0.000000f, -0.000000f,
0.000000f, -0.000000f, -0.000000f, -0.000000f,
-0.024386f, 0.069446f, -0.103934f, 0.122598f,
-0.122598f, 0.103934f, -0.069446f, 0.024386f,
-0.047835f, 0.115485f, -0.115485f, 0.047835f,
0.047835f, -0.115485f, 0.115485f, -0.047835f,
-0.069446f, 0.122598f, -0.024386f, -0.103934f,
0.103934f, 0.024386f, -0.122598f, 0.069446f,
};
const FLOAT32 synth_cos_tab_kl_12 [24 * 12] = {
0.058926f, -0.058926f, -0.058926f, 0.058926f,
0.058926f, -0.058926f, -0.058926f, 0.058926f,
0.058926f, -0.058926f, -0.058926f, 0.058926f,
0.066113f, -0.031890f, -0.082620f, -0.010877f,
0.076990f, 0.050730f, -0.050730f, -0.076990f,
0.010877f, 0.082620f, 0.031890f, -0.066113f,
0.072169f, -0.000000f, -0.072169f, -0.072169f,
0.000000f, 0.072169f, 0.072169f, -0.000000f,
-0.072169f, -0.072169f, 0.000000f, 0.072169f,
0.076990f, 0.031890f, -0.031890f, -0.076990f,
-0.076990f, -0.031890f, 0.031890f, 0.076990f,
0.076990f, 0.031890f, -0.031890f, -0.076990f,
0.080494f, 0.058926f, 0.021568f, -0.021568f,
-0.058926f, -0.080494f, -0.080494f, -0.058926f,
-0.021568f, 0.021568f, 0.058926f, 0.080494f,
0.082620f, 0.076990f, 0.066113f, 0.050730f,
0.031890f, 0.010877f, -0.010877f, -0.031890f,
-0.050730f, -0.066113f, -0.076990f, -0.082620f,
0.083333f, 0.083333f, 0.083333f, 0.083333f,
0.083333f, 0.083333f, 0.083333f, 0.083333f,
0.083333f, 0.083333f, 0.083333f, 0.083333f,
0.082620f, 0.076990f, 0.066113f, 0.050730f,
0.031890f, 0.010877f, -0.010877f, -0.031890f,
-0.050730f, -0.066113f, -0.076990f, -0.082620f,
0.080494f, 0.058926f, 0.021568f, -0.021568f,
-0.058926f, -0.080494f, -0.080494f, -0.058926f,
-0.021568f, 0.021568f, 0.058926f, 0.080494f,
0.076990f, 0.031890f, -0.031890f, -0.076990f,
-0.076990f, -0.031890f, 0.031890f, 0.076990f,
0.076990f, 0.031890f, -0.031890f, -0.076990f,
0.072169f, -0.000000f, -0.072169f, -0.072169f,
0.000000f, 0.072169f, 0.072169f, -0.000000f,
-0.072169f, -0.072169f, 0.000000f, 0.072169f,
0.066113f, -0.031890f, -0.082620f, -0.010877f,
0.076990f, 0.050730f, -0.050730f, -0.076990f,
0.010877f, 0.082620f, 0.031890f, -0.066113f,
0.058926f, -0.058926f, -0.058926f, 0.058926f,
0.058926f, -0.058926f, -0.058926f, 0.058926f,
0.058926f, -0.058926f, -0.058926f, 0.058926f,
0.050730f, -0.076990f, -0.010877f, 0.082620f,
-0.031890f, -0.066113f, 0.066113f, 0.031890f,
-0.082620f, 0.010877f, 0.076990f, -0.050730f,
0.041667f, -0.083333f, 0.041667f, 0.041667f,
-0.083333f, 0.041667f, 0.041667f, -0.083333f,
0.041667f, 0.041667f, -0.083333f, 0.041667f,
0.031890f, -0.076990f, 0.076990f, -0.031890f,
-0.031890f, 0.076990f, -0.076990f, 0.031890f,
0.031890f, -0.076990f, 0.076990f, -0.031890f,
0.021568f, -0.058926f, 0.080494f, -0.080494f,
0.058926f, -0.021568f, -0.021568f, 0.058926f,
-0.080494f, 0.080494f, -0.058926f, 0.021568f,
0.010877f, -0.031890f, 0.050730f, -0.066113f,
0.076990f, -0.082620f, 0.082620f, -0.076990f,
0.066113f, -0.050730f, 0.031890f, -0.010877f,
-0.000000f, 0.000000f, -0.000000f, 0.000000f,
-0.000000f, 0.000000f, -0.000000f, 0.000000f,
-0.000000f, 0.000000f, -0.000000f, 0.000000f,
-0.010877f, 0.031890f, -0.050730f, 0.066113f,
-0.076990f, 0.082620f, -0.082620f, 0.076990f,
-0.066113f, 0.050730f, -0.031890f, 0.010877f,
-0.021568f, 0.058926f, -0.080494f, 0.080494f,
-0.058926f, 0.021568f, 0.021568f, -0.058926f,
0.080494f, -0.080494f, 0.058926f, -0.021568f,
-0.031890f, 0.076990f, -0.076990f, 0.031890f,
0.031890f, -0.076990f, 0.076990f, -0.031890f,
-0.031890f, 0.076990f, -0.076990f, 0.031890f,
-0.041667f, 0.083333f, -0.041667f, -0.041667f,
0.083333f, -0.041667f, -0.041667f, 0.083333f,
-0.041667f, -0.041667f, 0.083333f, -0.041667f,
-0.050730f, 0.076990f, 0.010877f, -0.082620f,
0.031890f, 0.066113f, -0.066113f, -0.031890f,
0.082620f, -0.010877f, -0.076990f, 0.050730f,
};
const FLOAT32 synth_cos_tab_kl_16 [32 * 16] = {
0.044194f, -0.044194f, -0.044194f, 0.044194f,
0.044194f, -0.044194f, -0.044194f, 0.044194f,
0.044194f, -0.044194f, -0.044194f, 0.044194f,
0.044194f, -0.044194f, -0.044194f, 0.044194f,
0.048313f, -0.029462f, -0.059809f, 0.006126f,
0.062199f, 0.018143f, -0.055120f, -0.039650f,
0.039650f, 0.055120f, -0.018143f, -0.062199f,
-0.006126f, 0.059809f, 0.029462f, -0.048313f,
0.051967f, -0.012193f, -0.061299f, -0.034723f,
0.034723f, 0.061299f, 0.012193f, -0.051967f,
-0.051967f, 0.012193f, 0.061299f, 0.034723f,
-0.034723f, -0.061299f, -0.012193f, 0.051967f,
0.055120f, 0.006126f, -0.048313f, -0.059809f,
-0.018143f, 0.039650f, 0.062199f, 0.029462f,
-0.029462f, -0.062199f, -0.039650f, 0.018143f,
0.059809f, 0.048313f, -0.006126f, -0.055120f,
0.057742f, 0.023918f, -0.023918f, -0.057742f,
-0.057742f, -0.023918f, 0.023918f, 0.057742f,
0.057742f, 0.023918f, -0.023918f, -0.057742f,
-0.057742f, -0.023918f, 0.023918f, 0.057742f,
0.059809f, 0.039650f, 0.006126f, -0.029462f,
-0.055120f, -0.062199f, -0.048313f, -0.018143f,
0.018143f, 0.048313f, 0.062199f, 0.055120f,
0.029462f, -0.006126f, -0.039650f, -0.059809f,
0.061299f, 0.051967f, 0.034723f, 0.012193f,
-0.012193f, -0.034723f, -0.051967f, -0.061299f,
-0.061299f, -0.051967f, -0.034723f, -0.012193f,
0.012193f, 0.034723f, 0.051967f, 0.061299f,
0.062199f, 0.059809f, 0.055120f, 0.048313f,
0.039650f, 0.029462f, 0.018143f, 0.006126f,
-0.006126f, -0.018143f, -0.029462f, -0.039650f,
-0.048313f, -0.055120f, -0.059809f, -0.062199f,
0.062500f, 0.062500f, 0.062500f, 0.062500f,
0.062500f, 0.062500f, 0.062500f, 0.062500f,
0.062500f, 0.062500f, 0.062500f, 0.062500f,
0.062500f, 0.062500f, 0.062500f, 0.062500f,
0.062199f, 0.059809f, 0.055120f, 0.048313f,
0.039650f, 0.029462f, 0.018143f, 0.006126f,
-0.006126f, -0.018143f, -0.029462f, -0.039650f,
-0.048313f, -0.055120f, -0.059809f, -0.062199f,
0.061299f, 0.051967f, 0.034723f, 0.012193f,
-0.012193f, -0.034723f, -0.051967f, -0.061299f,
-0.061299f, -0.051967f, -0.034723f, -0.012193f,
0.012193f, 0.034723f, 0.051967f, 0.061299f,
0.059809f, 0.039650f, 0.006126f, -0.029462f,
-0.055120f, -0.062199f, -0.048313f, -0.018143f,
0.018143f, 0.048313f, 0.062199f, 0.055120f,
0.029462f, -0.006126f, -0.039650f, -0.059809f,
0.057742f, 0.023918f, -0.023918f, -0.057742f,
-0.057742f, -0.023918f, 0.023918f, 0.057742f,
0.057742f, 0.023918f, -0.023918f, -0.057742f,
-0.057742f, -0.023918f, 0.023918f, 0.057742f,
0.055120f, 0.006126f, -0.048313f, -0.059809f,
-0.018143f, 0.039650f, 0.062199f, 0.029462f,
-0.029462f, -0.062199f, -0.039650f, 0.018143f,
0.059809f, 0.048313f, -0.006126f, -0.055120f,
0.051967f, -0.012193f, -0.061299f, -0.034723f,
0.034723f, 0.061299f, 0.012193f, -0.051967f,
-0.051967f, 0.012193f, 0.061299f, 0.034723f,
-0.034723f, -0.061299f, -0.012193f, 0.051967f,
0.048313f, -0.029462f, -0.059809f, 0.006126f,
0.062199f, 0.018143f, -0.055120f, -0.039650f,
0.039650f, 0.055120f, -0.018143f, -0.062199f,
-0.006126f, 0.059809f, 0.029462f, -0.048313f,
0.044194f, -0.044194f, -0.044194f, 0.044194f,
0.044194f, -0.044194f, -0.044194f, 0.044194f,
0.044194f, -0.044194f, -0.044194f, 0.044194f,
0.044194f, -0.044194f, -0.044194f, 0.044194f,
0.039650f, -0.055120f, -0.018143f, 0.062199f,
-0.006126f, -0.059809f, 0.029462f, 0.048313f,
-0.048313f, -0.029462f, 0.059809f, 0.006126f,
-0.062199f, 0.018143f, 0.055120f, -0.039650f,
0.034723f, -0.061299f, 0.012193f, 0.051967f,
-0.051967f, -0.012193f, 0.061299f, -0.034723f,
-0.034723f, 0.061299f, -0.012193f, -0.051967f,
0.051967f, 0.012193f, -0.061299f, 0.034723f,
0.029462f, -0.062199f, 0.039650f, 0.018143f,
-0.059809f, 0.048313f, 0.006126f, -0.055120f,
0.055120f, -0.006126f, -0.048313f, 0.059809f,
-0.018143f, -0.039650f, 0.062199f, -0.029462f,
0.023918f, -0.057742f, 0.057742f, -0.023918f,
-0.023918f, 0.057742f, -0.057742f, 0.023918f,
0.023918f, -0.057742f, 0.057742f, -0.023918f,
-0.023918f, 0.057742f, -0.057742f, 0.023918f,
0.018143f, -0.048313f, 0.062199f, -0.055120f,
0.029462f, 0.006126f, -0.039650f, 0.059809f,
-0.059809f, 0.039650f, -0.006126f, -0.029462f,
0.055120f, -0.062199f, 0.048313f, -0.018143f,
0.012193f, -0.034723f, 0.051967f, -0.061299f,
0.061299f, -0.051967f, 0.034723f, -0.012193f,
-0.012193f, 0.034723f, -0.051967f, 0.061299f,
-0.061299f, 0.051967f, -0.034723f, 0.012193f,
0.006126f, -0.018143f, 0.029462f, -0.039650f,
0.048313f, -0.055120f, 0.059809f, -0.062199f,
0.062199f, -0.059809f, 0.055120f, -0.048313f,
0.039650f, -0.029462f, 0.018143f, -0.006126f,
0.000000f, -0.000000f, 0.000000f, -0.000000f,
0.000000f, -0.000000f, -0.000000f, -0.000000f,
-0.000000f, -0.000000f, -0.000000f, -0.000000f,
-0.000000f, -0.000000f, -0.000000f, -0.000000f,
-0.006126f, 0.018143f, -0.029462f, 0.039650f,
-0.048313f, 0.055120f, -0.059809f, 0.062199f,
-0.062199f, 0.059809f, -0.055120f, 0.048313f,
-0.039650f, 0.029462f, -0.018143f, 0.006126f,
-0.012193f, 0.034723f, -0.051967f, 0.061299f,
-0.061299f, 0.051967f, -0.034723f, 0.012193f,
0.012193f, -0.034723f, 0.051967f, -0.061299f,
0.061299f, -0.051967f, 0.034723f, -0.012193f,
-0.018143f, 0.048313f, -0.062199f, 0.055120f,
-0.029462f, -0.006126f, 0.039650f, -0.059809f,
0.059809f, -0.039650f, 0.006126f, 0.029462f,
-0.055120f, 0.062199f, -0.048313f, 0.018143f,
-0.023918f, 0.057742f, -0.057742f, 0.023918f,
0.023918f, -0.057742f, 0.057742f, -0.023918f,
-0.023918f, 0.057742f, -0.057742f, 0.023918f,
0.023918f, -0.057742f, 0.057742f, -0.023918f,
-0.029462f, 0.062199f, -0.039650f, -0.018143f,
0.059809f, -0.048313f, -0.006126f, 0.055120f,
-0.055120f, 0.006126f, 0.048313f, -0.059809f,
0.018143f, 0.039650f, -0.062199f, 0.029462f,
-0.034723f, 0.061299f, -0.012193f, -0.051967f,
0.051967f, 0.012193f, -0.061299f, 0.034723f,
0.034723f, -0.061299f, 0.012193f, 0.051967f,
-0.051967f, -0.012193f, 0.061299f, -0.034723f,
-0.039650f, 0.055120f, 0.018143f, -0.062199f,
0.006126f, 0.059809f, -0.029462f, -0.048313f,
0.048313f, 0.029462f, -0.059809f, -0.006126f,
0.062199f, -0.018143f, -0.055120f, 0.039650f,
};
const FLOAT32 synth_cos_tab_kl_20 [40 * 20] = {
0.035355f, -0.035355f, -0.035355f, 0.035355f,
0.035355f, -0.035355f, -0.035355f, 0.035355f,
0.035355f, -0.035355f, -0.035355f, 0.035355f,
0.035355f, -0.035355f, -0.035355f, 0.035355f,
0.035355f, -0.035355f, -0.035355f, 0.035355f,
0.038020f, -0.026125f, -0.046194f, 0.011672f,
0.049846f, 0.003923f, -0.048618f, -0.019134f,
0.042632f, 0.032472f, -0.032472f, -0.042632f,
0.019134f, 0.048618f, -0.003923f, -0.049846f,
-0.011672f, 0.046194f, 0.026125f, -0.038020f,
0.040451f, -0.015451f, -0.050000f, -0.015451f,
0.040451f, 0.040451f, -0.015451f, -0.050000f,
-0.015451f, 0.040451f, 0.040451f, -0.015451f,
-0.050000f, -0.015451f, 0.040451f, 0.040451f,
-0.015451f, -0.050000f, -0.015451f, 0.040451f,
0.042632f, -0.003923f, -0.046194f, -0.038020f,
0.011672f, 0.048618f, 0.032472f, -0.019134f,
-0.049846f, -0.026125f, 0.026125f, 0.049846f,
0.019134f, -0.032472f, -0.048618f, -0.011672f,
0.038020f, 0.046194f, 0.003923f, -0.042632f,
0.044550f, 0.007822f, -0.035355f, -0.049384f,
-0.022700f, 0.022700f, 0.049384f, 0.035355f,
-0.007822f, -0.044550f, -0.044550f, -0.007822f,
0.035355f, 0.049384f, 0.022700f, -0.022700f,
-0.049384f, -0.035355f, 0.007822f, 0.044550f,
0.046194f, 0.019134f, -0.019134f, -0.046194f,
-0.046194f, -0.019134f, 0.019134f, 0.046194f,
0.046194f, 0.019134f, -0.019134f, -0.046194f,
-0.046194f, -0.019134f, 0.019134f, 0.046194f,
0.046194f, 0.019134f, -0.019134f, -0.046194f,
0.047553f, 0.029389f, 0.000000f, -0.029389f,
-0.047553f, -0.047553f, -0.029389f, -0.000000f,
0.029389f, 0.047553f, 0.047553f, 0.029389f,
0.000000f, -0.029389f, -0.047553f, -0.047553f,
-0.029389f, -0.000000f, 0.029389f, 0.047553f,
0.048618f, 0.038020f, 0.019134f, -0.003923f,
-0.026125f, -0.042632f, -0.049846f, -0.046194f,
-0.032472f, -0.011672f, 0.011672f, 0.032472f,
0.046194f, 0.049846f, 0.042632f, 0.026125f,
0.003923f, -0.019134f, -0.038020f, -0.048618f,
0.049384f, 0.044550f, 0.035355f, 0.022700f,
0.007822f, -0.007822f, -0.022700f, -0.035355f,
-0.044550f, -0.049384f, -0.049384f, -0.044550f,
-0.035355f, -0.022700f, -0.007822f, 0.007822f,
0.022700f, 0.035355f, 0.044550f, 0.049384f,
0.049846f, 0.048618f, 0.046194f, 0.042632f,
0.038020f, 0.032472f, 0.026125f, 0.019134f,
0.011672f, 0.003923f, -0.003923f, -0.011672f,
-0.019134f, -0.026125f, -0.032472f, -0.038020f,
-0.042632f, -0.046194f, -0.048618f, -0.049846f,
0.050000f, 0.050000f, 0.050000f, 0.050000f,
0.050000f, 0.050000f, 0.050000f, 0.050000f,
0.050000f, 0.050000f, 0.050000f, 0.050000f,
0.050000f, 0.050000f, 0.050000f, 0.050000f,
0.050000f, 0.050000f, 0.050000f, 0.050000f,
0.049846f, 0.048618f, 0.046194f, 0.042632f,
0.038020f, 0.032472f, 0.026125f, 0.019134f,
0.011672f, 0.003923f, -0.003923f, -0.011672f,
-0.019134f, -0.026125f, -0.032472f, -0.038020f,
-0.042632f, -0.046194f, -0.048618f, -0.049846f,
0.049384f, 0.044550f, 0.035355f, 0.022700f,
0.007822f, -0.007822f, -0.022700f, -0.035355f,
-0.044550f, -0.049384f, -0.049384f, -0.044550f,
-0.035355f, -0.022700f, -0.007822f, 0.007822f,
0.022700f, 0.035355f, 0.044550f, 0.049384f,
0.048618f, 0.038020f, 0.019134f, -0.003923f,
-0.026125f, -0.042632f, -0.049846f, -0.046194f,
-0.032472f, -0.011672f, 0.011672f, 0.032472f,
0.046194f, 0.049846f, 0.042632f, 0.026125f,
0.003923f, -0.019134f, -0.038020f, -0.048618f,
0.047553f, 0.029389f, 0.000000f, -0.029389f,
-0.047553f, -0.047553f, -0.029389f, -0.000000f,
0.029389f, 0.047553f, 0.047553f, 0.029389f,
0.000000f, -0.029389f, -0.047553f, -0.047553f,
-0.029389f, -0.000000f, 0.029389f, 0.047553f,
0.046194f, 0.019134f, -0.019134f, -0.046194f,
-0.046194f, -0.019134f, 0.019134f, 0.046194f,
0.046194f, 0.019134f, -0.019134f, -0.046194f,
-0.046194f, -0.019134f, 0.019134f, 0.046194f,
0.046194f, 0.019134f, -0.019134f, -0.046194f,
0.044550f, 0.007822f, -0.035355f, -0.049384f,
-0.022700f, 0.022700f, 0.049384f, 0.035355f,
-0.007822f, -0.044550f, -0.044550f, -0.007822f,
0.035355f, 0.049384f, 0.022700f, -0.022700f,
-0.049384f, -0.035355f, 0.007822f, 0.044550f,
0.042632f, -0.003923f, -0.046194f, -0.038020f,
0.011672f, 0.048618f, 0.032472f, -0.019134f,
-0.049846f, -0.026125f, 0.026125f, 0.049846f,
0.019134f, -0.032472f, -0.048618f, -0.011672f,
0.038020f, 0.046194f, 0.003923f, -0.042632f,
0.040451f, -0.015451f, -0.050000f, -0.015451f,
0.040451f, 0.040451f, -0.015451f, -0.050000f,
-0.015451f, 0.040451f, 0.040451f, -0.015451f,
-0.050000f, -0.015451f, 0.040451f, 0.040451f,
-0.015451f, -0.050000f, -0.015451f, 0.040451f,
0.038020f, -0.026125f, -0.046194f, 0.011672f,
0.049846f, 0.003923f, -0.048618f, -0.019134f,
0.042632f, 0.032472f, -0.032472f, -0.042632f,
0.019134f, 0.048618f, -0.003923f, -0.049846f,
-0.011672f, 0.046194f, 0.026125f, -0.038020f,
0.035355f, -0.035355f, -0.035355f, 0.035355f,
0.035355f, -0.035355f, -0.035355f, 0.035355f,
0.035355f, -0.035355f, -0.035355f, 0.035355f,
0.035355f, -0.035355f, -0.035355f, 0.035355f,
0.035355f, -0.035355f, -0.035355f, 0.035355f,
0.032472f, -0.042632f, -0.019134f, 0.048618f,
0.003923f, -0.049846f, 0.011672f, 0.046194f,
-0.026125f, -0.038020f, 0.038020f, 0.026125f,
-0.046194f, -0.011672f, 0.049846f, -0.003923f,
-0.048618f, 0.019134f, 0.042632f, -0.032472f,
0.029389f, -0.047553f, -0.000000f, 0.047553f,
-0.029389f, -0.029389f, 0.047553f, 0.000000f,
-0.047553f, 0.029389f, 0.029389f, -0.047553f,
-0.000000f, 0.047553f, -0.029389f, -0.029389f,
0.047553f, -0.000000f, -0.047553f, 0.029389f,
0.026125f, -0.049846f, 0.019134f, 0.032472f,
-0.048618f, 0.011672f, 0.038020f, -0.046194f,
0.003923f, 0.042632f, -0.042632f, -0.003923f,
0.046194f, -0.038020f, -0.011672f, 0.048618f,
-0.032472f, -0.019134f, 0.049846f, -0.026125f,
0.022700f, -0.049384f, 0.035355f, 0.007822f,
-0.044550f, 0.044550f, -0.007822f, -0.035355f,
0.049384f, -0.022700f, -0.022700f, 0.049384f,
-0.035355f, -0.007822f, 0.044550f, -0.044550f,
0.007822f, 0.035355f, -0.049384f, 0.022700f,
0.019134f, -0.046194f, 0.046194f, -0.019134f,
-0.019134f, 0.046194f, -0.046194f, 0.019134f,
0.019134f, -0.046194f, 0.046194f, -0.019134f,
-0.019134f, 0.046194f, -0.046194f, 0.019134f,
0.019134f, -0.046194f, 0.046194f, -0.019134f,
0.015451f, -0.040451f, 0.050000f, -0.040451f,
0.015451f, 0.015451f, -0.040451f, 0.050000f,
-0.040451f, 0.015451f, 0.015451f, -0.040451f,
0.050000f, -0.040451f, 0.015451f, 0.015451f,
-0.040451f, 0.050000f, -0.040451f, 0.015451f,
0.011672f, -0.032472f, 0.046194f, -0.049846f,
0.042632f, -0.026125f, 0.003923f, 0.019134f,
-0.038020f, 0.048618f, -0.048618f, 0.038020f,
-0.019134f, -0.003923f, 0.026125f, -0.042632f,
0.049846f, -0.046194f, 0.032472f, -0.011672f,
0.007822f, -0.022700f, 0.035355f, -0.044550f,
0.049384f, -0.049384f, 0.044550f, -0.035355f,
0.022700f, -0.007822f, -0.007822f, 0.022700f,
-0.035355f, 0.044550f, -0.049384f, 0.049384f,
-0.044550f, 0.035355f, -0.022700f, 0.007822f,
0.003923f, -0.011672f, 0.019134f, -0.026125f,
0.032472f, -0.038020f, 0.042632f, -0.046194f,
0.048618f, -0.049846f, 0.049846f, -0.048618f,
0.046194f, -0.042632f, 0.038020f, -0.032472f,
0.026125f, -0.019134f, 0.011672f, -0.003923f,
0.000000f, -0.000000f, 0.000000f, -0.000000f,
0.000000f, -0.000000f, -0.000000f, -0.000000f,
-0.000000f, -0.000000f, -0.000000f, -0.000000f,
-0.000000f, -0.000000f, -0.000000f, -0.000000f,
0.000000f, -0.000000f, 0.000000f, -0.000000f,
-0.003923f, 0.011672f, -0.019134f, 0.026125f,
-0.032472f, 0.038020f, -0.042632f, 0.046194f,
-0.048618f, 0.049846f, -0.049846f, 0.048618f,
-0.046194f, 0.042632f, -0.038020f, 0.032472f,
-0.026125f, 0.019134f, -0.011672f, 0.003923f,
-0.007822f, 0.022700f, -0.035355f, 0.044550f,
-0.049384f, 0.049384f, -0.044550f, 0.035355f,
-0.022700f, 0.007822f, 0.007822f, -0.022700f,
0.035355f, -0.044550f, 0.049384f, -0.049384f,
0.044550f, -0.035355f, 0.022700f, -0.007822f,
-0.011672f, 0.032472f, -0.046194f, 0.049846f,
-0.042632f, 0.026125f, -0.003923f, -0.019134f,
0.038020f, -0.048618f, 0.048618f, -0.038020f,
0.019134f, 0.003923f, -0.026125f, 0.042632f,
-0.049846f, 0.046194f, -0.032472f, 0.011672f,
-0.015451f, 0.040451f, -0.050000f, 0.040451f,
-0.015451f, -0.015451f, 0.040451f, -0.050000f,
0.040451f, -0.015451f, -0.015451f, 0.040451f,
-0.050000f, 0.040451f, -0.015451f, -0.015451f,
0.040451f, -0.050000f, 0.040451f, -0.015451f,
-0.019134f, 0.046194f, -0.046194f, 0.019134f,
0.019134f, -0.046194f, 0.046194f, -0.019134f,
-0.019134f, 0.046194f, -0.046194f, 0.019134f,
0.019134f, -0.046194f, 0.046194f, -0.019134f,
-0.019134f, 0.046194f, -0.046194f, 0.019134f,
-0.022700f, 0.049384f, -0.035355f, -0.007822f,
0.044550f, -0.044550f, 0.007822f, 0.035355f,
-0.049384f, 0.022700f, 0.022700f, -0.049384f,
0.035355f, 0.007822f, -0.044550f, 0.044550f,
-0.007822f, -0.035355f, 0.049384f, -0.022700f,
-0.026125f, 0.049846f, -0.019134f, -0.032472f,
0.048618f, -0.011672f, -0.038020f, 0.046194f,
-0.003923f, -0.042632f, 0.042632f, 0.003923f,
-0.046194f, 0.038020f, 0.011672f, -0.048618f,
0.032472f, 0.019134f, -0.049846f, 0.026125f,
-0.029389f, 0.047553f, -0.000000f, -0.047553f,
0.029389f, 0.029389f, -0.047553f, -0.000000f,
0.047553f, -0.029389f, -0.029389f, 0.047553f,
-0.000000f, -0.047553f, 0.029389f, 0.029389f,
-0.047553f, 0.000000f, 0.047553f, -0.029389f,
-0.032472f, 0.042632f, 0.019134f, -0.048618f,
-0.003923f, 0.049846f, -0.011672f, -0.046194f,
0.026125f, 0.038020f, -0.038020f, -0.026125f,
0.046194f, 0.011672f, -0.049846f, 0.003923f,
0.048618f, -0.019134f, -0.042632f, 0.032472f,
};
각 테이블은 주어진 MS의 값에 대응할 수 있고, 차원 행렬 2MS × MS의 엔트리를 포함한다.
요약하면, 상기는 QMF 기반의 고조파 트랜스포저가 실수 값의 MS 채널 합성 필터 뱅크를 포함할 수 있는, 상술한 바와 같이(다른 것들 중, QMF 고조파 트랜스포저를 포함하는) 인코딩된 USAC 스트림을 디코딩하기 위한 장치의 처리에 대응할 수 있다. 실수 값의 MS 채널 합성 필터 뱅크는 2MS 실수 값의 부대역 샘플의 어레이를 획득하기 위해, MS 실수 값의 부대역 샘플의 어레이를 처리하도록 구성될 수 있다. MS 실수 값의 부대역 샘플 중 각 실수 값의 부대역 샘플은 MS 부대역 중 각각의 부대역과 연관될 수 있다. MS 실수 값의 부대역 샘플의 어레이를 처리하는 것은 실수 값의 행렬 N, 및 MS 실수 값의 부대역 샘플의 어레이의 행렬-벡터 곱셈을 수행하는 것을 포함할 수 있다. 실수 값의 행렬 N의 엔트리는 벡터-행렬 곱셈에서 곱해지는 각각의 부대역 샘플의 부대역 인덱스에 의존할 수 있다. 그 후, 미리 계산된 정보는 행렬-벡터 곱셈을 위한 실수 값의 행렬의 엔트리에 관련될 수 있다. 실수 값의 행렬 N의 엔트리는 오프라인으로 결정되며, 하나 이상의 룩업 테이블에 저장될 수 있다. QMF 기반의 고조파 트랜스포저는 런타임에 하나 이상의 룩업 테이블로부터 실수 값의 행렬 N의 엔트리에 액세스하도록 구성될 수 있다.
위에서 주목된 바와 같이, 어레이 v에서의 샘플은 2MS 위치만큼 시프트될 수 있다. 가장 오래된 2MS 샘플이 폐기될 수 있다. MS 실수 값의 부대역 샘플은 행렬 N에 의해 곱해질 수 있고 즉, 행렬-벡터 곱 N·V이 계산된다
.
이 동작으로부터 출력은 어레이 v의 위치 0 내지 2MS-1에 저장될 수 있다. v로부터의 샘플은 10MS-요소 어레이 g를 생성하기 위해 추출될 수 있다. 어레이 w를 생성하기 위해, 어레이 g의 샘플은 윈도우 c i 에 의해 곱해질 수 있다. 윈도우 계수 c i 는 계수 c의 선형 보간에 의해 즉, 다음의 방정식을 통해 획득될 수 있다
.
계수 c는 ISO/IEC 14496-3:2009의 표 4.A.89에 정의될 수 있으며, 이 표는 그 전체가 본원에 참조로 통합된다.
계수 c로부터 윈도우 계수 c i 를 결정하기 위한 공식은 런타임 이전에 윈도우 계수 c i 를 도출하기 위해(예를 들어, 미리 계산하기 위해) 오프라인으로 구현될 수 있다. 런타임에서, 미리 계산된 윈도우 계수 c i 는 필요한 경우, 계산 없이 참조될 수 있다. 예를 들어, 윈도우 계수 c i 는 하나 이상의 룩업 테이블로부터 획득(예를 들어, 판독, 검색)될 수 있다. 디코더가 런타임에 적절한 윈도우 계수(들) c i 를 검색하기 위한 루틴을 제공받는 한, 룩업 테이블(들) 내의 윈도우 계수 c i 의 실제 배열은 변할 수 있다.
일 구현에서, 모든 가능한 MS의 값(예를 들어, M S =4, 8, 12, 16, 20)에 대한 c i (n)이 계산되며, 테이블에 저장될 수 있다. 예를 들어, MS의 모든 가능한 값에 대응하는 모든 계수는 미리 계산되고, 아래에 예시된 (ROM) 테이블 sub_samp_qmf_window_coeff에 저장될 수 있다.
M S 의 값을 기초로, 대응하는 윈도우 계수는 다음과 같이 함수 map_prot_filter(ixheaacd_hbe_trans.c)를 사용하여 맵핑된다.
테이블은 인덱스 위치 0으로부터 시작하는, MS의 제1 가능한 값(예를 들어, MS = 4)에 대한 윈도우 계수 ci(n), n=0, ... , 10MS-1, 다음 인덱스 위치에서 시작하는, MS의 제2 가능한 값(예를 들어, MS = 8)에 대한 윈도우 계수 ci(n) 등을 포함할 수 있다.
요약하면, 상기는 QMF 기반의 고조파 트랜스포저가 실수 값의 MS 채널 합성 필터 뱅크 및 복소수 값의 2M 채널 분석 필터 뱅크를 포함할 수 있는, 상술한 바와 같이 (다른 것들 중 QMF 고조파 트랜스포저를 포함하는) 인코딩된 USAC 스트림을 디코딩하기 위한 장치의 처리에 대응할 수 있다. 미리 계산된 정보는 실수 값의 MS 채널 합성 필터 뱅크에서의 합성 동안 및/또는 복소수 값의 2M 채널 분석 필터 뱅크에서의 분석 동안 샘플의 어레이의 윈도잉(windowing)을 위한 윈도우 계수에 관련될 수 있다. 윈도우 계수는 각각 MS 또는 M의 모든 가능한 값에 대한 테이블 값 사이의 선형 보간을 기초로 오프라인으로 결정될 수 있고, 하나 이상의 룩업 테이블에 저장될 수 있다. QMF 기반의 고조파 트랜스포저는 런타임에 하나 이상의 룩업 테이블로부터 윈도우 계수에 액세스하도록 구성될 수 있다.
QMF 트랜스포저는 복소수 값의 서브-샘플링된 2M-채널 분석 필터 뱅크를 포함할 수 있다. M은 MS에 동일할 수 있다. 복소수 값의 서브-샘플링된 M-채널 분석 필터 뱅크는 예를 들어, USAC 표준의 7.5.4.2.3절에 서술될 수 있다. 이 절은 그 전체가 본원에 참조로 통합된다.
분석 필터 뱅크에서, 어레이 x의 샘플은 2M S 의 위치만큼 시프트될 수 있다. 가장 오래된 2M S 의 샘플이 폐기되고, 2M S 의 새로운 샘플이 위치 0 내지 2M S -1에 저장된다. 어레이 x의 샘플은 윈도우 c 2i 의 계수만큼 곱해질 수 있다. 윈도우 계수 c 2i 는 계수 c의 선형 보간에 의해, 즉 방정식을 통해 획득되고,
여기서 μ(n) 및 ρ(n)은 각각 32·n/MA의 정수 및 허수 부분으로 정의된다. 샘플은 4MS-요소 어레이 u를 생성하기 위해 합산될 수 있다. 2MS의 새로운 복소수 값의 부대역 샘플은 행렬-벡터 곱셈 M·u를 기초로 계산될 수 있다
.
방정식에서, exp()는 복소수 지수 함수를 나타내고, i는 허수 단위이다.
행렬 M(k, n)(또는 그의 엔트리)을 결정하기 위한 공식은 런타임 이전에 행렬(또는 엔트리)를 도출하도록(예를 들어, 미리 계산하도록) 오프라인으로 구현될 수 있다. 런타임에, 미리 계산된 행렬은 필요한 경우, 계산 없이 참조될 수 있다. 예를 들어, 행렬 M(k, n)은 하나 이상의 룩업 테이블로부터 획득(예를 들어, 판독, 검색)될 수 있다. 디코더가 런타임에 적절한 행렬 엔트리를 검색하기 위한 루틴을 제공받는 한, 룩업 테이블(들) 내의 행렬 엔트리의 실제 배열은 변할 수 있다.
일 구현에서, 모든 가능한 MS 값(예를 들어, MS = 8, 16, 24, 32, 40)에 대한 M(k, n)은 초기 시간(런타임) 계산 대신에 계산되고 테이블에 저장될 수 있다. 룩업 테이블은 아래와 같이 이름이 지정될 수 있고
analy_cos_sin_tab_kl_8, analy_cos_sin_tab_kl_16, analy_cos_sin_tab_kl_24, analy_cos_sin_tab_kl_32, analy_cos_sin_tab_kl_40, 이는 아래에 예시된다.
표에서 모든 짝수인 인덱스 요소는 위의 복소수 값의 계수(M(k, n)의 행렬 엔트리)의 실수 부분(코사인 값)에 대응할 수 있고, 홀수인 인덱스 요소는 위의 복소수 값의 계수의 허수 부분(사인 값)에 대응할 수 있다.
주어진 M S 에 대응하는 복소수 값의 총 개수는 8*(M S )2이며, 이 값의 단지 절반인 4* (MS) 2이면 처리를 하는데 충분하다.
함수 ixheaacd_complex_anal_filt는 테이블이 어떻게 사용될 수 있는지를 나타낸다. 이는 이 행렬에서 값의 주기적인 특성에 의해 달성된다.
VOID ixheaacd_complex_anal_filt(const FLOAT32 *inp_signal,
FLOAT32 *anal_buf_r,
FLOAT32 *anal_buf_i,
WORD32 anal_size,
FLOAT32 *x,
FLOAT32 *analy_cos_sin_tab,
const FLOAT32 *interp_window_coeff)
{
WORD32 i,j,k,l;
FLOAT32 window_output[640];
FLOAT32 u[128];
FLOAT32 accu_r, accu_i;
WORD32 N = (10*anal_size);
for (i=N-1; i>=anal_size; i--)
{
x[i] = x[i-anal_size];
}
for (i=anal_size-1; i>=0; i--)
{
x[i] = inp_signal[anal_size-1-i];
}
/* 윈도잉 동작 신호 */
for (i=0; i<N; i++)
{
window_output[i] = x[i] * interp_window_coeff[i];
}
/* 어레이 u 생성 */
for (i=0; i<2*anal_size; i++)
{
accu_r = 0.0;
for (j=0; j<5; j++)
{
accu_r = accu_r + window_output[i + j * 2*anal_size];
}
u[i] = accu_r;
}
for(i=1; i < anal_size; i++)
{
FLOAT32 temp1 = u[i] + u[2*anal_size - i];
FLOAT32 temp2 = u[i] - u[2*anal_size - i];
u[i] = temp1;
u[2*anal_size -i] = temp2;
}
for (k=0; k<anal_size; k++)
{
accu_r = u[anal_size];
if(k & 1)
accu_i = u[0];
else
accu_i = -u[0];
for (l=1; l<anal_size; l++)
{
accu_r = accu_r + u[ 0 + l] * analy_cos_sin_tab[2*l + 0];
accu_i = accu_i + u[2*anal_size - l] * analy_cos_sin_tab[2*l + 1];
}
analy_cos_sin_tab += (2*anal_size);
anal_buf_r[k] = (FLOAT32) accu_r;
anal_buf_i[k] = (FLOAT32) accu_i;
}
}
테이블 그 자체는 다음과 같이 주어질 수 있다:
const FLOAT32 analy_cos_sin_tab_kl_8 [8 * 8 * 2] = {
0.000000f, -1.000000f, 0.195090f, -0.980785f,
0.382683f, -0.923880f, 0.555570f, -0.831470f,
0.707107f, -0.707107f, 0.831470f, -0.555570f,
0.923880f, -0.382683f, 0.980785f, -0.195090f,
-0.000000f, 1.000000f, -0.555570f, 0.831470f,
-0.923880f, 0.382683f, -0.980785f, -0.195090f,
-0.707107f, -0.707107f, -0.195090f, -0.980785f,
0.382683f, -0.923880f, 0.831470f, -0.555570f,
0.000000f, -1.000000f, 0.831470f, -0.555570f,
0.923880f, 0.382683f, 0.195090f, 0.980785f,
-0.707107f, 0.707107f, -0.980785f, -0.195090f,
-0.382683f, -0.923880f, 0.555570f, -0.831470f,
-0.000000f, 1.000000f, -0.980785f, 0.195090f,
-0.382683f, -0.923880f, 0.831470f, -0.555570f,
0.707107f, 0.707107f, -0.555570f, 0.831470f,
-0.923880f, -0.382683f, 0.195090f, -0.980785f,
0.000000f, -1.000000f, 0.980785f, 0.195090f,
-0.382683f, 0.923880f, -0.831470f, -0.555570f,
0.707107f, -0.707107f, 0.555570f, 0.831470f,
-0.923880f, 0.382683f, -0.195090f, -0.980785f,
-0.000000f, 1.000000f, -0.831470f, -0.555570f,
0.923880f, -0.382683f, -0.195090f, 0.980785f,
-0.707107f, -0.707107f, 0.980785f, -0.195090f,
-0.382683f, 0.923880f, -0.555570f, -0.831470f,
-0.000000f, -1.000000f, 0.555570f, 0.831470f,
-0.923880f, -0.382683f, 0.980785f, -0.195090f,
-0.707107f, 0.707107f, 0.195090f, -0.980785f,
0.382683f, 0.923880f, -0.831470f, -0.555570f,
-0.000000f, 1.000000f, -0.195090f, -0.980785f,
0.382683f, 0.923880f, -0.555570f, -0.831470f,
0.707107f, 0.707107f, -0.831470f, -0.555570f,
0.923880f, 0.382683f, -0.980785f, -0.195090f,
};
const FLOAT32 analy_cos_sin_tab_kl_16 [16 * 16 * 2] = {
0.000000f, -1.000000f, 0.098017f, -0.995185f,
0.195090f, -0.980785f, 0.290285f, -0.956940f,
0.382683f, -0.923880f, 0.471397f, -0.881921f,
0.555570f, -0.831470f, 0.634393f, -0.773010f,
0.707107f, -0.707107f, 0.773010f, -0.634393f,
0.831470f, -0.555570f, 0.881921f, -0.471397f,
0.923880f, -0.382683f, 0.956940f, -0.290285f,
0.980785f, -0.195090f, 0.995185f, -0.098017f,
-0.000000f, 1.000000f, -0.290285f, 0.956940f,
-0.555570f, 0.831470f, -0.773010f, 0.634393f,
-0.923880f, 0.382683f, -0.995185f, 0.098017f,
-0.980785f, -0.195090f, -0.881921f, -0.471397f,
-0.707107f, -0.707107f, -0.471397f, -0.881921f,
-0.195090f, -0.980785f, 0.098017f, -0.995185f,
0.382683f, -0.923880f, 0.634393f, -0.773010f,
0.831470f, -0.555570f, 0.956940f, -0.290285f,
0.000000f, -1.000000f, 0.471397f, -0.881921f,
0.831470f, -0.555570f, 0.995185f, -0.098017f,
0.923880f, 0.382683f, 0.634393f, 0.773010f,
0.195090f, 0.980785f, -0.290285f, 0.956940f,
-0.707107f, 0.707107f, -0.956940f, 0.290285f,
-0.980785f, -0.195090f, -0.773010f, -0.634393f,
-0.382683f, -0.923880f, 0.098017f, -0.995185f,
0.555570f, -0.831470f, 0.881921f, -0.471397f,
-0.000000f, 1.000000f, -0.634393f, 0.773010f,
-0.980785f, 0.195090f, -0.881921f, -0.471397f,
-0.382683f, -0.923880f, 0.290285f, -0.956940f,
0.831470f, -0.555570f, 0.995185f, 0.098017f,
0.707107f, 0.707107f, 0.098017f, 0.995185f,
-0.555570f, 0.831470f, -0.956940f, 0.290285f,
-0.923880f, -0.382683f, -0.471397f, -0.881921f,
0.195090f, -0.980785f, 0.773010f, -0.634393f,
0.000000f, -1.000000f, 0.773010f, -0.634393f,
0.980785f, 0.195090f, 0.471397f, 0.881921f,
-0.382683f, 0.923880f, -0.956940f, 0.290285f,
-0.831470f, -0.555570f, -0.098017f, -0.995185f,
0.707107f, -0.707107f, 0.995185f, 0.098017f,
0.555570f, 0.831470f, -0.290285f, 0.956940f,
-0.923880f, 0.382683f, -0.881921f, -0.471397f,
-0.195090f, -0.980785f, 0.634393f, -0.773010f,
-0.000000f, 1.000000f, -0.881921f, 0.471397f,
-0.831470f, -0.555570f, 0.098017f, -0.995185f,
0.923880f, -0.382683f, 0.773010f, 0.634393f,
-0.195090f, 0.980785f, -0.956940f, 0.290285f,
-0.707107f, -0.707107f, 0.290285f, -0.956940f,
0.980785f, -0.195090f, 0.634393f, 0.773010f,
-0.382683f, 0.923880f, -0.995185f, 0.098017f,
-0.555570f, -0.831470f, 0.471397f, -0.881921f,
-0.000000f, -1.000000f, 0.956940f, -0.290285f,
0.555570f, 0.831470f, -0.634393f, 0.773010f,
-0.923880f, -0.382683f, 0.098017f, -0.995185f,
0.980785f, -0.195090f, 0.471397f, 0.881921f,
-0.707107f, 0.707107f, -0.881921f, -0.471397f,
0.195090f, -0.980785f, 0.995185f, -0.098017f,
0.382683f, 0.923880f, -0.773010f, 0.634393f,
-0.831470f, -0.555570f, 0.290285f, -0.956940f,
-0.000000f, 1.000000f, -0.995185f, 0.098017f,
-0.195090f, -0.980785f, 0.956940f, -0.290285f,
0.382683f, 0.923880f, -0.881921f, 0.471397f,
-0.555570f, -0.831470f, 0.773010f, -0.634393f,
0.707107f, 0.707107f, -0.634393f, 0.773010f,
-0.831470f, -0.555570f, 0.471397f, -0.881921f,
0.923880f, 0.382683f, -0.290285f, 0.956940f,
-0.980785f, -0.195090f, 0.098017f, -0.995185f,
-0.000000f, -1.000000f, 0.995185f, 0.098017f,
-0.195090f, 0.980785f, -0.956940f, -0.290285f,
0.382683f, -0.923880f, 0.881921f, 0.471397f,
-0.555570f, 0.831470f, -0.773010f, -0.634393f,
0.707107f, -0.707107f, 0.634393f, 0.773010f,
-0.831470f, 0.555570f, -0.471397f, -0.881921f,
0.923880f, -0.382683f, 0.290285f, 0.956940f,
-0.980785f, 0.195090f, -0.098017f, -0.995185f,
-0.000000f, 1.000000f, -0.956940f, -0.290285f,
0.555570f, -0.831470f, 0.634393f, 0.773010f,
-0.923880f, 0.382683f, -0.098017f, -0.995185f,
0.980785f, 0.195090f, -0.471397f, 0.881921f,
-0.707107f, -0.707107f, 0.881921f, -0.471397f,
0.195090f, 0.980785f, -0.995185f, -0.098017f,
0.382683f, -0.923880f, 0.773010f, 0.634393f,
-0.831470f, 0.555570f, -0.290285f, -0.956940f,
-0.000000f, -1.000000f, 0.881921f, 0.471397f,
-0.831470f, 0.555570f, -0.098017f, -0.995185f,
0.923880f, 0.382683f, -0.773010f, 0.634393f,
-0.195090f, -0.980785f, 0.956940f, 0.290285f,
-0.707107f, 0.707107f, -0.290285f, -0.956940f,
0.980785f, 0.195090f, -0.634393f, 0.773010f,
-0.382683f, -0.923880f, 0.995185f, 0.098017f,
-0.555570f, 0.831470f, -0.471397f, -0.881921f,
-0.000000f, 1.000000f, -0.773010f, -0.634393f,
0.980785f, -0.195090f, -0.471397f, 0.881921f,
-0.382683f, -0.923880f, 0.956940f, 0.290285f,
-0.831470f, 0.555570f, 0.098017f, -0.995185f,
0.707107f, 0.707107f, -0.995185f, 0.098017f,
0.555570f, -0.831470f, 0.290285f, 0.956940f,
-0.923880f, -0.382683f, 0.881921f, -0.471397f,
-0.195090f, 0.980785f, -0.634393f, -0.773010f,
-0.000000f, -1.000000f, 0.634393f, 0.773010f,
-0.980785f, -0.195090f, 0.881921f, -0.471397f,
-0.382683f, 0.923880f, -0.290285f, -0.956940f,
0.831470f, 0.555570f, -0.995185f, 0.098017f,
0.707107f, -0.707107f, -0.098017f, 0.995185f,
-0.555570f, -0.831470f, 0.956940f, 0.290285f,
-0.923880f, 0.382683f, 0.471397f, -0.881921f,
0.195090f, 0.980785f, -0.773010f, -0.634393f,
-0.000000f, 1.000000f, -0.471397f, -0.881921f,
0.831470f, 0.555570f, -0.995185f, -0.098017f,
0.923880f, -0.382683f, -0.634393f, 0.773010f,
0.195090f, -0.980785f, 0.290285f, 0.956940f,
-0.707107f, -0.707107f, 0.956940f, 0.290285f,
-0.980785f, 0.195090f, 0.773010f, -0.634393f,
-0.382683f, 0.923880f, -0.098017f, -0.995185f,
0.555570f, 0.831470f, -0.881921f, -0.471397f,
-0.000000f, -1.000000f, 0.290285f, 0.956940f,
-0.555570f, -0.831470f, 0.773010f, 0.634393f,
-0.923880f, -0.382683f, 0.995185f, 0.098017f,
-0.980785f, 0.195090f, 0.881921f, -0.471397f,
-0.707107f, 0.707107f, 0.471397f, -0.881921f,
-0.195090f, 0.980785f, -0.098017f, -0.995185f,
0.382683f, 0.923880f, -0.634393f, -0.773010f,
0.831470f, 0.555570f, -0.956940f, -0.290285f,
-0.000000f, 1.000000f, -0.098017f, -0.995185f,
0.195090f, 0.980785f, -0.290285f, -0.956940f,
0.382683f, 0.923880f, -0.471397f, -0.881921f,
0.555570f, 0.831470f, -0.634393f, -0.773010f,
0.707107f, 0.707107f, -0.773010f, -0.634393f,
0.831470f, 0.555570f, -0.881921f, -0.471397f,
0.923880f, 0.382683f, -0.956940f, -0.290285f,
0.980785f, 0.195090f, -0.995185f, -0.098017f,
};
const FLOAT32 analy_cos_sin_tab_kl_24 [24 * 24 * 2] = {
-0.000000f, -1.000000f, 0.065403f, -0.997859f,
0.130526f, -0.991445f, 0.195090f, -0.980785f,
0.258819f, -0.965926f, 0.321439f, -0.946930f,
0.382683f, -0.923880f, 0.442289f, -0.896873f,
0.500000f, -0.866025f, 0.555570f, -0.831470f,
0.608761f, -0.793353f, 0.659346f, -0.751840f,
0.707107f, -0.707107f, 0.751840f, -0.659346f,
0.793353f, -0.608761f, 0.831470f, -0.555570f,
0.866025f, -0.500000f, 0.896873f, -0.442289f,
0.923880f, -0.382683f, 0.946930f, -0.321439f,
0.965926f, -0.258819f, 0.980785f, -0.195090f,
0.991445f, -0.130526f, 0.997859f, -0.065403f,
0.000000f, 1.000000f, -0.195090f, 0.980785f,
-0.382683f, 0.923880f, -0.555570f, 0.831470f,
-0.707107f, 0.707107f, -0.831470f, 0.555570f,
-0.923880f, 0.382683f, -0.980785f, 0.195090f,
-1.000000f, 0.000000f, -0.980785f, -0.195090f,
-0.923880f, -0.382683f, -0.831470f, -0.555570f,
-0.707107f, -0.707107f, -0.555570f, -0.831470f,
-0.382683f, -0.923880f, -0.195090f, -0.980785f,
-0.000000f, -1.000000f, 0.195090f, -0.980785f,
0.382683f, -0.923880f, 0.555570f, -0.831470f,
0.707107f, -0.707107f, 0.831470f, -0.555570f,
0.923880f, -0.382683f, 0.980785f, -0.195090f,
-0.000000f, -1.000000f, 0.321439f, -0.946930f,
0.608761f, -0.793353f, 0.831470f, -0.555570f,
0.965926f, -0.258819f, 0.997859f, 0.065403f,
0.923880f, 0.382683f, 0.751840f, 0.659346f,
0.500000f, 0.866025f, 0.195090f, 0.980785f,
-0.130526f, 0.991445f, -0.442289f, 0.896873f,
-0.707107f, 0.707107f, -0.896873f, 0.442289f,
-0.991445f, 0.130526f, -0.980785f, -0.195090f,
-0.866025f, -0.500000f, -0.659346f, -0.751840f,
-0.382683f, -0.923880f, -0.065403f, -0.997859f,
0.258819f, -0.965926f, 0.555570f, -0.831470f,
0.793353f, -0.608761f, 0.946930f, -0.321439f,
0.000000f, 1.000000f, -0.442289f, 0.896873f,
-0.793353f, 0.608761f, -0.980785f, 0.195090f,
-0.965926f, -0.258819f, -0.751840f, -0.659346f,
-0.382683f, -0.923880f, 0.065403f, -0.997859f,
0.500000f, -0.866025f, 0.831470f, -0.555570f,
0.991445f, -0.130526f, 0.946930f, 0.321439f,
0.707107f, 0.707107f, 0.321439f, 0.946930f,
-0.130526f, 0.991445f, -0.555570f, 0.831470f,
-0.866025f, 0.500000f, -0.997859f, 0.065403f,
-0.923880f, -0.382683f, -0.659346f, -0.751840f,
-0.258819f, -0.965926f, 0.195090f, -0.980785f,
0.608761f, -0.793353f, 0.896873f, -0.442289f,
-0.000000f, -1.000000f, 0.555570f, -0.831470f,
0.923880f, -0.382683f, 0.980785f, 0.195090f,
0.707107f, 0.707107f, 0.195090f, 0.980785f,
-0.382683f, 0.923880f, -0.831470f, 0.555570f,
-1.000000f, 0.000000f, -0.831470f, -0.555570f,
-0.382683f, -0.923880f, 0.195090f, -0.980785f,
0.707107f, -0.707107f, 0.980785f, -0.195090f,
0.923880f, 0.382683f, 0.555570f, 0.831470f,
0.000000f, 1.000000f, -0.555570f, 0.831470f,
-0.923880f, 0.382683f, -0.980785f, -0.195090f,
-0.707107f, -0.707107f, -0.195090f, -0.980785f,
0.382683f, -0.923880f, 0.831470f, -0.555570f,
0.000000f, 1.000000f, -0.659346f, 0.751840f,
-0.991445f, 0.130526f, -0.831470f, -0.555570f,
-0.258819f, -0.965926f, 0.442289f, -0.896873f,
0.923880f, -0.382683f, 0.946930f, 0.321439f,
0.500000f, 0.866025f, -0.195090f, 0.980785f,
-0.793353f, 0.608761f, -0.997859f, -0.065403f,
-0.707107f, -0.707107f, -0.065403f, -0.997859f,
0.608761f, -0.793353f, 0.980785f, -0.195090f,
0.866025f, 0.500000f, 0.321439f, 0.946930f,
-0.382683f, 0.923880f, -0.896873f, 0.442289f,
-0.965926f, -0.258819f, -0.555570f, -0.831470f,
0.130526f, -0.991445f, 0.751840f, -0.659346f,
-0.000000f, -1.000000f, 0.751840f, -0.659346f,
0.991445f, 0.130526f, 0.555570f, 0.831470f,
-0.258819f, 0.965926f, -0.896873f, 0.442289f,
-0.923880f, -0.382683f, -0.321439f, -0.946930f,
0.500000f, -0.866025f, 0.980785f, -0.195090f,
0.793353f, 0.608761f, 0.065403f, 0.997859f,
-0.707107f, 0.707107f, -0.997859f, -0.065403f,
-0.608761f, -0.793353f, 0.195090f, -0.980785f,
0.866025f, -0.500000f, 0.946930f, 0.321439f,
0.382683f, 0.923880f, -0.442289f, 0.896873f,
-0.965926f, 0.258819f, -0.831470f, -0.555570f,
-0.130526f, -0.991445f, 0.659346f, -0.751840f,
0.000000f, 1.000000f, -0.831470f, 0.555570f,
-0.923880f, -0.382683f, -0.195090f, -0.980785f,
0.707107f, -0.707107f, 0.980785f, 0.195090f,
0.382683f, 0.923880f, -0.555570f, 0.831470f,
-1.000000f, 0.000000f, -0.555570f, -0.831470f,
0.382683f, -0.923880f, 0.980785f, -0.195090f,
0.707107f, 0.707107f, -0.195090f, 0.980785f,
-0.923880f, 0.382683f, -0.831470f, -0.555570f,
-0.000000f, -1.000000f, 0.831470f, -0.555570f,
0.923880f, 0.382683f, 0.195090f, 0.980785f,
-0.707107f, 0.707107f, -0.980785f, -0.195090f,
-0.382683f, -0.923880f, 0.555570f, -0.831470f,
-0.000000f, -1.000000f, 0.896873f, -0.442289f,
0.793353f, 0.608761f, -0.195090f, 0.980785f,
-0.965926f, 0.258819f, -0.659346f, -0.751840f,
0.382683f, -0.923880f, 0.997859f, -0.065403f,
0.500000f, 0.866025f, -0.555570f, 0.831470f,
-0.991445f, -0.130526f, -0.321439f, -0.946930f,
0.707107f, -0.707107f, 0.946930f, 0.321439f,
0.130526f, 0.991445f, -0.831470f, 0.555570f,
-0.866025f, -0.500000f, 0.065403f, -0.997859f,
0.923880f, -0.382683f, 0.751840f, 0.659346f,
-0.258819f, 0.965926f, -0.980785f, 0.195090f,
-0.608761f, -0.793353f, 0.442289f, -0.896873f,
0.000000f, 1.000000f, -0.946930f, 0.321439f,
-0.608761f, -0.793353f, 0.555570f, -0.831470f,
0.965926f, 0.258819f, 0.065403f, 0.997859f,
-0.923880f, 0.382683f, -0.659346f, -0.751840f,
0.500000f, -0.866025f, 0.980785f, 0.195090f,
0.130526f, 0.991445f, -0.896873f, 0.442289f,
-0.707107f, -0.707107f, 0.442289f, -0.896873f,
0.991445f, 0.130526f, 0.195090f, 0.980785f,
-0.866025f, 0.500000f, -0.751840f, -0.659346f,
0.382683f, -0.923880f, 0.997859f, 0.065403f,
0.258819f, 0.965926f, -0.831470f, 0.555570f,
-0.793353f, -0.608761f, 0.321439f, -0.946930f,
-0.000000f, -1.000000f, 0.980785f, -0.195090f,
0.382683f, 0.923880f, -0.831470f, 0.555570f,
-0.707107f, -0.707107f, 0.555570f, -0.831470f,
0.923880f, 0.382683f, -0.195090f, 0.980785f,
-1.000000f, 0.000000f, -0.195090f, -0.980785f,
0.923880f, -0.382683f, 0.555570f, 0.831470f,
-0.707107f, 0.707107f, -0.831470f, -0.555570f,
0.382683f, -0.923880f, 0.980785f, 0.195090f,
0.000000f, 1.000000f, -0.980785f, 0.195090f,
-0.382683f, -0.923880f, 0.831470f, -0.555570f,
0.707107f, 0.707107f, -0.555570f, 0.831470f,
-0.923880f, -0.382683f, 0.195090f, -0.980785f,
0.000000f, 1.000000f, -0.997859f, 0.065403f,
-0.130526f, -0.991445f, 0.980785f, -0.195090f,
0.258819f, 0.965926f, -0.946930f, 0.321439f,
-0.382683f, -0.923880f, 0.896873f, -0.442289f,
0.500000f, 0.866025f, -0.831470f, 0.555570f,
-0.608761f, -0.793353f, 0.751840f, -0.659346f,
0.707107f, 0.707107f, -0.659346f, 0.751840f,
-0.793353f, -0.608761f, 0.555570f, -0.831470f,
0.866025f, 0.500000f, -0.442289f, 0.896873f,
-0.923880f, -0.382683f, 0.321439f, -0.946930f,
0.965926f, 0.258819f, -0.195090f, 0.980785f,
-0.991445f, -0.130526f, 0.065403f, -0.997859f,
-0.000000f, -1.000000f, 0.997859f, 0.065403f,
-0.130526f, 0.991445f, -0.980785f, -0.195090f,
0.258819f, -0.965926f, 0.946930f, 0.321439f,
-0.382683f, 0.923880f, -0.896873f, -0.442289f,
0.500000f, -0.866025f, 0.831470f, 0.555570f,
-0.608761f, 0.793353f, -0.751840f, -0.659346f,
0.707107f, -0.707107f, 0.659346f, 0.751840f,
-0.793353f, 0.608761f, -0.555570f, -0.831470f,
0.866025f, -0.500000f, 0.442289f, 0.896873f,
-0.923880f, 0.382683f, -0.321439f, -0.946930f,
0.965926f, -0.258819f, 0.195090f, 0.980785f,
-0.991445f, 0.130526f, -0.065403f, -0.997859f,
0.000000f, 1.000000f, -0.980785f, -0.195090f,
0.382683f, -0.923880f, 0.831470f, 0.555570f,
-0.707107f, 0.707107f, -0.555570f, -0.831470f,
0.923880f, -0.382683f, 0.195090f, 0.980785f,
-1.000000f, 0.000000f, 0.195090f, -0.980785f,
0.923880f, 0.382683f, -0.555570f, 0.831470f,
-0.707107f, -0.707107f, 0.831470f, -0.555570f,
0.382683f, 0.923880f, -0.980785f, 0.195090f,
-0.000000f, -1.000000f, 0.980785f, 0.195090f,
-0.382683f, 0.923880f, -0.831470f, -0.555570f,
0.707107f, -0.707107f, 0.555570f, 0.831470f,
-0.923880f, 0.382683f, -0.195090f, -0.980785f,
-0.000000f, -1.000000f, 0.946930f, 0.321439f,
-0.608761f, 0.793353f, -0.555570f, -0.831470f,
0.965926f, -0.258819f, -0.065403f, 0.997859f,
-0.923880f, -0.382683f, 0.659346f, -0.751840f,
0.500000f, 0.866025f, -0.980785f, 0.195090f,
0.130526f, -0.991445f, 0.896873f, 0.442289f,
-0.707107f, 0.707107f, -0.442289f, -0.896873f,
0.991445f, -0.130526f, -0.195090f, 0.980785f,
-0.866025f, -0.500000f, 0.751840f, -0.659346f,
0.382683f, 0.923880f, -0.997859f, 0.065403f,
0.258819f, -0.965926f, 0.831470f, 0.555570f,
-0.793353f, 0.608761f, -0.321439f, -0.946930f,
0.000000f, 1.000000f, -0.896873f, -0.442289f,
0.793353f, -0.608761f, 0.195090f, 0.980785f,
-0.965926f, -0.258819f, 0.659346f, -0.751840f,
0.382683f, 0.923880f, -0.997859f, -0.065403f,
0.500000f, -0.866025f, 0.555570f, 0.831470f,
-0.991445f, 0.130526f, 0.321439f, -0.946930f,
0.707107f, 0.707107f, -0.946930f, 0.321439f,
0.130526f, -0.991445f, 0.831470f, 0.555570f,
-0.866025f, 0.500000f, -0.065403f, -0.997859f,
0.923880f, 0.382683f, -0.751840f, 0.659346f,
-0.258819f, -0.965926f, 0.980785f, 0.195090f,
-0.608761f, 0.793353f, -0.442289f, -0.896873f,
-0.000000f, -1.000000f, 0.831470f, 0.555570f,
-0.923880f, 0.382683f, 0.195090f, -0.980785f,
0.707107f, 0.707107f, -0.980785f, 0.195090f,
0.382683f, -0.923880f, 0.555570f, 0.831470f,
-1.000000f, 0.000000f, 0.555570f, -0.831470f,
0.382683f, 0.923880f, -0.980785f, -0.195090f,
0.707107f, -0.707107f, 0.195090f, 0.980785f,
-0.923880f, -0.382683f, 0.831470f, -0.555570f,
0.000000f, 1.000000f, -0.831470f, -0.555570f,
0.923880f, -0.382683f, -0.195090f, 0.980785f,
-0.707107f, -0.707107f, 0.980785f, -0.195090f,
-0.382683f, 0.923880f, -0.555570f, -0.831470f,
0.000000f, 1.000000f, -0.751840f, -0.659346f,
0.991445f, -0.130526f, -0.555570f, 0.831470f,
-0.258819f, -0.965926f, 0.896873f, 0.442289f,
-0.923880f, 0.382683f, 0.321439f, -0.946930f,
0.500000f, 0.866025f, -0.980785f, -0.195090f,
0.793353f, -0.608761f, -0.065403f, 0.997859f,
-0.707107f, -0.707107f, 0.997859f, -0.065403f,
-0.608761f, 0.793353f, -0.195090f, -0.980785f,
0.866025f, 0.500000f, -0.946930f, 0.321439f,
0.382683f, -0.923880f, 0.442289f, 0.896873f,
-0.965926f, -0.258819f, 0.831470f, -0.555570f,
-0.130526f, 0.991445f, -0.659346f, -0.751840f,
-0.000000f, -1.000000f, 0.659346f, 0.751840f,
-0.991445f, -0.130526f, 0.831470f, -0.555570f,
-0.258819f, 0.965926f, -0.442289f, -0.896873f,
0.923880f, 0.382683f, -0.946930f, 0.321439f,
0.500000f, -0.866025f, 0.195090f, 0.980785f,
-0.793353f, -0.608761f, 0.997859f, -0.065403f,
-0.707107f, 0.707107f, 0.065403f, -0.997859f,
0.608761f, 0.793353f, -0.980785f, -0.195090f,
0.866025f, -0.500000f, -0.321439f, 0.946930f,
-0.382683f, -0.923880f, 0.896873f, 0.442289f,
-0.965926f, 0.258819f, 0.555570f, -0.831470f,
0.130526f, 0.991445f, -0.751840f, -0.659346f,
0.000000f, 1.000000f, -0.555570f, -0.831470f,
0.923880f, 0.382683f, -0.980785f, 0.195090f,
0.707107f, -0.707107f, -0.195090f, 0.980785f,
-0.382683f, -0.923880f, 0.831470f, 0.555570f,
-1.000000f, 0.000000f, 0.831470f, -0.555570f,
-0.382683f, 0.923880f, -0.195090f, -0.980785f,
0.707107f, 0.707107f, -0.980785f, -0.195090f,
0.923880f, -0.382683f, -0.555570f, 0.831470f,
-0.000000f, -1.000000f, 0.555570f, 0.831470f,
-0.923880f, -0.382683f, 0.980785f, -0.195090f,
-0.707107f, 0.707107f, 0.195090f, -0.980785f,
0.382683f, 0.923880f, -0.831470f, -0.555570f,
-0.000000f, -1.000000f, 0.442289f, 0.896873f,
-0.793353f, -0.608761f, 0.980785f, 0.195090f,
-0.965926f, 0.258819f, 0.751840f, -0.659346f,
-0.382683f, 0.923880f, -0.065403f, -0.997859f,
0.500000f, 0.866025f, -0.831470f, -0.555570f,
0.991445f, 0.130526f, -0.946930f, 0.321439f,
0.707107f, -0.707107f, -0.321439f, 0.946930f,
-0.130526f, -0.991445f, 0.555570f, 0.831470f,
-0.866025f, -0.500000f, 0.997859f, 0.065403f,
-0.923880f, 0.382683f, 0.659346f, -0.751840f,
-0.258819f, 0.965926f, -0.195090f, -0.980785f,
0.608761f, 0.793353f, -0.896873f, -0.442289f,
0.000000f, 1.000000f, -0.321439f, -0.946930f,
0.608761f, 0.793353f, -0.831470f, -0.555570f,
0.965926f, 0.258819f, -0.997859f, 0.065403f,
0.923880f, -0.382683f, -0.751840f, 0.659346f,
0.500000f, -0.866025f, -0.195090f, 0.980785f,
-0.130526f, -0.991445f, 0.442289f, 0.896873f,
-0.707107f, -0.707107f, 0.896873f, 0.442289f,
-0.991445f, -0.130526f, 0.980785f, -0.195090f,
-0.866025f, 0.500000f, 0.659346f, -0.751840f,
-0.382683f, 0.923880f, 0.065403f, -0.997859f,
0.258819f, 0.965926f, -0.555570f, -0.831470f,
0.793353f, 0.608761f, -0.946930f, -0.321439f,
0.000000f, -1.000000f, 0.195090f, 0.980785f,
-0.382683f, -0.923880f, 0.555570f, 0.831470f,
-0.707107f, -0.707107f, 0.831470f, 0.555570f,
-0.923880f, -0.382683f, 0.980785f, 0.195090f,
-1.000000f, 0.000000f, 0.980785f, -0.195090f,
-0.923880f, 0.382683f, 0.831470f, -0.555570f,
-0.707107f, 0.707107f, 0.555570f, -0.831470f,
-0.382683f, 0.923880f, 0.195090f, -0.980785f,
0.000000f, 1.000000f, -0.195090f, -0.980785f,
0.382683f, 0.923880f, -0.555570f, -0.831470f,
0.707107f, 0.707107f, -0.831470f, -0.555570f,
0.923880f, 0.382683f, -0.980785f, -0.195090f,
0.000000f, 1.000000f, -0.065403f, -0.997859f,
0.130526f, 0.991445f, -0.195090f, -0.980785f,
0.258819f, 0.965926f, -0.321439f, -0.946930f,
0.382683f, 0.923880f, -0.442289f, -0.896873f,
0.500000f, 0.866025f, -0.555570f, -0.831470f,
0.608761f, 0.793353f, -0.659346f, -0.751840f,
0.707107f, 0.707107f, -0.751840f, -0.659346f,
0.793353f, 0.608761f, -0.831470f, -0.555570f,
0.866025f, 0.500000f, -0.896873f, -0.442289f,
0.923880f, 0.382683f, -0.946930f, -0.321439f,
0.965926f, 0.258819f, -0.980785f, -0.195090f,
0.991445f, 0.130526f, -0.997859f, -0.065403f,
};
const FLOAT32 analy_cos_sin_tab_kl_32 [32 * 32 * 2] = {
0.000000f, -1.000000f, 0.049068f, -0.998795f,
0.098017f, -0.995185f, 0.146730f, -0.989177f,
0.195090f, -0.980785f, 0.242980f, -0.970031f,
0.290285f, -0.956940f, 0.336890f, -0.941544f,
0.382683f, -0.923880f, 0.427555f, -0.903989f,
0.471397f, -0.881921f, 0.514103f, -0.857729f,
0.555570f, -0.831470f, 0.595699f, -0.803208f,
0.634393f, -0.773010f, 0.671559f, -0.740951f,
0.707107f, -0.707107f, 0.740951f, -0.671559f,
0.773010f, -0.634393f, 0.803208f, -0.595699f,
0.831470f, -0.555570f, 0.857729f, -0.514103f,
0.881921f, -0.471397f, 0.903989f, -0.427555f,
0.923880f, -0.382683f, 0.941544f, -0.336890f,
0.956940f, -0.290285f, 0.970031f, -0.242980f,
0.980785f, -0.195090f, 0.989177f, -0.146730f,
0.995185f, -0.098017f, 0.998795f, -0.049068f,
-0.000000f, 1.000000f, -0.146730f, 0.989177f,
-0.290285f, 0.956940f, -0.427555f, 0.903989f,
-0.555570f, 0.831470f, -0.671559f, 0.740951f,
-0.773010f, 0.634393f, -0.857729f, 0.514103f,
-0.923880f, 0.382683f, -0.970031f, 0.242980f,
-0.995185f, 0.098017f, -0.998795f, -0.049068f,
-0.980785f, -0.195090f, -0.941544f, -0.336890f,
-0.881921f, -0.471397f, -0.803208f, -0.595699f,
-0.707107f, -0.707107f, -0.595699f, -0.803208f,
-0.471397f, -0.881921f, -0.336890f, -0.941544f,
-0.195090f, -0.980785f, -0.049068f, -0.998795f,
0.098017f, -0.995185f, 0.242980f, -0.970031f,
0.382683f, -0.923880f, 0.514103f, -0.857729f,
0.634393f, -0.773010f, 0.740951f, -0.671559f,
0.831470f, -0.555570f, 0.903989f, -0.427555f,
0.956940f, -0.290285f, 0.989177f, -0.146730f,
0.000000f, -1.000000f, 0.242980f, -0.970031f,
0.471397f, -0.881921f, 0.671559f, -0.740951f,
0.831470f, -0.555570f, 0.941544f, -0.336890f,
0.995185f, -0.098017f, 0.989177f, 0.146730f,
0.923880f, 0.382683f, 0.803208f, 0.595699f,
0.634393f, 0.773010f, 0.427555f, 0.903989f,
0.195090f, 0.980785f, -0.049068f, 0.998795f,
-0.290285f, 0.956940f, -0.514103f, 0.857729f,
-0.707107f, 0.707107f, -0.857729f, 0.514103f,
-0.956940f, 0.290285f, -0.998795f, 0.049068f,
-0.980785f, -0.195090f, -0.903989f, -0.427555f,
-0.773010f, -0.634393f, -0.595699f, -0.803208f,
-0.382683f, -0.923880f, -0.146730f, -0.989177f,
0.098017f, -0.995185f, 0.336890f, -0.941544f,
0.555570f, -0.831470f, 0.740951f, -0.671559f,
0.881921f, -0.471397f, 0.970031f, -0.242980f,
-0.000000f, 1.000000f, -0.336890f, 0.941544f,
-0.634393f, 0.773010f, -0.857729f, 0.514103f,
-0.980785f, 0.195090f, -0.989177f, -0.146730f,
-0.881921f, -0.471397f, -0.671559f, -0.740951f,
-0.382683f, -0.923880f, -0.049068f, -0.998795f,
0.290285f, -0.956940f, 0.595699f, -0.803208f,
0.831470f, -0.555570f, 0.970031f, -0.242980f,
0.995185f, 0.098017f, 0.903989f, 0.427555f,
0.707107f, 0.707107f, 0.427555f, 0.903989f,
0.098017f, 0.995185f, -0.242980f, 0.970031f,
-0.555570f, 0.831470f, -0.803208f, 0.595699f,
-0.956940f, 0.290285f, -0.998795f, -0.049068f,
-0.923880f, -0.382683f, -0.740951f, -0.671559f,
-0.471397f, -0.881921f, -0.146730f, -0.989177f,
0.195090f, -0.980785f, 0.514103f, -0.857729f,
0.773010f, -0.634393f, 0.941544f, -0.336890f,
0.000000f, -1.000000f, 0.427555f, -0.903989f,
0.773010f, -0.634393f, 0.970031f, -0.242980f,
0.980785f, 0.195090f, 0.803208f, 0.595699f,
0.471397f, 0.881921f, 0.049068f, 0.998795f,
-0.382683f, 0.923880f, -0.740951f, 0.671559f,
-0.956940f, 0.290285f, -0.989177f, -0.146730f,
-0.831470f, -0.555570f, -0.514103f, -0.857729f,
-0.098017f, -0.995185f, 0.336890f, -0.941544f,
0.707107f, -0.707107f, 0.941544f, -0.336890f,
0.995185f, 0.098017f, 0.857729f, 0.514103f,
0.555570f, 0.831470f, 0.146730f, 0.989177f,
-0.290285f, 0.956940f, -0.671559f, 0.740951f,
-0.923880f, 0.382683f, -0.998795f, -0.049068f,
-0.881921f, -0.471397f, -0.595699f, -0.803208f,
-0.195090f, -0.980785f, 0.242980f, -0.970031f,
0.634393f, -0.773010f, 0.903989f, -0.427555f,
-0.000000f, 1.000000f, -0.514103f, 0.857729f,
-0.881921f, 0.471397f, -0.998795f, -0.049068f,
-0.831470f, -0.555570f, -0.427555f, -0.903989f,
0.098017f, -0.995185f, 0.595699f, -0.803208f,
0.923880f, -0.382683f, 0.989177f, 0.146730f,
0.773010f, 0.634393f, 0.336890f, 0.941544f,
-0.195090f, 0.980785f, -0.671559f, 0.740951f,
-0.956940f, 0.290285f, -0.970031f, -0.242980f,
-0.707107f, -0.707107f, -0.242980f, -0.970031f,
0.290285f, -0.956940f, 0.740951f, -0.671559f,
0.980785f, -0.195090f, 0.941544f, 0.336890f,
0.634393f, 0.773010f, 0.146730f, 0.989177f,
-0.382683f, 0.923880f, -0.803208f, 0.595699f,
-0.995185f, 0.098017f, -0.903989f, -0.427555f,
-0.555570f, -0.831470f, -0.049068f, -0.998795f,
0.471397f, -0.881921f, 0.857729f, -0.514103f,
-0.000000f, -1.000000f, 0.595699f, -0.803208f,
0.956940f, -0.290285f, 0.941544f, 0.336890f,
0.555570f, 0.831470f, -0.049068f, 0.998795f,
-0.634393f, 0.773010f, -0.970031f, 0.242980f,
-0.923880f, -0.382683f, -0.514103f, -0.857729f,
0.098017f, -0.995185f, 0.671559f, -0.740951f,
0.980785f, -0.195090f, 0.903989f, 0.427555f,
0.471397f, 0.881921f, -0.146730f, 0.989177f,
-0.707107f, 0.707107f, -0.989177f, 0.146730f,
-0.881921f, -0.471397f, -0.427555f, -0.903989f,
0.195090f, -0.980785f, 0.740951f, -0.671559f,
0.995185f, -0.098017f, 0.857729f, 0.514103f,
0.382683f, 0.923880f, -0.242980f, 0.970031f,
-0.773010f, 0.634393f, -0.998795f, 0.049068f,
-0.831470f, -0.555570f, -0.336890f, -0.941544f,
0.290285f, -0.956940f, 0.803208f, -0.595699f,
-0.000000f, 1.000000f, -0.671559f, 0.740951f,
-0.995185f, 0.098017f, -0.803208f, -0.595699f,
-0.195090f, -0.980785f, 0.514103f, -0.857729f,
0.956940f, -0.290285f, 0.903989f, 0.427555f,
0.382683f, 0.923880f, -0.336890f, 0.941544f,
-0.881921f, 0.471397f, -0.970031f, -0.242980f,
-0.555570f, -0.831470f, 0.146730f, -0.989177f,
0.773010f, -0.634393f, 0.998795f, 0.049068f,
0.707107f, 0.707107f, 0.049068f, 0.998795f,
-0.634393f, 0.773010f, -0.989177f, 0.146730f,
-0.831470f, -0.555570f, -0.242980f, -0.970031f,
0.471397f, -0.881921f, 0.941544f, -0.336890f,
0.923880f, 0.382683f, 0.427555f, 0.903989f,
-0.290285f, 0.956940f, -0.857729f, 0.514103f,
-0.980785f, -0.195090f, -0.595699f, -0.803208f,
0.098017f, -0.995185f, 0.740951f, -0.671559f,
-0.000000f, -1.000000f, 0.740951f, -0.671559f,
0.995185f, 0.098017f, 0.595699f, 0.803208f,
-0.195090f, 0.980785f, -0.857729f, 0.514103f,
-0.956940f, -0.290285f, -0.427555f, -0.903989f,
0.382683f, -0.923880f, 0.941544f, -0.336890f,
0.881921f, 0.471397f, 0.242980f, 0.970031f,
-0.555570f, 0.831470f, -0.989177f, 0.146730f,
-0.773010f, -0.634393f, -0.049068f, -0.998795f,
0.707107f, -0.707107f, 0.998795f, 0.049068f,
0.634393f, 0.773010f, -0.146730f, 0.989177f,
-0.831470f, 0.555570f, -0.970031f, -0.242980f,
-0.471397f, -0.881921f, 0.336890f, -0.941544f,
0.923880f, -0.382683f, 0.903989f, 0.427555f,
0.290285f, 0.956940f, -0.514103f, 0.857729f,
-0.980785f, 0.195090f, -0.803208f, -0.595699f,
-0.098017f, -0.995185f, 0.671559f, -0.740951f,
-0.000000f, 1.000000f, -0.803208f, 0.595699f,
-0.956940f, -0.290285f, -0.336890f, -0.941544f,
0.555570f, -0.831470f, 0.998795f, -0.049068f,
0.634393f, 0.773010f, -0.242980f, 0.970031f,
-0.923880f, 0.382683f, -0.857729f, -0.514103f,
-0.098017f, -0.995185f, 0.740951f, -0.671559f,
0.980785f, 0.195090f, 0.427555f, 0.903989f,
-0.471397f, 0.881921f, -0.989177f, 0.146730f,
-0.707107f, -0.707107f, 0.146730f, -0.989177f,
0.881921f, -0.471397f, 0.903989f, 0.427555f,
0.195090f, 0.980785f, -0.671559f, 0.740951f,
-0.995185f, -0.098017f, -0.514103f, -0.857729f,
0.382683f, -0.923880f, 0.970031f, -0.242980f,
0.773010f, 0.634393f, -0.049068f, 0.998795f,
-0.831470f, 0.555570f, -0.941544f, -0.336890f,
-0.290285f, -0.956940f, 0.595699f, -0.803208f,
-0.000000f, -1.000000f, 0.857729f, -0.514103f,
0.881921f, 0.471397f, 0.049068f, 0.998795f,
-0.831470f, 0.555570f, -0.903989f, -0.427555f,
-0.098017f, -0.995185f, 0.803208f, -0.595699f,
0.923880f, 0.382683f, 0.146730f, 0.989177f,
-0.773010f, 0.634393f, -0.941544f, -0.336890f,
-0.195090f, -0.980785f, 0.740951f, -0.671559f,
0.956940f, 0.290285f, 0.242980f, 0.970031f,
-0.707107f, 0.707107f, -0.970031f, -0.242980f,
-0.290285f, -0.956940f, 0.671559f, -0.740951f,
0.980785f, 0.195090f, 0.336890f, 0.941544f,
-0.634393f, 0.773010f, -0.989177f, -0.146730f,
-0.382683f, -0.923880f, 0.595699f, -0.803208f,
0.995185f, 0.098017f, 0.427555f, 0.903989f,
-0.555570f, 0.831470f, -0.998795f, -0.049068f,
-0.471397f, -0.881921f, 0.514103f, -0.857729f,
-0.000000f, 1.000000f, -0.903989f, 0.427555f,
-0.773010f, -0.634393f, 0.242980f, -0.970031f,
0.980785f, -0.195090f, 0.595699f, 0.803208f,
-0.471397f, 0.881921f, -0.998795f, -0.049068f,
-0.382683f, -0.923880f, 0.671559f, -0.740951f,
0.956940f, 0.290285f, 0.146730f, 0.989177f,
-0.831470f, 0.555570f, -0.857729f, -0.514103f,
0.098017f, -0.995185f, 0.941544f, -0.336890f,
0.707107f, 0.707107f, -0.336890f, 0.941544f,
-0.995185f, 0.098017f, -0.514103f, -0.857729f,
0.555570f, -0.831470f, 0.989177f, 0.146730f,
0.290285f, 0.956940f, -0.740951f, 0.671559f,
-0.923880f, -0.382683f, -0.049068f, -0.998795f,
0.881921f, -0.471397f, 0.803208f, 0.595699f,
-0.195090f, 0.980785f, -0.970031f, 0.242980f,
-0.634393f, -0.773010f, 0.427555f, -0.903989f,
-0.000000f, -1.000000f, 0.941544f, -0.336890f,
0.634393f, 0.773010f, -0.514103f, 0.857729f,
-0.980785f, -0.195090f, -0.146730f, -0.989177f,
0.881921f, -0.471397f, 0.740951f, 0.671559f,
-0.382683f, 0.923880f, -0.998795f, -0.049068f,
-0.290285f, -0.956940f, 0.803208f, -0.595699f,
0.831470f, 0.555570f, -0.242980f, 0.970031f,
-0.995185f, 0.098017f, -0.427555f, -0.903989f,
0.707107f, -0.707107f, 0.903989f, 0.427555f,
-0.098017f, 0.995185f, -0.970031f, 0.242980f,
-0.555570f, -0.831470f, 0.595699f, -0.803208f,
0.956940f, 0.290285f, 0.049068f, 0.998795f,
-0.923880f, 0.382683f, -0.671559f, -0.740951f,
0.471397f, -0.881921f, 0.989177f, 0.146730f,
0.195090f, 0.980785f, -0.857729f, 0.514103f,
-0.773010f, -0.634393f, 0.336890f, -0.941544f,
-0.000000f, 1.000000f, -0.970031f, 0.242980f,
-0.471397f, -0.881921f, 0.740951f, -0.671559f,
0.831470f, 0.555570f, -0.336890f, 0.941544f,
-0.995185f, -0.098017f, -0.146730f, -0.989177f,
0.923880f, -0.382683f, 0.595699f, 0.803208f,
-0.634393f, 0.773010f, -0.903989f, -0.427555f,
0.195090f, -0.980785f, 0.998795f, -0.049068f,
0.290285f, 0.956940f, -0.857729f, 0.514103f,
-0.707107f, -0.707107f, 0.514103f, -0.857729f,
0.956940f, 0.290285f, -0.049068f, 0.998795f,
-0.980785f, 0.195090f, -0.427555f, -0.903989f,
0.773010f, -0.634393f, 0.803208f, 0.595699f,
-0.382683f, 0.923880f, -0.989177f, -0.146730f,
-0.098017f, -0.995185f, 0.941544f, -0.336890f,
0.555570f, 0.831470f, -0.671559f, 0.740951f,
-0.881921f, -0.471397f, 0.242980f, -0.970031f,
-0.000000f, -1.000000f, 0.989177f, -0.146730f,
0.290285f, 0.956940f, -0.903989f, 0.427555f,
-0.555570f, -0.831470f, 0.740951f, -0.671559f,
0.773010f, 0.634393f, -0.514103f, 0.857729f,
-0.923880f, -0.382683f, 0.242980f, -0.970031f,
0.995185f, 0.098017f, 0.049068f, 0.998795f,
-0.980785f, 0.195090f, -0.336890f, -0.941544f,
0.881921f, -0.471397f, 0.595699f, 0.803208f,
-0.707107f, 0.707107f, -0.803208f, -0.595699f,
0.471397f, -0.881921f, 0.941544f, 0.336890f,
-0.195090f, 0.980785f, -0.998795f, -0.049068f,
-0.098017f, -0.995185f, 0.970031f, -0.242980f,
0.382683f, 0.923880f, -0.857729f, 0.514103f,
-0.634393f, -0.773010f, 0.671559f, -0.740951f,
0.831470f, 0.555570f, -0.427555f, 0.903989f,
-0.956940f, -0.290285f, 0.146730f, -0.989177f,
-0.000000f, 1.000000f, -0.998795f, 0.049068f,
-0.098017f, -0.995185f, 0.989177f, -0.146730f,
0.195090f, 0.980785f, -0.970031f, 0.242980f,
-0.290285f, -0.956940f, 0.941544f, -0.336890f,
0.382683f, 0.923880f, -0.903989f, 0.427555f,
-0.471397f, -0.881921f, 0.857729f, -0.514103f,
0.555570f, 0.831470f, -0.803208f, 0.595699f,
-0.634393f, -0.773010f, 0.740951f, -0.671559f,
0.707107f, 0.707107f, -0.671559f, 0.740951f,
-0.773010f, -0.634393f, 0.595699f, -0.803208f,
0.831470f, 0.555570f, -0.514103f, 0.857729f,
-0.881921f, -0.471397f, 0.427555f, -0.903989f,
0.923880f, 0.382683f, -0.336890f, 0.941544f,
-0.956940f, -0.290285f, 0.242980f, -0.970031f,
0.980785f, 0.195090f, -0.146730f, 0.989177f,
-0.995185f, -0.098017f, 0.049068f, -0.998795f,
0.000000f, -1.000000f, 0.998795f, 0.049068f,
-0.098017f, 0.995185f, -0.989177f, -0.146730f,
0.195090f, -0.980785f, 0.970031f, 0.242980f,
-0.290285f, 0.956940f, -0.941544f, -0.336890f,
0.382683f, -0.923880f, 0.903989f, 0.427555f,
-0.471397f, 0.881921f, -0.857729f, -0.514103f,
0.555570f, -0.831470f, 0.803208f, 0.595699f,
-0.634393f, 0.773010f, -0.740951f, -0.671559f,
0.707107f, -0.707107f, 0.671559f, 0.740951f,
-0.773010f, 0.634393f, -0.595699f, -0.803208f,
0.831470f, -0.555570f, 0.514103f, 0.857729f,
-0.881921f, 0.471397f, -0.427555f, -0.903989f,
0.923880f, -0.382683f, 0.336890f, 0.941544f,
-0.956940f, 0.290285f, -0.242980f, -0.970031f,
0.980785f, -0.195090f, 0.146730f, 0.989177f,
-0.995185f, 0.098017f, -0.049068f, -0.998795f,
-0.000000f, 1.000000f, -0.989177f, -0.146730f,
0.290285f, -0.956940f, 0.903989f, 0.427555f,
-0.555570f, 0.831470f, -0.740951f, -0.671559f,
0.773010f, -0.634393f, 0.514103f, 0.857729f,
-0.923880f, 0.382683f, -0.242980f, -0.970031f,
0.995185f, -0.098017f, -0.049068f, 0.998795f,
-0.980785f, -0.195090f, 0.336890f, -0.941544f,
0.881921f, 0.471397f, -0.595699f, 0.803208f,
-0.707107f, -0.707107f, 0.803208f, -0.595699f,
0.471397f, 0.881921f, -0.941544f, 0.336890f,
-0.195090f, -0.980785f, 0.998795f, -0.049068f,
-0.098017f, 0.995185f, -0.970031f, -0.242980f,
0.382683f, -0.923880f, 0.857729f, 0.514103f,
-0.634393f, 0.773010f, -0.671559f, -0.740951f,
0.831470f, -0.555570f, 0.427555f, 0.903989f,
-0.956940f, 0.290285f, -0.146730f, -0.989177f,
0.000000f, -1.000000f, 0.970031f, 0.242980f,
-0.471397f, 0.881921f, -0.740951f, -0.671559f,
0.831470f, -0.555570f, 0.336890f, 0.941544f,
-0.995185f, 0.098017f, 0.146730f, -0.989177f,
0.923880f, 0.382683f, -0.595699f, 0.803208f,
-0.634393f, -0.773010f, 0.903989f, -0.427555f,
0.195090f, 0.980785f, -0.998795f, -0.049068f,
0.290285f, -0.956940f, 0.857729f, 0.514103f,
-0.707107f, 0.707107f, -0.514103f, -0.857729f,
0.956940f, -0.290285f, 0.049068f, 0.998795f,
-0.980785f, -0.195090f, 0.427555f, -0.903989f,
0.773010f, 0.634393f, -0.803208f, 0.595699f,
-0.382683f, -0.923880f, 0.989177f, -0.146730f,
-0.098017f, 0.995185f, -0.941544f, -0.336890f,
0.555570f, -0.831470f, 0.671559f, 0.740951f,
-0.881921f, 0.471397f, -0.242980f, -0.970031f,
-0.000000f, 1.000000f, -0.941544f, -0.336890f,
0.634393f, -0.773010f, 0.514103f, 0.857729f,
-0.980785f, 0.195090f, 0.146730f, -0.989177f,
0.881921f, 0.471397f, -0.740951f, 0.671559f,
-0.382683f, -0.923880f, 0.998795f, -0.049068f,
-0.290285f, 0.956940f, -0.803208f, -0.595699f,
0.831470f, -0.555570f, 0.242980f, 0.970031f,
-0.995185f, -0.098017f, 0.427555f, -0.903989f,
0.707107f, 0.707107f, -0.903989f, 0.427555f,
-0.098017f, -0.995185f, 0.970031f, 0.242980f,
-0.555570f, 0.831470f, -0.595699f, -0.803208f,
0.956940f, -0.290285f, -0.049068f, 0.998795f,
-0.923880f, -0.382683f, 0.671559f, -0.740951f,
0.471397f, 0.881921f, -0.989177f, 0.146730f,
0.195090f, -0.980785f, 0.857729f, 0.514103f,
-0.773010f, 0.634393f, -0.336890f, -0.941544f,
0.000000f, -1.000000f, 0.903989f, 0.427555f,
-0.773010f, 0.634393f, -0.242980f, -0.970031f,
0.980785f, 0.195090f, -0.595699f, 0.803208f,
-0.471397f, -0.881921f, 0.998795f, -0.049068f,
-0.382683f, 0.923880f, -0.671559f, -0.740951f,
0.956940f, -0.290285f, -0.146730f, 0.989177f,
-0.831470f, -0.555570f, 0.857729f, -0.514103f,
0.098017f, 0.995185f, -0.941544f, -0.336890f,
0.707107f, -0.707107f, 0.336890f, 0.941544f,
-0.995185f, -0.098017f, 0.514103f, -0.857729f,
0.555570f, 0.831470f, -0.989177f, 0.146730f,
0.290285f, -0.956940f, 0.740951f, 0.671559f,
-0.923880f, 0.382683f, 0.049068f, -0.998795f,
0.881921f, 0.471397f, -0.803208f, 0.595699f,
-0.195090f, -0.980785f, 0.970031f, 0.242980f,
-0.634393f, 0.773010f, -0.427555f, -0.903989f,
-0.000000f, 1.000000f, -0.857729f, -0.514103f,
0.881921f, -0.471397f, -0.049068f, 0.998795f,
-0.831470f, -0.555570f, 0.903989f, -0.427555f,
-0.098017f, 0.995185f, -0.803208f, -0.595699f,
0.923880f, -0.382683f, -0.146730f, 0.989177f,
-0.773010f, -0.634393f, 0.941544f, -0.336890f,
-0.195090f, 0.980785f, -0.740951f, -0.671559f,
0.956940f, -0.290285f, -0.242980f, 0.970031f,
-0.707107f, -0.707107f, 0.970031f, -0.242980f,
-0.290285f, 0.956940f, -0.671559f, -0.740951f,
0.980785f, -0.195090f, -0.336890f, 0.941544f,
-0.634393f, -0.773010f, 0.989177f, -0.146730f,
-0.382683f, 0.923880f, -0.595699f, -0.803208f,
0.995185f, -0.098017f, -0.427555f, 0.903989f,
-0.555570f, -0.831470f, 0.998795f, -0.049068f,
-0.471397f, 0.881921f, -0.514103f, -0.857729f,
0.000000f, -1.000000f, 0.803208f, 0.595699f,
-0.956940f, 0.290285f, 0.336890f, -0.941544f,
0.555570f, 0.831470f, -0.998795f, -0.049068f,
0.634393f, -0.773010f, 0.242980f, 0.970031f,
-0.923880f, -0.382683f, 0.857729f, -0.514103f,
-0.098017f, 0.995185f, -0.740951f, -0.671559f,
0.980785f, -0.195090f, -0.427555f, 0.903989f,
-0.471397f, -0.881921f, 0.989177f, 0.146730f,
-0.707107f, 0.707107f, -0.146730f, -0.989177f,
0.881921f, 0.471397f, -0.903989f, 0.427555f,
0.195090f, -0.980785f, 0.671559f, 0.740951f,
-0.995185f, 0.098017f, 0.514103f, -0.857729f,
0.382683f, 0.923880f, -0.970031f, -0.242980f,
0.773010f, -0.634393f, 0.049068f, 0.998795f,
-0.831470f, -0.555570f, 0.941544f, -0.336890f,
-0.290285f, 0.956940f, -0.595699f, -0.803208f,
0.000000f, 1.000000f, -0.740951f, -0.671559f,
0.995185f, -0.098017f, -0.595699f, 0.803208f,
-0.195090f, -0.980785f, 0.857729f, 0.514103f,
-0.956940f, 0.290285f, 0.427555f, -0.903989f,
0.382683f, 0.923880f, -0.941544f, -0.336890f,
0.881921f, -0.471397f, -0.242980f, 0.970031f,
-0.555570f, -0.831470f, 0.989177f, 0.146730f,
-0.773010f, 0.634393f, 0.049068f, -0.998795f,
0.707107f, 0.707107f, -0.998795f, 0.049068f,
0.634393f, -0.773010f, 0.146730f, 0.989177f,
-0.831470f, -0.555570f, 0.970031f, -0.242980f,
-0.471397f, 0.881921f, -0.336890f, -0.941544f,
0.923880f, 0.382683f, -0.903989f, 0.427555f,
0.290285f, -0.956940f, 0.514103f, 0.857729f,
-0.980785f, -0.195090f, 0.803208f, -0.595699f,
-0.098017f, 0.995185f, -0.671559f, -0.740951f,
0.000000f, -1.000000f, 0.671559f, 0.740951f,
-0.995185f, -0.098017f, 0.803208f, -0.595699f,
-0.195090f, 0.980785f, -0.514103f, -0.857729f,
0.956940f, 0.290285f, -0.903989f, 0.427555f,
0.382683f, -0.923880f, 0.336890f, 0.941544f,
-0.881921f, -0.471397f, 0.970031f, -0.242980f,
-0.555570f, 0.831470f, -0.146730f, -0.989177f,
0.773010f, 0.634393f, -0.998795f, 0.049068f,
0.707107f, -0.707107f, -0.049068f, 0.998795f,
-0.634393f, -0.773010f, 0.989177f, 0.146730f,
-0.831470f, 0.555570f, 0.242980f, -0.970031f,
0.471397f, 0.881921f, -0.941544f, -0.336890f,
0.923880f, -0.382683f, -0.427555f, 0.903989f,
-0.290285f, -0.956940f, 0.857729f, 0.514103f,
-0.980785f, 0.195090f, 0.595699f, -0.803208f,
0.098017f, 0.995185f, -0.740951f, -0.671559f,
-0.000000f, 1.000000f, -0.595699f, -0.803208f,
0.956940f, 0.290285f, -0.941544f, 0.336890f,
0.555570f, -0.831470f, 0.049068f, 0.998795f,
-0.634393f, -0.773010f, 0.970031f, 0.242980f,
-0.923880f, 0.382683f, 0.514103f, -0.857729f,
0.098017f, 0.995185f, -0.671559f, -0.740951f,
0.980785f, 0.195090f, -0.903989f, 0.427555f,
0.471397f, -0.881921f, 0.146730f, 0.989177f,
-0.707107f, -0.707107f, 0.989177f, 0.146730f,
-0.881921f, 0.471397f, 0.427555f, -0.903989f,
0.195090f, 0.980785f, -0.740951f, -0.671559f,
0.995185f, 0.098017f, -0.857729f, 0.514103f,
0.382683f, -0.923880f, 0.242980f, 0.970031f,
-0.773010f, -0.634393f, 0.998795f, 0.049068f,
-0.831470f, 0.555570f, 0.336890f, -0.941544f,
0.290285f, 0.956940f, -0.803208f, -0.595699f,
0.000000f, -1.000000f, 0.514103f, 0.857729f,
-0.881921f, -0.471397f, 0.998795f, -0.049068f,
-0.831470f, 0.555570f, 0.427555f, -0.903989f,
0.098017f, 0.995185f, -0.595699f, -0.803208f,
0.923880f, 0.382683f, -0.989177f, 0.146730f,
0.773010f, -0.634393f, -0.336890f, 0.941544f,
-0.195090f, -0.980785f, 0.671559f, 0.740951f,
-0.956940f, -0.290285f, 0.970031f, -0.242980f,
-0.707107f, 0.707107f, 0.242980f, -0.970031f,
0.290285f, 0.956940f, -0.740951f, -0.671559f,
0.980785f, 0.195090f, -0.941544f, 0.336890f,
0.634393f, -0.773010f, -0.146730f, 0.989177f,
-0.382683f, -0.923880f, 0.803208f, 0.595699f,
-0.995185f, -0.098017f, 0.903989f, -0.427555f,
-0.555570f, 0.831470f, 0.049068f, -0.998795f,
0.471397f, 0.881921f, -0.857729f, -0.514103f,
0.000000f, 1.000000f, -0.427555f, -0.903989f,
0.773010f, 0.634393f, -0.970031f, -0.242980f,
0.980785f, -0.195090f, -0.803208f, 0.595699f,
0.471397f, -0.881921f, -0.049068f, 0.998795f,
-0.382683f, -0.923880f, 0.740951f, 0.671559f,
-0.956940f, -0.290285f, 0.989177f, -0.146730f,
-0.831470f, 0.555570f, 0.514103f, -0.857729f,
-0.098017f, 0.995185f, -0.336890f, -0.941544f,
0.707107f, 0.707107f, -0.941544f, -0.336890f,
0.995185f, -0.098017f, -0.857729f, 0.514103f,
0.555570f, -0.831470f, -0.146730f, 0.989177f,
-0.290285f, -0.956940f, 0.671559f, 0.740951f,
-0.923880f, -0.382683f, 0.998795f, -0.049068f,
-0.881921f, 0.471397f, 0.595699f, -0.803208f,
-0.195090f, 0.980785f, -0.242980f, -0.970031f,
0.634393f, 0.773010f, -0.903989f, -0.427555f,
0.000000f, -1.000000f, 0.336890f, 0.941544f,
-0.634393f, -0.773010f, 0.857729f, 0.514103f,
-0.980785f, -0.195090f, 0.989177f, -0.146730f,
-0.881921f, 0.471397f, 0.671559f, -0.740951f,
-0.382683f, 0.923880f, 0.049068f, -0.998795f,
0.290285f, 0.956940f, -0.595699f, -0.803208f,
0.831470f, 0.555570f, -0.970031f, -0.242980f,
0.995185f, -0.098017f, -0.903989f, 0.427555f,
0.707107f, -0.707107f, -0.427555f, 0.903989f,
0.098017f, -0.995185f, 0.242980f, 0.970031f,
-0.555570f, -0.831470f, 0.803208f, 0.595699f,
-0.956940f, -0.290285f, 0.998795f, -0.049068f,
-0.923880f, 0.382683f, 0.740951f, -0.671559f,
-0.471397f, 0.881921f, 0.146730f, -0.989177f,
0.195090f, 0.980785f, -0.514103f, -0.857729f,
0.773010f, 0.634393f, -0.941544f, -0.336890f,
-0.000000f, 1.000000f, -0.242980f, -0.970031f,
0.471397f, 0.881921f, -0.671559f, -0.740951f,
0.831470f, 0.555570f, -0.941544f, -0.336890f,
0.995185f, 0.098017f, -0.989177f, 0.146730f,
0.923880f, -0.382683f, -0.803208f, 0.595699f,
0.634393f, -0.773010f, -0.427555f, 0.903989f,
0.195090f, -0.980785f, 0.049068f, 0.998795f,
-0.290285f, -0.956940f, 0.514103f, 0.857729f,
-0.707107f, -0.707107f, 0.857729f, 0.514103f,
-0.956940f, -0.290285f, 0.998795f, 0.049068f,
-0.980785f, 0.195090f, 0.903989f, -0.427555f,
-0.773010f, 0.634393f, 0.595699f, -0.803208f,
-0.382683f, 0.923880f, 0.146730f, -0.989177f,
0.098017f, 0.995185f, -0.336890f, -0.941544f,
0.555570f, 0.831470f, -0.740951f, -0.671559f,
0.881921f, 0.471397f, -0.970031f, -0.242980f,
0.000000f, -1.000000f, 0.146730f, 0.989177f,
-0.290285f, -0.956940f, 0.427555f, 0.903989f,
-0.555570f, -0.831470f, 0.671559f, 0.740951f,
-0.773010f, -0.634393f, 0.857729f, 0.514103f,
-0.923880f, -0.382683f, 0.970031f, 0.242980f,
-0.995185f, -0.098017f, 0.998795f, -0.049068f,
-0.980785f, 0.195090f, 0.941544f, -0.336890f,
-0.881921f, 0.471397f, 0.803208f, -0.595699f,
-0.707107f, 0.707107f, 0.595699f, -0.803208f,
-0.471397f, 0.881921f, 0.336890f, -0.941544f,
-0.195090f, 0.980785f, 0.049068f, -0.998795f,
0.098017f, 0.995185f, -0.242980f, -0.970031f,
0.382683f, 0.923880f, -0.514103f, -0.857729f,
0.634393f, 0.773010f, -0.740951f, -0.671559f,
0.831470f, 0.555570f, -0.903989f, -0.427555f,
0.956940f, 0.290285f, -0.989177f, -0.146730f,
0.000000f, 1.000000f, -0.049068f, -0.998795f,
0.098017f, 0.995185f, -0.146730f, -0.989177f,
0.195090f, 0.980785f, -0.242980f, -0.970031f,
0.290285f, 0.956940f, -0.336890f, -0.941544f,
0.382683f, 0.923880f, -0.427555f, -0.903989f,
0.471397f, 0.881921f, -0.514103f, -0.857729f,
0.555570f, 0.831470f, -0.595699f, -0.803208f,
0.634393f, 0.773010f, -0.671559f, -0.740951f,
0.707107f, 0.707107f, -0.740951f, -0.671559f,
0.773010f, 0.634393f, -0.803208f, -0.595699f,
0.831470f, 0.555570f, -0.857729f, -0.514103f,
0.881921f, 0.471397f, -0.903989f, -0.427555f,
0.923880f, 0.382683f, -0.941544f, -0.336890f,
0.956940f, 0.290285f, -0.970031f, -0.242980f,
0.980785f, 0.195090f, -0.989177f, -0.146730f,
0.995185f, 0.098017f, -0.998795f, -0.049068f,
};
const FLOAT32 analy_cos_sin_tab_kl_40 [40 * 40 * 2] = {
0.000000f, -1.000000f, 0.039260f, -0.999229f,
0.078459f, -0.996917f, 0.117537f, -0.993068f,
0.156434f, -0.987688f, 0.195090f, -0.980785f,
0.233445f, -0.972370f, 0.271440f, -0.962455f,
0.309017f, -0.951057f, 0.346117f, -0.938191f,
0.382683f, -0.923880f, 0.418660f, -0.908143f,
0.453990f, -0.891007f, 0.488621f, -0.872496f,
0.522499f, -0.852640f, 0.555570f, -0.831470f,
0.587785f, -0.809017f, 0.619094f, -0.785317f,
0.649448f, -0.760406f, 0.678801f, -0.734322f,
0.707107f, -0.707107f, 0.734322f, -0.678801f,
0.760406f, -0.649448f, 0.785317f, -0.619094f,
0.809017f, -0.587785f, 0.831470f, -0.555570f,
0.852640f, -0.522499f, 0.872496f, -0.488621f,
0.891007f, -0.453990f, 0.908143f, -0.418660f,
0.923880f, -0.382683f, 0.938191f, -0.346117f,
0.951057f, -0.309017f, 0.962455f, -0.271440f,
0.972370f, -0.233445f, 0.980785f, -0.195090f,
0.987688f, -0.156434f, 0.993068f, -0.117537f,
0.996917f, -0.078459f, 0.999229f, -0.039260f,
-0.000000f, 1.000000f, -0.117537f, 0.993068f,
-0.233445f, 0.972370f, -0.346117f, 0.938191f,
-0.453990f, 0.891007f, -0.555570f, 0.831470f,
-0.649448f, 0.760406f, -0.734322f, 0.678801f,
-0.809017f, 0.587785f, -0.872496f, 0.488621f,
-0.923880f, 0.382683f, -0.962455f, 0.271440f,
-0.987688f, 0.156434f, -0.999229f, 0.039260f,
-0.996917f, -0.078459f, -0.980785f, -0.195090f,
-0.951057f, -0.309017f, -0.908143f, -0.418660f,
-0.852640f, -0.522499f, -0.785317f, -0.619094f,
-0.707107f, -0.707107f, -0.619094f, -0.785317f,
-0.522499f, -0.852640f, -0.418660f, -0.908143f,
-0.309017f, -0.951057f, -0.195090f, -0.980785f,
-0.078459f, -0.996917f, 0.039260f, -0.999229f,
0.156434f, -0.987688f, 0.271440f, -0.962455f,
0.382683f, -0.923880f, 0.488621f, -0.872496f,
0.587785f, -0.809017f, 0.678801f, -0.734322f,
0.760406f, -0.649448f, 0.831470f, -0.555570f,
0.891007f, -0.453990f, 0.938191f, -0.346117f,
0.972370f, -0.233445f, 0.993068f, -0.117537f,
0.000000f, -1.000000f, 0.195090f, -0.980785f,
0.382683f, -0.923880f, 0.555570f, -0.831470f,
0.707107f, -0.707107f, 0.831470f, -0.555570f,
0.923880f, -0.382683f, 0.980785f, -0.195090f,
1.000000f, 0.000000f, 0.980785f, 0.195090f,
0.923880f, 0.382683f, 0.831470f, 0.555570f,
0.707107f, 0.707107f, 0.555570f, 0.831470f,
0.382683f, 0.923880f, 0.195090f, 0.980785f,
-0.000000f, 1.000000f, -0.195090f, 0.980785f,
-0.382683f, 0.923880f, -0.555570f, 0.831470f,
-0.707107f, 0.707107f, -0.831470f, 0.555570f,
-0.923880f, 0.382683f, -0.980785f, 0.195090f,
-1.000000f, -0.000000f, -0.980785f, -0.195090f,
-0.923880f, -0.382683f, -0.831470f, -0.555570f,
-0.707107f, -0.707107f, -0.555570f, -0.831470f,
-0.382683f, -0.923880f, -0.195090f, -0.980785f,
0.000000f, -1.000000f, 0.195090f, -0.980785f,
0.382683f, -0.923880f, 0.555570f, -0.831470f,
0.707107f, -0.707107f, 0.831470f, -0.555570f,
0.923880f, -0.382683f, 0.980785f, -0.195090f,
-0.000000f, 1.000000f, -0.271440f, 0.962455f,
-0.522499f, 0.852640f, -0.734322f, 0.678801f,
-0.891007f, 0.453990f, -0.980785f, 0.195090f,
-0.996917f, -0.078459f, -0.938191f, -0.346117f,
-0.809017f, -0.587785f, -0.619094f, -0.785317f,
-0.382683f, -0.923880f, -0.117537f, -0.993068f,
0.156434f, -0.987688f, 0.418660f, -0.908143f,
0.649448f, -0.760406f, 0.831470f, -0.555570f,
0.951057f, -0.309017f, 0.999229f, -0.039260f,
0.972370f, 0.233445f, 0.872496f, 0.488621f,
0.707107f, 0.707107f, 0.488621f, 0.872496f,
0.233445f, 0.972370f, -0.039260f, 0.999229f,
-0.309017f, 0.951057f, -0.555570f, 0.831470f,
-0.760406f, 0.649448f, -0.908143f, 0.418660f,
-0.987688f, 0.156434f, -0.993068f, -0.117537f,
-0.923880f, -0.382683f, -0.785317f, -0.619094f,
-0.587785f, -0.809017f, -0.346117f, -0.938191f,
-0.078459f, -0.996917f, 0.195090f, -0.980785f,
0.453990f, -0.891007f, 0.678801f, -0.734322f,
0.852640f, -0.522499f, 0.962455f, -0.271440f,
0.000000f, -1.000000f, 0.346117f, -0.938191f,
0.649448f, -0.760406f, 0.872496f, -0.488621f,
0.987688f, -0.156434f, 0.980785f, 0.195090f,
0.852640f, 0.522499f, 0.619094f, 0.785317f,
0.309017f, 0.951057f, -0.039260f, 0.999229f,
-0.382683f, 0.923880f, -0.678801f, 0.734322f,
-0.891007f, 0.453990f, -0.993068f, 0.117537f,
-0.972370f, -0.233445f, -0.831470f, -0.555570f,
-0.587785f, -0.809017f, -0.271440f, -0.962455f,
0.078459f, -0.996917f, 0.418660f, -0.908143f,
0.707107f, -0.707107f, 0.908143f, -0.418660f,
0.996917f, -0.078459f, 0.962455f, 0.271440f,
0.809017f, 0.587785f, 0.555570f, 0.831470f,
0.233445f, 0.972370f, -0.117537f, 0.993068f,
-0.453990f, 0.891007f, -0.734322f, 0.678801f,
-0.923880f, 0.382683f, -0.999229f, 0.039260f,
-0.951057f, -0.309017f, -0.785317f, -0.619094f,
-0.522499f, -0.852640f, -0.195090f, -0.980785f,
0.156434f, -0.987688f, 0.488621f, -0.872496f,
0.760406f, -0.649448f, 0.938191f, -0.346117f,
-0.000000f, 1.000000f, -0.418660f, 0.908143f,
-0.760406f, 0.649448f, -0.962455f, 0.271440f,
-0.987688f, -0.156434f, -0.831470f, -0.555570f,
-0.522499f, -0.852640f, -0.117537f, -0.993068f,
0.309017f, -0.951057f, 0.678801f, -0.734322f,
0.923880f, -0.382683f, 0.999229f, 0.039260f,
0.891007f, 0.453990f, 0.619094f, 0.785317f,
0.233445f, 0.972370f, -0.195090f, 0.980785f,
-0.587785f, 0.809017f, -0.872496f, 0.488621f,
-0.996917f, 0.078459f, -0.938191f, -0.346117f,
-0.707107f, -0.707107f, -0.346117f, -0.938191f,
0.078459f, -0.996917f, 0.488621f, -0.872496f,
0.809017f, -0.587785f, 0.980785f, -0.195090f,
0.972370f, 0.233445f, 0.785317f, 0.619094f,
0.453990f, 0.891007f, 0.039260f, 0.999229f,
-0.382683f, 0.923880f, -0.734322f, 0.678801f,
-0.951057f, 0.309017f, -0.993068f, -0.117537f,
-0.852640f, -0.522499f, -0.555570f, -0.831470f,
-0.156434f, -0.987688f, 0.271440f, -0.962455f,
0.649448f, -0.760406f, 0.908143f, -0.418660f,
-0.000000f, -1.000000f, 0.488621f, -0.872496f,
0.852640f, -0.522499f, 0.999229f, -0.039260f,
0.891007f, 0.453990f, 0.555570f, 0.831470f,
0.078459f, 0.996917f, -0.418660f, 0.908143f,
-0.809017f, 0.587785f, -0.993068f, 0.117537f,
-0.923880f, -0.382683f, -0.619094f, -0.785317f,
-0.156434f, -0.987688f, 0.346117f, -0.938191f,
0.760406f, -0.649448f, 0.980785f, -0.195090f,
0.951057f, 0.309017f, 0.678801f, 0.734322f,
0.233445f, 0.972370f, -0.271440f, 0.962455f,
-0.707107f, 0.707107f, -0.962455f, 0.271440f,
-0.972370f, -0.233445f, -0.734322f, -0.678801f,
-0.309017f, -0.951057f, 0.195090f, -0.980785f,
0.649448f, -0.760406f, 0.938191f, -0.346117f,
0.987688f, 0.156434f, 0.785317f, 0.619094f,
0.382683f, 0.923880f, -0.117537f, 0.993068f,
-0.587785f, 0.809017f, -0.908143f, 0.418660f,
-0.996917f, -0.078459f, -0.831470f, -0.555570f,
-0.453990f, -0.891007f, 0.039260f, -0.999229f,
0.522499f, -0.852640f, 0.872496f, -0.488621f,
-0.000000f, 1.000000f, -0.555570f, 0.831470f,
-0.923880f, 0.382683f, -0.980785f, -0.195090f,
-0.707107f, -0.707107f, -0.195090f, -0.980785f,
0.382683f, -0.923880f, 0.831470f, -0.555570f,
1.000000f, 0.000000f, 0.831470f, 0.555570f,
0.382683f, 0.923880f, -0.195090f, 0.980785f,
-0.707107f, 0.707107f, -0.980785f, 0.195090f,
-0.923880f, -0.382683f, -0.555570f, -0.831470f,
0.000000f, -1.000000f, 0.555570f, -0.831470f,
0.923880f, -0.382683f, 0.980785f, 0.195090f,
0.707107f, 0.707107f, 0.195090f, 0.980785f,
-0.382683f, 0.923880f, -0.831470f, 0.555570f,
-1.000000f, -0.000000f, -0.831470f, -0.555570f,
-0.382683f, -0.923880f, 0.195090f, -0.980785f,
0.707107f, -0.707107f, 0.980785f, -0.195090f,
0.923880f, 0.382683f, 0.555570f, 0.831470f,
-0.000000f, 1.000000f, -0.555570f, 0.831470f,
-0.923880f, 0.382683f, -0.980785f, -0.195090f,
-0.707107f, -0.707107f, -0.195090f, -0.980785f,
0.382683f, -0.923880f, 0.831470f, -0.555570f,
-0.000000f, -1.000000f, 0.619094f, -0.785317f,
0.972370f, -0.233445f, 0.908143f, 0.418660f,
0.453990f, 0.891007f, -0.195090f, 0.980785f,
-0.760406f, 0.649448f, -0.999229f, 0.039260f,
-0.809017f, -0.587785f, -0.271440f, -0.962455f,
0.382683f, -0.923880f, 0.872496f, -0.488621f,
0.987688f, 0.156434f, 0.678801f, 0.734322f,
0.078459f, 0.996917f, -0.555570f, 0.831470f,
-0.951057f, 0.309017f, -0.938191f, -0.346117f,
-0.522499f, -0.852640f, 0.117537f, -0.993068f,
0.707107f, -0.707107f, 0.993068f, -0.117537f,
0.852640f, 0.522499f, 0.346117f, 0.938191f,
-0.309017f, 0.951057f, -0.831470f, 0.555570f,
-0.996917f, -0.078459f, -0.734322f, -0.678801f,
-0.156434f, -0.987688f, 0.488621f, -0.872496f,
0.923880f, -0.382683f, 0.962455f, 0.271440f,
0.587785f, 0.809017f, -0.039260f, 0.999229f,
-0.649448f, 0.760406f, -0.980785f, 0.195090f,
-0.891007f, -0.453990f, -0.418660f, -0.908143f,
0.233445f, -0.972370f, 0.785317f, -0.619094f,
-0.000000f, 1.000000f, -0.678801f, 0.734322f,
-0.996917f, 0.078459f, -0.785317f, -0.619094f,
-0.156434f, -0.987688f, 0.555570f, -0.831470f,
0.972370f, -0.233445f, 0.872496f, 0.488621f,
0.309017f, 0.951057f, -0.418660f, 0.908143f,
-0.923880f, 0.382683f, -0.938191f, -0.346117f,
-0.453990f, -0.891007f, 0.271440f, -0.962455f,
0.852640f, -0.522499f, 0.980785f, 0.195090f,
0.587785f, 0.809017f, -0.117537f, 0.993068f,
-0.760406f, 0.649448f, -0.999229f, -0.039260f,
-0.707107f, -0.707107f, -0.039260f, -0.999229f,
0.649448f, -0.760406f, 0.993068f, -0.117537f,
0.809017f, 0.587785f, 0.195090f, 0.980785f,
-0.522499f, 0.852640f, -0.962455f, 0.271440f,
-0.891007f, -0.453990f, -0.346117f, -0.938191f,
0.382683f, -0.923880f, 0.908143f, -0.418660f,
0.951057f, 0.309017f, 0.488621f, 0.872496f,
-0.233445f, 0.972370f, -0.831470f, 0.555570f,
-0.987688f, -0.156434f, -0.619094f, -0.785317f,
0.078459f, -0.996917f, 0.734322f, -0.678801f,
-0.000000f, -1.000000f, 0.734322f, -0.678801f,
0.996917f, 0.078459f, 0.619094f, 0.785317f,
-0.156434f, 0.987688f, -0.831470f, 0.555570f,
-0.972370f, -0.233445f, -0.488621f, -0.872496f,
0.309017f, -0.951057f, 0.908143f, -0.418660f,
0.923880f, 0.382683f, 0.346117f, 0.938191f,
-0.453990f, 0.891007f, -0.962455f, 0.271440f,
-0.852640f, -0.522499f, -0.195090f, -0.980785f,
0.587785f, -0.809017f, 0.993068f, -0.117537f,
0.760406f, 0.649448f, 0.039260f, 0.999229f,
-0.707107f, 0.707107f, -0.999229f, -0.039260f,
-0.649448f, -0.760406f, 0.117537f, -0.993068f,
0.809017f, -0.587785f, 0.980785f, 0.195090f,
0.522499f, 0.852640f, -0.271440f, 0.962455f,
-0.891007f, 0.453990f, -0.938191f, -0.346117f,
-0.382683f, -0.923880f, 0.418660f, -0.908143f,
0.951057f, -0.309017f, 0.872496f, 0.488621f,
0.233445f, 0.972370f, -0.555570f, 0.831470f,
-0.987688f, 0.156434f, -0.785317f, -0.619094f,
-0.078459f, -0.996917f, 0.678801f, -0.734322f,
-0.000000f, 1.000000f, -0.785317f, 0.619094f,
-0.972370f, -0.233445f, -0.418660f, -0.908143f,
0.453990f, -0.891007f, 0.980785f, -0.195090f,
0.760406f, 0.649448f, -0.039260f, 0.999229f,
-0.809017f, 0.587785f, -0.962455f, -0.271440f,
-0.382683f, -0.923880f, 0.488621f, -0.872496f,
0.987688f, -0.156434f, 0.734322f, 0.678801f,
-0.078459f, 0.996917f, -0.831470f, 0.555570f,
-0.951057f, -0.309017f, -0.346117f, -0.938191f,
0.522499f, -0.852640f, 0.993068f, -0.117537f,
0.707107f, 0.707107f, -0.117537f, 0.993068f,
-0.852640f, 0.522499f, -0.938191f, -0.346117f,
-0.309017f, -0.951057f, 0.555570f, -0.831470f,
0.996917f, -0.078459f, 0.678801f, 0.734322f,
-0.156434f, 0.987688f, -0.872496f, 0.488621f,
-0.923880f, -0.382683f, -0.271440f, -0.962455f,
0.587785f, -0.809017f, 0.999229f, -0.039260f,
0.649448f, 0.760406f, -0.195090f, 0.980785f,
-0.891007f, 0.453990f, -0.908143f, -0.418660f,
-0.233445f, -0.972370f, 0.619094f, -0.785317f,
-0.000000f, -1.000000f, 0.831470f, -0.555570f,
0.923880f, 0.382683f, 0.195090f, 0.980785f,
-0.707107f, 0.707107f, -0.980785f, -0.195090f,
-0.382683f, -0.923880f, 0.555570f, -0.831470f,
1.000000f, 0.000000f, 0.555570f, 0.831470f,
-0.382683f, 0.923880f, -0.980785f, 0.195090f,
-0.707107f, -0.707107f, 0.195090f, -0.980785f,
0.923880f, -0.382683f, 0.831470f, 0.555570f,
-0.000000f, 1.000000f, -0.831470f, 0.555570f,
-0.923880f, -0.382683f, -0.195090f, -0.980785f,
0.707107f, -0.707107f, 0.980785f, 0.195090f,
0.382683f, 0.923880f, -0.555570f, 0.831470f,
-1.000000f, -0.000000f, -0.555570f, -0.831470f,
0.382683f, -0.923880f, 0.980785f, -0.195090f,
0.707107f, 0.707107f, -0.195090f, 0.980785f,
-0.923880f, 0.382683f, -0.831470f, -0.555570f,
0.000000f, -1.000000f, 0.831470f, -0.555570f,
0.923880f, 0.382683f, 0.195090f, 0.980785f,
-0.707107f, 0.707107f, -0.980785f, -0.195090f,
-0.382683f, -0.923880f, 0.555570f, -0.831470f,
-0.000000f, 1.000000f, -0.872496f, 0.488621f,
-0.852640f, -0.522499f, 0.039260f, -0.999229f,
0.891007f, -0.453990f, 0.831470f, 0.555570f,
-0.078459f, 0.996917f, -0.908143f, 0.418660f,
-0.809017f, -0.587785f, 0.117537f, -0.993068f,
0.923880f, -0.382683f, 0.785317f, 0.619094f,
-0.156434f, 0.987688f, -0.938191f, 0.346117f,
-0.760406f, -0.649448f, 0.195090f, -0.980785f,
0.951057f, -0.309017f, 0.734322f, 0.678801f,
-0.233445f, 0.972370f, -0.962455f, 0.271440f,
-0.707107f, -0.707107f, 0.271440f, -0.962455f,
0.972370f, -0.233445f, 0.678801f, 0.734322f,
-0.309017f, 0.951057f, -0.980785f, 0.195090f,
-0.649448f, -0.760406f, 0.346117f, -0.938191f,
0.987688f, -0.156434f, 0.619094f, 0.785317f,
-0.382683f, 0.923880f, -0.993068f, 0.117537f,
-0.587785f, -0.809017f, 0.418660f, -0.908143f,
0.996917f, -0.078459f, 0.555570f, 0.831470f,
-0.453990f, 0.891007f, -0.999229f, 0.039260f,
-0.522499f, -0.852640f, 0.488621f, -0.872496f,
-0.000000f, -1.000000f, 0.908143f, -0.418660f,
0.760406f, 0.649448f, -0.271440f, 0.962455f,
-0.987688f, 0.156434f, -0.555570f, -0.831470f,
0.522499f, -0.852640f, 0.993068f, 0.117537f,
0.309017f, 0.951057f, -0.734322f, 0.678801f,
-0.923880f, -0.382683f, -0.039260f, -0.999229f,
0.891007f, -0.453990f, 0.785317f, 0.619094f,
-0.233445f, 0.972370f, -0.980785f, 0.195090f,
-0.587785f, -0.809017f, 0.488621f, -0.872496f,
0.996917f, 0.078459f, 0.346117f, 0.938191f,
-0.707107f, 0.707107f, -0.938191f, -0.346117f,
-0.078459f, -0.996917f, 0.872496f, -0.488621f,
0.809017f, 0.587785f, -0.195090f, 0.980785f,
-0.972370f, 0.233445f, -0.619094f, -0.785317f,
0.453990f, -0.891007f, 0.999229f, 0.039260f,
0.382683f, 0.923880f, -0.678801f, 0.734322f,
-0.951057f, -0.309017f, -0.117537f, -0.993068f,
0.852640f, -0.522499f, 0.831470f, 0.555570f,
-0.156434f, 0.987688f, -0.962455f, 0.271440f,
-0.649448f, -0.760406f, 0.418660f, -0.908143f,
-0.000000f, 1.000000f, -0.938191f, 0.346117f,
-0.649448f, -0.760406f, 0.488621f, -0.872496f,
0.987688f, 0.156434f, 0.195090f, 0.980785f,
-0.852640f, 0.522499f, -0.785317f, -0.619094f,
0.309017f, -0.951057f, 0.999229f, -0.039260f,
0.382683f, 0.923880f, -0.734322f, 0.678801f,
-0.891007f, -0.453990f, 0.117537f, -0.993068f,
0.972370f, -0.233445f, 0.555570f, 0.831470f,
-0.587785f, 0.809017f, -0.962455f, -0.271440f,
-0.078459f, -0.996917f, 0.908143f, -0.418660f,
0.707107f, 0.707107f, -0.418660f, 0.908143f,
-0.996917f, -0.078459f, -0.271440f, -0.962455f,
0.809017f, -0.587785f, 0.831470f, 0.555570f,
-0.233445f, 0.972370f, -0.993068f, 0.117537f,
-0.453990f, -0.891007f, 0.678801f, -0.734322f,
0.923880f, 0.382683f, -0.039260f, 0.999229f,
-0.951057f, 0.309017f, -0.619094f, -0.785317f,
0.522499f, -0.852640f, 0.980785f, 0.195090f,
0.156434f, 0.987688f, -0.872496f, 0.488621f,
-0.760406f, -0.649448f, 0.346117f, -0.938191f,
0.000000f, -1.000000f, 0.962455f, -0.271440f,
0.522499f, 0.852640f, -0.678801f, 0.734322f,
-0.891007f, -0.453990f, 0.195090f, -0.980785f,
0.996917f, -0.078459f, 0.346117f, 0.938191f,
-0.809017f, 0.587785f, -0.785317f, -0.619094f,
0.382683f, -0.923880f, 0.993068f, 0.117537f,
0.156434f, 0.987688f, -0.908143f, 0.418660f,
-0.649448f, -0.760406f, 0.555570f, -0.831470f,
0.951057f, 0.309017f, -0.039260f, 0.999229f,
-0.972370f, 0.233445f, -0.488621f, -0.872496f,
0.707107f, -0.707107f, 0.872496f, 0.488621f,
-0.233445f, 0.972370f, -0.999229f, 0.039260f,
-0.309017f, -0.951057f, 0.831470f, -0.555570f,
0.760406f, 0.649448f, -0.418660f, 0.908143f,
-0.987688f, -0.156434f, -0.117537f, -0.993068f,
0.923880f, -0.382683f, 0.619094f, 0.785317f,
-0.587785f, 0.809017f, -0.938191f, -0.346117f,
0.078459f, -0.996917f, 0.980785f, -0.195090f,
0.453990f, 0.891007f, -0.734322f, 0.678801f,
-0.852640f, -0.522499f, 0.271440f, -0.962455f,
-0.000000f, 1.000000f, -0.980785f, 0.195090f,
-0.382683f, -0.923880f, 0.831470f, -0.555570f,
0.707107f, 0.707107f, -0.555570f, 0.831470f,
-0.923880f, -0.382683f, 0.195090f, -0.980785f,
1.000000f, 0.000000f, 0.195090f, 0.980785f,
-0.923880f, 0.382683f, -0.555570f, -0.831470f,
0.707107f, -0.707107f, 0.831470f, 0.555570f,
-0.382683f, 0.923880f, -0.980785f, -0.195090f,
-0.000000f, -1.000000f, 0.980785f, -0.195090f,
0.382683f, 0.923880f, -0.831470f, 0.555570f,
-0.707107f, -0.707107f, 0.555570f, -0.831470f,
0.923880f, 0.382683f, -0.195090f, 0.980785f,
-1.000000f, -0.000000f, -0.195090f, -0.980785f,
0.923880f, -0.382683f, 0.555570f, 0.831470f,
-0.707107f, 0.707107f, -0.831470f, -0.555570f,
0.382683f, -0.923880f, 0.980785f, 0.195090f,
-0.000000f, 1.000000f, -0.980785f, 0.195090f,
-0.382683f, -0.923880f, 0.831470f, -0.555570f,
0.707107f, 0.707107f, -0.555570f, 0.831470f,
-0.923880f, -0.382683f, 0.195090f, -0.980785f,
0.000000f, -1.000000f, 0.993068f, -0.117537f,
0.233445f, 0.972370f, -0.938191f, 0.346117f,
-0.453990f, -0.891007f, 0.831470f, -0.555570f,
0.649448f, 0.760406f, -0.678801f, 0.734322f,
-0.809017f, -0.587785f, 0.488621f, -0.872496f,
0.923880f, 0.382683f, -0.271440f, 0.962455f,
-0.987688f, -0.156434f, 0.039260f, -0.999229f,
0.996917f, -0.078459f, 0.195090f, 0.980785f,
-0.951057f, 0.309017f, -0.418660f, -0.908143f,
0.852640f, -0.522499f, 0.619094f, 0.785317f,
-0.707107f, 0.707107f, -0.785317f, -0.619094f,
0.522499f, -0.852640f, 0.908143f, 0.418660f,
-0.309017f, 0.951057f, -0.980785f, -0.195090f,
0.078459f, -0.996917f, 0.999229f, -0.039260f,
0.156434f, 0.987688f, -0.962455f, 0.271440f,
-0.382683f, -0.923880f, 0.872496f, -0.488621f,
0.587785f, 0.809017f, -0.734322f, 0.678801f,
-0.760406f, -0.649448f, 0.555570f, -0.831470f,
0.891007f, 0.453990f, -0.346117f, 0.938191f,
-0.972370f, -0.233445f, 0.117537f, -0.993068f,
-0.000000f, 1.000000f, -0.999229f, 0.039260f,
-0.078459f, -0.996917f, 0.993068f, -0.117537f,
0.156434f, 0.987688f, -0.980785f, 0.195090f,
-0.233445f, -0.972370f, 0.962455f, -0.271440f,
0.309017f, 0.951057f, -0.938191f, 0.346117f,
-0.382683f, -0.923880f, 0.908143f, -0.418660f,
0.453990f, 0.891007f, -0.872496f, 0.488621f,
-0.522499f, -0.852640f, 0.831470f, -0.555570f,
0.587785f, 0.809017f, -0.785317f, 0.619094f,
-0.649448f, -0.760406f, 0.734322f, -0.678801f,
0.707107f, 0.707107f, -0.678801f, 0.734322f,
-0.760406f, -0.649448f, 0.619094f, -0.785317f,
0.809017f, 0.587785f, -0.555570f, 0.831470f,
-0.852640f, -0.522499f, 0.488621f, -0.872496f,
0.891007f, 0.453990f, -0.418660f, 0.908143f,
-0.923880f, -0.382683f, 0.346117f, -0.938191f,
0.951057f, 0.309017f, -0.271440f, 0.962455f,
-0.972370f, -0.233445f, 0.195090f, -0.980785f,
0.987688f, 0.156434f, -0.117537f, 0.993068f,
-0.996917f, -0.078459f, 0.039260f, -0.999229f,
0.000000f, -1.000000f, 0.999229f, 0.039260f,
-0.078459f, 0.996917f, -0.993068f, -0.117537f,
0.156434f, -0.987688f, 0.980785f, 0.195090f,
-0.233445f, 0.972370f, -0.962455f, -0.271440f,
0.309017f, -0.951057f, 0.938191f, 0.346117f,
-0.382683f, 0.923880f, -0.908143f, -0.418660f,
0.453990f, -0.891007f, 0.872496f, 0.488621f,
-0.522499f, 0.852640f, -0.831470f, -0.555570f,
0.587785f, -0.809017f, 0.785317f, 0.619094f,
-0.649448f, 0.760406f, -0.734322f, -0.678801f,
0.707107f, -0.707107f, 0.678801f, 0.734322f,
-0.760406f, 0.649448f, -0.619094f, -0.785317f,
0.809017f, -0.587785f, 0.555570f, 0.831470f,
-0.852640f, 0.522499f, -0.488621f, -0.872496f,
0.891007f, -0.453990f, 0.418660f, 0.908143f,
-0.923880f, 0.382683f, -0.346117f, -0.938191f,
0.951057f, -0.309017f, 0.271440f, 0.962455f,
-0.972370f, 0.233445f, -0.195090f, -0.980785f,
0.987688f, -0.156434f, 0.117537f, 0.993068f,
-0.996917f, 0.078459f, -0.039260f, -0.999229f,
-0.000000f, 1.000000f, -0.993068f, -0.117537f,
0.233445f, -0.972370f, 0.938191f, 0.346117f,
-0.453990f, 0.891007f, -0.831470f, -0.555570f,
0.649448f, -0.760406f, 0.678801f, 0.734322f,
-0.809017f, 0.587785f, -0.488621f, -0.872496f,
0.923880f, -0.382683f, 0.271440f, 0.962455f,
-0.987688f, 0.156434f, -0.039260f, -0.999229f,
0.996917f, 0.078459f, -0.195090f, 0.980785f,
-0.951057f, -0.309017f, 0.418660f, -0.908143f,
0.852640f, 0.522499f, -0.619094f, 0.785317f,
-0.707107f, -0.707107f, 0.785317f, -0.619094f,
0.522499f, 0.852640f, -0.908143f, 0.418660f,
-0.309017f, -0.951057f, 0.980785f, -0.195090f,
0.078459f, 0.996917f, -0.999229f, -0.039260f,
0.156434f, -0.987688f, 0.962455f, 0.271440f,
-0.382683f, 0.923880f, -0.872496f, -0.488621f,
0.587785f, -0.809017f, 0.734322f, 0.678801f,
-0.760406f, 0.649448f, -0.555570f, -0.831470f,
0.891007f, -0.453990f, 0.346117f, 0.938191f,
-0.972370f, 0.233445f, -0.117537f, -0.993068f,
0.000000f, -1.000000f, 0.980785f, 0.195090f,
-0.382683f, 0.923880f, -0.831470f, -0.555570f,
0.707107f, -0.707107f, 0.555570f, 0.831470f,
-0.923880f, 0.382683f, -0.195090f, -0.980785f,
1.000000f, 0.000000f, -0.195090f, 0.980785f,
-0.923880f, -0.382683f, 0.555570f, -0.831470f,
0.707107f, 0.707107f, -0.831470f, 0.555570f,
-0.382683f, -0.923880f, 0.980785f, -0.195090f,
-0.000000f, 1.000000f, -0.980785f, -0.195090f,
0.382683f, -0.923880f, 0.831470f, 0.555570f,
-0.707107f, 0.707107f, -0.555570f, -0.831470f,
0.923880f, -0.382683f, 0.195090f, 0.980785f,
-1.000000f, -0.000000f, 0.195090f, -0.980785f,
0.923880f, 0.382683f, -0.555570f, 0.831470f,
-0.707107f, -0.707107f, 0.831470f, -0.555570f,
0.382683f, 0.923880f, -0.980785f, 0.195090f,
0.000000f, -1.000000f, 0.980785f, 0.195090f,
-0.382683f, 0.923880f, -0.831470f, -0.555570f,
0.707107f, -0.707107f, 0.555570f, 0.831470f,
-0.923880f, 0.382683f, -0.195090f, -0.980785f,
0.000000f, 1.000000f, -0.962455f, -0.271440f,
0.522499f, -0.852640f, 0.678801f, 0.734322f,
-0.891007f, 0.453990f, -0.195090f, -0.980785f,
0.996917f, 0.078459f, -0.346117f, 0.938191f,
-0.809017f, -0.587785f, 0.785317f, -0.619094f,
0.382683f, 0.923880f, -0.993068f, 0.117537f,
0.156434f, -0.987688f, 0.908143f, 0.418660f,
-0.649448f, 0.760406f, -0.555570f, -0.831470f,
0.951057f, -0.309017f, 0.039260f, 0.999229f,
-0.972370f, -0.233445f, 0.488621f, -0.872496f,
0.707107f, 0.707107f, -0.872496f, 0.488621f,
-0.233445f, -0.972370f, 0.999229f, 0.039260f,
-0.309017f, 0.951057f, -0.831470f, -0.555570f,
0.760406f, -0.649448f, 0.418660f, 0.908143f,
-0.987688f, 0.156434f, 0.117537f, -0.993068f,
0.923880f, 0.382683f, -0.619094f, 0.785317f,
-0.587785f, -0.809017f, 0.938191f, -0.346117f,
0.078459f, 0.996917f, -0.980785f, -0.195090f,
0.453990f, -0.891007f, 0.734322f, 0.678801f,
-0.852640f, 0.522499f, -0.271440f, -0.962455f,
0.000000f, -1.000000f, 0.938191f, 0.346117f,
-0.649448f, 0.760406f, -0.488621f, -0.872496f,
0.987688f, -0.156434f, -0.195090f, 0.980785f,
-0.852640f, -0.522499f, 0.785317f, -0.619094f,
0.309017f, 0.951057f, -0.999229f, -0.039260f,
0.382683f, -0.923880f, 0.734322f, 0.678801f,
-0.891007f, 0.453990f, -0.117537f, -0.993068f,
0.972370f, 0.233445f, -0.555570f, 0.831470f,
-0.587785f, -0.809017f, 0.962455f, -0.271440f,
-0.078459f, 0.996917f, -0.908143f, -0.418660f,
0.707107f, -0.707107f, 0.418660f, 0.908143f,
-0.996917f, 0.078459f, 0.271440f, -0.962455f,
0.809017f, 0.587785f, -0.831470f, 0.555570f,
-0.233445f, -0.972370f, 0.993068f, 0.117537f,
-0.453990f, 0.891007f, -0.678801f, -0.734322f,
0.923880f, -0.382683f, 0.039260f, 0.999229f,
-0.951057f, -0.309017f, 0.619094f, -0.785317f,
0.522499f, 0.852640f, -0.980785f, 0.195090f,
0.156434f, -0.987688f, 0.872496f, 0.488621f,
-0.760406f, 0.649448f, -0.346117f, -0.938191f,
-0.000000f, 1.000000f, -0.908143f, -0.418660f,
0.760406f, -0.649448f, 0.271440f, 0.962455f,
-0.987688f, -0.156434f, 0.555570f, -0.831470f,
0.522499f, 0.852640f, -0.993068f, 0.117537f,
0.309017f, -0.951057f, 0.734322f, 0.678801f,
-0.923880f, 0.382683f, 0.039260f, -0.999229f,
0.891007f, 0.453990f, -0.785317f, 0.619094f,
-0.233445f, -0.972370f, 0.980785f, 0.195090f,
-0.587785f, 0.809017f, -0.488621f, -0.872496f,
0.996917f, -0.078459f, -0.346117f, 0.938191f,
-0.707107f, -0.707107f, 0.938191f, -0.346117f,
-0.078459f, 0.996917f, -0.872496f, -0.488621f,
0.809017f, -0.587785f, 0.195090f, 0.980785f,
-0.972370f, -0.233445f, 0.619094f, -0.785317f,
0.453990f, 0.891007f, -0.999229f, 0.039260f,
0.382683f, -0.923880f, 0.678801f, 0.734322f,
-0.951057f, 0.309017f, 0.117537f, -0.993068f,
0.852640f, 0.522499f, -0.831470f, 0.555570f,
-0.156434f, -0.987688f, 0.962455f, 0.271440f,
-0.649448f, 0.760406f, -0.418660f, -0.908143f,
0.000000f, -1.000000f, 0.872496f, 0.488621f,
-0.852640f, 0.522499f, -0.039260f, -0.999229f,
0.891007f, 0.453990f, -0.831470f, 0.555570f,
-0.078459f, -0.996917f, 0.908143f, 0.418660f,
-0.809017f, 0.587785f, -0.117537f, -0.993068f,
0.923880f, 0.382683f, -0.785317f, 0.619094f,
-0.156434f, -0.987688f, 0.938191f, 0.346117f,
-0.760406f, 0.649448f, -0.195090f, -0.980785f,
0.951057f, 0.309017f, -0.734322f, 0.678801f,
-0.233445f, -0.972370f, 0.962455f, 0.271440f,
-0.707107f, 0.707107f, -0.271440f, -0.962455f,
0.972370f, 0.233445f, -0.678801f, 0.734322f,
-0.309017f, -0.951057f, 0.980785f, 0.195090f,
-0.649448f, 0.760406f, -0.346117f, -0.938191f,
0.987688f, 0.156434f, -0.619094f, 0.785317f,
-0.382683f, -0.923880f, 0.993068f, 0.117537f,
-0.587785f, 0.809017f, -0.418660f, -0.908143f,
0.996917f, 0.078459f, -0.555570f, 0.831470f,
-0.453990f, -0.891007f, 0.999229f, 0.039260f,
-0.522499f, 0.852640f, -0.488621f, -0.872496f,
-0.000000f, 1.000000f, -0.831470f, -0.555570f,
0.923880f, -0.382683f, -0.195090f, 0.980785f,
-0.707107f, -0.707107f, 0.980785f, -0.195090f,
-0.382683f, 0.923880f, -0.555570f, -0.831470f,
1.000000f, 0.000000f, -0.555570f, 0.831470f,
-0.382683f, -0.923880f, 0.980785f, 0.195090f,
-0.707107f, 0.707107f, -0.195090f, -0.980785f,
0.923880f, 0.382683f, -0.831470f, 0.555570f,
0.000000f, -1.000000f, 0.831470f, 0.555570f,
-0.923880f, 0.382683f, 0.195090f, -0.980785f,
0.707107f, 0.707107f, -0.980785f, 0.195090f,
0.382683f, -0.923880f, 0.555570f, 0.831470f,
-1.000000f, -0.000000f, 0.555570f, -0.831470f,
0.382683f, 0.923880f, -0.980785f, -0.195090f,
0.707107f, -0.707107f, 0.195090f, 0.980785f,
-0.923880f, -0.382683f, 0.831470f, -0.555570f,
-0.000000f, 1.000000f, -0.831470f, -0.555570f,
0.923880f, -0.382683f, -0.195090f, 0.980785f,
-0.707107f, -0.707107f, 0.980785f, -0.195090f,
-0.382683f, 0.923880f, -0.555570f, -0.831470f,
-0.000000f, -1.000000f, 0.785317f, 0.619094f,
-0.972370f, 0.233445f, 0.418660f, -0.908143f,
0.453990f, 0.891007f, -0.980785f, -0.195090f,
0.760406f, -0.649448f, 0.039260f, 0.999229f,
-0.809017f, -0.587785f, 0.962455f, -0.271440f,
-0.382683f, 0.923880f, -0.488621f, -0.872496f,
0.987688f, 0.156434f, -0.734322f, 0.678801f,
-0.078459f, -0.996917f, 0.831470f, 0.555570f,
-0.951057f, 0.309017f, 0.346117f, -0.938191f,
0.522499f, 0.852640f, -0.993068f, -0.117537f,
0.707107f, -0.707107f, 0.117537f, 0.993068f,
-0.852640f, -0.522499f, 0.938191f, -0.346117f,
-0.309017f, 0.951057f, -0.555570f, -0.831470f,
0.996917f, 0.078459f, -0.678801f, 0.734322f,
-0.156434f, -0.987688f, 0.872496f, 0.488621f,
-0.923880f, 0.382683f, 0.271440f, -0.962455f,
0.587785f, 0.809017f, -0.999229f, -0.039260f,
0.649448f, -0.760406f, 0.195090f, 0.980785f,
-0.891007f, -0.453990f, 0.908143f, -0.418660f,
-0.233445f, 0.972370f, -0.619094f, -0.785317f,
-0.000000f, 1.000000f, -0.734322f, -0.678801f,
0.996917f, -0.078459f, -0.619094f, 0.785317f,
-0.156434f, -0.987688f, 0.831470f, 0.555570f,
-0.972370f, 0.233445f, 0.488621f, -0.872496f,
0.309017f, 0.951057f, -0.908143f, -0.418660f,
0.923880f, -0.382683f, -0.346117f, 0.938191f,
-0.453990f, -0.891007f, 0.962455f, 0.271440f,
-0.852640f, 0.522499f, 0.195090f, -0.980785f,
0.587785f, 0.809017f, -0.993068f, -0.117537f,
0.760406f, -0.649448f, -0.039260f, 0.999229f,
-0.707107f, -0.707107f, 0.999229f, -0.039260f,
-0.649448f, 0.760406f, -0.117537f, -0.993068f,
0.809017f, 0.587785f, -0.980785f, 0.195090f,
0.522499f, -0.852640f, 0.271440f, 0.962455f,
-0.891007f, -0.453990f, 0.938191f, -0.346117f,
-0.382683f, 0.923880f, -0.418660f, -0.908143f,
0.951057f, 0.309017f, -0.872496f, 0.488621f,
0.233445f, -0.972370f, 0.555570f, 0.831470f,
-0.987688f, -0.156434f, 0.785317f, -0.619094f,
-0.078459f, 0.996917f, -0.678801f, -0.734322f,
-0.000000f, -1.000000f, 0.678801f, 0.734322f,
-0.996917f, -0.078459f, 0.785317f, -0.619094f,
-0.156434f, 0.987688f, -0.555570f, -0.831470f,
0.972370f, 0.233445f, -0.872496f, 0.488621f,
0.309017f, -0.951057f, 0.418660f, 0.908143f,
-0.923880f, -0.382683f, 0.938191f, -0.346117f,
-0.453990f, 0.891007f, -0.271440f, -0.962455f,
0.852640f, 0.522499f, -0.980785f, 0.195090f,
0.587785f, -0.809017f, 0.117537f, 0.993068f,
-0.760406f, -0.649448f, 0.999229f, -0.039260f,
-0.707107f, 0.707107f, 0.039260f, -0.999229f,
0.649448f, 0.760406f, -0.993068f, -0.117537f,
0.809017f, -0.587785f, -0.195090f, 0.980785f,
-0.522499f, -0.852640f, 0.962455f, 0.271440f,
-0.891007f, 0.453990f, 0.346117f, -0.938191f,
0.382683f, 0.923880f, -0.908143f, -0.418660f,
0.951057f, -0.309017f, -0.488621f, 0.872496f,
-0.233445f, -0.972370f, 0.831470f, 0.555570f,
-0.987688f, 0.156434f, 0.619094f, -0.785317f,
0.078459f, 0.996917f, -0.734322f, -0.678801f,
-0.000000f, 1.000000f, -0.619094f, -0.785317f,
0.972370f, 0.233445f, -0.908143f, 0.418660f,
0.453990f, -0.891007f, 0.195090f, 0.980785f,
-0.760406f, -0.649448f, 0.999229f, 0.039260f,
-0.809017f, 0.587785f, 0.271440f, -0.962455f,
0.382683f, 0.923880f, -0.872496f, -0.488621f,
0.987688f, -0.156434f, -0.678801f, 0.734322f,
0.078459f, -0.996917f, 0.555570f, 0.831470f,
-0.951057f, -0.309017f, 0.938191f, -0.346117f,
-0.522499f, 0.852640f, -0.117537f, -0.993068f,
0.707107f, 0.707107f, -0.993068f, -0.117537f,
0.852640f, -0.522499f, -0.346117f, 0.938191f,
-0.309017f, -0.951057f, 0.831470f, 0.555570f,
-0.996917f, 0.078459f, 0.734322f, -0.678801f,
-0.156434f, 0.987688f, -0.488621f, -0.872496f,
0.923880f, 0.382683f, -0.962455f, 0.271440f,
0.587785f, -0.809017f, 0.039260f, 0.999229f,
-0.649448f, -0.760406f, 0.980785f, 0.195090f,
-0.891007f, 0.453990f, 0.418660f, -0.908143f,
0.233445f, 0.972370f, -0.785317f, -0.619094f,
-0.000000f, -1.000000f, 0.555570f, 0.831470f,
-0.923880f, -0.382683f, 0.980785f, -0.195090f,
-0.707107f, 0.707107f, 0.195090f, -0.980785f,
0.382683f, 0.923880f, -0.831470f, -0.555570f,
1.000000f, -0.000000f, -0.831470f, 0.555570f,
0.382683f, -0.923880f, 0.195090f, 0.980785f,
-0.707107f, -0.707107f, 0.980785f, 0.195090f,
-0.923880f, 0.382683f, 0.555570f, -0.831470f,
0.000000f, 1.000000f, -0.555570f, -0.831470f,
0.923880f, 0.382683f, -0.980785f, 0.195090f,
0.707107f, -0.707107f, -0.195090f, 0.980785f,
-0.382683f, -0.923880f, 0.831470f, 0.555570f,
-1.000000f, 0.000000f, 0.831470f, -0.555570f,
-0.382683f, 0.923880f, -0.195090f, -0.980785f,
0.707107f, 0.707107f, -0.980785f, -0.195090f,
0.923880f, -0.382683f, -0.555570f, 0.831470f,
-0.000000f, -1.000000f, 0.555570f, 0.831470f,
-0.923880f, -0.382683f, 0.980785f, -0.195090f,
-0.707107f, 0.707107f, 0.195090f, -0.980785f,
0.382683f, 0.923880f, -0.831470f, -0.555570f,
-0.000000f, 1.000000f, -0.488621f, -0.872496f,
0.852640f, 0.522499f, -0.999229f, -0.039260f,
0.891007f, -0.453990f, -0.555570f, 0.831470f,
0.078459f, -0.996917f, 0.418660f, 0.908143f,
-0.809017f, -0.587785f, 0.993068f, 0.117537f,
-0.923880f, 0.382683f, 0.619094f, -0.785317f,
-0.156434f, 0.987688f, -0.346117f, -0.938191f,
0.760406f, 0.649448f, -0.980785f, -0.195090f,
0.951057f, -0.309017f, -0.678801f, 0.734322f,
0.233445f, -0.972370f, 0.271440f, 0.962455f,
-0.707107f, -0.707107f, 0.962455f, 0.271440f,
-0.972370f, 0.233445f, 0.734322f, -0.678801f,
-0.309017f, 0.951057f, -0.195090f, -0.980785f,
0.649448f, 0.760406f, -0.938191f, -0.346117f,
0.987688f, -0.156434f, -0.785317f, 0.619094f,
0.382683f, -0.923880f, 0.117537f, 0.993068f,
-0.587785f, -0.809017f, 0.908143f, 0.418660f,
-0.996917f, 0.078459f, 0.831470f, -0.555570f,
-0.453990f, 0.891007f, -0.039260f, -0.999229f,
0.522499f, 0.852640f, -0.872496f, -0.488621f,
0.000000f, -1.000000f, 0.418660f, 0.908143f,
-0.760406f, -0.649448f, 0.962455f, 0.271440f,
-0.987688f, 0.156434f, 0.831470f, -0.555570f,
-0.522499f, 0.852640f, 0.117537f, -0.993068f,
0.309017f, 0.951057f, -0.678801f, -0.734322f,
0.923880f, 0.382683f, -0.999229f, 0.039260f,
0.891007f, -0.453990f, -0.619094f, 0.785317f,
0.233445f, -0.972370f, 0.195090f, 0.980785f,
-0.587785f, -0.809017f, 0.872496f, 0.488621f,
-0.996917f, -0.078459f, 0.938191f, -0.346117f,
-0.707107f, 0.707107f, 0.346117f, -0.938191f,
0.078459f, 0.996917f, -0.488621f, -0.872496f,
0.809017f, 0.587785f, -0.980785f, -0.195090f,
0.972370f, -0.233445f, -0.785317f, 0.619094f,
0.453990f, -0.891007f, -0.039260f, 0.999229f,
-0.382683f, -0.923880f, 0.734322f, 0.678801f,
-0.951057f, -0.309017f, 0.993068f, -0.117537f,
-0.852640f, 0.522499f, 0.555570f, -0.831470f,
-0.156434f, 0.987688f, -0.271440f, -0.962455f,
0.649448f, 0.760406f, -0.908143f, -0.418660f,
-0.000000f, 1.000000f, -0.346117f, -0.938191f,
0.649448f, 0.760406f, -0.872496f, -0.488621f,
0.987688f, 0.156434f, -0.980785f, 0.195090f,
0.852640f, -0.522499f, -0.619094f, 0.785317f,
0.309017f, -0.951057f, 0.039260f, 0.999229f,
-0.382683f, -0.923880f, 0.678801f, 0.734322f,
-0.891007f, -0.453990f, 0.993068f, 0.117537f,
-0.972370f, 0.233445f, 0.831470f, -0.555570f,
-0.587785f, 0.809017f, 0.271440f, -0.962455f,
0.078459f, 0.996917f, -0.418660f, -0.908143f,
0.707107f, 0.707107f, -0.908143f, -0.418660f,
0.996917f, 0.078459f, -0.962455f, 0.271440f,
0.809017f, -0.587785f, -0.555570f, 0.831470f,
0.233445f, -0.972370f, 0.117537f, 0.993068f,
-0.453990f, -0.891007f, 0.734322f, 0.678801f,
-0.923880f, -0.382683f, 0.999229f, 0.039260f,
-0.951057f, 0.309017f, 0.785317f, -0.619094f,
-0.522499f, 0.852640f, 0.195090f, -0.980785f,
0.156434f, 0.987688f, -0.488621f, -0.872496f,
0.760406f, 0.649448f, -0.938191f, -0.346117f,
-0.000000f, -1.000000f, 0.271440f, 0.962455f,
-0.522499f, -0.852640f, 0.734322f, 0.678801f,
-0.891007f, -0.453990f, 0.980785f, 0.195090f,
-0.996917f, 0.078459f, 0.938191f, -0.346117f,
-0.809017f, 0.587785f, 0.619094f, -0.785317f,
-0.382683f, 0.923880f, 0.117537f, -0.993068f,
0.156434f, 0.987688f, -0.418660f, -0.908143f,
0.649448f, 0.760406f, -0.831470f, -0.555570f,
0.951057f, 0.309017f, -0.999229f, -0.039260f,
0.972370f, -0.233445f, -0.872496f, 0.488621f,
0.707107f, -0.707107f, -0.488621f, 0.872496f,
0.233445f, -0.972370f, 0.039260f, 0.999229f,
-0.309017f, -0.951057f, 0.555570f, 0.831470f,
-0.760406f, -0.649448f, 0.908143f, 0.418660f,
-0.987688f, -0.156434f, 0.993068f, -0.117537f,
-0.923880f, 0.382683f, 0.785317f, -0.619094f,
-0.587785f, 0.809017f, 0.346117f, -0.938191f,
-0.078459f, 0.996917f, -0.195090f, -0.980785f,
0.453990f, 0.891007f, -0.678801f, -0.734322f,
0.852640f, 0.522499f, -0.962455f, -0.271440f,
-0.000000f, 1.000000f, -0.195090f, -0.980785f,
0.382683f, 0.923880f, -0.555570f, -0.831470f,
0.707107f, 0.707107f, -0.831470f, -0.555570f,
0.923880f, 0.382683f, -0.980785f, -0.195090f,
1.000000f, 0.000000f, -0.980785f, 0.195090f,
0.923880f, -0.382683f, -0.831470f, 0.555570f,
0.707107f, -0.707107f, -0.555570f, 0.831470f,
0.382683f, -0.923880f, -0.195090f, 0.980785f,
0.000000f, -1.000000f, 0.195090f, 0.980785f,
-0.382683f, -0.923880f, 0.555570f, 0.831470f,
-0.707107f, -0.707107f, 0.831470f, 0.555570f,
-0.923880f, -0.382683f, 0.980785f, 0.195090f,
-1.000000f, -0.000000f, 0.980785f, -0.195090f,
-0.923880f, 0.382683f, 0.831470f, -0.555570f,
-0.707107f, 0.707107f, 0.555570f, -0.831470f,
-0.382683f, 0.923880f, 0.195090f, -0.980785f,
-0.000000f, 1.000000f, -0.195090f, -0.980785f,
0.382683f, 0.923880f, -0.555570f, -0.831470f,
0.707107f, 0.707107f, -0.831470f, -0.555570f,
0.923880f, 0.382683f, -0.980785f, -0.195090f,
-0.000000f, -1.000000f, 0.117537f, 0.993068f,
-0.233445f, -0.972370f, 0.346117f, 0.938191f,
-0.453990f, -0.891007f, 0.555570f, 0.831470f,
-0.649448f, -0.760406f, 0.734322f, 0.678801f,
-0.809017f, -0.587785f, 0.872496f, 0.488621f,
-0.923880f, -0.382683f, 0.962455f, 0.271440f,
-0.987688f, -0.156434f, 0.999229f, 0.039260f,
-0.996917f, 0.078459f, 0.980785f, -0.195090f,
-0.951057f, 0.309017f, 0.908143f, -0.418660f,
-0.852640f, 0.522499f, 0.785317f, -0.619094f,
-0.707107f, 0.707107f, 0.619094f, -0.785317f,
-0.522499f, 0.852640f, 0.418660f, -0.908143f,
-0.309017f, 0.951057f, 0.195090f, -0.980785f,
-0.078459f, 0.996917f, -0.039260f, -0.999229f,
0.156434f, 0.987688f, -0.271440f, -0.962455f,
0.382683f, 0.923880f, -0.488621f, -0.872496f,
0.587785f, 0.809017f, -0.678801f, -0.734322f,
0.760406f, 0.649448f, -0.831470f, -0.555570f,
0.891007f, 0.453990f, -0.938191f, -0.346117f,
0.972370f, 0.233445f, -0.993068f, -0.117537f,
-0.000000f, 1.000000f, -0.039260f, -0.999229f,
0.078459f, 0.996917f, -0.117537f, -0.993068f,
0.156434f, 0.987688f, -0.195090f, -0.980785f,
0.233445f, 0.972370f, -0.271440f, -0.962455f,
0.309017f, 0.951057f, -0.346117f, -0.938191f,
0.382683f, 0.923880f, -0.418660f, -0.908143f,
0.453990f, 0.891007f, -0.488621f, -0.872496f,
0.522499f, 0.852640f, -0.555570f, -0.831470f,
0.587785f, 0.809017f, -0.619094f, -0.785317f,
0.649448f, 0.760406f, -0.678801f, -0.734322f,
0.707107f, 0.707107f, -0.734322f, -0.678801f,
0.760406f, 0.649448f, -0.785317f, -0.619094f,
0.809017f, 0.587785f, -0.831470f, -0.555570f,
0.852640f, 0.522499f, -0.872496f, -0.488621f,
0.891007f, 0.453990f, -0.908143f, -0.418660f,
0.923880f, 0.382683f, -0.938191f, -0.346117f,
0.951057f, 0.309017f, -0.962455f, -0.271440f,
0.972370f, 0.233445f, -0.980785f, -0.195090f,
0.987688f, 0.156434f, -0.993068f, -0.117537f,
0.996917f, 0.078459f, -0.999229f, -0.039260f,
};
각 테이블은 주어진 MS의 값에 대응할 수 있으며, (2MS) × (4 MS) 차원 행렬 의 복소수 엔트리를 포함할 수 있다. 위에서 주목된 바와 같이, 테이블의 짝수 인덱스된 요소(인덱싱이 0에서 시작한다고 가정)는 각각의 행렬 엔트리의 실수 부분에 대응할 수 있는 한편, 홀수 인덱스된 요소는 각각의 행렬 엔트리의 허수 부분에 대응할 수 있다.
요약하면, 상기는 QMF 기반의 고조파 트랜스포저가 복소수 값의 2MS 채널 분석 필터 뱅크를 포함할 수 있는, 상술한 바와 같이 (QMF 고조파 트랜스포저를 포함하는) 인코딩된 USAC 스트림을 디코딩하기 위한 장치의 처리에 대응할 수 있다. 복소수 값의 2MS 채널 분석 필터 뱅크는 2MS 복소수 값의 부대역 샘플의 어레이를 획득하기 위해 4MS 부대역 샘플의 어레이를 처리하도록 구성될 수 있다. 2MS 실수 값의 부대역 샘플 중 각 복소수 값의 부대역 샘플은 2MS 부대역 중 각각의 부대역과 연관될 수 있다. 4MS 부대역 샘플의 어레이를 처리하는 것은 복소수 값의 행렬 M과 4MS 부대역 샘플의 어레이의 행렬 벡터 곱셈을 수행하는 것을 포함할 수 있다. 복소수 값의 행렬 M의 엔트리는 이들 행렬 엔트리가 벡터-행렬 곱셈에 기여하는 2MS 복소수 값의 부대역 샘플 중 각각의 부대역 샘플의 부대역 인덱스에 의존할 수 있다. 미리 계산된 정보는 행렬-벡터 곱셈을 위한 복소수 값의 행렬 M의 엔트리에 관련될 수 있다. 복소수 값의 행렬 M의 엔트리는 오프라인으로 결정되며, 하나 이상의 룩업 테이블에 저장될 수 있다. QMF 기반의 고조파 트랜스포저는 런타임에 하나 이상의 룩업 테이블로부터 복소수 값의 행렬 M의 엔트리에 액세스하도록 구성될 수 있다.
또한, QMF 트랜스포저에서 다음의 코드가 수행될 수 있다.
이 vld4q_s32 함수는 메모리 위치로부터 16개의 32비트 데이터 요소를 벡터 로딩하기 위한 것이다(이 메모리에 대한 포인터는 이 함수에 대한 입력으로서 전달된다). 마찬가지로 vst4q_s32 함수는 16개의 32비트 데이터 요소를 메모리 위치에 벡터 저장하기 위한 것이다(이 메모리에 대한 포인터는 이 함수에 대한 입력으로서 전달된다). Vld4q_s32는 플랫폼 최적의 명령어 및 코딩을 제공하며, 실제 어셈블리 코딩보다 유지가 더욱 쉽다. 이들 두 개의 함수는 어셈블리 코딩과 동일한 목적을 달성하지만, 고유의 버전에 대해 가독성(readability)이 더 좋다.
디코더(2000)는 선형 예측 합성 필터를 통해 재구성된 여기 신호를 필터링함으로써 여기 도메인 신호로부터 시간 도메인 신호를 생성하는 LPC 필터 툴(2903)을 더 포함할 수 있다.
LPC 필터(들)는 (ACELP 및 TCX 모드 양자에서) USAC 비트스트림으로 송신될 수 있다. 여기에서, 비트스트림 내에 인코딩되는 LPC 필터 nb_lpc의 실제 개수는 USAC 프레임의 ACELP/TCX 모드 조합에 의존한다. ACELP/TCX 모드 조합은 USAC 프레임의 필드(예를 들어, lpd_mode 필드)로부터 추출될 수 있고, 이는 차례로, USAC 프레임을 구성하는 4개의 서브프레임 각각에 대해, 코딩 모드 mod[k] - k=0 내지 3 - 를 결정한다. 모드 값은 ACELP에 대해 0, 짧은 TCX(coreCoderFrameLength/4 샘플)에 대해 1, 중간 크기의 TCX(coreCoderFrameLength/2 샘플)에 대해 2, 긴 TCX(coreCoderFrameLength 샘플)에 대해 3이다.
ACELP/TCX 모드 조합에 의해 요구되는 LPC 필터의 각각에 대응하는 양자화 인덱스를 추출하기 위해 비트스트림이 파싱될 수(parsed) 있다. LPC 필터 중 하나를 디코딩하는데 필요한 동작이 다음에 서술된다.
LPC 필터의 역 양자화는 도 5에 서술된 바와 같이 수행된다.
LPC 필터는 선형 스펙트럼 주파수(LSF) 표현을 사용하여 양자화된다. 제1 스테이지 근사치는 절대 양자화 모드 또는 상대 양자화 모드에 의해 계산된다. 이는 USAC 표준의 7.13.6절에서 서술되며 예를 들어, 이 절은 그 전체가 본원에 참조로 포함된다. 양자화 모드(mode_lpc)를 나타내는 정보가 비트스트림에 포함된다. 디코더는 LPC 필터를 디코딩하는 제1 스테이지로서 양자화 모드를 추출할 수 있다.
그 후, 선택적인 대수 벡터 양자화(algebraic vector quantized, AVQ) 리파인먼트(refinement)는 8차원 RE8 격자 벡터 양자화기(고세 행렬(Gosset Matrix))을 기초로 계산된다. 이는 USAC 표준의 7.13.7절에 서술되며, 예를 들어, 이 절은 그 전체가 본원에 참조로 포함된다. 양자화된 LSF 벡터는 제1 스테이지 근사치 및 역 가중된 AVQ 기여를 추가함으로써 재구성된다. (추가적인 세부사항에 대해서는 ISO/IEC 23003-3:2012의 7.13.5, 7.13.6, 7.13.7절을 참조한다). 역 양자화된 LSF 벡터는 그 후, LSP(line spectral pair, 선형 스펙트럼 쌍) 파라미터의 벡터로 변환되고, 이어서 보간되며, 다시 LPC 파라미터로 변환될 수 있다.
도 5에서, USAC 비트스트림으로부터의 인코딩된 인덱스는 데이터를 제1 스테이지 근사치 블록(520) 및 대수(algebraic) VQ(AVQ) 디코더(530)로 출력하는 디멀티플렉서(510)에 의해 수신된다. LSF 벡터의 제1 스테이지 근사치는 블록(510)에서 획득된다. 잔여 LSF 벡터는 AVQ 디코더(530)에 의해 획득된다. 잔여 LSF 벡터에 대한 역 가중치는 블록(540)에서 LSF 벡터의 제1 스테이지 근사치를 기초로 결정될 수 있다. 역 가중은 곱셈 유닛(550)에서 각각의 역 가중치를 잔여 LSF 벡터의 성분에 적용함으로써 유닛(550)에서 수행된다. 역 양자화된 LSF 벡터는 LSF 벡터 및 역 가중된 잔여 LSF 벡터의 제1 스테이지 근사치를 가산함으로써 가산 유닛(560)에서 획득된다.
역양자화된 LSF 벡터를 구축하기 위해, 비트스트림으로부터 AVQ 리파인먼트(refinement)에 관련된 정보가 추출된다. AVQ는 8차원의 RE8 격자 벡터 양자화기를 기초로 한다. LPC 필터를 디코딩하는 것은 가중된 잔여 LSF 벡터의 두 개의 8차원 서브 벡터()를 디코딩하는 것을 수반한다.
이들 두 개의 서브 벡터에 대한 AVQ 정보는 비트스트림으로부터 추출될 수 있다. 이는 두 개의 인코딩된 코드북 번호 qn1 및 qn2, 및 대응하는 AVQ 인덱스를 포함할 수 있다. 가중된 잔여 LSF 벡터는 두 개의 AVQ 리파인먼트 서브벡터()를 연결(concatenating)함으로써 획득된다. 이 가중된 잔여 LSF 벡터는 USAC 인코더에서 수행된 가중을 반전(reverse)시키기 위해 역 가중되어야 한다. 절대 양자화 모드가 사용될 때, 역 가중을 위한 다음의 접근법이 사용될 수 있다.
1) 절대 양자화 모드에서, LSF 값은 테이블로부터 취해질 수 있다.
2) 그 다음, 다음 방정식을 사용하여 LSF 가중치를 계산한다
3) 테이블로부터 LSF 값이 취해지면, 기존의 테이블은 아래에 도시된 LSF 가중치가 이미 인자화된(factored) 미리 계산된 테이블로 대체될 수 있다
따라서, LSF 가중치에 의한 역 가중은 런타임 이전에 가중된 LSF 값을 도출하기 위해(예를 들어, 미리 계산하기 위해) 오프라인으로 구현될 수 있다. 런타임에서, 미리 계산된 가중된 LSF 값은 필요한 경우, 계산 없이 참조될 수 있다. 예를 들어, 역 가중된 LSF 값은 하나 이상의 룩업 테이블로부터 획득(예를 들어, 판독, 검색)될 수 있다. 디코더가 런타임에 적절한 역 가중된 LSF 값을 검색하기 위한 루틴을 제공받는 한, 룩업 테이블(들) 내의 가중된 LSF 값의 실제 배열은 변할 수 있다.
3) 단계에서 사용하기 위한 검색 테이블의 일 예시가 아래에 도시된다. 이 룩업 테이블의 사용은 LSF 거리의 계산, sqrt 및 나눗셈이 후속하는 인접 거리의 곱셈을 회피하게 한다.
다음의 예시적인 코드는 위에서 논의된 weight_table_avq_flt의 사용을 도시한다.
static WORD32 ixheaacd_avq_first_approx_abs(FLOAT32 *lsf, WORD32 *indx)
{
WORD32 i;
const FLOAT32 *p_dico;
extern const FLOAT32 dico_lsf_abs_8b[];
extern const FLOAT32 weight_table_avq[];
WORD32 position = 0, lsf_min;
const FLOAT32 *ptr_w = &weight_table_avq_flt[indx[0] * 17];
WORD32 avq[ORDER];
p_dico = &dico_lsf_abs_8b[indx[0] * ORDER];
position++;
position += ixheaacd_decoding_avq_tool(&indx[position], avq);
lsf_min = LSF_GAP;
for (i = 0; i<ORDER; i++)
{
lsf[i] = *p_dico++ + (ptr_w[i] * avq[i]);
if (lsf[i] < lsf_min)
lsf[i] = lsf_min;
lsf_min = lsf[i] + LSF_GAP;
}
return position;
}
요약하면, 상기는 다음과 같이 구성된 인코딩된 USAC 스트림을 디코딩하기 위한 장치의 처리에 대응할 수 있다. 장치는 인코딩된 USAC 스트림을 디코딩하기 위한 코어 디코더를 포함할 수 있다. 인코딩된 USAC 스트림은 선형 스펙트럼 주파수(LSF) 표현을 사용하여 양자화된 선형 예측 코딩(LPC) 필터의 표현을 포함할 수 있다. 코어 디코더는 USAC 스트림으로부터 LPC 필터를 디코딩하도록 구성될 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 LSF 벡터의 제1 스테이지 근사치를 계산하는 것, LPC 필터를 양자화하기 위해 절대 양자화 모드가 사용된 경우, 잔여 LSF 벡터를 재구성하는 것, 역 LSF 가중치 또는 그의 각각의 대응하는 LSF 가중치에 대한 미리 계산된 값을 참조함으로써 잔여 LSF 벡터의 역 가중을 위한 역 LSF 가중치를 결정하는 것, 결정된 역 LSF 가중치만큼 잔여 LSF 벡터를 역 가중하는 것, 및 역 가중된 잔여 LSF 벡터 및 LSF 벡터의 제제1 스테이지 근사치를 기초로 LPC 필터를 계산하는 것을 포함할 수 있다. LSF 가중치는 다음의 방정식을 사용하여 획득될 수 있고
,
여기서, i는 LSF 벡터의 성분을 나타내는 인덱스이고, w(i)는 LSF 가중치이고, W는 크기 조정 인자이며, LSF1st는 LSF 벡터의 제1 스테이지 근사치이다.
LSF 가중치 또는 역 LSF 가중치는 (런타임 이전에) 오프라인으로 미리 계산되고, 하나 이상의 룩업 테이블에 저장될 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 디코딩 동안 하나 이상의 룩업 테이블로부터 LSF 가중치 또는 역 LSF 가중치에 대해 미리 계산된 값을 호출하는 것을 포함할 수 있다.
USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 USAC 스트림으로부터의 잔여 LSF 벡터의 대수 벡터 양자화(AVQ) 리파인먼트 서브-벡터를 재구성하는 것, 및 잔여 LSF 벡터를 획득하기 위해 AVQ 리파인먼트 서브-벡터를 연결하는 것을 더 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 LSF 벡터 및 역 가중된 잔여 LSF 벡터의 제1 스테이지 근사치를 가산으로써 LSF 벡터를 결정하는 것, LSP 벡터를 획득하기 위해 LSF 벡터를 코사인 도메인으로 변환하는 것, 및 LSP 벡터를 기초로 LPF 필터의 선형 예측 계수를 결정하는 것을 더 포함할 수 있다. USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 USAC 스트림으로부터 양자화 모드를 나타내는 정보를 추출하는 것, 및 절대 양자화 모드가 LPC 필터를 양자화하는 데 사용되었는지를 결정하는 것을 더 포함할 수 있다.
USAC 스트림으로부터 LPC 필터를 디코딩하는 것은 룩업 테이블로부터 잔여 LSF 벡터의 성분을 검색하는 것을 포함할 수 있다. 룩업 테이블은 역 가중화된 LSF 잔여 벡터의 성분을 포함할 수 있다.
USAC 스트림을 디코딩하는 맥락에서 LPC 필터를 디코딩하는 대응하는 방법(800)의 예시가 도 8의 흐름도에 도시된다.
단계 S810에서, LSF 벡터의 제1 스테이지 근사치가 계산된다. 단계 S820에서, 잔여 LSF 벡터가 재구성된다. 단계 S830에서, LPC 필터를 양자화하기 위해 절대 양자화 모드가 사용되는 경우, 잔여 LSF 벡터의 역 가중을 위한 역 LSF 가중치는 역 LSF 가중치 또는 그 각각의 대응하는 LSF 가중치에 대해 미리 계산된 값을 참조함으로써 결정된다. 단계 S840에서, 잔여 LSF 벡터는 결정된 역 LSF 가중치만큼 역 가중된다. 단계 S850에서, LPC 필터는 역 가중된 잔여 LSF 벡터 및 LSF 벡터의 제1 스테이지 근사치를 기초로 계산된다. 위에서, LSF는 다음 방정식을 사용하여 획득되고
,
여기서, i는 LSF 벡터의 성분을 나타내는 인덱스이고, w(i)는 LSF 가중치이고, W는 크기 조정 인자이며, LSF1st는 LSF 벡터의 제1 스테이지 근사치이다.
도 2의 디코더(2000)는 다음과 같은 통합 음성 및 오디오 코덱을 준수할 수 있는 추가적인 구성요소를 더 포함할 수 있다:
- 비트스트림 페이로드를 각 툴에 대한 부분으로 분리하고, 툴의 각각에게 그 툴에 관련된 비트스트림 페이로드 정보를 제공하는 비트스트림 페이로드 디멀티플렉서 툴(2904);
- 비트스트림 페이로드 디멀티플렉서로부터 정보를 취하고, 그 정보를 파싱하며, 허프만(Huffman) 및 DPCM 코딩된 크기 인자(scalefactors)를 디코딩하는 크기 인자 무잡음(noiseless) 디코딩 툴(2905);
- 비트스트림 페이로드 디멀티플렉서로부터 정보를 취하고, 그 정보를 파싱하고, 산술적으로 코딩된 데이터를 디코딩하며, 양자화된 스펙트럼을 재구성하는 스펙트럼 무잡음 디코딩 툴(2905);
- 스펙트럼에 대한 양자화된 값을 취하고, 정수 값을 크기 조정되지 않고 재구성된 스펙트럼으로 변환하는 역양자화기 툴(2905); 이 양자화기는 바람직하게는, 이의 압신 인자(companding factor)가 선택된 코어 코딩 모드에 의존하는 압신 양자화기(companding quantizer)임;
- 예를 들어, 인코더에서의 비트 요구에 대한 강한 제한에 기인하여, 스펙트럼 값이 0으로 양자화될 때 발생하는, 디코딩된 스펙트럼에서의 스펙트럼 갭을 채우는데 사용되는 잡음 충전 툴(2905);
- 크기 인자의 정수 표현을 실제 값으로 변환하고 크기 조정되지 않은 역 양자화된 스펙트럼에 관련 크기 인자를 곱하는 재크기 조정(rescaling) 툴(2905);
- ISO/IEC 14496-3에 서술된 M/S 툴(2906);
- ISO/IEC 14496-3에 서술된 시간적 잡음 성형(temporal noise shaping, TNS) 툴(2907);
- 인코더에서 수행된 주파수 매핑의 역을 적용하는 필터 뱅크/블록 스위칭 툴(2908); 역 수정 이산 코사인 변환(inverse modified discrete cosine transform, IMDCT)이 필터 뱅크 툴에 대해 바람직하게 사용됨;
- 시간 워핑 모드(time warping mode)가 가능하게 될 때, 정상 필터 뱅크/블록 스위칭 툴을 대체하는 시간-워프된 필터 뱅크/블록 스위칭 툴(2908); 필터 뱅크는 바람직하게는, 정상 필터 뱅크와 동일하고(IMDCT), 추가적으로, 윈도우된 시간 도메인 샘플은 시변(time-varying) 리샘플링에 의해 워프된 시간 도메인으로부터 선형 시간 도메인으로 매핑됨;
- 적절한 공간 파라미터에 의해 제어되는 입력 신호(들)에 정교한 업믹스 절차를 적용함으로써, 하나 이상의 입력 신호로부터 다수의 신호를 생성하는 MPEG 서라운드(MPEGS) 툴(2902); USAC 맥락에서, MPEGS는 바람직하게는 송신된 다운믹스된(downmixed) 신호와 함께 파라메트릭 측 정보(parametric side information)를 송신함으로써 다중 채널 신호를 코딩하는 데 사용됨;
- 원래의 입력 신호를 분석하고, 그로부터 상이한 코딩 모드의 선택을 트리거하는 제어 정보를 생성하는 신호 분류기 툴; 입력 신호의 분석은 통상적으로 구현에 의존하며 주어진 입력 신호 프레임에 대해 최적의 코어 코딩 모드의 선택을 유발할 것이고; 신호 분류기의 출력은 다른 툴, 예를 들어 MPEG 서라운드, 향상된 SBR, 시간-워프된 필터 뱅크 등의 동작에 영향을 미치도록 사용될 수 있음;
- 장기간 예측기(적응형 부호어(adaptive codeword))와 펄스형 시퀀스(혁신형 부호어(innovation codeword))를 조합함으로써 시간 도메인 여기 신호를 효율적으로 나타내는 방법을 제공하는 ACELP 툴(2909).
IMDCT 블록(600)의 예시가 도 6에 개략적으로 도시된다. IMDCT 블록(600)에서, FFT 모듈(620)이 이용될 수 있다. 일 구현에서, FFT 모듈 구현은 쿨리-튜키 알고리즘을 기초로 한다. DFT는 재귀적으로 작은 FFT로 나눠진다. 이 알고리즘은 4의 거듭 제곱인 점의 개수에 대해 기수-4를 사용하고, 4의 거듭 제곱이 아닌 경우 혼합 기수가 사용된다.
4-점 FFT 에서 사용되는 회전 행렬은 아래와 같이 분할되며 입력 데이터에 적용된다.
4-점 IFFT 에 의해 사용되는 회전 행렬은 아래와 같이 분할되며 입력 데이터에 적용된다.
위와 같은 방식으로 행렬을 분할하는 것은 추가적인 스택 푸시 팝 없이도 이용 가능한 ARM 레지스터를 효과적으로 이용하는 데 도움을 준다. 그 이유는 분할된 행렬의 각 열 및 각 행이 두 개의 0이 아닌 엔트리를 포함하기 때문에, 위의 분할 행렬을 적용하는 것이 인덱스 당 하나의 가산 감산만을 요구한다.
모든 회전 인자는 미리 계산되며, 구현에는 최대 1024(210)점까지 모든 2n 점 FFT를 계산하기 위해, (514)(257 코사인 및 257 사인 값) 회전 인자만을 필요로 한다.
C-구현은 상이한 프로세서(예를 들어, ARM, DSP, X86)에 따라 벡터화할 수 있다.
MDCT 블록 및 IMDCT 블록은 처리 복잡도를 감소시키는 FFT 블록(FFT 모듈)(620) 및 후 회전 블록(630)이 후속하는 미리 계산된 회전 블록(610)을 사용하여 구현될 수 있다. 블록의 복잡성은 직접적인 구현보다 훨씬 적다. 또한, 이 블록은 FFT 블록이 갖는 모든 장점을 활용한다. 전/후 처리 블록에 의해 사용되는 회전 테이블은 룩업 테이블에서 취해질 수 있다.
다음 코드는 본 발명의 FFT를 예시한다:
요약하면, 상기는 다음과 같이 구성된 인코딩된 USAC 스트림을 디코딩하기 위한 장치의 처리에 대응할 수 있다. 장치는 인코딩된 USAC 스트림을 디코딩하기 위한 코어 디코더를 포함할 수 있다. 코어 디코더는 쿨리-튜키 알고리즘을 기초로 하는 고속 푸리에 변환(FFT) 모듈 구현을 포함할 수 있다. FFT 모듈은 이산 푸리에 변환(DFT)을 결정하도록 구성된다. DFT를 결정하는 것은 쿨리-튜커 알고리즘을 기초로 DFT를 작은 FFT로 재귀적으로 나누는 것을 포함할 수 있다. DFT를 결정하는 것은 FFT의 점의 개수가 4의 거듭 제곱인 경우 기수-4를 사용하는 것, 및 개수가 4의 거듭 제곱이 아닌 경우 혼합 기수를 사용하는 것을 더 수반할 수 있다. 작은 FFT를 수행하는 것은 회전 인자를 적용하는 것을 수반할 수 있다. 회전 인자를 적용하는 것은 회전 인자에 대해 미리 계산된 값을 참조하는 것을 수반할 수 있다.
FFT 모듈은 미리 계산된 값을 참조함으로써 회전 인자를 결정하도록 구성될 수 있다. 회전 인자는 오프라인으로 미리 계산되며 하나 이상의 룩업 테이블에 저장될 수 있다. 회전 인자를 적용하는 것은 디코딩 동안 하나 이상의 룩업 테이블로부터 회전 인자에 대해 미리 계산된 값을 호출하는 것을 수반할 수 있다.
FFT 모듈은 4-점 FFT를 위한 회전 행렬을 사용하도록 구성될 수 있고, 회전 행렬은 그의 엔트리로서 복수의 회전 인자를 포함한다. 회전 행렬은 제1 중간 행렬 및 제2 중간 행렬로 분할될 수 있다. 제1 중간 행렬 및 제2 중간 행렬의 행렬 곱셈은 회전 행렬을 산출할 수 있다. 제1 및 제2 중간 행렬의 각각은 각 행 및 각 열에서 정확하게 두 개의 엔트리를 가질 수 있다. FFT 모듈은 회전 인자가 적용될 입력 데이터에 제1 및 제2 중간 행렬을 연속적으로 적용하도록 구성될 수 있다. FFT 모듈은 회전 행렬의 엔트리에 대해 미리 계산된 값 또는 제1 및 제2 중간 행렬의 엔트리들에 대한 미리 계산된 값을 참조하도록 구성될 수 있다.
디코딩 동안, 복소수의 스테레오 예측은 현재 채널 쌍의 다운믹스 MDCT 스펙트럼, 및 complex_coef=1의 경우에, 현재 채널 쌍의 다운믹스 MDST 스펙트럼의 추정치, 즉 MDCT 스펙트럼의 허수의 대응 부분을 요구한다. 다운믹스 MDST 추정치는 현재 프레임의 MDCT 다운믹스 및 use_prev_frame == 1 인 경우 이전 프레임의 MDCT 다운믹스로부터 계산된다. 윈도우 그룹 g 및 그룹 윈도우 b의 이전 프레임의 MDCT 다운믹스 dmx_re_prev[g][b]는 그 프레임의 재구성된 좌측 및 우측 스펙트럼 및 현재 프레임의 pred_dir 표시자로부터 획득된다.
이 프로세스 동안, dmx_length 값이 사용될 수 있으며, 여기서 dmx_length 값은 window_sequence에 의존하는 짝수 값의 MDCT 변환 길이이다. 필터링 동안 보조 함수(helper function) filterAndAdd()는 실제 필터링 및 가산을 수행할 수 있으며, 다음을 기초로 정의될 수 있다:
FilterandAdd의 코드 스니펫(Code Snippet)
ixheaacd_filter_and_add의 코드 스니펫(Code Snippet)
위의 코드 스니펫은 필터 계수 포인터가 내림차순으로 액세스되는 한편 입력이 오름차순으로 액세스됨을 나타낸다. Neon에서 이들 두 개의 벡터가 로드될 때, [v1[0]-v1[3]로부터 입력이 로드되고, [v2[0]-v2[3]]로부터 필터가 로드된다. 위의 공식에 따라 v1[0]은 v2[3]과 곱해지며, 이는 Neon에서 지원되지 않는다. 따라서 런타임에서 필터 또는 입력을 반전시켜야 한다. 이는 필터 계수를 재정렬하면서, 그 자체를 저장하고 런타임에서 임의의 재배열을 피하며, 따라서 성능 개선(MCPS 개수)을 제공하는 제안된 절차(예를 들어, 아래의 스니프된(snipped) 코드 로 도시됨)에 의해 다루어진다.
본 문서에 서술된 방법 및 시스템은 소프트웨어, 펌웨어 및/또는 하드웨어로서 구현될 수 있다. 특정 구성 요소는 예를 들어, 디지털 신호 프로세서 또는 마이크로프로세서 상에서 구동되는 소프트웨어로서 구현될 수 있다. 다른 구성요소는 예를 들어, 하드웨어 및/또는 애플리케이션 특정 집적 회로로서 구현될 수 있다. 서술된 방법 및 시스템에서 직면하는 신호는 랜덤 액세스 메모리 또는 광학 저장매체와 같은 매체상에 저장될 수 있다. 이는 무선 네트워크, 위성 네트워크, 무선 네트워크 또는 유선 네트워크, 예를 들어 인터넷과 같은 네트워크를 통해 송신될 수 있다. 본 문서에 서술된 방법 및 시스템을 사용하는 통상적인 디바이스는 오디오 신호를 디코딩하는 셋톱 박스 또는 다른 고객 댁내 장비(customer premises equipment)이다. 인코딩 측에서, 방법 및 시스템은 방송국, 예를 들어 비디오 헤드엔드 시스템(video headend systems)에서 사용될 수 있다.

Claims (23)

  1. 인코딩된 통합 오디오 및 음성(MPEG-D USAC) 스트림(Unified Audio and Speech stream)을 디코딩하기 위한 장치로서, 상기 장치는:
    상기 인코딩된 통합 오디오 및 음성(MPEG-D USAC) 스트림을 디코딩하기 위한 코어 디코더(core decoder)를 포함하고;
    상기 코어 디코더는 입력 신호의 대역폭을 확장하기 위한 eSBR 유닛을 포함하고 - 상기 eSBR 유닛은 QMF 기반의 고조파 트랜스포저를 포함함 -;
    상기 QMF 기반의 고조파 트랜스포저는 상기 입력 신호의 대역폭을 확장하기 위해 복수의 합성 부대역 각각에서 QMF 도메인(QMF domain)의 상기 입력 신호를 처리하도록 구성되며, 그리고
    상기 QMF 기반의 고조파 트랜스포저는 미리 계산된 정보에 적어도 부분적으로 기초하여 동작하도록 구성되고, 그리고
    상기 QMF 기반의 고조파 트랜스포저는 상기 복수의 합성 부대역의 각각에 대한 각각의 복소수 출력 이득 값을 획득하고, 상기 복소수 출력 이득 값을 그 각각의 합성 부대역에 적용하도록 더 구성되고,
    상기 미리 계산된 정보는 상기 복소수 출력 이득 값에 관련되고; 그리고
    상기 복소수 출력 이득 값은 런타임에 하나 이상의 룩업 테이블로부터 액세스되는 실수 부분 및 허수 부분을 포함하고,
    상기 복소수 출력 이득 값의 상기 실수 부분에 대해 룩업 테이블(phase_vocoder_cos_tab)이 제공되고, 상기 복소수 출력 이득 값의 상기 허수 부분에 대해 룩업 테이블(phase_vocoder_sin_tab)이 제공되고,
    런타임에, 상기 룩업 테이블을 참조하고 상기 실수 부분 및 허수 부분을 검색하는 데 부대역 인덱스(k)가 사용되고, 그리고
    상기 복소수 출력 이득 값을 적용하기 위한 곱셈은 상기 실수 부분에 대한 룩업 테이블(phase_vocoder_cos_tab[k]) 및 상기 허수 부분에 대한 룩업 테이블(phase_vocoder_sin_tab[k])을 수반하는 ixheaacd_qmf_hbe_apply 함수를 기초로 수행되고,
    상기 QMF 기반의 고조파 트랜스포저는 상기 입력 신호의 부대역으로부터 샘플을 추출하고, 상기 추출된 샘플의 쌍에 대한 외적 이득 값(cross product gain values)을 획득하고, 상기 추출된 샘플의 각각의 쌍에 상기 외적 이득 값을 적용하도록 구성되고;
    상기 미리 계산된 정보는 상기 외적 이득 값에 관련되고;
    상기 외적 이득 값은 외적 이득 공식 인자를 기초로 오프라인으로 결정되고, 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 QMF 기반의 고조파 트랜스포저는 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 외적 이득 값에 액세스하도록 구성되는, 장치.
  2. 제1항에 있어서, 상기 eSBR 유닛은 인코딩동안 잘린(truncated) 고조파 시퀀스의 복제를 기초로 상기 입력 신호의 고대역 주파수 성분을 재성성하고, 그를 통해 상기 입력 신호의 상기 대역폭을 확장하도록 구성되는, 장치.
  3. 제1항 내지 제2항 중 어느 한 항에 있어서, 상기 eSBR 유닛은 상기 입력 신호에서 더욱 높은 오디오 주파수의 파라메트릭 표현(parametric representation)을 다루도록 구성되는, 장치.
  4. 제1항 또는 제2항에 있어서,
    상기 복수의 합성 부대역은 소수인 부대역 인덱스를 갖는 비-정수(non-integer)인 합성 부대역을 포함하고, 상기 QMF 기반의 고조파 트랜스포저는 이들 비-정수인 합성 부대역에서 상기 입력 신호로부터 추출된 샘플을 처리하도록 구성되고;
    상기 미리 계산된 정보는 정수 부대역 인덱스를 갖는 이웃하는 정수 부대역의 샘플로부터 상기 비-정수인 부대역의 샘플을 보간하기 위한 보간 계수에 관련되고,
    상기 보간 계수는 오프라인으로 결정되고 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 QMF 기반의 고조파 트랜스포저는 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 보간 계수에 액세스하도록 구성되는, 장치.
  5. 제1항 또는 제2항에 있어서,
    상기 QMF 기반의 고조파 트랜스포저는 실수 값의 MS 채널 합성 필터 뱅크 및 복소수 값의 2M 채널 분석 필터 뱅크를 포함하고;
    상기 미리 계산된 정보는 상기 실수 값의 MS 채널 합성 필터 뱅크에서의 합성 동안 및/또는 상기 복소수 값의 2M 채널 분석 필터 뱅크에서의 분석 동안 샘플의 어레이의 윈도잉(windowing)을 위한 윈도우 계수에 관련되고;
    상기 윈도우 계수는 각각 MS 또는 M의 모든 가능한 값에 대한 테이블 값(tabulated values) 사이의 선형 보간을 기초로 오프라인으로 결정되고, 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 QMF 기반의 고조파 트랜스포저는 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 윈도우 계수에 액세스하도록 구성되는, 장치.
  6. 제1항 또는 제2항에 있어서,
    상기 QMF 기반의 고조파 트랜스포저는 실수 값의 Ms 채널 합성 필터 뱅크를 포함하고;
    상기 실수 값의 MS 채널 합성 필터 뱅크는 2MS 실수 값의 부대역 샘플의 어레이를 획득하기 위해 MS 실수 값의 부대역 샘플의 어레이를 처리하도록 구성되고, 상기 MS 실수 값의 부대역 샘플 중 각 실수 값의 부대역 샘플은 MS 부대역 중 각각의 부대역과 연관되고;
    상기 MS 실수 값의 부대역 샘플의 어레이를 처리하는 것은 실수 값의 행렬 N 및 MS 실수 값의 부대역 샘플의 어레이의 행렬-벡터 곱셈을 수행하는 것을 수반하고, 상기 실수 값의 행렬 N의 엔트리는 상기 행렬-벡터 곱셈에서 곱해지는 상기 각각의 부대역 샘플의 부대역 인덱스에 의존하고;
    상기 미리 계산된 정보는 상기 행렬-벡터 곱셈을 위한 상기 실수 값의 행렬의 상기 엔트리에 관련되고,
    상기 실수 값의 행렬 N의 상기 엔트리는 오프라인으로 결정되고 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 QMF 기반의 고조파 트랜스포저는 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 실수 값의 행렬 N의 엔트리에 액세스하도록 구성되는, 장치.
  7. 제1항 또는 제2항에 있어서,
    상기 QMF 기반의 고조파 트랜스포저는 복소수 값의 2MS 채널 분석 필터 뱅크를 포함하고;
    상기 복소수 값의 2MS 채널 분석 필터 뱅크는 2MS 복소수 값의 부대역 샘플의 어레이를 획득하기 위해 4MS 부대역 샘플의 어레이를 처리하도록 구성되고, 2MS 실수 값의 부대역 샘플 중 각 복소수 값의 부대역 샘플은 2MS 부대역 중 각각의 부대역과 연관되고;
    상기 4MS 부대역 샘플의 어레이를 처리하는 것은 복소수 값의 행렬 M과 상기 4MS 부대역 샘플의 어레이의 행렬-벡터 곱셈을 수행하는 것을 수반하고, 상기 복소수 값의 행렬 M의 엔트리는 이들 행렬 엔트리가 상기 행렬-벡터 곱셈에 기여하는 상기 2MS 복소수 값의 부대역 샘플 중 상기 각각의 부대역 샘플의 부대역 인덱스에 의존하고;
    상기 미리 계산된 정보는 상기 행렬-벡터 곱셈을 위한 상기 복소수 값의 행렬 M의 상기 엔트리에 관련되고;
    상기 복소수 값의 행렬 M의 상기 엔트리는 오프라인으로 결정되고, 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 QMF 기반의 고조파 트랜스포저는 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 복소수 값의 행렬 M의 상기 엔트리에 액세스하도록 구성되는, 장치.
  8. 제1항 또는 제2항에 있어서,
    상기 QMF 기반의 고조파 트랜스포저는 MS 새로운 복소수 값의 부대역 샘플의 세트로부터 MS 실수 값의 부대역 샘플의 세트를 계산하도록 구성된 실수 값의 MS 채널 합성 필터 뱅크를 포함하고, 각 실수 값의 부대역 샘플 및 각 새로운 복소수 값의 부대역 샘플은 MS 부대역 중 각각의 부대역과 연관되고;
    상기 MS 새로운 복소수 값의 부대역 샘플의 세트로부터 상기 MS 실수 값의 부대역 샘플의 세트를 계산하는 것은, 상기 MS 새로운 복소수 값의 부대역 샘플의 각각에 대해, 그 새로운 복소수 값의 부대역 샘플에 각각의 복소수 지수를 적용하는 것 및 각각의 복소수 지수가 상기 새로운 복소수 값의 부대역 샘플에 적용된 값의 실수 부분을 취하는 것을 수반하고, 상기 각각의 복소수 지수는 그 새로운 복소수 값의 부대역 샘플의 부대역 인덱스에 의존하고,
    상기 미리 계산된 정보는 상기 MS 부대역에 대한 상기 복소수 지수에 관련되고;
    상기 복소수 지수는 오프라인으로 결정되고, 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 QMF 기반의 고조파 트랜스포저는 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 복소수 지수에 액세스하도록 구성되는, 장치.
  9. 삭제
  10. 인코딩된 통합 오디오 및 음성(MPEG-D USAC) 스트림을 디코딩하기 위한 방법으로서, 상기 방법은:
    상기 인코딩된 통합 오디오 및 음성(MPEG-D USAC) 스트림을 디코딩하는 것을 포함하고;
    상기 디코딩하는 것은 입력 신호의 대역폭을 확장하는 것을 포함하고,
    상기 입력 신호의 상기 대역폭을 확장하는 것은 복수의 합성 부대역 각각에서 QMF 도메인의 상기 입력 신호를 처리하는 것을 수반하고,
    상기 QMF 도메인의 상기 입력 신호를 처리하는 것은 미리 계산된 정보에 적어도 부분적으로 기초하여 동작하고, 그리고
    복수의 합성 부대역의 각각에서 상기 QMF 도메인의 상기 입력 신호를 처리하는 것은 상기 복수의 합성 부대역의 각각에 대한 각각의 복소수 출력 이득 값을 획득하는 것, 및 상기 복소수 출력 이득 값을 그 각각의 합성 부대역에 적용하는 것을 더 수반하고;
    상기 미리 계산된 정보는 상기 복소수 출력 이득 값에 관련되고; 그리고
    상기 복소수 출력 이득 값은 런타임에 하나 이상의 룩업 테이블로부터 액세스되는 실수 부분 및 허수 부분을 포함하고,
    상기 복소수 출력 이득 값의 상기 실수 부분에 대해 룩업 테이블(phase_vocoder_cos_tab)이 제공되고, 상기 복소수 출력 이득 값의 상기 허수 부분에 대해 룩업 테이블(phase_vocoder_sin_tab)이 제공되고,
    런타임에, 상기 룩업 테이블을 참조하고 상기 실수 부분 및 허수 부분을 검색하는 데 부대역 인덱스(k)가 사용되고, 그리고
    상기 복소수 출력 이득 값을 적용하기 위한 곱셈은 상기 실수 부분에 대한 룩업 테이블(phase_vocoder_cos_tab[k]) 및 상기 허수 부분에 대한 룩업 테이블(phase_vocoder_sin_tab[k])을 수반하는 ixheaacd_qmf_hbe_apply 함수를 기초로 수행되고,
    복수의 합성 부대역의 각각에서 상기 QMF 도메인의 상기 입력 신호를 처리하는 것은 상기 입력 신호의 부대역으로부터 샘플을 추출하는 것, 상기 추출된 샘플의 쌍에 대한 외적 이득 값을 획득하는 것 및 상기 추출된 샘플의 각각의 쌍에 상기 외적 이득 값을 적용하는 것을 수반하고;
    상기 미리 계산된 정보는 상기 외적 이득 값에 관련되고;
    상기 외적 이득 값은 외적 이득 공식 인자를 기초로 오프라인으로 결정되고, 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 방법은 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 외적 이득 값에 액세스하는 것을 포함하는, 방법.
  11. 제10항에 있어서, 입력 신호의 상기 대역폭을 확장하는 것은 인코딩동안 잘린(truncated) 고조파 시퀀스의 복제를 기초로 상기 입력 신호의 고대역 주파수 성분을 재생성하는 것을 수반하는, 방법.
  12. 제10항 내지 제11항 중 어느 한 항에 있어서, 입력 신호의 상기 대역폭을 확장하는 것은 상기 입력 신호에서 더욱 높은 오디오 주파수의 파라메트릭 표현을 다루는 것을 수반하는, 방법.
  13. 제10항 또는 제11항에 있어서,
    상기 복수의 합성 부대역은 소수인 부대역 인덱스를 갖는 비-정수인 합성 부대역을 포함하고, QMF 기반의 고조파 트랜스포저는 이들 비-정수인 합성 부대역에서 상기 입력 신호로부터 추출된 샘플을 처리하도록 구성되고;
    상기 미리 계산된 정보는 정수 부대역 인덱스를 갖는 이웃하는 정수 부대역의 샘플로부터 상기 비-정수인 부대역의 샘플을 보간하기 위한 보간 계수에 관련되고;
    상기 보간 계수는 오프라인으로 결정되고 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 방법은 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 보간 계수에 액세스하는 것을 포함하는, 방법.
  14. 제10항 또는 제11항에 있어서,
    복수의 합성 부대역의 각각에서 상기 QMF 도메인의 상기 입력 신호를 처리하는 것은 실수 값의 MS 채널 합성 필터 뱅크 및 복소수 값의 2M 채널 분석 필터 뱅크를 적용하는 것을 수반하고;
    상기 미리 계산된 정보는 상기 실수 값의 MS 채널 합성 필터 뱅크에서의 합성 동안 및/또는 상기 복소수 값의 2M 채널 분석 필터 뱅크에서의 분석 동안 샘플의 어레이의 윈도잉을 위한 윈도우 계수에 관련되고;
    상기 윈도우 계수는 각각 MS 또는 M의 모든 가능한 값에 대한 테이블 값 사이의 선형 보간을 기초로 오프라인으로 결정되고, 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 방법은 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 윈도우 계수에 액세스하는 것을 포함하는, 방법.
  15. 제10항 또는 제11항에 있어서,
    복수의 합성 부대역의 각각에서 상기 QMF 도메인의 상기 입력 신호를 처리하는 것은 실수 값의 Ms 채널 합성 필터 뱅크를 적용하는 것을 수반하고;
    상기 실수 값의 MS 채널 합성 필터 뱅크는 2MS 실수 값의 부대역 샘플의 어레이를 획득하기 위해 MS 실수 값의 부대역 샘플의 어레이를 처리하고, 상기 MS 실수 값의 부대역 샘플 중 각 실수 값의 부대역 샘플은 MS 부대역 중 각각의 부대역과 연관되고;
    상기 MS 실수 값의 부대역 샘플의 어레이를 처리하는 것은 실수 값의 행렬 N 및 MS 실수 값의 부대역 샘플의 어레이의 행렬-벡터 곱셈을 수행하는 것을 수반하고, 상기 실수 값의 행렬 N의 엔트리는 상기 행렬-벡터 곱셈에서 곱해지는 상기 각각의 부대역 샘플의 부대역 인덱스에 의존하고;
    상기 미리 계산된 정보는 상기 행렬-벡터 곱셈을 위한 상기 실수 값의 행렬의 상기 엔트리에 관련되고,
    상기 실수 값의 행렬 N의 상기 엔트리는 오프라인으로 결정되고 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 방법은 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 실수 값의 행렬 N의 엔트리에 액세스하는 것을 포함하는, 방법.
  16. 제10항 또는 제11항에 있어서,
    복수의 합성 부대역의 각각에서 상기 QMF 도메인의 상기 입력 신호를 처리하는 것은 복소수 값의 2MS 채널 분석 필터 뱅크를 적용하는 것을 수반하고;
    상기 복소수 값의 2MS 채널 분석 필터 뱅크는 2MS 복소수 값의 부대역 샘플의 어레이를 획득하기 위해 4MS 부대역 샘플의 어레이를 처리하도록 구성되고, 2MS 실수 값의 부대역 샘플 중 각 복소수 값의 부대역 샘플은 2MS 부대역 중 각각의 부대역과 연관되고;
    상기 4MS 부대역 샘플의 어레이를 처리하는 것은 복소수 값의 행렬 M과 상기 4MS 부대역 샘플의 어레이의 행렬-벡터 곱셈을 수행하는 것을 수반하고, 상기 복소수 값의 행렬 M의 엔트리는 이들 행렬 엔트리가 상기 행렬-벡터 곱셈에 기여하는 상기 2MS 복소수 값의 부대역 샘플 중 상기 각각의 부대역 샘플의 부대역 인덱스에 의존하고;
    상기 미리 계산된 정보는 상기 행렬-벡터 곱셈을 위한 상기 복소수 값의 행렬 M의 상기 엔트리에 관련되고;
    상기 복소수 값의 행렬 M의 상기 엔트리는 오프라인으로 결정되고, 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 방법은 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 복소수 값의 행렬 M의 상기 엔트리에 액세스하는 것을 포함하는, 방법.
  17. 제10항 또는 제11항에 있어서,
    복수의 합성 부대역의 각각에서 상기 QMF 도메인의 상기 입력 신호를 처리하는 것은 MS 새로운 복소수 값의 부대역 샘플의 세트로부터 MS 실수 값의 부대역 샘플의 세트를 계산하도록 구성된 실수 값의 MS 채널 합성 필터 뱅크를 적용하는 것을 수반하고, 각 실수 값의 부대역 샘플 및 각 새로운 복소수 값의 부대역 샘플은 MS 부대역 중 각각의 부대역과 연관되고;
    상기 MS 새로운 복소수 값의 부대역 샘플의 세트로부터 상기 MS 실수 값의 부대역 샘플의 세트를 계산하는 것은, 상기 MS 새로운 복소수 값의 부대역 샘플의 각각에 대해, 그 새로운 복소수 값의 부대역 샘플에 각각의 복소수 지수를 적용하는 것 및 각각의 복소수 지수가 상기 새로운 복소수 값의 부대역 샘플에 적용된 값의 실수 부분을 취하는 것을 수반하고, 상기 각각의 복소수 지수는 그 새로운 복소수 값의 부대역 샘플의 부대역 인덱스에 의존하고,
    상기 미리 계산된 정보는 상기 MS 부대역에 대한 상기 복소수 지수에 관련되고;
    상기 복소수 지수는 오프라인으로 결정되고, 하나 이상의 룩업 테이블에 저장되고; 그리고
    상기 방법은 런타임에 상기 하나 이상의 룩업 테이블로부터 상기 복소수 지수에 액세스하는 것을 포함하는, 방법.
  18. 삭제
  19. 컴퓨팅 디바이스 상에서 수행될 때 제10항 또는 제11항의 방법 단계를 수행하고, 프로세서 상에서 실행하도록 구성된 소프트웨어 프로그램을 포함하는, 저장 매체.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
KR1020207020404A 2017-12-19 2018-12-19 통합 음성 및 오디오 디코딩 및 인코딩 qmf 기반 고조파 트랜스포저 개선을 위한 방법, 장치 및 시스템 KR102697685B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN201741045576 2017-12-19
IN201741045576 2017-12-19
US201862665741P 2018-05-02 2018-05-02
US62/665,741 2018-05-02
PCT/EP2018/085940 WO2019121982A1 (en) 2017-12-19 2018-12-19 Methods and apparatus for unified speech and audio decoding qmf based harmonic transposer improvements

Publications (2)

Publication Number Publication Date
KR20200099560A KR20200099560A (ko) 2020-08-24
KR102697685B1 true KR102697685B1 (ko) 2024-08-23

Family

ID=64870493

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207020404A KR102697685B1 (ko) 2017-12-19 2018-12-19 통합 음성 및 오디오 디코딩 및 인코딩 qmf 기반 고조파 트랜스포저 개선을 위한 방법, 장치 및 시스템

Country Status (8)

Country Link
US (1) US11315584B2 (ko)
EP (1) EP3729427A1 (ko)
JP (1) JP7326285B2 (ko)
KR (1) KR102697685B1 (ko)
CN (1) CN111670473B (ko)
BR (1) BR112020012654A2 (ko)
WO (1) WO2019121982A1 (ko)
ZA (1) ZA202003646B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2972833T3 (es) * 2020-05-20 2024-06-17 Dolby Int Ab Métodos y aparatos para mejoras de descodificación unificada de habla y de audio

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130304480A1 (en) 2011-01-18 2013-11-14 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Encoding and decoding of slot positions of events in an audio signal frame
US20170178653A1 (en) 2004-03-01 2017-06-22 Dolby Laboratories Licensing Corporation Reconstructing Audio Signals with Multiple Decorrelation Techniques

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02216583A (ja) * 1988-10-27 1990-08-29 Daikin Ind Ltd 関数値算出方法およびその装置
GB0001517D0 (en) 2000-01-25 2000-03-15 Jaber Marwan Computational method and structure for fast fourier transform analizers
DE60202881T2 (de) * 2001-11-29 2006-01-19 Coding Technologies Ab Wiederherstellung von hochfrequenzkomponenten
US20040002856A1 (en) * 2002-03-08 2004-01-01 Udaya Bhaskar Multi-rate frequency domain interpolative speech CODEC system
DE10234130B3 (de) 2002-07-26 2004-02-19 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum Erzeugen einer komplexen Spektraldarstellung eines zeitdiskreten Signals
CN1795697A (zh) * 2003-04-09 2006-06-28 塔特公司 用于btsc兼容系数的倒数索引查找
JP2006235243A (ja) * 2005-02-24 2006-09-07 Secom Co Ltd 音響信号分析装置及び音響信号分析プログラム
JP4627737B2 (ja) * 2006-03-08 2011-02-09 シャープ株式会社 デジタルデータ復号化装置
US7957707B2 (en) * 2007-03-30 2011-06-07 Freescale Semiconductor, Inc. Systems, apparatus and method for performing digital pre-distortion based on lookup table gain values
US8015368B2 (en) 2007-04-20 2011-09-06 Siport, Inc. Processor extensions for accelerating spectral band replication
ATE500588T1 (de) * 2008-01-04 2011-03-15 Dolby Sweden Ab Audiokodierer und -dekodierer
BR122020009732B1 (pt) 2008-05-23 2021-01-19 Koninklijke Philips N.V. Método para a geração de um sinal esquerdo e de um sinal direito a partir de um sinal de downmix mono com base em parâmetros espaciais, meio legível por computador não transitório, aparelho de downmix estéreo paramétrico para a geração de um sinal de downmix mono a partir de um sinal esquerdo e de um sinal direito com base em parâmetros espaciais e método para a geração de um sinal residual de previsão para um sinal de diferença a partir de um sinal esquerdo e de um sinal direito com base em parâmetros espaciais
PT2313887T (pt) 2008-07-10 2017-11-14 Voiceage Corp Dispositivo e método de quantificação de filtro de lpc de taxa de bits variável e quantificação inversa
US8532998B2 (en) * 2008-09-06 2013-09-10 Huawei Technologies Co., Ltd. Selective bandwidth extension for encoding/decoding audio/speech signal
AU2010225051B2 (en) 2009-03-17 2013-06-13 Dolby International Ab Advanced stereo coding based on a combination of adaptively selectable left/right or mid/side stereo coding and of parametric stereo coding
KR101710113B1 (ko) 2009-10-23 2017-02-27 삼성전자주식회사 위상 정보와 잔여 신호를 이용한 부호화/복호화 장치 및 방법
CN103038819B (zh) * 2010-03-09 2015-02-18 弗兰霍菲尔运输应用研究公司 用以使用补丁边界对准处理输入音频信号的装置及方法
EP2375409A1 (en) * 2010-04-09 2011-10-12 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoder, audio decoder and related methods for processing multi-channel audio signals using complex prediction
WO2011124608A1 (en) 2010-04-09 2011-10-13 Dolby International Ab Mdct-based complex prediction stereo coding
US8628741B2 (en) 2010-04-28 2014-01-14 Ronald G. Presswood, Jr. Off gas treatment using a metal reactant alloy composition
US8903015B2 (en) * 2010-11-22 2014-12-02 Samsung Electronics Co., Ltd. Apparatus and method for digital predistortion of non-linear amplifiers
KR101854300B1 (ko) * 2011-03-18 2018-05-03 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 유연한 구성 기능을 갖는 오디오 인코더 및 디코더
CN102522092B (zh) * 2011-12-16 2013-06-19 大连理工大学 一种基于g.711.1的语音带宽扩展的装置和方法
US20130332156A1 (en) 2012-06-11 2013-12-12 Apple Inc. Sensor Fusion to Improve Speech/Audio Processing in a Mobile Device
US9679571B2 (en) 2013-04-10 2017-06-13 Electronics And Telecommunications Research Institute Encoder and encoding method for multi-channel signal, and decoder and decoding method for multi-channel signal
US9626983B2 (en) * 2014-06-26 2017-04-18 Qualcomm Incorporated Temporal gain adjustment based on high-band signal characteristic
EP3067886A1 (en) * 2015-03-09 2016-09-14 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoder for encoding a multichannel signal and audio decoder for decoding an encoded audio signal
TWI758146B (zh) 2015-03-13 2022-03-11 瑞典商杜比國際公司 解碼具有增強頻譜帶複製元資料在至少一填充元素中的音訊位元流
US9871574B2 (en) * 2016-04-05 2018-01-16 Getac Technology Corporation Antenna signal transmission apparatus and antenna signal transmission method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170178653A1 (en) 2004-03-01 2017-06-22 Dolby Laboratories Licensing Corporation Reconstructing Audio Signals with Multiple Decorrelation Techniques
US20130304480A1 (en) 2011-01-18 2013-11-14 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Encoding and decoding of slot positions of events in an audio signal frame

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ISO/IEC FDIS 23003-1:2006(E). Information technology - MPEG audio technologies Part 1: MPEG Surround. ISO/IEC JTC 1/SC 29/WG 11. 2006.07.21.
ISO/IEC FDIS 23003-3:2011(E), Information technology - MPEG audio technologies - Part 3: Unified speech and audio coding. ISO/IEC JTC 1/SC 29/WG 11. 2011.09.20.*

Also Published As

Publication number Publication date
US11315584B2 (en) 2022-04-26
BR112020012654A2 (pt) 2020-12-01
RU2020123740A (ru) 2022-01-20
CN111670473A (zh) 2020-09-15
JP2021508076A (ja) 2021-02-25
ZA202003646B (en) 2022-12-21
EP3729427A1 (en) 2020-10-28
US20210020186A1 (en) 2021-01-21
KR20200099560A (ko) 2020-08-24
JP7326285B2 (ja) 2023-08-15
CN111670473B (zh) 2024-08-09
WO2019121982A1 (en) 2019-06-27

Similar Documents

Publication Publication Date Title
US8655670B2 (en) Audio encoder, audio decoder and related methods for processing multi-channel audio signals using complex prediction
CN102656628B (zh) 优化的低吞吐量参数编码/解码
US11482233B2 (en) Methods, apparatus and systems for unified speech and audio decoding and encoding decorrelation filter improvements
US11532316B2 (en) Methods and apparatus systems for unified speech and audio decoding improvements
KR102697685B1 (ko) 통합 음성 및 오디오 디코딩 및 인코딩 qmf 기반 고조파 트랜스포저 개선을 위한 방법, 장치 및 시스템
EP4231287B1 (en) Downscaled decoding
RU2777304C2 (ru) Способы, устройство и системы для улучшения модуля гармонической транспозиции на основе qmf унифицированного декодирования и кодирования речи и звука
RU2776394C2 (ru) Способы, устройство и системы для улучшения фильтра декорреляции унифицированного декодирования и кодирования речи и звука
RU2779265C2 (ru) Способы, устройства и системы для улучшения унифицированного декодирования и кодирования речи и звука
CN104078048B (zh) 一种声音解码装置及其方法

Legal Events

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