問題タブ [directsound]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1085 参照

audio - Does DirectSound usually support echo cancellation and noise reduction?

I'm currently using the waveInOpen set of Windows API functions to record audio for a VOIP application. I'm now being asked to add echo cancellation, and possibly noise reduction, and gain control. I know nothing about DirectSound, but while searching on "echo cancellation" on Google I came across references on MSDN to DirectSound such as CaptureAcousticEchoCancellationEffect.

If I switch to DirectSound will I get some of these features "for free"? Are they only supported if the hardware supports it, and if so, how often will that hardware be present in the average consumer PC?

0 投票する
1 に答える
1200 参照

c# - C# DirectSound DirectSoundBuffer.SetVolume E_NOINTERFACE

オーディオ ライブラリの DirectSound ラッパーを作成しています。私は directsound に出会いましたが、非常にうまく機能します。つまり、オーディオの再生は、ウェーブアウトなどよりもはるかに優れています。しかし今、私には問題があります。セカンダリ バッファーのボリュームを設定しようとしています。インターフェイスを変換できないなどの理由で、HResult E_NOINTERFACE があるという例外が発生します。そんなことがあるものか。Setvolume メソッドのコードは次のとおりです。 void SetVolume(int lVolume);

そして、たとえば-56の値を渡しています。

ここに正確なエラーメッセージ:

タイプ「System.__ComObject」の COM オブジェクトは、インターフェイス タイプ「AMEngine.DX.IDirectSoundBuffer」にキャストできません。IID '{279AFA85-4981-11CE-A521-0020AF0BE560} を持つインターフェイスの COM コンポーネントで QueryInterface 呼び出しを実行できなかったため、この操作を実行できませんでした: エラーにより、そのようなインターフェイスはサポートされていません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))。

私はこれを翻訳しました:

の中へ

次のコードで正常に作成されます。

音量は次のコードで設定されます: (私が渡す値は -56 です) 音なし = 0 および maxsound = -10000

0 投票する
3 に答える
2078 参照

directx - .Net Framework 4.0 でマネージド DirectX を使用すると、プログラムがクラッシュする

Managed DirectX dll および .Net Framework 4.0 で DirectSound を使用すると問題が発生します。

このプログラムは .Net Framework 2.0 で正常に動作しますが、他のコンポーネントを使用するには 4.0 にアップグレードする必要があります。

プログラムがサウンド モジュールを呼び出すと、以下に示す例外でクラッシュします。

誰もこれを見て、それを修正する方法を知っていますか?

0 投票する
1 に答える
75 参照

directsound - 時折新しい LPDIRECTSOUNDBUFFER8 bad_alloc

次のコードを使用すると、「C++ 例外: std::bad_alloc at memory location」が時々発生します。

このコードは boot/init で呼び出されます。アプリを 10 回実行できますが、この例外は約 1 回スローされます。

ランダム性は、初期化されていない変数を考えさせます。しかし、ご覧のとおり、コードは非常に単純です。

何か案は?

ありがとうございました

0 投票する
1 に答える
1959 参照

windows - DirectSoundとWinMMはWASAPIに基づいていますか?

このスライドでは、vistaのwinmmとdirectsoundがwasapiに基づいていることがわかりました。

これは、winmmとdirectsoundが実際にWASAPIの関数を呼び出すことによって機能することを意味しますか?

私はいくつかのグーグル検索の後でこの情報を見つけることができず、ここの誰かが知っていることを願っています。

0 投票する
1 に答える
2631 参照

windows-8 - DirectSound は Windows 8 で動作しますか?

DirectX 9.0c のコンポーネントである DirectSound について言及しています。

MediaElement が優先されるオーディオ クラスであることはわかっていますが、アプリに必要な DirectSound オーディオ機能の一部、特にオーディオ出力デバイスの宛先を指定する機能が提供されません。MediaElement は、現在の既定のオーディオ再生デバイスでのみ再生されます (Win8 でアップグレードされない限り)。

0 投票する
0 に答える
789 参照

c# - サウンドカードが3のチャンネルマスクのみを報告する場合、SlimDXXAudio2を介してモノラルエンコードされたオーディオをリアチャンネルで再生する

私は古いシステム(XP)を使用しており、DirectSoundBufferとWAVEFORMATEXTENSIBLEオブジェクトをバックスピーカー用のChannelMaskセットで使用して、DirectXを介してリアチャンネル(右後ろおよび/または左後ろ)からモノラルエンコードされたPCMオーディオを再生できました。

