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 (マルチスレッドエンコード時)エンコードスレッドの設定 マルチスレッドエンコード時、エンコードスレッドの優先順位を決定します。 dwPara1にWinBASE.h内で定義されている THREAD_PRIORITY_**** を指定してください。
- シングルスレッドエンコード時はMPEG_processFrameを呼ぶスレッドと同等のプライオリティになります。
- マルチスレッドエンコード時、かつエンコードスレッドの設定を行わない場合は、 最初にMPGE_processFrameを呼んだスレッドと同等のプライオリティになります。
MC_OUTPUT_FORMAT 出力フォーマットの設定 出力MP3データを覆うフォーマットを設定します。 dwPara1にWinBASE.h内で定義されている THREAD_PRIORITY_**** を指定してください。 dwPara1に出力フォーマットを指定してください。
- シングルスレッドエンコード時はMPEG_processFrameを呼ぶスレッドと同等のプライオリティになります。
- マルチスレッドエンコード時、かつエンコードスレッドの設定を行わない場合は、 最初にMPGE_processFrameを呼んだスレッドと同等のプライオリティになります。
例 :
// RIFFヘッダを持つWAVE形式のMP3データを作成します
MPGE_setConfigure( MC_OUTPUT_FORMAT, (UPARAM)MC_OUTPUT_RIFF_WAVE, (UPARAM)0);
MC_ENHANCEDFILTER カスタマイズ拡張フィルタの設定 ユーザー側で詳細なローパスフィルターを施します。バンド幅は[0-1]の間で正規化されます。
実際は入出力PCMの標本化周波数によって遮蔽周波数は変化します。
- 周波数帯域 0〜A の間はフィルタが施されません
- 周波数帯域 A〜B の間は、なだらかな曲線を描く様にフィルタの強度が増します
- 周波数帯域 B〜1 の間は、完全に遮断します
このパラメーターを設定すると、"固定16kbpsフィルタ"の設定は無視されるようになります。 VBRエンコード時、この設定パラメタは無視されます。
- dwPara1には、帯域Aの値を設定します。 0〜100
- dwPara2には、帯域Bの値を設定します。 0〜100
例 :
// 午後のこ〜だ、128kbpps出力時のデフォルト値を指定します
MPGE_setConfigure( MC_ENHANCEDFILTER, 55, 75);
MC_VBRBITRATE VBR変動幅の制限 VBRエンコード時の変動幅を制限します。
VBRクオリティと併用して設定してください。
- dwPara1には、最低ビットレートをkbps単位で指定します。
- dwPara2には、最高ビットレートをkbps単位で指定します。
例 :
// 最低ビットレートを32kbps、最高ビットレートを160kbpsに設定します
MPGE_setConfigure( MC_VBRBITRATE, 32, 160);