動的な形式の変更

動的形式の変更は、Windows 7 以降のバージョンの Windows オペレーティング システムの機能であり、オーディオ アプリケーションとオーディオ アダプターの間でオーディオ データをストリーミングするために使用される形式を動的に変更することができます。 動的な形式の変更は、高解像度マルチメディア インターフェイス (HDMI) デバイスでのオーディオ ストリーミングの動作に対応します。 このトピックでは、動的な形式変更の概要と、その動作について説明します。

次の一覧は、動的な形式の変更が使用されるシナリオを示しています。

  • HDMI デバイスは新しい機能を提供します。 HDMI デバイスがオーディオ データまたはビデオ データまたはその両方をストリーミングする場合、オーディオとビデオの転送に使用される合計 HDMI 帯域幅が固定され、容量の割り当てではビデオ信号が優先されます。 つまり、HDMI ディスプレイ デバイスがコンピューターに接続されていて、ディスプレイの解像度を変更すると、コンピューターへのオーディオ データ転送用に残される帯域幅のサイズに影響します。

    たとえば、HDMI デバイスが最初に、特定の表示モードで 192 KHz、16 ビット ステレオに設定されたデータ形式で構成されているとします。 別の表示モードに変更すると、オーディオ データをストリーミングするための残りの帯域幅が 192 KHz 形式では不十分な可能性があります。 そのため、デバイス ドライバーは、表示モードの変更について接続されているコンピューターのオーディオ サービスに通知します。これにより、オーディオ ドライバーとオーディオ サービスがオーディオ データ形式を再ネゴシエーションします。 現在選択されている 192 KHz 形式を残りの帯域幅内でストリーミングできない場合は、新しい形式が選択されます。 形式のネゴシエーション プロセスの詳細については、「形式に関するネゴシエーション」を参照してください。

    別の HDMI 関連の動的な形式の変更シナリオでは、オーディオ デバイスが取り外され、新しい HDMI 対応デバイスが接続されます。 HDMI デバイスのデバイス ドライバーは、形式変更イベントを生成し、オーディオ サービスは、デバイス ドライバーとオーディオ データ形式を再ネゴシエーションします。

  • 一部のスタンドアロン オーディオ デバイスは、ユーザーがオーディオ データ形式の変更に使用できるハードウェア コントロールを提供します。 このシナリオでは、ユーザーは、たとえばオーディオ データ形式を選択するために、サラウンド サウンド アンプのコントロール ノブを操作します。 スタンドアロン オーディオ デバイスに接続されているコンピューターがある場合、この新しく選択されたデータ形式により、接続されているコンピューター上のオーディオ ドライバーがデータ形式を再ネゴシエーションし、場合によっては変更します。

  • コントロール パネルのサウンド アプレットのサードパーティ製 UI には、システム効果を有効または無効にするためのオプションが用意されています。 独自のシステム効果オーディオ処理オブジェクト (sAPO) を開発する場合は、コントロール パネルのサウンド アプレット用のカスタム UI を提供することもできます。 このカスタム UI には、サウンド アプレットの [拡張] タブまたは [詳細設定] タブ、またはその両方に対する変更を含めることができます。 このシナリオでは、ユーザーは、[拡張] タブのチェック ボックスを選択して、オーディオ データ形式を変更する必要があるグローバル システム効果 (GFX) 機能を有効または無効にします。 ユーザーが選択を行うと、HDMI ドライバーによって形式変更イベントが生成されます。 オーディオ サービスは、このイベントに関する通知を受信し、オーディオ ドライバーと再ネゴシエーションして、オーディオ データの新しい形式を選択します。

HdMI および IEC61937 準拠の圧縮オーディオ形式 (Dolby Digital や Digital Theater Sound (DTS) など) をサポートするために、Windows 7 以降の Windows オペレーティング システムでは、カーネル ストリーミング (KS) のプロパティと構造で使用するための、サブタイプ GUID の新しいセットが提供されています。 国際電気標準会議 (IEC) 標準の IEC 61937 が、非線形 PCM でエンコードされたビット ストリームを転送するデジタル オーディオ インターフェイスに適用されています。 サブタイプ GUID の詳細については、Ksmedia.h の KSDATAFORMAT_SUBTYPE_IEC61937_Xxx GUID を参照してください。

注意 オーディオ エンドポイント ビルダーが動的な形式変更通知を受け取り、提案されたデータ形式がデバイス ドライバーでサポートされていない場合、エンドポイント ビルダーは新しい既定のデバイス データ形式を再計算します。

また、再設計されたオーディオ ドライバーで新しい形式がサポートされるようになった場合は、エンドポイント ビルダーがデバイスの既定の形式として新しい形式を選択するように強制することができます。 デバイスの既定値として新しい形式への切り替えを強制するには、オーディオ ドライバーは、古い形式に関して受信する形式サポートのクエリに失敗する必要があります。 失敗した形式サポートのクエリによって形式変更通知がトリガーされ、デバイスの新しい既定の形式がエンドポイント ビルダーによって計算されます。