(C)Copyright 2000 NTT Cyber Space Laboratories

エンコーダ初期化マニュアル


初期化は、TwinVQ エンコーダプログラムを動作させる前に必ず行う必要があります。初期化の手順は、

  1. プログラムセットアップ情報の取得
  2. エンコーダの初期化

の2つの手順で行います。

1. プログラムセットアップ情報の取得

エンコーダの初期化に先立ち、エンコーダモジュールの初期化に必要な情報の取得と、入出力インターフェース (サンプルプログラムでは、ファイル) の指定を行います。

1.1 エンコーダセットアップ情報の取得

エンコーダモジュールの初期化に先だって、符号化条件などのエンコーダセットアップ情報を取得する必要があります。エンコーダセットアップ情報は、構造体 headerInfo と、encSpecificInfo のメンバに格納します。headerInfo には、エンコーダ・デコーダ共通のセットアップ情報、encSpecificInfo には、エンコーダ特有のセットアップ情報が格納されます。 headerInfo 構造体のメンバ構成はこちらを参照ください。encSpecificInfo 構造体のメンバ構成は下の通りです:

typedef struct{
  int N_CAN_GLOBAL;
/* VQモジュールの予備選択数、 */   
                    
/* 値が小さいほど高速 */
                  
  /* 値が大きいほど高音質 */
} encSpecificInfo;

サポートされている各要素の値の組み合わせは、こちらを参照ください

サンプルプログラムでは、プログラムの引数リストからセットアップ情報を取得しています。また、サンプリング周波数やチャネル数などのオーディオ信号に関するパラメータは、WAVE ファイルのヘッダから取得しています。

1.2 データ入出力の指定

次に、データの入出力インタフェースを指定します。サンプルプログラムでは、16 bit PCM ファイルからデータを入力し、ビットストリームファイルに出力しますので、これらのファイル名を取得します。

2. TwinVQ エンコーダの初期化

セットアップ情報を取得したら、次に TwinVQ エンコーダを初期化します。エンコーダの初期化は次の順序で行います。

2.1 TwinVQエンコーダモジュールの初期化

TvqEncInitialize() 関数を使って TwinVQ エンコーダモジュールを初期化します。

2.2 ビットストリーム書き込みモジュールの初期化

TvqInitBsWriter() 関数を使ってビットストリーム書き込みモジュールを初期化します。

2.3 オーディオデータ入力部の初期化

入力オーディオデータ配列として、 {フレームあたりのサンプル数}×{チャネル数} の大きさだけメモリを確保する必要があります。

TvqEncGetFrameSize() 関数と TvqEncGetNumChannels() 関数を使って TwinVQ DLL モジュールにフレームサイズとチャネル数を問い合わせた後、その値を使ってメモリアロケーションを行います。

また、サンプルプログラムでは、ファイル出力を行っているので、出力ファイルをオープンします。

2.4 ビットストリームヘッダオブジェクトの作成

TvqCreateHeaderChunk() 関数を使ってビットストリームヘッダオブジェクトを生成します。この関数は、ビットストリームヘッダの生成を支援する ChunkHelper.cxx に置かれています。TvqCreateHeaderChunk() 関数では、標準ヘッダ情報は、headerInfo 構造体から取得し、拡張ヘッダ情報は設定ファイルから取得します。

2.5 ビットストリームヘッダの書き込み

作成したビットストリームヘッダオブジェクトの内容を、ビットストリームヘッダに書き込みます。TvqPutBsHeaderInfo() 関数が使われます。