ebxa.dllのダウンロード

■ダウンロード

ebxa.dll


■ebxa.dllとは

 電子ブック EB-XA 規格に含まれる音声の変換及び再生を行うためのdllです。

 環境:Windows 95,Windows 98,Windows NT 4.0,Windows 2000

 関数:

  1. void ebxa(char* file, int start, int len)

   fileのstart位置からlenの長さ分の音声を再生します。

   再生が完了するまで呼び出し側へ制御は戻りません。

  2.int wave_length(int start, int len)

   fileのstart位置からlenの長さ分をWAVEデータへの変換後のデータ長を返します。

  3.bool ebxa2wave(char* file, char* pvWaveData, int start, int len)

   fileのstart位置からlenの長さ分のADPCMデータをWAVEデータへ変換します。

   呼び出し側でWAVEデータを格納するメモリーを確保し(2.の関数を使って求め

   ます)、アドレスを2つ目のパラメータで渡してください。

■利用規定

  GNU General Public Licence Version 2.0 に従って下さい。

■ソース(ebxa.cpp)

EB-XA dataのデコード関数 XADecode は根本 隆さんの辞書検索プログラム ebdicを

利用(wavepへ書き出すように一部変更)させていただいています。

オリジナルのXADecodeはebdic-0.31.3.tar.gzのebxa2wav.ccに含まれます。

■利用方法

・ebxa
	typedef bool __stdcall (*PEBXA)(char*, int, int);
	HINSTANCE hEBXA_DLL;

	// 開始時
	hEBXA_DLL = LoadLibrary(szDLL);
	// 音声再生
	if (hEBXA_DLL != NULL) {
		PEBXA ebxa = (PEBXA)GetProcAddress(hEBXA_DLL, "ebxa");
		ebxa(szSoundFile, start, length);
	}

	// 終了時
	if (hEBXA_DLL != NULL)
		FreeLibrary(hEBXA_DLL);


・ebxa2wave

	typedef int __stdcall (*PWAVE_LENGTH)(int, int);
	typedef bool __stdcall (*PEBXA2WAVE)(char*, char*, int, int);
	HINSTANCE hEBXA_DLL;
	char *pvWaveData;

	// 開始時
	HINSTANCE hEBXA_DLL = LoadLibrary(szDLL);
	pvWaveData = NULL;

	// 音声再生
	if (hEBXA_DLL != NULL) {
		PWAVE_LENGTH wave_length = (PWAVE_LENGTH)GetProcAddress(hEBXA_DLL, "wave_length");
		PEBXA2WAVE ebxa2wave = (PEBXA2WAVE)GetProcAddress(hEBXA_DLL, "ebxa2wave");
		int l = wave_length(start, length);
		pvWaveData = new char[l];
		if (ebxa2wave(szSoundFile, pvWaveData, start, length))
			PlaySound((LPCSTR)pvWaveData, NULL, SND_MEMORY | SND_ASYNC);
	}

	// 終了時
	if (hEBXA_DLL != NULL)
		FreeLibrary(hEBXA_DLL);
	delete [] pvWaveData;