MPGE_setConfigure

エンコード時の条件を設定します。

宣言

MERET  MPGE_setConfigure(MPARAM mode, UPARAM dwPara1, UPARAM dwPara2 );

パラメータ

mode

項目名を指定します。

dwPara1, dwPara2

エンコード条件に対応したパラメータを設定します。
パラメータが不要な項目には"0"を指定してください。

使用例

MERET retval;
retval = MPGE_setConfigure( MC_INPUTFILE, (UPARAM)"c:\\test.wav", (UPARAM)0 );
retval = MPGE_setConfigure( MC_OUTPUTFILE, (UPARAM)"c:\\test.mp3", (UPARAM)0 );

戻り値

ME_NOERR  正常終了
ME_PARAMERROR  パラメーターの範囲、パラメーターの項目が正しくない 

解説

gogo.dllのエンコード条件の設定を行います。
連続してエンコードする場合、その都度パラメーターを設定しなおす必要があります。
MPGE_detectConfigure()を実行すると、それ以降は使用できなくなります。

以下にmode 及びパラメータ の設定方法について記載します。


MC_INPUTFILE 入力デバイスの選択

入力デバイス、およびそのパラメーターを設定します。入力デバイスとして選択可能な物を示します。
MC_INPDEV_FILE ファイルからの入力を選択します。
dwPara1にはファイル名のポインタを指定してください
MC_INPDEV_STDIO 標準入力(stdin)からの入力を選択します。
Windows環境では使用しないでください
MC_INPDEV_USERFUNC ユーザー関数からの入力を選択します。
dwPara1には、以下の構造体のポインタを指定してください。
struct MCP_INPDEV_USERFUNC {
    MPGE_USERFUNC	pUserFunc;// コールバック対象のユーザー関数。__cdecl(※1)形式にて
    unsigned int  nSize;	// ファイルサイズ。不定の時は MC_INPDEV_MEMORY_NOSIZEを指定。
    int		nBit;	// PCMビット深度を指定。nBit = 8 or 16
    int		nFreq;	// 入力周波数の指定(Hz単位で, 0<nChn)
    int		nChn;	// チャネル数。nChn = 1 or 2
};

※ __cdecl形式とは以下の呼び出し規約をもつMicrosoft定義の関数呼び出し形式です

  • 引数を渡す順番は右から左になります。
  • スタックのポップ(引数分積んだスタックの復元処理)は呼び出し元が行います。

例 :

// ディスク上のファイルをエンコード
retval = MPGE_setConfigure( MC_INPUTFILE, MC_INPDEV_FILE, (UPARAM)"c:\\test.mp3" );

// ユーザー関数を使用してエンコード
struct MCP_INPDEV_USERFUNC structUserMode = { UserInputFunction, 10*1024*1024, 16, 44100, 2};
retval = MPGE_setConfigure( MC_INPUTFILE, MC_INPDEV_USERFUNC, (UPARAM)&structUserMode );


MC_OUTPUTFILE 出力デバイスの選択

出力デバイス、およびそのパラメーターを設定します。出力デバイスとして選択可能な物を示します。
MC_OUTDEV_FILE ファイルからの入力を選択します。
dwPara1にはファイル名のポインタを指定してください
MC_OUTDEV_STDOUT ---
MC_OUTDEV_USERFUNC ユーザー関数への出力を行います。
以下の様なプロトタイプ宣言を持つ関数のポインタをdwPara1へ設定してください。
MERET __cdecl (*MPGE_USERFUNC)(void *buf, unsigned long nLength );

void *buf:

エンコード済みのデータが格納されているポインタが渡ります。

unsigned long nLength

エンコード済みのデータが格納されているバイト数が渡ります。

※ __cdecl形式とは以下の呼び出し規約をもつMicrosoft定義の関数呼び出し形式です

  • 引数を渡す順番は右から左になります。
  • スタックのポップ(引数分積んだスタックの復元処理)は呼び出し元が行います。

