掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WaveOut APIについて (ID:71150)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
遠山といいます。解決できずに投稿させていただきました。 OS:Windows Vista Home Premium SP1 32bit マシン:Intel(R)CPU 1.66GHz WaveOut APIを使ってサンプリングデータを直接書き込んで再生していますがOS環境によって動作が不安定になってしまいます。 Windows98,Me,XPではうまくいくのですが、Windows Vistaでうまく再生できません。再生データが重なったり雑音のような感じになってしまいます。 以下のようにwBitsPerSample=16でダブルバッファリングを使用してバッファ2つを繰り返し再生しています。 wBitsPerSample=16を2つとwBitsPerSample=8が1つで3つダブルバッファリングで繰り返し再生しています。 VistaでコンパイルとVisualC++6.0を起動するときに互換性に問題がありますとメッセージが出てきますがそのままスキップして実行しています。 OSによって動作が変わるので互換性の問題なのか、それともコード自体の問題でしょうか。どなたかアドバイスいただけたら宜しくお願いします。 wfe.wFormatTag = WAVE_FORMAT_PCM; wfe.nChannels = 1; wfe.nSamplesPerSec = SamplingRate; wfe.nAvgBytesPerSec = SamplingRate; wfe.wBitsPerSample = 16; wfe.nBlockAlign = wfe.nChannels * wfe.wBitsPerSample / 8; wfe.cbSize = 0; waveOutOpen(&hOut, WAVE_MAPPER, &wfe, (DWORD)OutProc, 0, CALLBACK_FUNCTION); whdr1.lpData = (char *)buff1; whdr1.dwBufferLength = SamplingSize * 2; whdr1.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP; whdr1.dwLoops = 1; waveOutPrepareHeader( hOut, &whdr1, sizeof(WAVEHDR) ); whdr2.lpData = (char *)buff2; whdr2.dwBufferLength = SamplingSize * 2; whdr2.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP; whdr2.dwLoops = 1; waveOutPrepareHeader( hOut, &whdr2, sizeof(WAVEHDR) );
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.