「メディアデータの再生中に、この操作は出来ません。デバイスをリセットするか、デタの再生が終了するまで、待って下さい、」とは? – プログラミング – Home

「メディアデータの再生中に、この操作は...
 
通知
すべてクリア

「メディアデータの再生中に、この操作は出来ません。デバイスをリセットするか、デタの再生が終了するまで、待って下さい、」とは?


さいか
 さいか
(@さいか)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

VC++6で、
リアルタイム録音とwavファイルの再生を繰り返していたら、
ブログラムは止まりはしないのですが、
2~3順目あたりから、
警告用のメッセージボックスを上げるかのように、
上記のエラーが何度も出ます。
どこが悪くて、何をなおせばいいのでしょうか?


引用解決済
トピックタグ
とーりすがり
 とーりすがり
(@とーりすがり)
ゲスト
結合: 18年前
投稿: 29
 

まずは質問の仕方をなおしましょう
あなたがどんなコードを書いたのか、他人にはさっぱりわかりません


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

質問の内容から推測すると、
  「wavファイルの再生の処理が終了したことを確かめてから、
   リアルタイム録音の処理を行いましょう。」
となります。
もう少し、プログラムの処理内容を書いてくれないと推測しか出来ません。
以下のような情報をくれないと分りません。
 OSは、WINDOWS XP? SP1? SP2?
 何の関数を使ってどのような処理を行ったのか?
 SDK?MFC?
いろんな処理方法があるので、
マルチメディアの処理の場合、関数名明記しましょう。
 


返信引用
さいか
 さいか
(@さいか)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

WINDOWS XPです。
SDKです。
再生は、PlaySoundaという関数でやっており、

int a;
int g;

PlaySoundA(RC_NotFound.wav,NULL,SND_FILENAME|SND_ASYNC);
for (a=0;a<25000;a++)
for (b=0;b<25000;b++)
b = b;

一見、無意味と思えるループをさせているのは、
これがないと、途中で再生が、途切れちゃうんですね。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

なぜに ASYNC をわざわざ指定してるのに BUSY ループで待つのか。
一見無意味ではなくて、まったく無意味。典型的ダメコード。
PlaySound のマニュアルを読むべし。
具体的にどうコード書けばいいかは「真に何がしたいか」次第なので
提示された文章だけでは判断できん。
PlaySound(_T(RC_NotFound.wav), NULL, SND_FILENAME|SND_SYNC); // ループは不要
でいいのかもしれんが、もっと別のコードになるかも試練


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

関数を使うときは、それぞれの引数の意味とか何を指定するとどうなるのか
と言うのをきちんと理解して使わないと応用も利かないし、今回のように
無意味なコードを書くハメになると思います。
SND_ASYNCとSND_SYNCの意味とかそのときにどんな動きをするのかとか
きちんと理解して使うようにするべきだと思いますよ。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

「PlaySound」って「SND_SYNC」で使うのが妥当みたいですね。
MSDN見てみたけど、非同期にした時の利点があまりないみたいです。
確かに処理がすぐ戻るって利点があっても、
イベントのハンドルは取得できないし、
完了ルーチンを設定も出来ないみたいですね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました