Skip to main content
スキップしてメイン コンテンツへ
PDC 2008

Windows 7 におけるストリームの減衰

更新日: 2009 年 4 月 28 日


ダウンロード

Word 文書 PDC08_CA_Stream_Attenuation_JPN.doc (Word 形式、174 KB)


目次:

  1. ストリームの減衰とは
  2. ストリームの減衰の既定の動作
  3. ストリームの減衰効果をカスタマイズする
    1. 通信アプリケーション用のメソッド呼び出し
    2. メディア アプリケーション用のメソッド呼び出し



Rian Chung
Microsoft Corporation
2008 年 10 月

対象:

Windows® SDK (Core Audio API)
VOIP アプリケーションおよびユニファイド コミュニケーション アプリケーション
Windows® 7

要約:

Windows 7 では、ユーザーの通信エクスペリエンスを向上するための 2 つの新機能が導入されています。まず、ユーザーは既定の通信デバイスを選択できます。次に、PC で通話を受けた場合にストリームの減衰効果を実現することができます。Core Audio SDK に付属している API を使用すれば、通信アプリケーションでのストリームの減衰効果をカスタマイズすることもできます。

法的通知:

このドキュメントは暫定版であり、このソフトウェアの最終的な製品版の発売時に実質的に変更されることがあります。
このドキュメントに記載されている情報は、このドキュメントの発行時点におけるマイクロソフトの見解を反映したものです。変化する市場状況に対応する必要があるため、このドキュメントは、記載された内容の実現に関するマイクロソフトの確約とはみなされないものとします。また、発行以降に発表される情報の正確性に関して、マイクロソフトはいかなる保証もいたしません。
このホワイト ペーパーに記載された内容は情報の提供のみを目的としており、明示、黙示または法律の規定にかかわらず、これらの情報についてマイクロソフトはいかなる責任も負わないものとします。
お客様ご自身の責任において、適用されるすべての著作権関連法規に従ったご使用を願います。このドキュメントのいかなる部分も、米国 Microsoft Corporation の書面による許諾を受けることなく、その目的を問わず、どのような形態であっても、複製または譲渡することは禁じられています。ここでいう形態とは、複写や記録など、電子的な、または物理的なすべての手段を含みます。ただしこれは、著作権法上のお客様の権利を制限するものではありません。
マイクロソフトは、このドキュメントに記載されている内容に関し、特許、特許申請、商標、著作権、またはその他の無体財産権を有する場合があります。別途マイクロソフトのライセンス契約上に明示の規定のない限り、このドキュメントはこれらの特許、商標、著作権、またはその他の無体財産権をお客様に許諾するものではありません。
別途記載されていない場合、このソフトウェアおよび関連するドキュメントで使用している会社、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人物、場所、出来事などの名称は架空のものです。実在する商品名、団体名、個人名などとは一切関係ありません。
© 2008 Microsoft Corporation. All rights reserved.
Microsoft、MS-DOS、Windows、Windows NT、Windows Server、Windows Vista、Active Directory、ActiveSync、ActiveX、Direct3D、DirectDraw、DirectInput、DirectMusic、DirectPlay、DirectShow、DirectSound、DirectX、Expression、FrontPage、HighMAT、Internet Explorer、JScript、Microsoft Press、MSN、Outlook、PowerPoint、SideShow、Silverlight、Visual Basic、Visual C++、Visual InterDev、Visual J++、Visual Studio、WebTV、Windows Media、Win32、Win32s、および Zune は米国 Microsoft Corporation の米国またはその他の国における登録商標または商標です。
記載されている会社名、製品名には、各社の商標のものもあります。


1. ストリームの減衰とは

ユーザーが PC で音楽を聴いているときに電話がかかってくるとしましょう。このような場合、通話中は音楽の音量レベルを下げ、通話終了後に元の音量に戻そうと考えます。オペレーティング システムでは、"ストリームの減衰" または "ダッキング" と呼ばれる機能を使用して、このような要件を実現します。

