JP7780441B2 - マルチチャンネル音コーデックにおけるステレオコーディングモードの切り替え - Google Patents
マルチチャンネル音コーデックにおけるステレオコーディングモードの切り替えInfo
- Publication number
- JP7780441B2 JP7780441B2 JP2022547128A JP2022547128A JP7780441B2 JP 7780441 B2 JP7780441 B2 JP 7780441B2 JP 2022547128 A JP2022547128 A JP 2022547128A JP 2022547128 A JP2022547128 A JP 2022547128A JP 7780441 B2 JP7780441 B2 JP 7780441B2
- Authority
- JP
- Japan
- Prior art keywords
- stereo
- dft
- mode
- stereo mode
- frame
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech 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/008—Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech 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/02—Speech 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
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech 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/04—Speech 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/16—Vocoder architecture
- G10L19/18—Vocoders using multiple modes
- G10L19/22—Mode decision, i.e. based on audio signal content versus external parameters
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech 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/04—Speech 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/16—Vocoder architecture
- G10L19/18—Vocoders using multiple modes
- G10L19/24—Variable rate codecs, e.g. for generating different qualities using a scalable representation such as hierarchical encoding or layered encoding
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L21/00—Speech 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/04—Time compression or expansion
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)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Stereophonic System (AREA)
Description
-「音」という用語は、発話、オーディオ、および任意の他の音に関係してもよく、
-「ステレオ」という用語は、「ステレオフォニック」の省略であり、
-「モノ」という用語は、「モノフォニック」の省略である。
図2は、IVASステレオ符号化デバイス200および対応するIVASステレオ符号化方法250を同時に示す高水準のブロック図であり、図3は、図2のIVASステレオ符号化デバイス200のFDステレオエンコーダ300および対応するFDステレオ符号化方法350を同時に示すブロック図であり、図4は、図2のIVASステレオ符号化デバイス200のTDステレオエンコーダ400および対応するTDステレオ符号化方法450を同時に示すブロック図であり、図5は、図2のIVASステレオ符号化デバイス200のMDCTステレオエンコーダ500および対応するMDCTステレオ符号化方法550を同時に示すブロック図である。
本開示および添付の図面において、以下の術語体系が使用される。小文字は時間領域の信号を示し、大文字は変換領域の信号を示し、l/Lは左チャンネルを表し、r/Rは右チャンネルを表し、m/Mは中間チャンネルを表し、s/Sはサイドチャンネルを表し、PChは一次チャンネルを表し、SChは二次チャンネルを表す。また、図面において、単位なしの数字は、16kHzのサンプリングレートにおけるサンプルの数に対応する。
-DFTステレオエンコーダ300および符号化方法350: 再サンプリングがDFT領域において実行されるので、追加の遅延をもたらさない。
-TDステレオエンコーダ400および符号化方法450: FIR再サンプリング(デシメーション)が、0.9375msの遅延を使用して実行される。この再サンプリング遅延はIVASステレオ符号化デバイス200では利用可能ではないので、再サンプリング遅延は、ダウンミキシングされた信号の終わりに0を追加することによって補償される。続いて、ダウンミキシングされた信号の0.9375msの長さの補償された部分が、次のフレームにおいて再計算される(再び再サンプリングされる)必要がある。
-MDCTステレオエンコーダ500および符号化方法550: TDステレオエンコーダ400および符号化方法4500と同じ。
入力サンプリングレート(普通は16、32、または48kHz)から内部サンプリングレート(普通は12.8、16、25.6、または32kHz)への、DFTステレオエンコーダ300、TDステレオエンコーダ400、およびMDCTステレオエンコーダ500における再サンプリングが行われる。再サンプリングされた信号が次いで、前処理およびコア符号化において使用される。
-DFTステレオエンコーダ300および符号化方法350: 先読みの8.75msという長さは、DFT分析窓のOLA部分、それぞれDFT合成窓のOLA部分に関するダウンミキシングされた信号の窓掛けされた重複部分に対応する。可能な限り有用な信号に対して前処理を実行するために、ダウンミキシングされた信号の先読み部分が矯正される(または窓掛け解除される、すなわち逆の窓が先読み部分に適用される)。結果として、先読みの中の8.75msの長さの矯正されたダウンミキシングされた信号は、現在のフレームでは正しく再構築されない。
-TDステレオエンコーダ400および符号化方法450: 時間領域(TD)ダウンミキシングの前に、Inter-Channel Alignment (ICA)が、時間領域における2つの入力チャンネルlとrとの間のInter-channel Time Delay (ITD)同期を使用して実行される。これは、入力チャンネル(lまたはr)のうちの1つを遅らせることによって、およびITD遅延の長さに対応するダウンミキシングされた信号の欠けている部分を外挿することによって達成され、ITD遅延の最大値は7.5msである。結果として、先読みにおける最大で7.5msの長さの外挿されたダウンミキシングされた信号は、現在のフレームにおいて正しく再構築されない。
-MDCTステレオエンコーダ500および符号化方法550: ダウンミキシングまたは時間シフトが普通は実行されないので、入力オーディオ信号の先読み部分は普通は正確である。
-DFTステレオエンコーダ300および符号化方法350: 8.75msの長さの信号が、入力ステレオ信号サンプリングレートと内部サンプリングレートの両方において再計算を受ける。
-TDステレオエンコーダ400および符号化方法450: 7.5msの長さの信号は入力ステレオ信号サンプリングレートで再計算を受けるが、7.5+0.9375=8.4375msの長さの信号は内部サンプリングレートで再計算を受ける。
-MDCTステレオエンコーダ500および符号化方法550: 入力ステレオ信号サンプリングレートでは普通の再計算は必要ではないが、0.9375msの長さの信号は内部サンプリングレートで再計算を受ける。
先読みの中の矯正された、それぞれ外挿された信号部分の長さが、例示としてここで言及されるが、一般にあらゆる他の長さが実装され得ることに留意されたい。
以下のTable I(表1)は、現在のステレオコーディングモードに応じた各フレームに対する処理動作を逐次的な順序で列挙する(図2~図5も参照)。
1)たとえば時間領域過渡状態検出またはInter-Channel BWE(IC-BWE)のために使用される、左l/Lチャンネルおよび右r/Rチャンネルを含む入力ステレオ信号
2)入力ステレオ信号サンプリングレートにおけるステレオダウンプロセシングされた信号(TDステレオモードおよびDFTステレオモードではダウンミキシングされた信号)
-DFTステレオエンコーダ300および符号化方法350: 中間チャンネルm/M
-TDステレオエンコーダ400および符号化方法450: 一次チャンネル(PCh)および二次チャンネル(SCh)
-MDCTステレオエンコーダ500および符号化方法550: 元の(ダウンミックスなし)左チャンネルlおよび右チャンネルr
3)前処理において使用される、12.8kHzのサンプリングレートでダウンプロセシングされた信号(TDステレオモードおよびDFTステレオモードではダウンミキシングされた信号)
4)コア符号化において使用される、内部サンプリングレートでダウンプロセシングされた信号(TDステレオモードおよびDFTステレオモードではダウンミキシングされた信号)
5)帯域幅拡張(BWE)において使用される、高帯域(HB)入力信号
DFTステレオモード、TDステレオモード、およびMDCTステレオモードの切り替えを制御する動作(図示せず)は、たとえばその内容全体が参照によって本明細書に組み込まれる特許文献3において説明されるような、ステレオ分類およびステレオモード選択の動作255を備える。動作255を実行するために、DFTステレオモード、TDステレオモード、およびMDCTステレオモードの切り替えのコントローラ(図示せず)は、ステレオ分類器およびステレオモード選択器205を備える。
DFTステレオモード、TDステレオモード、およびMDCTステレオモードの切り替えを制御する動作(図示せず)は、メモリ割り振り(図示せず)の動作を備える。メモリ割り振りの動作を実行するために、DFTステレオモード、TDステレオモード、およびMDCTステレオモードを切り替えるコントローラ(図示せず)は、現在のステレオモードに応じて、DFTステレオモード、TDステレオモード、およびMDCTステレオモードに/から、スタティックメモリデータ構造を動的に割り振る/その割り振りを解除する。そのようなメモリ割り振りは、現在のフレームにおいて利用されるデータ構造のみを維持することによって、IVASステレオ符号化デバイス200のスタティックメモリへの影響を可能な限り低く保つ。
void stereo_memory_enc(
CPE_ENC_HANDLE hCPE, /* i : CPEエンコーダ構造 */
const int32_t input_Fs, /* i : 入力サンプリングレート */
const int16_t max_bwidth, /* i : 最大オーディオ帯域幅 */
float *tdm_last_ratio /* o : TDステレオ最終比 */
)
{
Encoder_State *st;
/*--------------------------------------------------------------*
* 解放される構造からのパラメータを保存する
*---------------------------------------------------------------*/
if ( hCPE->last_element_mode == IVAS_CPE_TD )
{
*tdm_last_ratio = hCPE->hStereoTD->tdm_last_ratio; /* 注意:これはデータ構造が割り振られる/割り振り解除される前にローカル変数に設定されなければならない */
}
if ( hCPE->hStereoTCA != NULL && hCPE->last_element_mode == IVAS_CPE_DFT )
{
set_s( hCPE->hStereoTCA->prevCorrLagStats, (int16_t) hCPE->hStereoDft->itd[1], 3 );
hCPE->hStereoTCA->prevRefChanIndx = ( hCPE->hStereoDft->itd[1] >= 0 ) ? ( L_CH_INDX ) : ( R_CH_INDX );
}
/*--------------------------------------------------------------*
* データ構造を割り振る/割り振り解除する
*---------------------------------------------------------------*/
if ( hCPE->element_mode != hCPE->last_element_mode )
{
/*-------------------------------------------------------------*
* CPEモードをDFTステレオに切り替える
*-------------------------------------------------------------*/
if ( hCPE->element_mode == IVAS_CPE_DFT )
{
/* 前のCPEモードのデータ構造を割り振り解除する */
if ( hCPE->hStereoTD != NULL )
{
count_free( hCPE->hStereoTD );
hCPE->hStereoTD = NULL;
}
if ( hCPE->hStereoMdct != NULL )
{
count_free( hCPE->hStereoMdct );
hCPE->hStereoMdct = NULL;
}
/* CoreCoder二次チャンネルを割り振り解除する */
deallocate_CoreCoder_enc( hCPE->hCoreCoder[1] );
/* DFTステレオデータ構造を割り振る */
stereo_dft_enc_create( &( hCPE->hStereoDft ), input_Fs, max_bwidth );
/* ICBWE構造を割り振る */
if ( hCPE->hStereoICBWE == NULL )
{
hCPE->hStereoICBWE = (STEREO_ICBWE_ENC_HANDLE) count_malloc( sizeof( STEREO_ICBWE_ENC_DATA ) );
stereo_icBWE_init_enc( hCPE->hStereoICBWE );
}
/* MチャンネルにおいてHQコアを割り振る */
st = hCPE->hCoreCoder[0];
if ( st->hHQ_core == NULL )
{
st->hHQ_core = (HQ_ENC_HANDLE) count_malloc( sizeof( HQ_ENC_DATA ) );
HQ_core_enc_init( st->hHQ_core );
}
}
/*-------------------------------------------------------------*
* CPEモードをTDステレオに切り替える
*-------------------------------------------------------------*/
if ( hCPE->element_mode == IVAS_CPE_TD )
{
/* 前のCPEモードのデータ構造を割り振り解除する */
if ( hCPE->hStereoDft != NULL )
{
stereo_dft_enc_destroy( &( hCPE->hStereoDft ) );
hCPE->hStereoDft = NULL;
}
if ( hCPE->hStereoMdct != NULL )
{
count_free( hCPE->hStereoMdct );
hCPE->hStereoMdct = NULL;
}
/* 第2のチャンネルのための割り振り解除されたTCX/IGF構造 */
deallocate_CoreCoder_TCX_enc( hCPE->hCoreCoder[1] );
/* TDステレオデータ構造を割り振る */
hCPE->hStereoTD = (STEREO_TD_ENC_DATA_HANDLE) count_malloc( sizeof( STEREO_TD_ENC_DATA ) );
stereo_td_init_enc( hCPE->hStereoTD, hCPE->element_brate, hCPE->last_element_mode );
/* 二次チャンネルを割り振る */
allocate_CoreCoder_enc( hCPE->hCoreCoder[1] );
}
/*-------------------------------------------------------------*
* MDCTステレオフレームの後にDFT/TDステレオ構造を割り振る
*-------------------------------------------------------------*/
if ( hCPE->last_element_mode == IVAS_CPE_MDCT && ( hCPE->element_mode == IVAS_CPE_DFT || hCPE->element_mode == IVAS_CPE_TD ) )
{
/* TCAデータ構造を割り振る */
hCPE->hStereoTCA = (STEREO_TCA_ENC_HANDLE) count_malloc( sizeof( STEREO_TCA_ENC_DATA ) );
stereo_tca_init_enc( hCPE->hStereoTCA, input_Fs );
st = hCPE->hCoreCoder[0];
/* 一次チャンネル構造を割り振る */
allocate_CoreCoder_enc( st );
/* 一次チャンネルのためにCLDFBを割り振る */
if ( st->cldfbAnaEnc == NULL )
{
openCldfb( &st->cldfbAnaEnc, CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_1_25MS );
}
/* 一次チャンネルのためにBWEを割り振る */
if ( st->hBWE_TD == NULL )
{
st->hBWE_TD = (TD_BWE_ENC_HANDLE) count_malloc( sizeof( TD_BWE_ENC_DATA ) );
if ( st->cldfbSynTd == NULL )
{
openCldfb( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS );
}
InitSWBencBuffer( st->hBWE_TD );
ResetSHBbuffer_Enc( st->hBWE_TD );
st->hBWE_FD = (FD_BWE_ENC_HANDLE) count_malloc( sizeof( FD_BWE_ENC_DATA ) );
fd_bwe_enc_init( st->hBWE_FD );
}
}
/*--------------------------------------------------------------*
* CPEモードをMDCTステレオに切り替える
*---------------------------------------------------------------*/
if ( hCPE->element_mode == IVAS_CPE_MDCT )
{
int16_t i;
/* 前のCPEモードのデータ構造を割り振り解除する */
if ( hCPE->hStereoDft != NULL )
{
stereo_dft_enc_destroy( &( hCPE->hStereoDft ) );
hCPE->hStereoDft = NULL;
}
if ( hCPE->hStereoTD != NULL )
{
count_free( hCPE->hStereoTD );
hCPE->hStereoTD = NULL;
}
if ( hCPE->hStereoTCA != NULL )
{
count_free( hCPE->hStereoTCA );
hCPE->hStereoTCA = NULL;
}
if ( hCPE->hStereoICBWE != NULL )
{
count_free( hCPE->hStereoICBWE );
hCPE->hStereoICBWE = NULL;
}
for ( i = 0; i < CPE_CHANNELS; i++ )
{
st = hCPE->hCoreCoder[i];
/* コアチャンネルサブ構造を割り振り解除する */
deallocate_CoreCoder_enc( hCPE->hCoreCoder[i] );
}
if ( hCPE->last_element_mode == IVAS_CPE_DFT )
{
/* 二次チャンネルを割り振る */
allocate_CoreCoder_enc( hCPE->hCoreCoder[1] );
}
/* 第2のチャンネルのためにTCX/IGF構造を割り振る */
st = hCPE->hCoreCoder[1];
st->hTcxEnc = (TCX_ENC_HANDLE) count_malloc( sizeof( TCX_ENC_DATA ) );
st->hTcxEnc->spectrum[0] = st->hTcxEnc->spectrum_long;
st->hTcxEnc->spectrum[1] = st->hTcxEnc->spectrum_long + N_TCX10_MAX;
set_f( st->hTcxEnc->old_out, 0, L_FRAME32k );
set_f( st->hTcxEnc->spectrum_long, 0, N_MAX );
if ( hCPE->last_element_mode == IVAS_CPE_DFT )
{
st->last_core = ACELP_CORE; /* SetTCXModeInfo()においてTCXコアをセットアップするために必要 */
}
st->hTcxCfg = (TCX_CONFIG_HANDLE) count_malloc( sizeof( TCX_config ) );
st->hIGFEnc = (IGF_ENC_INSTANCE_HANDLE) count_malloc( sizeof( IGF_ENC_INSTANCE ) );
st->igf = getIgfPresent( st->element_mode, st->total_brate, st->bwidth, st->rf_mode );
/* MDCTステレオ構造を割り振って初期化する */
hCPE->hStereoMdct = (STEREO_MDCT_ENC_DATA_HANDLE) count_malloc( sizeof( STEREO_MDCT_ENC_DATA ) );
initMdctStereoEncData( hCPE->hStereoMdct, hCPE->element_brate, hCPE->hCoreCoder[0]->max_bwidth, SMDCT_MS_DECISION, 0, NULL );
}
}
return;
}
TDステレオモードは2つのサブモードからなり得る。1つは、TDステレオミキシング比が0より大きく1より小さいいわゆる普通のTDステレオサブモードである。もう1つは、TDステレオミキシング比が0または1のいずれかであるいわゆるLRTDステレオサブモードである。したがって、LRTDは、一次チャンネルPChおよび二次チャンネルSChを形成するためにTDダウンミキシングが時間領域の左チャンネルlおよび右チャンネルrの内容を実際はミキシングせず、チャンネルlおよびrから直接それらを得るような、TDステレオモードの極端な場合である。
/* 普通のTD/LRTD切り替え */
if ( hCPE->hStereoTD->tdm_LRTD_flag == 0 )
{
Encoder_State *st;
st = hCPE->hCoreCoder[1];
/* 二次チャンネルのためのCLDFB anaを割り振り解除する */
if ( st->cldfbAnaEnc != NULL )
{
deleteCldfb( &st->cldfbAnaEnc );
}
/* 二次チャンネルのためのBWEを割り振り解除する */
if ( st->hBWE_TD != NULL )
{
if ( st->hBWE_TD != NULL )
{
count_free( st->hBWE_TD );
st->hBWE_TD = NULL;
}
deleteCldfb( &st->cldfbSynTd );
if ( st->hBWE_FD != NULL )
{
count_free( st->hBWE_FD );
st->hBWE_FD = NULL;
}
}
/* ICBWE構造を割り振る */
if ( hCPE->hStereoICBWE == NULL )
{
( hCPE->hStereoICBWE = (STEREO_ICBWE_ENC_HANDLE) count_malloc( sizeof( STEREO_ICBWE_ENC_DATA ) );
stereo_icBWE_init_enc( hCPE->hStereoICBWE );
}
}
else /* tdm_LRTD_flag == 1 */
{
Encoder_State *st;
st = hCPE->hCoreCoder[1];
/* ICBWE構造を割り振り解除する */
if ( hCPE->hStereoICBWE != NULL )
{
/* BWEにおいて使用されるべき過去の入力信号をコピーする */
mvr2r( hCPE->hStereoICBWE->dataChan[1], hCPE->hCoreCoder[1]->old_input_signal, st->input_Fs / 50 );
count_free( hCPE->hStereoICBWE );
hCPE->hStereoICBWE = NULL;
}
/* 二次チャンネルのためのCLDFB anaを割り振る */
if ( st->cldfbAnaEnc == NULL )
{
openCldfb( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS );
}
/* 二次チャンネルのためのBWEを割り振る */
if ( st->hBWE_TD == NULL )
{
st->hBWE_TD = (TD_BWE_ENC_HANDLE) count_malloc( sizeof( TD_BWE_ENC_DATA ) );
openCldfb( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS );
InitSWBencBuffer( st->hBWE_TD );
ResetSHBbuffer_Enc( st->hBWE_TD );
st->hBWE_FD = (FD_BWE_ENC_HANDLE) count_malloc( sizeof( FD_BWE_ENC_DATA ) );
fd_bwe_enc_init( st->hBWE_FD );
}
}
ステレオモード切り替え制御動作(図示せず)は、ステレオ切り替え更新の動作(図示せず)を備える。このステレオ切り替え更新動作を実行するために、ステレオモード切り替えコントローラ(図示せず)は、長期パラメータを更新し、過去のバッファメモリを更新またはリセットする。
-普通のTDステレオモードにおいて、以前のフレームミキシング比インデックスは15に設定され、これは、ダウンミキシングされた中間チャンネルm/Mが一次チャンネルPChとしてコーディングされることを示し、ミキシング比は0.5であり、または、
-LRTDステレオモードにおいて、以前のフレームミキシング比インデックスは31に設定され、これは、左チャンネルlが一次チャンネルPChとしてコーディングされることを示す。
void stereo_switching_enc(
CPE_ENC_HANDLE hCPE, /* i : CPEエンコーダ構造 */
float old_input_signal_pri[], /* i : 一次チャンネルの古い入力信号 */
const int16_t input_frame /* i : 入力フレーム長 */
)
{
int16_t i, n, dft_ovl, offset;
float tmpF;
Encoder_State **st;
st = hCPE->hCoreCoder;
dft_ovl = STEREO_DFT_OVL_MAX * input_frame / L_FRAME48k;
/* DFT分析重複メモリを更新する */
if ( hCPE->element_mode > IVAS_CPE_DFT && hCPE->input_mem[0] != NULL )
{
for ( n = 0; n < CPE_CHANNELS; n++ )
{
mvr2r( st[n]->input + input_frame - dft_ovl, hCPE->input_mem[n], dft_ovl );
}
}
/* TD/MDCT -> DFTステレオ切り替え */
if ( hCPE->element_mode == IVAS_CPE_DFT && hCPE->last_element_mode != IVAS_CPE_DFT )
{
/* input_fs、一次チャンネルにおいてDFT合成重複メモリに窓を掛ける */
for ( i = 0; i < dft_ovl; i++ )
{
hCPE->hStereoDft->output_mem_dmx[i] = old_input_signal_pri[input_frame - dft_ovl + i] * hCPE->hStereoDft->win[dft_ovl - 1 - i];
}
/* 48kHz BWE重複メモリをリセットする */
set_f( hCPE->hStereoDft->output_mem_dmx_32k, 0, STEREO_DFT_OVL_32k );
stereo_dft_enc_reset( hCPE->hStereoDft );
/* ITDパラメータを更新する */
if ( hCPE->element_mode == IVAS_CPE_DFT && hCPE->last_element_mode == IVAS_CPE_TD )
{
set_f( hCPE->hStereoDft->itd, hCPE->hStereoTCA->prevCorrLagStats[2], STEREO_DFT_ENC_DFT_NB );
}
/* side_gain[]パラメータを更新する */
if ( hCPE->hStereoTCA != NULL && hCPE->last_element_mode != IVAS_CPE_MDCT )
{
tmpF = usdequant( hCPE->hStereoTCA->indx_ica_gD, STEREO_TCA_GDMIN, STEREO_TCA_GDSTEP );
for ( i = 0; i < STEREO_DFT_BAND_MAX; i++ )
{
hCPE->hStereoDft->side_gain[STEREO_DFT_BAND_MAX + i] = tmpF;
}
}
/* DFTサイドパラメータの差分コーディングを許容しない */
hCPE->hStereoDft->ipd_counter = STEREO_DFT_FEC_THRESHOLD;
hCPE->hStereoDft->res_pred_counter = STEREO_DFT_FEC_THRESHOLD;
/* 12.8kHzにおいてDFT合成重複メモリを更新する */
for ( i = 0; i < STEREO_DFT_OVL_12k8; i++ )
{
hCPE->hStereoDft->output_mem_dmx_12k8[i] = st[0]->buf_speech_enc[L_FRAME32k + L_FRAME - STEREO_DFT_OVL_12k8 + i] * hCPE->hStereoDft->win_12k8[STEREO_DFT_OVL_12k8 - 1 - i];
}
/* 16kHz、一次チャンネルだけにおいて、DFT合成重複メモリを更新する */
lerp( hCPE->hStereoDft->output_mem_dmx, hCPE->hStereoDft->output_mem_dmx_16k, STEREO_DFT_OVL_16k, dft_ovl );
/* 8kHz、二次チャンネルにおいて、DFT合成重複メモリをリセットする */
set_f( hCPE->hStereoDft->output_mem_res_8k, 0, STEREO_DFT_OVL_8k );
hCPE->vad_flag[1] = 0;
}
/* DFT/MDCT -> TDステレオ切り替え */
if ( hCPE->element_mode == IVAS_CPE_TD && hCPE->last_element_mode != IVAS_CPE_TD )
{
hCPE->hStereoTD->tdm_last_ratio_idx = LRTD_STEREO_MID_IS_PRIM;
hCPE->hStereoTD->tdm_last_ratio_idx_SM = LRTD_STEREO_MID_IS_PRIM;
hCPE->hStereoTD->tdm_last_SM_flag = 0;
hCPE->hStereoTD->tdm_last_inst_ratio_idx = LRTD_STEREO_MID_IS_PRIM;
/* DFTフレームおよびコンテンツが相関しなくなった後の、またはそれらにクロストークが生じた後の最初のフレーム -> 一次チャンネルは左に強制的に動かされる */
if ( hCPE->hStereoClassif->lrtd_mode == 1 )
{
hCPE->hStereoTD->tdm_last_ratio = ratio_tabl[LRTD_STEREO_LEFT_IS_PRIM];
hCPE->hStereoTD->tdm_last_ratio_idx = LRTD_STEREO_LEFT_IS_PRIM;
if ( hCPE->hStereoTCA->instTargetGain < 0.05f && ( hCPE->vad_flag[0] || hCPE->vad_flag[1] ) ) /* しかし、Lチャンネルにコンテンツがない場合、 -> 一次チャンネルは強制的に右に動かされる */
{
hCPE->hStereoTD->tdm_last_ratio = ratio_tabl[LRTD_STEREO_RIGHT_IS_PRIM];
hCPE->hStereoTD->tdm_last_ratio_idx = LRTD_STEREO_RIGHT_IS_PRIM;
}
}
}
/* DFT -> TDステレオ切り替え */
if ( hCPE->element_mode == IVAS_CPE_TD && hCPE->last_element_mode == IVAS_CPE_DFT )
{
offset = st[0]->cldfbAnaEnc->p_filter_length - st[0]->cldfbAnaEnc->no_channels;
mvr2r( old_input_signal_pri + input_frame - offset - NS2SA( input_frame * 50, L_MEM_RECALC_TBE_NS ), st[0]->cldfbAnaEnc->cldfb_state, offset );
cldfb_reset_memory( st[0]->cldfbSynTd );
st[0]->currEnergyLookAhead = 6.1e-5f;
if ( hCPE->hStereoICBWE == NULL )
{
offset = st[1]->cldfbAnaEnc->p_filter_length - st[1]->cldfbAnaEnc->no_channels;
if ( hCPE->hStereoTD->tdm_last_ratio_idx == LRTD_STEREO_LEFT_IS_PRIM )
{
v_multc( hCPE->hCoreCoder[1]->old_input_signal + input_frame - offset - NS2SA( input_frame * 50, L_MEM_RECALC_TBE_NS ), -1.0f, st[1]->cldfbAnaEnc->cldfb_state, offset );
}
else
{
mvr2r( hCPE->hCoreCoder[1]->old_input_signal + input_frame - offset - NS2SA( input_frame * 50, L_MEM_RECALC_TBE_NS ), st[1]->cldfbAnaEnc->cldfb_state, offset );
}
cldfb_reset_memory( st[1]->cldfbSynTd );
st[1]->currEnergyLookAhead = 6.1e-5f;
}
st[1]->last_extl = -1;
/* 前のフレームに二次チャンネルなし -> メモリはリセットする */
set_zero( st[1]->old_inp_12k8, L_INP_MEM );
/*set_zero( st[1]->old_inp_16k, L_INP_MEM );*/
set_zero( st[1]->mem_decim, 2 * L_FILT_MAX );
/*set_zero( st[1]->mem_decim16k, 2*L_FILT_MAX );*/
st[1]->mem_preemph = 0;
/*st[1]->mem_preemph16k = 0;*/
set_zero( st[1]->buf_speech_enc, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k );
set_zero( st[1]->buf_speech_enc_pe, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k );
if ( st[1]->hTcxEnc != NULL )
{
set_zero( st[1]->hTcxEnc->buf_speech_ltp, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k );
}
set_zero( st[1]->buf_wspeech_enc, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k );
set_zero( st[1]->buf_synth, OLD_SYNTH_SIZE_ENC + L_FRAME32k );
st[1]->mem_wsp = 0.0f;
st[1]->mem_wsp_enc = 0.0f;
init_gp_clip( st[1]->clip_var );
set_f( st[1]->Bin_E, 0, L_FFT );
set_f( st[1]->Bin_E_old, 0, L_FFT / 2 );
/* st[1]->hLPDmem リセットはハンドルの割り振りにおいてすでに行われている */
st[1]->last_L_frame = st[0]->last_L_frame;
pitch_ol_init( &st[1]->old_thres, &st[1]->old_pitch, &st[1]->delta_pit, &st[1]->old_corr );
set_zero( st[1]->old_wsp, L_WSP_MEM );
set_zero( st[1]->old_wsp2, ( L_WSP_MEM - L_INTERPOL ) / OPL_DECIM );
set_zero( st[1]->mem_decim2, 3 );
st[1]->Nb_ACELP_frames = 0;
/* PChメモリでSChを埋める */
mvr2r( st[0]->hLPDmem->old_exc, st[1]->hLPDmem->old_exc, L_EXC_MEM );
mvr2r( st[0]->lsf_old, st[1]->lsf_old, M );
mvr2r( st[0]->lsp_old, st[1]->lsp_old, M );
mvr2r( st[0]->lsf_old1, st[1]->lsf_old1, M );
mvr2r( st[0]->lsp_old1, st[1]->lsp_old1, M );
st[1]->GSC_noisy_speech = 0;
}
else if ( hCPE->element_mode == IVAS_CPE_TD && hCPE->last_element_mode == IVAS_CPE_MDCT )
{
set_f( st[0]->hLPDmem->old_exc, 0.0f, L_EXC_MEM );
set_f( st[1]->hLPDmem->old_exc, 0.0f, L_EXC_MEM );
}
TDステレオフレームにおいて、ステレオモード切り替え制御動作(図示せず)は、時間的なInter-Channel Alignment (ICA)動作251を備える。動作251を実行するために、ステレオモード切り替えコントローラ(図示せず)は、入力ステレオ信号のチャンネルlとrを時間整列し、そしてチャンネルrをスケーリングするための、ICAエンコーダ201を備える。
ステレオモード切り替え制御動作(図示せず)は、ICAエンコーダ201からチャンネルlにおいて時間領域の過渡状態を検出する動作253を備える。動作253を実行するために、ステレオモード切り替えコントローラ(図示せず)は、チャンネルlにおいて時間領域の過渡状態を検出するための検出器203を備える。
ステレオエンコーダ構成を実行するために、IVASステレオ符号化デバイス200は、ステレオエンコーダ300、400、および500のパラメータを設定する。たとえば、コアエンコーダに対する名目ビットレートが設定される。
図3を参照すると、DFTステレオ符号化方法350は、図2の時間領域過渡状態検出器203からDFT変換をチャンネルlに適用するための動作351を備える。動作351を実行するために、DFTステレオエンコーダ300は、DFT領域においてチャンネルLを生み出すためのチャンネルlのDFT変換(DFT分析)の計算器301を備える。
図4を参照すると、TDステレオ符号化方法450は、TD領域における時間領域分析および重み付けられたダウンミキシングの動作451を備える。動作451を実行するために、TDステレオエンコーダ400は、サブモードフラグ、ミキシング比インデックス、または線形予測再使用フラグなどの、ステレオサイドパラメータ402を計算するための時間領域分析器およびダウンミキサ401を備え、それらのステレオサイドパラメータ402は、TDステレオエンコーダ400の出力ビットストリーム410において多重化される。時間領域分析器およびダウンミキサ401はまた、検出器203および204(図2)からチャンネルlとrの重み付けられたダウミキシングを実行し、ICAスケーリングと整合した状態で、推定されたミキシング比を使用して一チャンネルPChおよび二次チャンネルSChを生み出す。時間領域分析器およびダウンミキサ401および動作451に関するさらなる情報は、たとえば特許文献1において見出され得る。
IVASコーデック(IVASステレオ符号化デバイス200およびIVASステレオ復号デバイス800)において、一部の分類の判断はコーデック全体のビットレートに対して行われるが、他の判断はコア符号化ビットレートに応じて行われるような制約が、従来の前処理にはある。その結果、たとえばEVSコーデック(非特許文献1)において使用されるような従来の前処理は、最良の可能なコーデック構成が各々の処理されるフレームにおいて使用されることを確実にするために、2つの部分へと分割される。したがって、コーデック構成はフレームごとに変化し得るが、構成のいくつかの変更、たとえば信号活動または信号クラスに基づく変更は、可能な限り速く行われ得る。一方、コーデック構成のいくつかの変更、たとえば、コーディングされるオーディオ帯域幅の選択、内部サンプリングレートの選択、または低帯域コーディングと高帯域コーディングとの間でのビットバジェット分配は、あまり頻繁に起こるべきではない。そのようなコーデック構成のあまりにも頻繁な変更は、コーディングされる信号品質の不安定さ、または可聴のアーティファクトにもつながり得る。
コアエンコーダの構成は、コーデック全体のビットレートおよび初期前処理に基づいて行われる。
DFT符号化方法350は、追加前処理の動作362を備える。動作362を実行するために、DFTステレオエンコーダ300のいわゆる追加プリプロセッサ312は、分類、コア選択、符号化内部サンプリングレートでの前処理などを含み得る、前処理の第2の部分を行う。初期プリプロセッサ307における判断は、セッションの間に普通は変動するコア符号化ビットレートに依存する。DFT領域におけるそのような追加前処理の間に実行される動作に関する追加の情報は、たとえば非特許文献1において見出され得る。
一般に、DFTステレオエンコーダ300の中のコアエンコーダ311(コア符号化動作361を実行する)ならびにTDステレオエンコーダ400の中のコアエンコーダ406(コア符号化動作456を実行する)および407(コア符号化動作457を実行する)は、任意の可変のビットレートモノコーデックであり得る。本開示の例示的な実装形態では、変動するビットレート能力(特許文献2参照)を伴うEVSコーデック(非特許文献1参照)が使用される。当然、他の適切なコーデックが、場合によっては考慮され実装され得る。MDCTステレオエンコーダ500では、一般的には、lチャンネルおよびrチャンネルを共同方式で処理して量子化するステレオフォニックツールを伴うステレオコーディングモジュールであり得る、共同コアエンコーダ506が利用される。
最後に、共通ステレオ更新が実行される。共通ステレオ更新に関するさらなる情報は、たとえば非特許文献1において見出され得る。
図2および図3を参照すると、ステレオ分類器およびステレオモード選択器205からのステレオモードシグナリング270、サイド情報からのビットストリーム313、残留信号検出器304、およびコアエンコーダ311からのビットストリーム314は、DFTステレオエンコーダビットストリーム310を形成する(そしてIVASステレオ符号化デバイス200(図2)の出力ビットストリーム206を形成する)ために多重化される。
TDステレオモード(TDステレオエンコーダ400)からDFTステレオモード(DFTステレオエンコーダ300)への切り替えは、図6に示されるように比較的単純である。
DFTステレオモードからTDステレオモードへの切り替えは、TDステレオエンコーダ400のより複雑な構造により、TDステレオモードからDFTステレオモードへの切り替えより複雑である。DFTステレオモード(DFTステレオエンコーダ300)からTDステレオモード(TDステレオエンコーダ400)への切り替えの際に実行される後続の動作は、ステレオモード選択に応答してステレオモード切り替えコントローラ(図示せず)によって実行される。
TDステレオモードからMDCTステレオモードへの切り替えは比較的単純であり、それは、両方のこれらのステレオモードが、2つの入力チャンネルを扱い、2つのコアエンコーダのインスタンスを利用するからである。主な障壁は、入力の左チャンネルおよび右チャンネルの正しい位相を維持することである。
PCh(i)=r(i)・(1-β)+l(i)・β
SCh(i)=l(i)・(1-β)+r(i)・β
ここで、PCh(i)はTD一次チャンネルであり、SCh(i)はTD二次チャンネルであり、l(i)は左チャンネルであり、r(i)は右チャンネルであり、βはTDステレオミキシング比であり、iは離散時間インデックスである。
PCh(i)=r(i)・(1-β)+l(i)・β
SCh(i)=l(i)・(1-β)-r(i)・β
TDステレオモードからMDCTステレオモードへの切り替えと同様に、2つの入力チャンネルが常に利用可能であり、2つのコアエンコーダのインスタンスが常にこのシナリオでは利用される。主な障壁はやはり、入力の左チャンネルおよび右チャンネルの正しい位相を維持することである。したがって、最後のMDCTステレオフレームの後の最初のTDステレオフレームにおいて、ステレオモード切り替えコントローラ(図示せず)は、TDステレオミキシング比をβ=1.0に設定し、セクション1.5において説明されたものと同様の逆位相のミキシング方式を使用することによってTDステレオのダウンミキシングを変更する。
上で説明されたようなDFTステレオモードからTDステレオモードへの切り替えと同様の機構がこのシナリオにおいて使用され、TDステレオモードの一次チャンネルPChおよび二次チャンネルSChは、MDCTステレオモードの左チャンネルlおよび右チャンネルrにより置き換えられる。
上で説明されたようなTDステレオモードからDFTステレオモードへの切り替えと同様の機構がこのシナリオにおいて使用され、TDステレオモードの一次チャンネルPChおよび二次チャンネルSChが、MDCTステレオモードの左チャンネルlおよび右チャンネルrにより置き換えられる。
図8は、IVASステレオ復号デバイス800および対応する復号方法850を同時に示す高水準のブロック図であり、IVASステレオ復号デバイス800は、DFTステレオデコーダ801および対応するDFTステレオ復号方法851、TDステレオデコーダ802および対応するTDステレオ復号方法852、ならびにMDCTステレオデコーダ803および対応するMDCTステレオ復号方法853を備える。簡潔にするために、DFTステレオモード、TDステレオモード、およびMDCTステレオモードのみが示され説明される。しかしながら、他のタイプのステレオモードを使用して実施することが、本開示の範囲内にある。
内部サンプリングレートで実行されるコア復号は、基本的に実際のステレオモードとは無関係に同じである。しかしながら、コア復号は、DFTステレオフレームに対しては1回行われ(中間チャンネルm)、TDステレオフレーム(一次チャンネルPChおよび二次チャンネルSCh)またはMDCTステレオフレーム(左チャンネルlおよび右チャンネルr)に対しては2回行われる。問題は、DFTステレオフレームからMDCTステレオフレームに切り替えるときにMDCTステレオフレームのrチャンネルのメモリを維持(更新)するために、DFTステレオフレームからTDステレオフレームに切り替えるときに、それぞれ、TDステレオフレームの二次チャンネルSChのメモリを維持(更新)することである。
-内部サンプリングレートから出力ステレオ信号サンプリングレートへの復号されたコア合成の再サンプリングは、DFT分析および3.125msの合成重複窓の長さを用いてDFT領域において行われる。
-低帯域(LB)バスのフィルタリング後の(ACELPフレームにおける)調整は、DFT領域において行われる。
-コア切り替え(ACELPコア<->TCX/HQコア)は、3.125msの利用可能な遅延とともにDFT領域において行われる。
-LB合成とHB合成との同期(ACELPフレームにおける)は追加の遅延を必要としない。
-ステレオアップミキシングは、3.125msの利用可能な遅延とともにDFT領域において行われる。
-デコーダ全体の遅延(これは3.25msである)と一致するような時間同期が、0.125msの長さとともに適用される。
-内部サンプリングレートから出力ステレオ信号サンプリングレートへの復号されたコア合成の再サンプリングは、1.25msの遅延とともにCLDFBフィルタを使用して行われる。
-LBバスのフィルタリング後の(ACELPフレームにおける)調整は、CLDFB領域において行われる。
-コア切り替え(ACELPコア<->TCX/HQコア)は、1.25msの利用可能な遅延とともに時間領域において行われる。
-LB合成とHB合成との同期(ACELPフレームにおける)は追加の遅延をもたらす。
-ステレオアップミキシングは、遅延なしでTD領域において行われる。
-デコーダ全体の遅延と一致するような時間同期が、2.0msの長さとともに適用される。
-TCXベースのコアデコーダのみが利用されるので、異なるコア間でコア合成信号を同期するために、1.25msの遅延調整だけが使用される。
-LBバスのフィルタリング後の(ACELPフレームにおける)調整は飛ばされる。
-コア切り替え(ACELPコア<->TCX/HQコア)は、1.25msの利用可能な遅延とともにTDステレオフレームまたはDFTステレオフレームの後の最初のMDCTステレオフレームだけにおいて時間領域で行われる。
-LB合成とHB合成との同期は無関係である。
-ステレオアップミキシングは飛ばされる。
-デコーダ全体の遅延と一致するような時間同期が、2.0msの長さとともに適用される。
以下のTable III(表3)は、現在のDFTステレオモード、TDステレオモード、またはMDCTステレオモードに応じた、各フレームに対するIVASステレオ復号デバイス800における処理動作を逐次的な順序で列挙する(図8も参照)。
1)コア復号において使用される、内部サンプリングレートでのコアポストフィルタのダウンミキシングされた信号およびメモリ
-DFTステレオデコーダ801:中間チャンネルm。
-TDステレオデコーダ802:一次チャンネルPChおよび二次チャンネルSCh。
-MDCTステレオデコーダ803:左チャンネルlおよび右チャンネルr(ダウンミキシングされていない)。
2)TCX-LTP(Transform Coded eXcitation - Long Term Prediction)ポストフィルタメモリ。TCX-LTPポストフィルタは、多相FIR補間フィルタを使用して過去の合成サンプルを補間するために使用される(非特許文献1、6.9.2項参照)。
3)DFT動作854の前の、以前のフレームおよび現在のフレームにおける窓掛けのOLA部分において使用されるような、内部サンプリングレートおよび出力ステレオ信号サンプリングレートにおけるDFT OLA分析メモリ。
4)出力ステレオ信号サンプリングレートにおけるIDFT動作855および856の後の、以前のフレームおよび現在のフレームにおける窓掛けのOLA部分において使用されるような、DFT OLA合成メモリ。
5)チャンネルlおよびrを含む出力ステレオ信号。
6)BWEおよびIC-BWEにおいて使用される、HB信号メモリ(非特許文献1、6.1.5項参照)、チャンネルlおよびr。
IVASステレオ復号方法850は、送信されたビットストリーム830からステレオモードおよびオーディオ帯域幅情報を読み取ることで開始する(図示せず)。現在読み取られているステレオモードに基づいて、各々の特定のステレオモードに対して関連する復号動作が実行され(Table III(表3)参照)、一方、他のステレオモードのメモリおよびバッファは維持される。
IVASステレオ符号化デバイス200と同様に、メモリ割り振り動作(図示せず)では、ステレオモード切り替えコントローラ(図示せず)は、現在のステレオモードに応じてデータ構造(スタティックメモリ)を動的に割り振る/割り振り解除する。ステレオモード切り替えコントローラ(図示せず)は、現在のフレームにおいて使用されるスタティックメモリの部分のみを維持することによって、コーデックのスタティックメモリへの影響を可能な限り低く保つ。特定のステレオモードにおいて割り振られるデータ構造の概要については、Table II(表2)を参照されたい。
IVASステレオ符号化デバイス200と同様に、ステレオモード切り替えコントローラ(図示せず)は、DFTステレオモード、TDステレオモード、およびMDCTステレオモードのうちの1つから別のステレオモードに切り替える場合に、メモリを取り扱う。これは、更新された長期パラメータを維持し、過去のバッファメモリを更新またはリセットする。
ステレオモード切り替えコントローラ(図示せず)は、各TDまたはMDCTステレオフレームにおいて、DFT OLAメモリを維持または更新する(Table III(表3)の「DFTステレオモード重複メモリの更新」、「MDCTステレオTCX重複バッファを更新する」、および「DFTステレオ重複メモリのリセット/更新」参照)。このようにして、更新されたDFT OLAメモリが次のDFTステレオフレームに対して利用可能である。実際の維持/更新機構および関連するメモリバッファは、本開示のセクション2.3において後で説明される。Cソースコードでの、TDステレオフレームまたはMDCTステレオフレームにおいて実行されるDFTステレオOLAメモリの更新の例示的な実装形態が以下で与えられる。
if ( st[n]->element_mode != IVAS_CPE_DFT )
{
ivas_post_proc( ... );
/* OLAバッファを更新する - DFTステレオに切り替えるために必要 */
stereo_td2dft_update( hCPE, n, output[n], synth[n], hb_synth[n], output_frame );
/* TDステレオSCh ACELPフレームからMDCTステレオTCXフレームへの起こり得る切り替えのためにovlバッファを更新する */
if ( st[n]->element_mode == IVAS_CPE_TD && n == 1 && st[n]->hTcxDec == NULL )
{
mvr2r( output[n] + st[n]->L_frame / 2, hCPE->hStereoTD->TCX_old_syn_Overl, st[n]->L_frame / 2 );
}
}
void stereo_td2dft_update(
CPE_DEC_HANDLE hCPE, /* i/o: CPEデコーダ構造 */
const int16_t n, /* i : チャンネル番号 */
float output[], /* i/o: 内部周波数における合成 */
float synth[], /* i/o: 出力周波数における合成 */
float hb_synth[], /* i/o: hb合成 */
const int16_t output_frame /* i : フレーム長 */
)
{
int16_t ovl, ovl_TCX, dft32ms_ovl, hq_delay_comp;
Decoder_State **st;
/* 初期化 */
st = hCPE->hCoreCoder;
ovl = NS2SA( st[n]->L_frame * 50, STEREO_DFT32MS_OVL_NS );
dft32ms_ovl = ( STEREO_DFT32MS_OVL_MAX * st[0]->output_Fs ) / 48000;
hq_delay_comp = NS2SA( st[0]->output_Fs, DELAY_CLDFB_NS );
if ( hCPE->element_mode >= IVAS_CPE_DFT && hCPE->element_mode != IVAS_CPE_MDCT )
{
if ( st[n]->core == ACELP_CORE )
{
if ( n == 0 )
{
/* internal_fsにおいてDFT分析重複メモリを更新する:コア合成 */
mvr2r( output + st[n]->L_frame - ovl, hCPE->input_mem_LB[n], ovl );
/* internal_fsにおいてDFT分析重複メモリを更新する:BPF */
if ( st[n]->p_bpf_noise_buf )
{
mvr2r( st[n]->p_bpf_noise_buf + st[n]->L_frame - ovl, hCPE->input_mem_BPF[n], ovl );
}
/* output_fsにおいてDFT分析重複メモリを更新する:BWE */
if ( st[n]->extl != -1 || ( st[n]->bws_cnt > 0 && st[n]->core == ACELP_CORE ) )
{
mvr2r( hb_synth + output_frame - dft32ms_ovl, hCPE->input_mem[n], dft32ms_ovl );
}
}
else
{
/* internal_fsにおけるDFT分析重複メモリを更新する:コア合成、二次チャンネル */
mvr2r( output + st[n]->L_frame - ovl, hCPE->input_mem_LB[n], ovl );
}
}
else /* TCXコア */
{
/* LB-TCX合成 */
mvr2r( output + st[n]->L_frame - ovl, hCPE->input_mem_LB[n], ovl );
/* BPF */
if ( n == 0 && st[n]->p_bpf_noise_buf )
{
mvr2r( st[n]->p_bpf_noise_buf + st[n]->L_frame - ovl, hCPE->input_mem_BPF[n], ovl );
}
/* TCX合成(core_switching_post_dec()の中のTDステレオにおいてすでに遅延していた) */
if ( st[n]->hTcxDec != NULL )
{
ovl_TCX = NS2SA( st[n]->hTcxDec->L_frameTCX * 50, STEREO_DFT32MS_OVL_NS );
mvr2r( synth + st[n]->hTcxDec->L_frameTCX + hq_delay_comp - ovl_TCX, hCPE->input_mem[n], ovl_TCX - hq_delay_comp );
mvr2r( st[n]->delay_buf_out, hCPE->input_mem[n] + ovl_TCX - hq_delay_comp, hq_delay_comp );
}
}
}
else if ( hCPE->element_mode == IVAS_CPE_MDCT && hCPE->input_mem[0] != NULL )
{
/* DFTステレオOLAメモリをリセットする */
set_zero( hCPE->input_mem[n], NS2SA( st[0]->output_Fs, STEREO_DFT32MS_OVL_NS ) );
set_zero( hCPE->input_mem_LB[n], STEREO_DFT32MS_OVL_16k );
if ( n == 0 )
{
set_zero( hCPE->input_mem_BPF[n], STEREO_DFT32MS_OVL_16k );
}
}
return;
}
DFT復号方法851は、中間チャンネルmをコア復号する動作857を備える。動作857を実行するために、コアデコーダ807は、受信されたビットストリーム830に応答して、時間領域において中間チャンネルmを復号する。DFTステレオデコーダ801の中のコアデコーダ807(コア復号動作857を実行する)は、任意の可変ビットレートモノコーデックであり得る。本開示の例示的な実装形態では、変動するビットレート能力(特許文献2参照)を伴うEVSコーデック(非特許文献1参照)が使用される。当然、場合によっては他の適切なコーデックが考えられ実装され得る。
TD復号方法852は、一次チャンネルPChをコア復号する動作860を備える。動作860を実行するために、コアデコーダ810は、受信されたビットストリーム830に応答して一次チャンネルPChを復号する。
MDCT復号方法853は、左チャンネルlおよび右チャンネルrを共同コア復号する動作863(Table III(表3)の共同ステレオ復号)を備える。動作863を実行するために、共同コアデコーダ813は、受信されたビットストリーム830に応答して、左チャンネルlおよび右チャンネルrを復号する。MDCTステレオモードでは、アップミキシング動作は実行されず、アップミキサは利用されないことに留意されたい。
ステレオ合成時間同期(Table III(表3)の合成同期)およびステレオ切り替え動作864を実行するために、ステレオモード切り替えコントローラ(図示せず)は、DFTステレオデコーダ801、TDステレオデコーダ802、またはMDCTステレオデコーダ803からチャンネルlおよびrを受信し、アップミキシングされた出力ステレオチャンネルlおよびrを同期するための、時間同期器およびステレオスイッチ814を備える。時間同期器およびステレオスイッチ814は、コーデック全体の遅延値と一致するようにアップミキシングされた出力ステレオチャンネルlおよびrを遅らせて、DFTステレオ出力チャンネルと、TDステレオ出力チャンネルと、MDCTステレオ出力チャンネルとの間の遷移を扱う。
セクション2.3および2.4において言及される要素、動作、および信号に関するさらなる情報は、たとえば非特許文献1および2において見出され得る。
-ACELPコア:内部サンプリングレートにおける一次チャンネルPChおよび二次チャンネルSChのLBコア合成の最後のLovl個のサンプル1001は、遅延0の単純な線形補間を使用して、出力ステレオ信号サンプリングレートへと再サンプリングされる(1003参照)。
-TCX/HQコア:内部サンプリングレートにおける一次チャンネルPChおよび二次チャンネルSChのLBコア合成の最後のLovl個のサンプル1001は同様に、遅延0の単純な線形補間を使用して、出力ステレオ信号サンプリングレートに再サンプリングされる(1003参照)。しかしながら、次いで、再サンプリングされたコア合成の最後の1.25msを更新するために、TCX合成メモリ(前のフレームからのTCX合成の最後の1.25msの区間)が使用される。
-ACELPコア:出力ステレオ信号サンプリングレートにおけるCLDFBベースの再サンプリングされ、TDアップミキシングされた合成1005と、再構築された合成1002(前の部分動作(b)からの)との間のクロスフェージング1004が、TDステレオフレーム901のチャンネルの最初の(3.125-1.25)msの長さの部分の間に、チャンネルlとrの両方のために実行される。
-TCX/HQコア:DFTステレオ合成メモリの最初の(3.125-1.25)msの長さの部分は、アップミキシングされた合成1005を使用して更新される。
-TDステレオフレームからDFTステレオフレームへの切り替えがある場合、他のDFTステレオメモリ(重複メモリ以外)、すなわちDFTステレオデコーダの過去フレームのパラメータおよびバッファは、ステレオモード切り替えコントローラ(図示せず)によってリセットされる。
-次いで、DFTステレオ復号(859参照)、アップミキシング(859参照)、およびDFT合成(855および856参照)が実行され、ステレオ出力合成(チャンネルlおよびr)は、コーデック全体の遅延と一致するように揃えられ、すなわち、時間同期器およびステレオスイッチ814において0.125msだけ遅らされる。
DFTステレオモードとTDステレオモードとの間で根本的に異なる復号動作、およびTDステレオデコーダ802における2つのコアデコーダ810と811の存在は、IVASステレオ復号デバイス800におけるDFTステレオモードからTDステレオモードへの切り替えを困難にする。図12は、DFTステレオモードからTDステレオモードへの切り替えの際の、IVASステレオ復号デバイス800および850における処理動作を示すフローチャートである。具体的には、図12は、DFTステレオフレーム1201からTDステレオフレーム1202に切り替える際の、異なる処理動作における復号されたステレオ信号の2つのフレームを関連する時間インスタンスとともに示す。
TDステレオモードからMDCTステレオモードへの切り替えは、これらのステレオモードの両方が2つのトランスポートチャンネルを扱い、2つのコアデコーダのインスタンスを利用するので、比較的単純である。
TDステレオモードからMDCTステレオモードへの切り替えと同様に、2つのトランスポートチャンネルが利用可能であり、2つのコアデコーダのインスタンスがこのシナリオにおいて利用される。ステレオ音信号の左チャンネルおよび右チャンネルの正しい位相を維持するために、TDステレオミキシング比は1.0に設定され、最後のMDCTステレオフレームの後の最初のTDステレオフレームにおいて、ステレオモード切り替えコントローラ(図示せず)によって逆位相アップミキシング方式が再び使用される。
DFTステレオモードからTDステレオモードへのデコーダ側の切り替えと同様の機構がこのシナリオにおいて使用され、TDステレオモードの一次チャンネルPChおよび二次チャンネルSChは、MDCTステレオモードの左チャンネルlおよび右チャンネルrにより置き換えられる。
TDステレオモードからDFTステレオモードへのデコーダ側の切り替えと同様の機構がこのシナリオにおいて使用され、TDステレオモードの一次チャンネルPChおよび二次チャンネルSChは、MDCTステレオモードの左チャンネルlおよび右チャンネルrにより置き換えられる。
図14は、上で説明されたIVASステレオ符号化デバイス200およびIVASステレオ復号デバイス800の各々を形成する、ハードウェアコンポーネントの例示的な構成の簡略化されたブロック図である。
102 マイクロフォン
103 左チャンネル
104 A/Dコンバータ
105 左チャンネル
106 ステレオ音エンコーダ
107 ビットストリーム
108 誤り訂正エンコーダ
109 誤り訂正デコーダ
110 ステレオ音デコーダ
111 ビットストリーム
112 ビットストリーム
113 左チャンネル
114 左チャンネル
115 D/Aコンバータ
116 ラウドスピーカーユニット
122 マイクロフォン
123 右チャンネル
125 右チャンネル
133 右チャンネル
134 右チャンネル
136 バイノーラルヘッドフォン
200 IVASステレオ符号化デバイス
202 ICAパラメータ
203 時間領域過渡状態検出器
204 時間領域過渡状態検出器
205 ステレオ分類器およびステレオモード選択器
206 ビットストリーム
270 ステレオモードシグナリング
300 DFTステレオエンコーダ
301 計算器
302 計算器
303 ステレオプロセッサおよびダウンミキサ
304 残留信号エンコーダ
305 計算器
306 計算器
307 初期プリプロセッサ
308 コアエンコーダ構成器
310 ビットストリーム
311 コアエンコーダ
312 追加プリプロセッサ
313 ビットストリーム
314 ビットストリーム
400 TDステレオエンコーダ
401 時間領域分析器およびダウンミキサ
402 サイドパラメータ
403 初期プリプロセッサ
404 初期プリプロセッサ
405 コアエンコーダ構成器
406 コアエンコーダ
407 コアエンコーダ
410 ビットストリーム
500 MDCTステレオエンコーダ
503 初期プリプロセッサ
504 初期プリプロセッサ
506 共同コアエンコーダ
508 ビットストリーム
509 ビットストリーム
601 TDステレオフレーム
602 DFTステレオフレーム
800 IVASステレオ復号デバイス
801 DFTステレオデコーダ
802 TDステレオデコーダ
803 MDCTステレオデコーダ
807 コアデコーダ
808 デコーダ
809 DFTステレオデコーダおよびアップミキサ
810 コアデコーダ
811 コアデコーダ
812 アップミキサ
813 共同コアデコーダ
814 時間同期器およびステレオスイッチ
815 IC-BWE計算器
816 ICAデコーダ
830 ビットストリーム
1402 入力
1404 出力
1406 プロセッサ
1408 メモリ
Claims (48)
- ステレオ音信号を符号化するためのデバイスであって、
時間領域(TD)において動作する第1のステレオモードを使用する前記ステレオ音信号の第1のステレオエンコーダであって、前記第1のTDステレオモードが、前記ステレオ音信号のTDフレームにおいて、(a)第1のダウンミキシングされた信号を生み出し、(b)第1のデータ構造およびメモリを使用する、第1のステレオエンコーダと、
周波数領域(FD)において動作する第2のステレオモードを使用する前記ステレオ音信号の第2のステレオエンコーダであって、前記第2のFDステレオモードが、前記ステレオ音信号のFDフレームにおいて、(a)第2のダウンミキシングされた信号を生み出し、(b)第2のデータ構造およびメモリを使用する、第2のステレオエンコーダと、
時間領域または周波数領域において前記ステレオ音信号をコーディングするために、(i)前記第1のTDステレオモードおよび前記第1のステレオエンコーダと、(ii)前記第2のFDステレオモードおよび前記第2のステレオエンコーダとを切り替えるコントローラとを備え、
前記第1のTDステレオモードと前記第2のFDステレオモードの一方から前記第1のTDステレオモードと前記第2のFDステレオモードの他方に切り替える際に、前記ステレオモード切り替えコントローラが、前記ステレオ音信号の現在のフレームにおいてある長さの少なくとも1つのダウンミキシングされた信号の区間を再計算し、前記第1のTDステレオモードにおける前記再計算されたダウンミキシングされた信号の区間の長さが、前記第2のFDステレオモードにおける前記再計算されたダウンミキシングされた信号の区間の長さと異なる、デバイス。 - 前記第2のFDステレオモードが離散フーリエ変換(DFT)ステレオモードである、請求項1に記載のステレオ音信号符号化デバイス。
- 前記第1のTDステレオモードから前記第2のDFTステレオモードに切り替える際に、前記第2のステレオエンコーダが、一次チャンネルPChコアエンコーダのメモリを用いて、TDステレオフレームの後のDFTステレオフレームにおいてコア符号化動作を続ける、請求項2に記載のステレオ音信号符号化デバイス。
- 前記ステレオモード切り替えコントローラが、前記一方のステレオモードからのステレオ関連パラメータを使用して、前記一方のステレオモードから前記他方のステレオモードに切り替える際に前記他方のステレオモードのステレオ関連パラメータを更新する、請求項2または3のいずれか一項に記載のステレオ音信号符号化デバイス。
- 前記ステレオモード切り替えコントローラが、データ構造間で前記ステレオ関連パラメータを転送する、請求項4に記載のステレオ音信号符号化デバイス。
- 前記ステレオ関連パラメータが、前記第2のDFTステレオモードのサイド利得およびInter-Channel Time Delay(ITD)パラメータと、前記第1のTDステレオモードの目標利得および相関遅れとを備える、請求項4または5に記載のステレオ音信号符号化デバイス。
- 前記第2のDFTステレオモードから前記第1のTDステレオモードに切り替える際に、前記ステレオモード切り替えコントローラが、一次チャンネルPChの中の再計算されたダウンミキシングされた信号の区間より長い、二次チャンネルSChにおけるダウンミキシングされた信号の区間を、現在のTDフレームにおいて再計算する、請求項2から6のいずれか一項に記載のステレオ音信号符号化デバイス。
- 前記第2のDFTステレオモードから前記第1のTDステレオモードに切り替える際に、前記ステレオモード切り替えコントローラが、再計算された一次チャンネルPChおよびDFTステレオチャンネルのDFT中間チャンネルmをクロスフェードして、DFTフレームの後の最初のTDフレームにおいてダウンミキシングされた一次チャンネルPChを再計算する、請求項2から7のいずれか一項に記載のステレオ音信号符号化デバイス。
- 前記第2のDFTステレオモードから前記第1のTDステレオモードに切り替える際に、前記ステレオモード切り替えコントローラが、TDフレームの前のDFTフレームに対応する左チャンネルlおよび右チャンネルrのICAメモリを再計算する、請求項2から8のいずれか一項に記載のステレオ音信号符号化デバイス。
- 前記ステレオモード切り替えコントローラが、前記DFTフレームのステレオミキシング比を使用して前記ICA処理されたチャンネルlおよびrをダウンミキシングすることによって、前記DFTフレームの一次チャンネルPChおよび二次チャンネルSChを再計算する、請求項9に記載のステレオ音信号符号化デバイス。
- 前記ステレオモード切り替えコントローラが、ステレオモード切り替えがないとき二次チャンネルSChのより短い区間を再計算する、請求項10に記載のステレオ音信号符号化デバイス。
- 前記ステレオモード切り替えコントローラが、前記TDフレームの前の前記DFTフレームにおいて、一次チャンネルPChの第1の区間および二次チャンネルSChの第2の区間を再計算し、前記第1の区間が前記第2の区間より短い、請求項10または11に記載のステレオ音信号符号化デバイス。
- ステレオ音信号を復号するためのデバイスであって、
時間領域(TD)において動作する第1のステレオモードを使用する前記ステレオ音信号の第1のステレオデコーダであって、前記第1のステレオデコーダが、前記ステレオ音信号のTDフレームにおいて、(a)ダウンミキシングされた信号を復号し、(b)第1のデータ構造およびメモリを使用する、第1のステレオデコーダと、
周波数領域(FD)において動作する第2のステレオモードを使用する前記ステレオ音信号の第2のステレオデコーダであって、前記第2のステレオデコーダが、前記ステレオ音信号のFDフレームにおいて、(a)第2のダウンミキシングされた信号を復号し、(b)第2のデータ構造およびメモリを使用する、第2のステレオデコーダと、
(i)前記第1のTDステレオモードおよび前記第1のステレオデコーダと、(ii)前記第2のFDステレオモードおよび前記第2のステレオデコーダとを切り替えるコントローラとを備え、
前記第1のTDステレオモードおよび前記第2のFDステレオモードの一方から前記第1のTDステレオモードおよび前記第2のFDステレオモードの他方に切り替える際に、前記ステレオモード切り替えコントローラが、前記ステレオ音信号の現在のフレームにおけるある長さの少なくとも1つのダウンミキシングされた信号の区間を再計算し、前記第1のTDステレオモードにおける前記再計算されたダウンミキシングされた信号の区間の長さが、前記第2のFDステレオモードにおける前記再計算されたダウンミキシングされた信号の区間の長さと異なる、デバイス。 - 前記第2のFDステレオモードが離散フーリエ変換(DFT)ステレオモードである、請求項13に記載のステレオ音信号復号デバイス。
- 前記ステレオモード切り替えコントローラが、現在のステレオモードに応じて前記第1のTDステレオモードおよび前記第2のDFTステレオモードへ/からデータ構造を割り振り/割り振り解除し、前記現在のフレームにおいて利用されるデータ構造だけを維持することによってスタティックメモリへの影響を減らす、請求項14に記載のステレオ音信号復号デバイス。
- TDフレームの後の最初のDFTフレームを受信する際に、前記ステレオモード切り替えコントローラがDFTステレオデータ構造をリセットする、請求項14または15に記載のステレオ音信号復号デバイス。
- DFTフレームの後の最初のTDフレームを受信する際に、前記ステレオモード切り替えコントローラがTDステレオデータ構造をリセットする、請求項14から16のいずれか一項に記載のステレオ音信号復号デバイス。
- 前記ステレオモード切り替えコントローラが、1つ1つのTDステレオフレームにおいてDFTステレオ合成メモリを更新する、請求項14から17のいずれか一項に記載のステレオ音信号復号デバイス。
- 前記DFTステレオ合成メモリを更新するために、およびACELPコアのために、前記ステレオモード切り替えコントローラが、(a)CLDFBベースの再サンプリングされ、TDアップミキシングされた左チャンネルおよび右チャンネルの合成と、(b)再構築され再サンプリングされた、アップミキシングされた左チャンネルおよび右チャンネルの合成とを、クロスフェードすることによって、前記DFTステレオ合成メモリの第1の部分を1つ1つのTDフレームにおいて再構築する、請求項18に記載のステレオ音信号復号デバイス。
- 前記ステレオモード切り替えコントローラが、アップミキシングされ同期されたTDステレオ合成を再構築する、請求項14から19のいずれか一項に記載のステレオ音信号復号デバイス。
- 前記ステレオモード切り替えコントローラが、前記アップミキシングされ同期されたTDステレオ合成を再構築するために、左チャンネルと右チャンネルの両方に対して、
(a)DFTステレオOLA合成メモリを矯正し、
(b)前記アップミキシングされ同期されたTDステレオ合成の第1の部分として、アップミキシングされたDFTステレオ同期合成メモリを再使用し、
(c)前記矯正されたDFTステレオOLA合成メモリを使用して、前記アップミキシングされ同期されたTDステレオ合成の第2の部分を近似し、
(d)前記矯正されたDFTステレオOLA合成メモリを前記同期されアップミキシングされたTDステレオ合成とクロスフェードすることによって、前記同期されアップミキシングされたTDステレオ合成の最初において、前記アップミキシングされたDFTステレオ同期合成メモリと、同期されアップミキシングされたTDステレオ合成との遷移を円滑にする
という動作(a)から(d)を使用する、請求項20に記載のステレオ音信号復号デバイス。 - 少なくとも1つのプロセッサと、前記プロセッサに結合され、前記プロセッサによって実行される非一時的命令を記憶するメモリとによって実装される以下のステップを含む、ステレオ音信号を符号化するための方法であって、
時間領域(TD)において動作する第1のステレオモードを使用して前記ステレオ音信号の第1のステレオエンコーダを実装するステップであって、前記第1のTDステレオモードが、前記ステレオ音信号のTDフレームにおいて、(a)第1のダウンミキシングされた信号を生み出し、(b)第1のデータ構造およびメモリを使用する、ステップと、
周波数領域(FD)において動作する第2のステレオモードを使用して前記ステレオ音信号の第2のステレオエンコーダを実装するステップであって、前記第2のFDステレオモードが、前記ステレオ音信号のFDフレームにおいて、(a)第2のダウンミキシングされた信号を生み出し、(b)第2のデータ構造およびメモリを使用する、ステップと、
時間領域または周波数領域において前記ステレオ音信号をコーディングするために、(i)前記第1のTDステレオモードおよび前記第1のステレオエンコーダと、(ii)前記第2のFDステレオモードおよび前記第2のステレオエンコーダとの切り替えを制御するステップとを備え、
前記第1のTDステレオモードと前記第2のFDステレオモードの一方から前記第1のTDステレオモードと前記第2のFDステレオモードの他方に切り替える際に、ステレオモード切り替えを制御するステップが、前記ステレオ音信号の現在のフレームにおいてある長さの少なくとも1つのダウンミキシングされた信号の区間を再計算するステップを備え、前記第1のTDステレオモードにおける前記再計算されたダウンミキシングされた信号の区間の長さが、前記第2のFDステレオモードにおける前記再計算されたダウンミキシングされた信号の区間の長さと異なる、方法。 - 前記第2のFDステレオモードが離散フーリエ変換(DFT)ステレオモードである、請求項22に記載のステレオ音信号符号化方法。
- 前記第1のTDステレオモードと前記第2のDFTステレオモードの前記一方から前記第1のTDステレオモードと前記第2のDFTステレオモードの前記他方に切り替える際に、ステレオモード切り替えを制御するステップが、
左チャンネルおよび右チャンネルを含む入力ステレオ信号、
前記第2のDFTステレオモードにおいて使用される中間チャンネル、
前記第1のTDステレオモードにおいて使用される一次チャンネルおよび二次チャンネル、
前処理において使用されるダウンミキシングされた信号、ならびに
コア符号化において使用されるダウンミキシングされた信号
という信号のうちの少なくとも1つの連続性を維持するステップを備える、請求項23に記載のステレオ音信号符号化方法。 - 前記第1のTDステレオモードと前記第2のDFTステレオモードの前記一方から前記第1のTDステレオモードと前記第2のDFTステレオモードの前記他方に切り替える際に、ステレオモード切り替えを制御するステップが、前記現在のフレームにおいて利用されるデータ構造のみを維持することによってメモリへの影響を減らすように、現在のステレオモードに応じて前記第1のTDステレオモードおよび前記第2のDFTステレオモードへ/からデータ構造を割り振る/割り振り解除するステップを備える、請求項23または24に記載のステレオ音信号符号化方法。
- 前記第1のTDステレオモードから前記第2のDFTステレオモードに切り替える際に、ステレオモード切り替えを制御するステップが、TDステレオ関連データ構造を割り振り解除するステップを備る、請求項25に記載のステレオ音信号符号化方法。
- 前記TDステレオ関連データ構造が、TDステレオデータ構造および/または前記第1のステレオエンコーダのコアエンコーダのデータ構造を備える、請求項26に記載のステレオ音信号符号化方法。
- ステレオモード切り替えを制御するステップが、現在のTDステレオフレームの最後の期間に関連するサンプルを記憶することによって、TDステレオフレームごとにDFT分析メモリを更新するステップを備える、請求項23から27のいずれか一項に記載のステレオ音信号符号化方法。
- ステレオモード切り替えを制御するステップが、TDステレオフレームの間にDFT関連メモリを維持するステップを備える、請求項23から28のいずれか一項に記載のステレオ音信号符号化方法。
- ステレオモード切り替えを制御するステップが、前記第1のTDステレオモードから前記第2のDFTステレオモードに切り替える際に、前記TDフレームの一次チャンネルPChに対応するTDステレオメモリを使用して、TDフレームの後のDFTフレームにおいてDFT合成メモリを更新するステップを備える、請求項23から29のいずれか一項に記載のステレオ音信号符号化方法。
- ステレオモード切り替えを制御するステップが、DFTフレームの間に有限インパルス応答(FIR)再サンプリングフィルタメモリを維持するステップを備える、請求項23から30のいずれか一項に記載のステレオ音信号符号化方法。
- ステレオモード切り替えを制御するステップが、前記DFTフレームの中の中間チャンネルmの第1の長さの最後の区間の前の前記中間チャンネルmの区間を使用して、前記第1のステレオエンコーダの中の一次チャンネルPChにおいて使用される前記FIR再サンプリングフィルタメモリを1つ1つのDFTフレームにおいて更新するステップを備える、請求項31に記載のステレオ音信号符号化方法。
- 切り替えを制御するステップが、前記第1のステレオエンコーダの中の二次チャンネルSChにおいて使用されるFIR再サンプリングフィルタメモリを、前記第1のステレオエンコーダの中の前記一次チャンネルPChにおいて使用される前記FIR再サンプリングフィルタメモリの前記更新とは異なるように埋めるステップを備える、請求項32に記載のステレオ音信号符号化方法。
- ステレオモード切り替えを制御するステップが、前記DFTフレームの中の中間チャンネルmの第2の長さの最後の区間の前の前記中間チャンネルmのある区間を使用して前記FIR再サンプリングフィルタメモリを埋めることによって、前記第1のステレオエンコーダの中の前記二次チャンネルSChにおいて使用される前記FIR再サンプリングフィルタメモリを、現在のTDフレームにおいて更新するステップを備える、請求項33に記載のステレオ音信号符号化方法。
- ステレオモード切り替えを制御するステップが、1つ1つのDFTフレームにプリエンファシスフィルタメモリの2つの値を記憶するステップを備える、請求項23から34のいずれか一項に記載のステレオ音信号符号化方法。
- 二次チャンネルSChコアエンコーダデータ構造を備え、前記第2のDFTステレオモードから前記第1のTDステレオモードに切り替える際に、ステレオモード切り替えを制御するステップが、一次チャンネルPChコアエンコーダデータ構造に基づいて、前記二次チャンネルSChコアエンコーダデータ構造をリセットまたは推定するステップを備える、請求項23から35のいずれか一項に記載のステレオ音信号符号化方法。
- 少なくとも1つのプロセッサと、前記プロセッサに結合され、前記プロセッサによって実行される非一時的命令を記憶するメモリとによって実装される以下のステップを含む、ステレオ音信号を復号するための方法であって、
時間領域(TD)において動作する第1のステレオモードを使用する前記ステレオ音信号の第1のステレオデコーダを実装するステップであって、前記第1のステレオデコーダが、前記ステレオ音信号のTDフレームにおいて、(a)ダウンミキシングされた信号を復号し、(b)第1のデータ構造およびメモリを使用する、ステップと、
周波数領域(FD)において動作する第2のステレオモードを使用する前記ステレオ音信号の第2のステレオデコーダを実装するステップであって、前記第2のステレオデコーダが、前記ステレオ音信号のFDフレームにおいて、(a)第2のダウンミキシングされた信号を復号し、(b)第2のデータ構造およびメモリを使用する、ステップと、
(i)前記第1のTDステレオモードおよび前記第1のステレオデコーダと、(ii)前記第2のFDステレオモードおよび前記第2のステレオデコーダとの切り替えを制御するステップとを備え、
前記第1のTDステレオモードおよび前記第2のFDステレオモードの一方から前記第1のTDステレオモードおよび前記第2のFDステレオモードの他方に切り替える際に、ステレオモード切り替えを制御するステップが、前記ステレオ音信号の現在のフレームにおけるある長さの少なくとも1つのダウンミキシングされた信号の区間を再計算するステップを備え、前記第1のステレオモードにおける前記再計算されたダウンミキシングされた信号の区間の長さが、前記第2のステレオモードにおける前記再計算されたダウンミキシングされた信号の区間の長さと異なる、方法。 - 前記第2のFDステレオモードが離散フーリエ変換(DFT)ステレオモードである、請求項37に記載のステレオ音信号復号方法。
- 前記第1のステレオモードが第1の処理遅延を使用し、前記第2のステレオモードが第2の処理遅延を使用し、前記第1の処理遅延および前記第2の処理遅延が異なり、再サンプリングおよびアップミキシング処理遅延を備える、請求項38に記載のステレオ音信号復号方法。
- 前記第1のTDステレオモードおよび前記第2のDFTステレオモードの一方から前記第1のTDステレオモードおよび前記第2のDFTステレオモードの他方に切り替える際に、ステレオモード切り替えを制御するステップが、
前記第2のDFTステレオモードにおいて使用される中間チャンネルm、
前記第1のTDステレオモードにおいて使用される一次チャンネルPChおよび二次チャンネルSCh、
TCX-LTPポストフィルタメモリ、
内部サンプリングレートおよび出力ステレオ信号サンプリングレートにおけるDFT OLA分析メモリ、
前記出力ステレオ信号サンプリングレートにおけるDFT OLA合成メモリ、
チャンネルlおよびrを含む、出力ステレオ信号、ならびに
BWEおよびIC-BWEにおいて使用される、HB信号メモリ、チャンネルlおよびr
という信号およびメモリのうちの少なくとも1つの連続性を維持するステップを備える、請求項38または39に記載のステレオ音信号復号方法。 - ステレオモード切り替えを制御するステップが、1つ1つのTDフレームにおいてDFTステレオOLAメモリバッファを更新するステップを備える、請求項38から40のいずれか一項に記載のステレオ音信号復号方法。
- ステレオモード切り替えを制御するステップが、DFTステレオ分析メモリを更新するステップを備える、請求項38から41のいずれか一項に記載のステレオ音信号復号方法。
- TDフレームの後の最初のDFTフレームを受信する際に、ステレオモード切り替えを制御するステップが、前記TDフレームの一次チャンネルPChおよび二次チャンネルSChのある数の最後のサンプルを使用して、それぞれ、DFTステレオ中間チャンネルmおよびサイドチャンネルsの前記DFTステレオ分析メモリを前記DFTフレームにおいて更新するステップを備える、請求項42に記載のステレオ音信号復号方法。
- ステレオモード切り替えを制御するステップが、整列され同期されたTD合成を、整列され同期されたDFTステレオ合成とクロスフェードして、TDフレームからDFTフレームへの切り替えの際の遷移を円滑にするステップを備える、請求項38から43のいずれか一項に記載のステレオ音信号復号方法。
- ステレオモード切り替えを制御するステップが、次のフレームがTDフレームである場合に備えて、DFTフレームの間にTDステレオ合成メモリを更新するステップを備える、請求項38から44のいずれか一項に記載のステレオ音信号復号方法。
- DFTフレームからTDフレームに切り替える際に、切り替えを制御するステップが、前記第1のステレオデコーダの中の二次チャンネルSChのコアデコーダのメモリをリセットするステップを備える、請求項38から45のいずれか一項に記載のステレオ音信号復号方法。
- DFTフレームからTDフレームに切り替える際に、ステレオモード切り替えを制御するステップが、信号エネルギーの等化を使用して、アップミキシングされたDFTステレオチャンネルとTDステレオチャンネルとの間の不連続性と差を抑制するステップを備える、請求項38から46のいずれか一項に記載のステレオ音信号復号方法。
- アップミキシングされた前記DFTステレオチャンネルと前記TDステレオチャンネルとの間の不連続性と差を抑制するために、ステレオモード切り替えを制御するステップが、ICA目標利得gICAが1.0より低い場合、
という関係を使用して、前記TDフレームにおけるアップミキシングの後および時間同期の前に左チャンネルl、yL(i)を変更するステップを備え、Leqが等化すべき信号の長さであり、αが
という関係を使用して得られる利得係数の値である、請求項47に記載のステレオ音信号復号方法。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202062969203P | 2020-02-03 | 2020-02-03 | |
| US62/969,203 | 2020-02-03 | ||
| PCT/CA2021/050114 WO2021155460A1 (en) | 2020-02-03 | 2021-02-01 | Switching between stereo coding modes in a multichannel sound codec |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JP2023514531A JP2023514531A (ja) | 2023-04-06 |
| JP2023514531A5 JP2023514531A5 (ja) | 2024-02-09 |
| JP7780441B2 true JP7780441B2 (ja) | 2025-12-04 |
Family
ID=77199113
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2022547128A Active JP7780441B2 (ja) | 2020-02-03 | 2021-02-01 | マルチチャンネル音コーデックにおけるステレオコーディングモードの切り替え |
Country Status (8)
| Country | Link |
|---|---|
| US (2) | US12205598B2 (ja) |
| EP (2) | EP4503025A3 (ja) |
| JP (1) | JP7780441B2 (ja) |
| KR (1) | KR20220137005A (ja) |
| CN (1) | CN115039172B (ja) |
| ES (1) | ES3020557T3 (ja) |
| MX (1) | MX2022009501A (ja) |
| WO (1) | WO2021155460A1 (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP4738346A1 (en) * | 2020-12-02 | 2026-05-06 | Dolby International AB | Immersive voice and audio services (ivas) with adaptive downmix strategies |
| WO2022176270A1 (ja) * | 2021-02-16 | 2022-08-25 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化装置、復号装置、符号化方法、及び、復号方法 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100070285A1 (en) | 2008-07-07 | 2010-03-18 | Lg Electronics Inc. | method and an apparatus for processing an audio signal |
| US20170365263A1 (en) | 2015-03-09 | 2017-12-21 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Audio encoder for encoding a multichannel signal and audio decoder for decoding an encoded audio signal |
| JP2019512737A (ja) | 2016-03-18 | 2019-05-16 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | マルチチャンネルコーディング |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2004082288A1 (en) * | 2003-03-11 | 2004-09-23 | Nokia Corporation | Switching between coding schemes |
| EP2980795A1 (en) * | 2014-07-28 | 2016-02-03 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio encoding and decoding using a frequency domain processor, a time domain processor and a cross processor for initialization of the time domain processor |
| US10319385B2 (en) * | 2015-09-25 | 2019-06-11 | Voiceage Corporation | Method and system for encoding left and right channels of a stereo sound signal selecting between two and four sub-frames models depending on the bit budget |
| KR102736785B1 (ko) | 2017-09-20 | 2024-12-03 | 보이세지 코포레이션 | 씨이엘피 코덱에 있어서 서브-프레임들간에 비트-예산을 할당하는 방법 및 디바이스 |
| WO2019105575A1 (en) * | 2017-12-01 | 2019-06-06 | Nokia Technologies Oy | Determination of spatial audio parameter encoding and associated decoding |
-
2021
- 2021-02-01 CN CN202180012403.6A patent/CN115039172B/zh active Active
- 2021-02-01 US US17/758,115 patent/US12205598B2/en active Active
- 2021-02-01 EP EP24220707.4A patent/EP4503025A3/en active Pending
- 2021-02-01 WO PCT/CA2021/050114 patent/WO2021155460A1/en not_active Ceased
- 2021-02-01 JP JP2022547128A patent/JP7780441B2/ja active Active
- 2021-02-01 EP EP21751043.7A patent/EP4100948B1/en active Active
- 2021-02-01 KR KR1020227026073A patent/KR20220137005A/ko active Pending
- 2021-02-01 MX MX2022009501A patent/MX2022009501A/es unknown
- 2021-02-01 ES ES21751043T patent/ES3020557T3/es active Active
-
2024
- 2024-12-12 US US18/979,084 patent/US20250111856A1/en active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100070285A1 (en) | 2008-07-07 | 2010-03-18 | Lg Electronics Inc. | method and an apparatus for processing an audio signal |
| US20170365263A1 (en) | 2015-03-09 | 2017-12-21 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Audio encoder for encoding a multichannel signal and audio decoder for decoding an encoded audio signal |
| JP2018511825A (ja) | 2015-03-09 | 2018-04-26 | フラウンホッファー−ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ | マルチチャンネル信号を符号化するためのオーディオエンコーダおよび符号化されたオーディオ信号を復号化するためのオーディオデコーダ |
| JP2019512737A (ja) | 2016-03-18 | 2019-05-16 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | マルチチャンネルコーディング |
Also Published As
| Publication number | Publication date |
|---|---|
| CN115039172A (zh) | 2022-09-09 |
| CA3163373A1 (en) | 2021-08-12 |
| KR20220137005A (ko) | 2022-10-11 |
| ES3020557T3 (en) | 2025-05-23 |
| US20250111856A1 (en) | 2025-04-03 |
| EP4503025A3 (en) | 2025-04-23 |
| EP4503025A2 (en) | 2025-02-05 |
| EP4100948A1 (en) | 2022-12-14 |
| EP4100948B1 (en) | 2025-02-19 |
| JP2023514531A (ja) | 2023-04-06 |
| EP4100948C0 (en) | 2025-02-19 |
| US20230051420A1 (en) | 2023-02-16 |
| CN115039172B (zh) | 2026-03-24 |
| WO2021155460A1 (en) | 2021-08-12 |
| EP4100948A4 (en) | 2024-03-06 |
| MX2022009501A (es) | 2022-10-03 |
| US12205598B2 (en) | 2025-01-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7244609B2 (ja) | ビットバジェットに応じて2サブフレームモデルと4サブフレームモデルとの間で選択を行うステレオ音声信号の左チャンネルおよび右チャンネルを符号化するための方法およびシステム | |
| AU2016231283C1 (en) | Audio encoder for encoding a multichannel signal and audio decoder for decoding an encoded audio signal | |
| KR101657916B1 (ko) | 멀티채널 다운믹스/업믹스의 경우에 대한 일반화된 공간적 오디오 객체 코딩 파라미터 개념을 위한 디코더 및 방법 | |
| KR101798117B1 (ko) | 후방 호환성 다중 해상도 공간적 오디오 오브젝트 코딩을 위한 인코더, 디코더 및 방법 | |
| US20250111856A1 (en) | Switching between stereo coding modes in a multichannel sound codec | |
| CA3163373C (en) | Switching between stereo coding modes in a multichannel sound codec | |
| EP4229628B1 (en) | Method and device for audio band-width detection and audio band-width switching in an audio codec | |
| HK40097496A (zh) | 用於音频编解码器中的音频带宽检测和音频带宽切换的方法和设备 | |
| HK40049313B (zh) | 用於编码的音频编码器及用於解码的音频解码器 | |
| HK40049312B (zh) | 用於编码的音频编码器及用於解码的音频解码器 | |
| HK1259052A1 (zh) | 用於解码立体声声音信号的左和右声道的方法和系统 | |
| HK1259052B (en) | Method and system for decoding left and right channels of a stereo sound signal |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221004 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240201 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240201 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20250314 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20250318 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20250618 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20250715 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20251015 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20251028 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20251121 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7780441 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |