PlaySound API を繰り返し呼び出すと Audiodg.exe のメモリ使用量が増加する

こんにちは、マルチメディアサポートチームです。今回は、PlaySound API を繰り返し呼び出した場合に、Audiodg.exe のメモリ使用量が増加し続ける現象についてご説明します。 なお、本現象につきましては、音声の再生時のパフォーマンスを重視する必要があり、メモリ解放が低優先度となる仕様に基づく動作となります。     事象発生までの流れ PlaySound API は、Windows にて特定の音データを再生するために利用する代表的なAPI です。   PlaySound function https://msdn.microsoft.com/en-us/library/windows/desktop/dd743680(v=vs.85).aspx   このAPI は基本的に指定された音データのみを一度 再生します。そのため、継続的に音を再生する場合や複数の音源を再生する場合など、利用目的によっては、PlaySound API を繰り返して呼ぶ利用方法が考えられます。   ただ、繰り返して呼び出す利用方法にて、API の呼び出し間隔が(1 秒未満など) 短い場合は、時間の経過とともにOS 内のモジュールAudiodg.exe のメモリ使用量が徐々に増加する事象が発生します。この事象は、PlaySound が呼び出されている間は継続して発生します。 増加量の度合いは呼び出しの頻度や音データのサイズに影響されますが、目安として、50~100 ミリ秒程度の間隔でPlaySound API を繰り返し呼び出した場合、30~40 時間程度でAudiodg.exe のメモリ使用量が1 GB 単位に至ります。   事象の発生要因について この事象は、Audiodg.exe が再生側のパフォーマンスを重視した処理を行っている結果として、メモリの解放処理が遅延しているために発生します。音声の再生には、周波数に応じたサンプリングデータ生成が必要です。もし処理が間に合わない場合には、正しい音が再生できないこととなるため、音声再生のパフォーマンスを重視する仕様となっております。   PlaySound API を呼び出した際は、OS 内の処理として、Windows オーディオ サービス (Audiosrv) がAudiodg.exe に対し呼び出し(RPC ※1) をかけます。Audiodg.exe…

0

Windows 10 でボリューム スライダーの操作後に流れる音声を中断させると、その後一定期間システム音が流れなくなる

こんにちは、マルチメディアサポートチームです。今回は、Windows 10 Anniversary Update 及び Windows 10 Creators Update で確認されている、ある条件下でシステム音が流れない現象について案内します。   事象発生までの流れ   Windows 10 にて、タスク バーのスピーカー アイコンをクリックすると、以下 図1 のように、ボリュームを調整するための「ボリューム スライダー」がタスク バーの上に表示されます。   (図 1)   このボリューム スライダーを利用して任意の値にボリュームを設定した際、音量の確認のために、「一般の警告音」プログラム イベントで設定されている音が再生されます。(参照: 図 2)   (図 2)   この音が再生されている途中に、ユーザーがボリューム スライダー UI から (デスクトップをクリックするなどして) フォーカスを外します。その場合、以下の動作になる場合があります。   ·         Windows 10 Anniversary Update: 音がフェードアウトします。 ·         Windows 10 Creators Update: 音の再生が中断されます。  …

0