古いシステムと.NetおよびSlimDxXAudio2を使用した新しいシステムでも同じ機能をやり直そうとしていますが、古いシステムでSetOutputMatrixを呼び出すと、フロントの左右のチャンネル以外に設定したすべてのものが無視されます。サウンドカードは5.1サラウンドサウンド用に設定されています。新しいシステムでは、正常に動作します。古いシステムでGetDeviceDetailsを呼び出すと、チャネルマスクが3(フロント2スピーカーのみ)であると報告されます。古いC++DirectSoundが機能していても、フロントを再生することしかできないのはそのためだと思います。サウンドドライバにエラーがあると思いますが、これに対する更新が見つかりません。

これに対する回避策はありますか?

これは、同じ動作をするXAudio2C++ベーシックサウンドデモのサンプルです。

ここで、デバイスの詳細を取得すると、SoundCard構成が5.1に設定されていても、ChannelMaskは3(フロントスピーカー)です。サウンドカードは古いSoundMaxAC'97カードです。後で私が次のことをするとき:

最初のGetOutputMatrixの後、fMatrixには[0]および[1]インデックスが1.0に設定されています。SetOutputMatrixを呼び出すと、他のチャネルを1.0に設定しようとしていますが、GetOutputMatrixの後、fMatrixでは[1]のみが1.0に設定されています。それ以外はすべて0です。

注:SetOutputMatrixを呼び出しても、失敗しないすべての値が設定されていない場合は、OKが返されます。

0 投票する
0 に答える
683 参照

directshow - サウンド ストリームをビデオ ストリームと同期する

ビデオ/オーディオ会議プロジェクトに取り組んでいますが、次の問題があります。

  1. DirectSound でサウンドを録音し、オーディオ バッファーが pcm raw 形式でいっぱいになるたびに (約 200 ミリ秒)、ネットワーク (マルチキャスト) 経由で送信します。
  2. DirectX.Capture プロジェクト (コード プロジェクト) を使用して、ネットワーク経由で画像を送信しています (マルチキャスト)。

これら 2 つのストリームを同期する方法について何かアイデアはありますか? LAN では同期に問題はありませんが、インターネットでは、ピア間のネット速度の違いやルーティングなどのために問題が生じると思います。

ありがとうございました!

0 投票する
0 に答える
438 参照

c++ - Windows 7 SP1 で USB オーディオ Jabra ヘッドセットを取り外して取り付けると、ネットワークに問題が発生する可能性があります。どうやって調べるの?

私は特殊な voip アプリケーションに取り組んでいます。TLS をシグナリング チャネルとして使用し、(S)RTP を通話のメディア チャネルとして使用します。

DirectSound を使用して再生およびキャプチャするオーディオ出力モジュールが作成されています。オーディオモジュールはオーディオエラーに耐性があります。何らかの誤りが検出された場合 - 1) 問題のオーディオ デバイスが閉じられている 2) メイン アプリケーションに問題が通知されている 3) お客様が別のオーディオ デバイスを選択できる。ほとんどの場合、うまく機能します。

しかし、「取り外し / 10 ~ 20 秒待つ / USB Jabra ヘッドセットを挿入する」というシーケンスが興味深い結果になることがあります。着信 RTP パケットがなくなったか、破損しています。OS は、使用できないポートに関する ICMP レポートをリモート ピアに送信できます。

DevPartner と DrMemory のエラー チェッカーで確認しましたが、レポートにヒントはありませんでした。

ドライバーかWindowsの問題だと思います。他のシステムでも再現できる場合があります。

質問 - この問題を調査するにはどうすればよいですか? Windows 内のオーディオ ドライバーのアクティビティを表示するツールがあるのではないでしょうか?

ありがとうございました :)

0 投票する
1 に答える
1818 参照

c# - C# WPF プロジェクトで SharpDX DirectSound を使用して .wav ファイルを再生するにはどうすればよいですか?

プログラムで再生される .wav ファイルのタイミングを正確に制御できるようにしたいと考えています。また、同時に複数の .wav ファイルを再生できるようにしたいと考えています。一度に 2 つのサウンドを再生できないため、SoundPlayer は十分ではありませんでした。異なるサウンドを連続して再生する場合でも、各サウンド間に約 1/8 秒の遅延があり、これは私が行っていることには受け入れられません。SharpDX を使用してデバイスを追加する方法が見つかりません。