既定では、ストリームの減衰がシステムによって自動的に処理されます。アプリケーションで通信セッションの開始時と終了時を認識できる限り、この既定の処理を置き換えることができます。Core Audio API を使用して、実装をカスタマイズすることができます。

ストリームの減衰は、VoIP アプリケーションやユニファイド コミュニケーション アプリケーションを対象として、Windows® 7 で導入された機能です。

ページのトップへ


2. ストリームの減衰の既定の動作

Windows 7 のユーザー インターフェイスでは、ユーザーが既定の通信デバイスを選択できます。選択したデバイスは、主にPC で電話を掛けたり受けたりする際の通信に使用されます。オペレーティング システムでは、通信デバイスによって開始されたストリームを通信ストリームとして認識します。

既定では、システムが新しい通信ストリームを受信すると通信セッションが開始され、通信以外のすべてのストリームの音量が調節されます。通信以外のストリームとは、オーディオ デバイスで現在再生中で、カスタマイズされた効果に登録されてないストリームです。既定の減衰効果は、コントロール パネルの [サウンド] オプションで指定したユーザー設定によって異なります。[通信] タブでは、減衰のレベルを選択したり (既定値は 80%)、通信以外のすべてのストリームをミュートしたり、既定のストリームの減衰効果を無効にしたりすることができます。システムは、通信セッション中に通信以外のストリームを新たに開くことができます。ただし、この新しいストリームは自動的には減衰されません。しかし、新しいストリームがシステム サウンドの場合は、システムによって減衰されます。すべての通信ストリームが閉じられると、システムによって通信セッションが終了され、通信セッション中に減衰されていたストリームの音量が復元されます。

ストリームの減衰を視覚的に示すために、システムではユーザー設定に応じて音量ミキサーの設定を変更します。たとえば、ユーザーが減衰のレベルを指定すると、音量ミキサーのスライダーが下げられ、新しく設定された減衰後の音量と元の音量レベルが表示されます。

次の図は、既定の減衰効果を示しています。

既定の減衰効果

通信以外のストリームを再生中のアプリケーションでストリームの減衰効果をカスタマイズしている場合は、音量スライダーの位置は変わらず、減衰効果が視覚的には示されません。たとえば、独自の減衰効果が提供している Windows Media Player では、音量ミキサーの音量レベルが調整されません。代わりに、通信セッション中は現在のメディア ストリームが一時停止され、通信セッションが終了すると再生が再開されます。

ページのトップへ


3. ストリームの減衰効果をカスタマイズする

Windows 7 の新しい既定の通信デバイスとストリームの減衰を使用すると、ユーザーの通信エクスペリエンスが向上します。ユーザーが 2 つの機能のメリットを十分に得られるようにするには、メディア アプリケーションと通信アプリケーションの両方が減衰を考慮して設計されている必要があります。

ストリームの減衰のシナリオに関係するアプリケーションには次の 2 種類があります。

  • 通信アプリケーション
    通信デバイスでストリームを開始および終了するアプリケーションです。システムは、既定の通信デバイスで開始されたセッションを通信セッションに指定します。セッションは 1 つ以上のストリームのコレクションです。アプリケーションでは新しいストリームをセッションに割り当てる必要があります。
  • メディア アプリケーション
    音量が減衰されるオーディオをオーディオ デバイスで再生するアプリケーションです。このアプリケーションでは、通信ストリームの開始または終了時のイベント通知をリッスンする必要があります。これらのイベントの処理では、ストリームの減衰効果をカスタマイズして実装できます。たとえば、メディア アプリケーションでは、通信ストリームの開始時に通知を受け取ったとき、再生中の音声を一時停止できます。この場合、システムで用意された既定の効果を置き換えることも必要です。

カスタム処理を提供するには、両方のアプリケーションで次のインターフェイス ポインターが必要です。

  • IMMDeviceEnumerator
  • IMMDevice
  • IAudioClient
  • IAudioSessionManager2
  • IAudioSessionControl2
  • IAudioVolumeDuckNotification