例 :

// ディスク上のファイルへ出力
retval = MPGE_setConfigure( MC_OUTPUTFILE, MC_OUTDEV_FILE, (UPARAM)"c:\\test.mp3" );

// ユーザー関数を使用して出力
retval = MPGE_setConfigure( MC_OUTPUTFILE, MC_OUTDEV_USERFUNC, (UPARAM)userOutputFunc );



MC_ENCODEMODE エンコードタイプ
エンコードモードを設定します。dwPara1にモードを設定してください。
MC_MODE_MONO モノラル/強制モノラル
MC_MODE_STEREO ステレオ
MC_MODE_JOINT ジョイントステレオ
MC_MODE_MSSTEREO ミッドサイドステレオ
MC_MODE_DUALCHANNEL デュアルチャネル

例 :

// ジョイントステレオモードに設定します。
MPGE_setConfigure( MC_ENCODEMODE, MC_MODE_JOINT, (UPARAM)0 );


MC_BITRATE ビットレート設定
出力するMP3のビットレートを設定します。(VBR指定時は、最低のビットレートを指定します)
設定可能な値は次の通りです。

MPEG1 Layer3 :

[ 32,40,48,56,64,80,96,112,128,160,192,224,256,320 ]

MPEG2 Layer3 :

[ 8,16,24,32,40,48,56,64,80,96,112,128,144,160 ]

例 :

// 160kbpsに設定します。
MPGE_setConfigure( MC_BITRATE, 160, (UPARAM)0 );


MC_INPFREQ 入力で用いるサンプル周波数の強制指定
入力に用いるPCMデータの周波数を強制的に指定します。

例 :

// 4分の曲を2分でエンコードします。
MPGE_setConfigure( MC_INPFREQ, 44100*2, (UPARAM)0 );


MC_OUTFREQ 出力で用いるサンプル周波数の強制指定
出力するMP3データの再生周波数を強制的に指定します。

例 :

// 32kHzで出力します。
MPGE_setConfigure( MC_INPFREQ, 32000, (UPARAM)0 );


MC_STARTOFFSET エンコード開始位置の強制指定

MC_USEPSY 心理解析 ON/OFF
処理過程で音響心理解析の利用するかどうかを設定します。

例 :

// 心理解析を無効にします。
MPGE_setConfigure( MC_USEPSY, FALSE( or 0 ), (UPARAM)0 );


MC_USELPF16 16KHz低帯域フィルタ ON/OFF
128kbps以下のビットレートでエンコードを行う際に、ローパスフィルタを用いるかどうかの
設定を行います。高音領域に発生するシュワシュワノイズを軽減します。

例 :

// ローパスフィルタを有効にします。
MPGE_setConfigure( MC_USELPF16, TRUE( or !0 ), (UPARAM)0 );


MC_USEMMX
MC_USE3DNOW
MC_USEKNI
MC_USEE3DNOW
ユニット指定
MMX、3DNow!、Pentium3-SIMD(SSE)、拡張3DNow!の使用・不使用を設定します。

例 :

// MMXを無効にします。
MPGE_setConfigure( MC_USEMMX, FALSE( or 0 ), (UPARAM)0 );


MC_ADDTAG ファイルタグ情報付加

MC_EMPHASIS エンファシスタイプの設定
音響のエンファシスタイプを設定します。以下のパラメータを設定します。
MC_EMP_NONE エンファシスタイプを"なし"に設定します
MC_EMP_5015MS エンファシスタイプを"50/15ms"に設定します
(CD-DAでエンファシスありの設定時は大抵コレ) 
MC_EMP_CCITT エンファシスタイプを"CCITT"に設定します 

例 :

// エンファシスタイプを50/15msに設定します。
MPGE_setConfigure( MC_EMPHASIS, MC_EMP_5015MS, (UPARAM)0);


MC_VBR VBRタイプの設定
VBR(可変ビットレート)を使用します。
dwPara1にVBRのクオリティ( 高音質0〜9高圧縮 ) を指定してください。

例 :

// VBRを使用します
MPGE_setConfigure( MC_VBR, (UPARAM)5, (UPARAM)0);


MC_CPU CPU個数の強制指定
エンコード時にMultiCPUエンコードを行うか、SingleCPU エンコードを行うかを選択します。
ver 2.21時点では、2個以上の時にマルチCPU モードでエンコードを行います。
dwPara1にCPU個数を指定してください。

例 :

// CPU個数を2個に設定(=マルチCPUエンコードのルーチンを使用する)
MPGE_setConfigure( MC_CPU, (UPARAM)2, (UPARAM)0);


MC_BYTE_SWAP 16bitPCM時 上位・下位のバイトを交換する
RAW-PCM入力モード時のみ機能します

MC_8BIT_PCM 8bit PCM 入力時
RAW-PCM入力モード時のみ機能します

MC_MONO_PCM mono PCM 入力時
RAW-PCM入力モード時のみ機能します

MC_TOWNS_SND Towns SND 入力時
迷える子羊たちが使用します。Windows環境では使う機会はないでしょう

MC_THREAD_PRIORITY(マルチスレッドエンコード時)エンコードスレッドの設定
マルチスレッドエンコード時、エンコードスレッドの優先順位を決定します。
  • シングルスレッドエンコード時はMPEG_processFrameを呼ぶスレッドと同等のプライオリティになります。
  • マルチスレッドエンコード時、かつエンコードスレッドの設定を行わない場合は、 最初にMPGE_processFrameを呼んだスレッドと同等のプライオリティになります。
dwPara1にWinBASE.h内で定義されている THREAD_PRIORITY_**** を指定してください。

MC_OUTPUT_FORMAT出力フォーマットの設定
出力MP3データを覆うフォーマットを設定します。
  • シングルスレッドエンコード時はMPEG_processFrameを呼ぶスレッドと同等のプライオリティになります。
  • マルチスレッドエンコード時、かつエンコードスレッドの設定を行わない場合は、 最初にMPGE_processFrameを呼んだスレッドと同等のプライオリティになります。
dwPara1にWinBASE.h内で定義されている THREAD_PRIORITY_**** を指定してください。 dwPara1に出力フォーマットを指定してください。

例 :

// RIFFヘッダを持つWAVE形式のMP3データを作成します
MPGE_setConfigure( MC_OUTPUT_FORMAT, (UPARAM)MC_OUTPUT_RIFF_WAVE, (UPARAM)0);


MC_ENHANCEDFILTERカスタマイズ拡張フィルタの設定
ユーザー側で詳細なローパスフィルターを施します。バンド幅は[0-1]の間で正規化されます。
  • 周波数帯域 0〜A の間はフィルタが施されません
  • 周波数帯域 A〜B の間は、なだらかな曲線を描く様にフィルタの強度が増します
  • 周波数帯域 B〜1 の間は、完全に遮断します
実際は入出力PCMの標本化周波数によって遮蔽周波数は変化します。

  • dwPara1には、帯域Aの値を設定します。 0〜100
  • dwPara2には、帯域Bの値を設定します。 0〜100
このパラメーターを設定すると、"固定16kbpsフィルタ"の設定は無視されるようになります。 VBRエンコード時、この設定パラメタは無視されます。

例 :

// 午後のこ〜だ、128kbpps出力時のデフォルト値を指定します
MPGE_setConfigure( MC_ENHANCEDFILTER, 55, 75);


MC_VBRBITRATEVBR変動幅の制限
VBRエンコード時の変動幅を制限します。
  • dwPara1には、最低ビットレートをkbps単位で指定します。
  • dwPara2には、最高ビットレートをkbps単位で指定します。
VBRクオリティと併用して設定してください。

例 :

// 最低ビットレートを32kbps、最高ビットレートを160kbpsに設定します
MPGE_setConfigure( MC_VBRBITRATE, 32, 160);