これらのインターフェイスは、AudioPolicy.idl で定義されています。

a. 通信アプリケーション用のメソッド呼び出し

ストリームを開始するには、通信アプリケーションで次の処理を実行する必要があります。

  1. IID_IMMDeviceEnumerator を RIID として指定して CoCreateInstance を呼び出し、デバイス列挙子を作成します。
  2. Role パラメーターに eCommunication の役割を指定して IMMDeviceEnumerator::GetDefaultAudioEndpoint を呼び出し、既定の通信デバイスを取得します。この呼び出しでは、既定の通信デバイスの IMMDevice インターフェイスへのポインターが返されます。各オーディオ デバイス (レンダリングまたはキャプチャ) には、デバイスの役割 (eConsole、eMultimedia、または eCommunications) が割り当てられている必要があります。これらの値は Mmdeviceapi.h の ERole 列挙で定義されています。
  3. 通信デバイス用オーディオ クライアントの IAudioClient インターフェイスを取得します。IMMDevice インターフェイス ポインターで、IID_IAudioClient を指定して IMMDevice::Activate を呼び出し、ポインターを取得します。オーディオ クライアントは、セッションを初期化し、ストリームに割り当てるために使用します。
  4. 通信セッションのセッション GUID を作成します。
  5. IAudioClient ポインターで、セッション識別子を指定して IAudioClient::Initialize を呼び出し、通信ストリームを開始しセッションに割り当てます。

b. メディア アプリケーション用のメソッド呼び出し

メディア アプリケーションでは、通信ストリームが開始されるときに減衰されるよう、再生中のストリームを登録できます。ストリームの減衰効果をカスタマイズするには、メディア アプリケーションで次の処理を実行する必要があります。

  1. IAudioSessionControl2 インターフェイスを取得します。IAudioSessionControl2 インターフェイスへの参照を取得するには、アプリケーションで IAudioSessionControl::QueryInterface を呼び出して、ストリーム オブジェクトの IAudioSessionControl インターフェイスからインターフェイス ポインターを要求する必要があります。
  2. IAudioSessionManager2 インターフェイスを取得します。IAudioSessionManager2 インターフェイスへの参照を取得するには、アプリケーションで IID_IAudioSessionManager2 を指定して IMMDevice::Activate を呼び出し、オーディオ デバイスでこのインターフェイスをアクティブにする必要があります。
  3. IAudioSessionControl2::SetDuckingPreferenceoptOut パラメーターに TRUE を渡して、既定のストリームの減衰効果を無効にし、アプリケーションの減衰効果を有効にします。指定した設定は、セッション中に動的に変更できます。
  4. IAudioSessionManager2::RegisterForDuckNotification を呼び出して、通信ストリームの変化についての通知を受け取るようにアプリケーションを登録します。アプリケーションでは、通信デバイスでストリームが開始されるときに通知を受け取れるようになります。このメソッドは、IAudioSessionControl2::SetDuckingPreference を呼び出して既定のストリームの減衰効果を無効にした後にのみ、呼び出す必要があります。
    RegisterForDuckNotification は、カスタムの減衰効果を提供する IAudioVolumeDuckNotification インターフェイスのクライアントでの実装へのポインターを受け取ります。アプリケーションでは、インターフェイスのメソッド経由のコールバックの形式で、イベント通知を受け取ります。IAudioVolumeDuckNotification::OnVolumeDuckNotification メソッドでは、メディア アプリケーションで再生されている、通信以外のストリームに関連付けられたセッションのセッション識別子を指定します。
    IAudioVolumeDuckNotification::OnVolumeUnDuckNotification メソッドでは、オーディオ デバイスで終了するセッションのセッション識別子を指定します。

通知の受け取りを中止するには、IAudioSessionManager2::UnRegisterDuckNotification を呼び出します。


開発者向けガイド一覧

Windows 7 ホワイト ペーパー

ページのトップへ

評価してください: