Windows 10 オーディオ サブシステムでは、既定のオーディオ エンドポイントの選択に対して、ヒューリスティックが強化されたアルゴリズムが使用されます。 このトピックでは、これらのヒューリスティックと、Windows 10 オーディオ サブシステムがそれらを使用して既定のオーディオ エンドポイントを選択する方法について説明します。 このトピックでは、Windows 10 の新しい選択メカニズムについて理解を深めるために、Windows 7 で既定のオーディオ エンドポイントを選択する方法についても説明します。 このトピックの対象読者は OEM と IHV です。
この情報は、Windows 10 オペレーティング システムに適用されます。
ここで説明する参照とリソースは、このトピックの最後に記載されています。
イントロダクション
ほとんどの PC オーディオ デバイスには、論理的に独立した複数のオーディオ機能が含まれています。 Windows 7 と Windows 10 では、各機能は個別のオーディオ エンドポイントとして公開されます。 エンドポイントは、Windows 7 の次のダイアログ ボックスの例に示すように、コントロール パネル サウンド アプリケーションに一覧表示されます。
そして、Windows 10で利用可能な新しいサウンド設定ページで。
特定のコンソールまたは通信ロールの既定値として設定できるオーディオ エンドポイントは一度に 1 つだけです。 ただし、Windows 10 以降では、[アプリ のボリュームとデバイスの基本設定] ページを使用して、これらのロールの別のエンドポイントを別のアプリケーションにターゲットにするオプションがあります。
Windows 7 および Windows 10 オーディオ サブシステムでは、同様のアルゴリズムを使用して、ユーザー設定が指定されていない場合に既定のオーディオ エンドポイントを決定します。 ただし、Windows 10 アルゴリズムは、既定のユーザー選択を処理し、アプリケーションごとの優先設定を処理する方法で Windows 7 とは異なります。
このトピックでは、Windows 10 で既定のオーディオ エンドポイントを選択する方法について説明します。 Windows 10 の新機能について理解を深めるために、Windows 7 での既定のオーディオ エンドポイントの選択についても説明します。
既定のオーディオ エンドポイント選択の基本アルゴリズム
Windows 7 および Windows 10 オーディオ サブシステムは、同様のアルゴリズムを使用して既定のオーディオ エンドポイントを決定します。 アルゴリズムは次のように動作します。
- すべての ACTIVE エンドポイントをループして、このアプリケーションのユーザーが優先する既定として設定されたエンドポイントを見つけます (Windows 10 の新機能)
- エンドポイントが識別されると、エンドポイントが返され、プロセスが完了します。
- エンドポイントが特定されていない場合は、すべての ACTIVE エンドポイントをループして、システムのユーザーが優先する既定値として設定されたエンドポイントを見つけます (Windows 10 の選択が変更されました)。
- エンドポイントが識別されると、エンドポイントが返され、プロセスが完了します。
- エンドポイントが特定されていない場合は、すべての ACTIVE エンドポイントをループし、要求されたロールの "rank" プロパティが最も高く、かつ PKEY_AudioDevice_NeverSetAsDefaultEndpoint プロパティが既定として設定されていないエンドポイントを検索します。 (Windows 10 で変更されたランクの重み付け値)。
- エンドポイントが識別されると、エンドポイントが返され、プロセスが完了します。
- エンドポイントが識別されない場合、要求はE_NOTFOUNDを示して失敗します。
エンドポイントの状態には、ACTIVE、UNPLUGGED、DISABLED、NOT PRESENT の 4 つがあり、 DEVICE_STATE_XXX定数で定義されています。 オーディオ サブシステムは、既定のオーディオ エンドポイントを決定するときに、アクティブなエンドポイント (現在および有効な状態) のみを考慮します。 エンドポイントの状態が ACTIVE 状態からまたは ACTIVE 状態に変化するイベントは、現在の既定のオーディオ エンドポイントに影響する可能性があります。 このようなイベントには、オーディオ デバイスの挿入、デバイスの取り外し、新しいオーディオ デバイスのインストールが含まれます。 このような操作に対応して、Windows オーディオ サブシステムは既定のオーディオ エンドポイントヒューリスティック アルゴリズムを実行して、新しい既定のオーディオ エンドポイントを決定します。
Windows 7 の Endpoint Timestamp プロパティ
エンドポイント タイムスタンプ プロパティは、システム時刻を含むプロパティ キーです。 Windows 7 では、エンドポイントのタイムスタンプ プロパティは、コントロール パネル サウンド アプリケーションを使用して既定のオーディオ エンドポイントとして設定されると作成または更新されます。
タイムスタンプ プロパティは各ロールに関連付けられます。タイムスタンプ プロパティは既定の選択アルゴリズムによって使用され、そのロールのユーザーが優先する既定として設定されているエンドポイントを識別します。 アルゴリズムは、最新のタイムスタンプ プロパティを持つエンドポイントを既定のエンドポイントとして識別します。
Windows 10 の Level プロパティ
Windows 7 でユーザーの既定の基本設定に使用されたタイムスタンプ プロパティでは、最初の既定の選択後に新しくアタッチされたデバイスを自動的に選択できませんでした。 たとえば、ユーザーが過去および後で新しい USB ヘッドフォンを接続した任意の時点で、内部スピーカーを既定のエンドポイントとして設定した場合、システムは手動で選択せずに USB ヘッドフォンに移動することはありません。
Windows 10 以降では、ユーザーの既定の選択は、ユーザーが既定で選択した時点で使用できたエンドポイントを考慮する、過去の基本設定のツリーのような構造として構築されています。 その理由は、ユーザーが既定のエンドポイントを選択すると、選択時にアクティブだった他のエンドポイントに対して、そのエンドポイントの優先設定が通信されるためです。 ユーザーは、選択したデバイスに対する絶対的な好みを、永遠にすべての状況で示しているわけではありません。
Timestamp プロパティの使用と作成は、Windows 10 から削除され、Level プロパティに置き換えられました。 level プロパティは、ユーザー設定のツリーのような構造を構築するために使用されます。 timestamp プロパティと同様に、各ロールに関連付けられたレベル プロパティがあります。 level プロパティは、サウンド コントロール パネル、サウンド設定ページ、またはシステム トレイのオーディオ コントロールを使用して、ユーザーが既定のエンドポイントを選択するたびに作成または更新されます。
既定の割り当てアルゴリズムは次のように機能します。
エンドポイントが既定として選択されている場合、そのエンドポイントは、使用可能な最高レベルを割り当てることによって、ツリーに似た構造の最上位に移動されます。 ツリーの次のレベルには、過去に既定として選択されたか、この選択時にアクティブであったが、ユーザーが選択したことがない 1 つ以上のエンドポイントが含まれます。 後続の選択のたびに、目的のエンドポイントがリストの一番上に移動し、前の選択を下に移動します。また、アクティブだがまだ選択されていないエンドポイントをグループ化して、同順位条件を作成します。 システム内のすべてのエンドポイントが既定として設定されている場合、結果の構造は、各レベルで 1 つのエンドポイントを持つ単純な順序付きリストになります。
既定の決定アルゴリズムは次のように機能します。
最初に、レベル値のないアクティブなエンドポイントは、既定として選択された最も高いランクのエンドポイントと比較されます。 これにより、最近追加されたエンドポイントは、システム内で最新であり、ユーザーが以前の既定値を選択した後に接続されるため、最初に既定値になる機会が与えられます。
次に、すべてのアクティブなエンドポイントにレベルが含まれている場合は、最も高いレベルのエンドポイントが既定として選択されます(同点を除く)。 最も高いレベルを持つことは、過去のある時点で、ユーザーがこのエンドポイントを既定値として設定したのに対し、低いレベルの値を持つ他のエンドポイントがアクティブであることを示します。
最後に、すべてのエンドポイントにレベル値が含まれており、最も高いレベルの値を持つエンドポイントがすべて関連付けられている場合は、エンドポイントランクが使用されて同点が解除されます。 これは、これらのエンドポイントが既定の選択時にアクティブであったが、それ自体は選択されなかったことを示します。 これらのエンドポイント間のユーザー設定は示されないため、自動ランク付けシステムが使用されます。
この新しいアルゴリズムでは、"新しい" エンドポイントに既定値になるための重みが増える点に注目してください。 つまり、オーディオ エンドポイントをシステムに新しく表示するドライバーの動作では、既定の変更をトリガーする可能性があります。
ドライバーの動作とイベントの例。オーディオ エンドポイントのユーザー設定が失われ、オーディオ エンドポイントがシステムに "新しい" と表示され、既定のデバイスの変更がトリガーされる可能性があります。
- 別のドライバーのインストール。 たとえば、HDAudio クラス ドライバーと、ハードウェアに対応するサード パーティ 製ドライバーを切り替えます。 これは、ユーザー設定と使用可能なエンドポイントが、2 つ以上の関連のないドライバーのインストール間で同じであるとは見なされないため、仕様上想定されています。
- ドライバーのアンインストールと再インストール。 オーディオ ドライバーをアンインストールすると、AudioEndpointBuilder によってドライバーに関連付けられているユーザー設定が削除されます。 新しいドライバーをインストールすると、AudioEndpointBuilder によって新しいオーディオ エンドポイントが作成されます。 これは想定される動作であり、仕様上、この動作は、予期しないユーザー設定の損失が発生した場合に、自動インストーラーによって回避する必要があります。
- オーディオ エンドポイント フィルター参照文字列またはピン ID への変更。 オーディオ エンドポイントは、KS インターフェイスの作成時に PnP に渡される参照文字列と、外部コネクタのピン ID によって識別されます。 これらの値を変更すると、新しいオーディオ エンドポイントが作成されます。 この新しいオーディオ エンドポイントには、以前の参照文字列とコネクタのピン ID に関連付けられているユーザー設定は含まれません。 ドライバーの更新プログラム全体を含め、ドライバーのインストールの有効期間中は、参照文字列とコネクタピン ID を変更しないでください。
- 端末の種類またはシンク ID を変更する HDMI またはディスプレイ オーディオ デバイス。 ターミナルの種類とシンク ID は、ユーザーが別のディスプレイをシステムにアタッチすると変更されることが予想されます。別のディスプレイは、新しいユーザー設定が関連付けられた新しいエンドポイントです。 ただし、添付ディスプレイに対応する変更がない場合にこれらの値を変更すると、ユーザー設定が失われたと見なされます。 シンク ID とターミナルの種類は、接続されたディスプレイに対して変更されずに保持される必要があります。
Windows 10 の既定のオーディオ エンドポイントヒューリスティック
自動エンドポイント選択用の Windows 10 の既定のオーディオ エンドポイント ヒューリスティックは、Windows 7 ヒューリスティックと同じであり、ユーザー エクスペリエンスを向上させるために係数の重みに若干の変更が加えられます。
既定の選択ヒューリスティックは、オーディオ エンドポイントに関する情報とその要因を収集することから始まります。 その後、各因子が重み付けされ、結果として得られるすべての因子の加重値が合計されます。 結果の合計はエンドポイント ランクと呼ばれます。 ランク値は、各エンドポイント (コンソールと通信) の各ロールに対して計算されます。
その後、最も高いランクのエンドポイントが、要求されたロールの既定値として選択されます。
Windows 10 ヒューリスティック要素
Windows 10 オーディオ サブシステムでは、既定のオーディオ エンドポイントを選択するために、次のエンドポイント特性または 要因が考慮されます。
- ジャック検出機能
- フォームファクター
- KSNodeType
- バスの種類
- 一般的な場所
- 幾何学的位置
- サブタイプ固有
- コンソールまたは通信の役割に影響を与えない追加の要因が存在する可能性があり、このドキュメントの範囲外です。
Windows 10 では、サポートされているすべてのエンドポイント要素の列挙値のセットが定義され、レジストリに格納されます。 これらの要因とそれに対応する列挙値セットについて詳しく説明します。
ジャック検出機能
この機能を備えたエンドポイントは、エンドポイントに接続されているオーディオ周辺機器が接続または取り外されたときに、オーディオ ドライバーがオーディオ サブシステムに通知できることを意味します。 ジャック検出機能をサポートするオーディオ エンドポイントは動的エンドポイントと呼ばれ、このサポートを提供しないエンドポイントは静的エンドポイントと呼ばれます。 ジャック検出機能をサポートするには、オーディオ デバイス ドライバーが KSPROPERTY_JACK_DESCRIPTION2 プロパティをサポートする必要があります。 このプロパティの詳細については、「 KSPROPERTY_JACK_DESCRIPTION2」を参照してください。
| ジャック検出機能の列挙値 |
|---|
| サポートされています |
| サポートされていません |
Windows 10 の既定のオーディオ デバイスヒューリスティックでは、すべての USB オーディオ エンドポイントとBluetoothオーディオ エンドポイントがジャック検出可能として扱われます。
フォームファクター
オーディオ エンドポイントのフォーム ファクターは、ヘッドホン、スピーカー、S/PDIF など、ユーザーが対話するオーディオ エンドポイントの物理的な属性を示します。 エンドポイントのフォーム ファクターを決定するために、オーディオ サブシステムは組み込みの固定ロジックを使用して、オーディオ ドライバーによって公開されるカーネル ストリーミング (KS) ピンのカテゴリ (KSNodeType) を特定のフォーム ファクターにマップします。 詳細については、「 EndpointFormFactor」を参照してください。
| エンドポイント フォーム ファクターの列挙値 |
|---|
| リモートネットワークデバイス |
| スピーカー |
| ラインレベル |
| ヘッドホン |
| マイク |
| ヘッドセット |
| 受話器 |
| UnknownDigitalPassthrough |
| SPDIF |
| デジタルオーディオ表示デバイス |
| UnknownFormFactor |
KSNodeType
オーディオ ドライバーは、オーディオ ジャックに接続されている可能性があるオーディオ デバイスに関する詳細な知識があるため、エンドポイント上の KS ピンの KSNodeType を選択します。 そのため、KsNodeType は、フォーム ファクターよりもエンドポイントに関するより具体的な知識を明らかにします。
| KSNodeType 列挙値 |
|---|
| KSNODETYPE_SPEAKER |
| KSNODETYPE_MICROPHONE_ARRAY |
| KSNODETYPE_HEADPHONES |
KsNodeType の詳細については、「 Pin Category プロパティ」を参照してください。
バスの種類
この要素は、オーディオ エンドポイントを公開したオーディオ デバイスの列挙元のバスの種類を表します。
| バス型の列挙体値 |
|---|
| BTHENUM |
| BTHHFENUM |
| USB |
| HDAUDIO |
| PCI |
| 未知 |
オーディオ サブシステムは、他のすべてのエンドポイント特性が同じ場合に、他のバスの種類よりも特定のバスの種類のエンドポイントを優先します。 たとえば、システムは、BluetoothヘッドフォンをオンボードHDオーディオヘッドフォンよりも優先して、ユーザーに優れた通信エクスペリエンスを提供します。つまり、エンドユーザーがこの PC にBluetoothヘッドフォン デバイスを導入すると、システムによって既定のデバイスになります。
一般的な場所
一般的な場所は、オーディオ エンドポイントが接続されているジャックまたはデバイスの物理的な総位置を示します。
| 位置列挙型の一般的な値 |
|---|
| PrimaryBox (プライマリ システム シャーシ上、ユーザーがアクセス可能) |
| 内部(マザーボード上、ボックスを開けずにアクセスできない) |
| 別個(モバイルボックスなど) |
| その他 |
幾何学的位置
幾何学的位置は、オーディオ エンドポイントが接続されているジャックまたはデバイスの幾何学的位置を示します。
| 幾何学的位置の列挙値 |
|---|
| eGeoLocRear |
| eGeoLocFront |
| eGeoLocLeft |
| eGeoLocRight |
| eGeoLocTop |
| eGeoLocBottom |
| eGeoLocRearOPanel |
| eGeoLocRiser |
SubtypeSpecific
サブタイプ固有のプロパティを使用すると、エンドポイントのピン カテゴリ プロパティに依存するヒューリスティック値を将来拡張できます。 サポート/非サポート機能を使用できます。
| SubtypeSpecific 機能の列挙値 |
|---|
| サポートされています |
| サポートされていません |
現在、サブタイプ固有のプロパティは、マイク配列ジオメトリに関連しています。 マイク配列ジオメトリのコンテキストでは、"Supported" はフロント/バックジオメトリを意味します。 "NotSupported" は、他のジオメトリを示します。 複数のマイクアレイが存在する場合は、フロント/バックジオメトリの設定が行われる可能性があります。
Windows 10 ヒューリスティックの詳細
Windows 10 の既定のオーディオ エンドポイントヒューリスティックでは、各エンドポイント要素が重み付けされます。 係数の優先度が高いほど、その重みが大きくなります。 このトピックでは 、WeightFactor_Xxx を使用して要因の優先順位を識別します。
さらに、Windows 10 ヒューリスティックでは、要素カテゴリ内の各列挙値にランク値 (このトピックでは nRankXxx ) が割り当てられます。 このランク値は、同じ要素の下にあるすべての列挙値の相対的な重要度を確立します。
これらの WeightFactor_Xxx と nRankXxx の 値は、オペレーティング システムのインストール時に Windows によってレジストリに格納されます。 ヒューリスティックのランク計算のパラメーターのセットは、エンドポイントの特性によって異なります。 次の表に、パラメーターのセットの例を示します。
| エンドポイント係数の重み | エンドポイント係数のランク値 |
|---|---|
| WeightFactor_JackDet | nRankJackDet |
| WeightFactor_SubType | nRankSubType |
| ウェイトファクター_フォームファクター | nRankFormFactor |
| WeightFactor_BusType | nRankBusType |
| WeightFactor_GenLoc | nRankGenLoc |
| WeightFactor_GeoLoc | nRankGeoLoc |
| 加重係数_サブタイプ特化 | nRankSubtypeSpecific |
オーディオ サブシステムは、次のように、すべての要因にわたってエンドポイントの重み付けランクを計算します。
WeightedRankValue =
WeightFactor_JackDet * nRankJackDet +
WeightFactor_SubType * nRankSubType +
WeightFactor_FormFactor * nRankFormFactor +
WeightFactor_BusType * nRankBusType +
WeightFactor_GenLoc * nRankGenLoc +
WeightFactor_GeoLoc * nRankGeoLoc |
WeightFactor_SubtypeSpecific * nRankSubtypeSpecific.
オーディオ サブシステムは、すべてのアクティブなエンドポイントの重み付けされたランク値を計算し、既定のオーディオ エンドポイントとしてランクが最も高いエンドポイントを選択します。
Windows 10 の既定のオーディオ エンドポイント選択ヒューリスティック メカニズムでは、例外機能もサポートされています。 この機能により、システムまたは OEM は、非常に高いまたは非常に低い重み付けランク値を持つ特性の特定のセットに一致するエンドポイントを指定するオーディオ サブシステムを発生させます。 このような指定により、予期しないシナリオに対処するときのシステムのヒューリスティックの柔軟性が高まります。
コンソール デバイスロールと通信デバイスロールのヒューリスティックは別々ですが、メカニズムは正確に同じで、ロールに基づいて要素の順序が異なります。
Windows 10 インボックス ヒューリスティック設定
Windows 10 には、このトピックのヒューリスティックの詳細に基づく設定が付属しています。 既定のコンソール オーディオ エンドポイントと既定の通信オーディオ エンドポイントの設定は異なります。 このセクションでは、両方の種類のエンドポイントの設定について説明します。
デフォルトのコンソール音声エンドポイント用の受信トレイヒューリスティック設定
このセクションでは、コンソール オーディオ エンドポイントの各要素の既定のヒューリスティック設定について説明します。 要因は優先度順に一覧表示されます。つまり、オーディオ サブシステムが既定のコンソール エンドポイントを決定する場合、Windows 10 は次の一覧の最初の要素に最も高い優先順位を与えます。
ジャック検出機能
ジャック検出機能を備えたエンドポイントは、オーディオ周辺機器がシステムに物理的に接続されているかどうか、および電源が接続されているか取り外されているかに関して、最も up-to日付の情報をシステムに提供します。 この情報は、より優れたエンドユーザー エクスペリエンスを作成するのに役立ちます。そのため、Windows 10 では、この要素が最も優先度の高い要素として設定されます。 ジャック検出機能を持つエンドポイントは、他の要因の比較に関係なく、この機能のないエンドポイントよりも優先度が高くなります。
フォーム ファクター
Windows 10 では、Windows 7 とは異なるフォーム ファクターの優先順位が使用され、値はユーザーのフィードバックと調査に基づいて調整されています。
Windows 10 では、レンダリング コンソール エンドポイントのフォーム ファクターの優先順位が次の優先順位で設定されます。
- ヘッドフォンとヘッドセット
- スピーカー
- ラインレベル
- デジタルオーディオ表示デバイス
- S/PDIF
- それ以外のもの (同じ優先順位で処理されます。つまり、with_nRankFormFactor_ 0 に等しい)
Windows 10 では、キャプチャ コンソール エンドポイントのフォーム ファクターの優先順位が次の優先順位で設定されます。
- ヘッドセット
- マイク
- ラインレベル
- それ以外のもの (同じ優先順位で処理されます。つまり、 nRankFormFactor が 0 に等しい)
たとえば、次の 3 つのオーディオ コンソール レンダー エンドポイントを持つシステムについて考えてみます。
- HD オーディオ 静的 ヘッドフォン エンドポイント (ジャック検出機能のないヘッドフォン)。
- 静的 S/PDIF Out エンドポイント。
- 動的スピーカー エンドポイント (ジャック検出がサポートされているスピーカー)。
オーディオ サブシステムは Windows 10 システムヒューリスティックを使用し、スピーカーのフォーム ファクターがヘッドフォンのフォーム ファクターより優先されている場合でも、既定のコンソール レンダリング オーディオ エンドポイントとして動的スピーカー エンドポイントを選択します。 スピーカー エンドポイントは、フォーム ファクターよりも優先度が高いジャック検出が可能であるために選択されますが、ヘッドフォンにはこの機能がありません。
上記の例に動的 USB ヘッドフォン エンドポイントが導入された場合、Windows 7 オーディオ サブシステムは、このエンドポイントを既定のコンソール レンダリング エンドポイントとして選択します。 この選択は、両方のデバイスがジャック検出をサポートする場合、ヘッドフォンフォームファクターの方がスピーカーフォームファクターよりも優先度が高いためです。
KSNodeType
前述のように、KSNodeType は、エンドポイントに接続されているオーディオ デバイスのフォーム ファクターで示される情報よりも詳細な情報を提供します。 Windows 10 では、マイクのフォームファクターを持ちつつ異なる KSNodeType のエンドポイントに優先順位を付けるために、マイクに関連する 3 つの KSNodeTypes が定義されています。 これらは、次のように優先順位でランク付けされます。
- KSNODETYPE_PROCESSING_MICROPHONE_ARRAY
- KSNODETYPE_MICROPHONE_ARRAY
- KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE
- それ以外のもの (同じ優先順位で処理されます。つまり、 nRankSubType が 0 に等しい)
たとえば、次の 2 つのオーディオ キャプチャ エンドポイントを持つシステムを考えてみましょう。
- KSNODETYPE_MICROPHONE_ARRAYを持つ組み込みの静的マイク配列エンドポイント。
- KSNODETYPE_MICROPHONEを持つ静的マイク エンドポイント。
オーディオ サブシステムがシステム ヒューリスティックを使用して既定のコンソール キャプチャ オーディオ エンドポイントを選択すると、マイクアレイエンドポイントが選択されます。 マイク配列が選択されるのは、両方のエンドポイントが同じジャック検出機能とフォーム ファクターを持っているにもかかわらず、マイク配列の KsNodeType がマイクの KsNodeType よりも優先されるためです。 つまり、KSNODETYPE_MICROPHONE_ARRAYはKSNODETYPE_MICROPHONEよりも高い優先順位が付けられます。これは一覧に含まれず、"その他の項目" カテゴリに分類されます。
KsNodeType の詳細については、「 Pin Category プロパティ」を参照してください。
バスの種類
Windows 10 では、エンドポイント バスの種類の列挙値が、優先度が最も高いものから最も低いものまで、次の優先順位でランク付けされます。
- USB
- HDAudio と UnknownBusType (通常は SOC システム)
- PCI
- BTHENUM
- BTHHFENUM
- その他 (同じ優先順位で処理されます。つまり、 nRankBusType が 0 に等しい)
一般的な場所
Windows 10 では、一般的な場所の列挙値が、優先度が最も高いものから最も低いものまで、次の優先順位でランク付けされます。
- PrimaryBox とインターナル
- その他 (同じ優先順位で処理されます。つまり、 nRankGenLoc は 0 に等しい)
オーディオ ドライバーは、 KSPROPERTY_JACK_DESCRIPTION プロパティを使用してエンドポイントの一般的な位置情報を報告します。 詳細については、「 Jack Description プロパティ」を参照してください。
幾何学的位置
Windows 10 では、ジオメトリの位置の列挙値が、優先度が最も高いものから最も低いものまで、次の優先順位でランク付けされます。
- Front と InsideMobileLid
- Bottom(底部)、Left(左)、OutsideMobileLid(モバイル蓋の外側)、Rear(後部)、Right(右)、Top(上部)
- 背面パネル
- その他 (同じ優先順位で処理されます。つまり、 nRankGeoLoc が 0 に等しい)
オーディオ ドライバーは、 KSPROPERTY_JACK_DESCRIPTION プロパティを使用してエンドポイントの幾何学的な位置情報を報告します。 詳細については、「 Jack Description プロパティ」を参照してください。
例外
上記のヒューリスティック要因に加えて、Windows 10 には、既定のコンソール デバイスヒューリスティックに対して 3 つの例外があります。 Windows 7 の例外は 1 つだけでした。
Windows 7 と 10 の両方に存在する最初の例外では、携帯電話や Speakerphone などの明らかな通信指向エンドポイントが既定のコンソール エンドポイントとして選択されるのを防ぎます。 具体的には、オーディオ サブシステムは、次のいずれかの KSNodeType 値を持つエンドポイントの WeightedRankValue の結果をダウングレードします。
- KSNODETYPE_SPEAKER_AND_HEADSET
- KSNODETYPE_SPEAKERS_STATIC_JACK
- KSNODETYPE_HANDSET
- KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION(エコーリダクションなしのスピーカーフォン)
- KSONODEエコー抑制スピーカーフォン
- KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE
- KSNODETYPE_PHONE_LINE
- KSNODETYPE_TELEPHONE
- KSNODETYPE_DOWN_LINE_PHONE
- モバイル シナリオに存在する携帯ネットワーク オーディオ固有のエンドポイント
Windows 10 にのみ存在する 2 つ目の例外では、明らかな通信指向エンドポイントが既定のコンソール エンドポイントとして選択されるのを防ぎます。 最初の例外とは異なり、この例外ではバスの種類も考慮されます。 その理由は、多くの一般的なUSBヘッドフォンは、デバイスが通信固有ではないにもかかわらず、次のKSNodeTypesを使用することです。 Windows 7 ランク付けアルゴリズムは、すべてのバスの種類の既定のコンソール エンドポイントに対して、これらの KSNodeTypes をダウングレードしました。 Windows 10 の場合、これらの KSNodeTypes は USB 以外のバスの種類に対してのみダウングレードされます。
- KSNODETYPE_PERSONAL_MICROPHONE
- KSNODETYPE_COMMUNICATION_SPEAKER
- KSNODETYPE_HEADSET
3 つ目の例外では、"個人用" エンドポイント (ヘッドホンやヘッドセットなど) に対して明示的に設定が導入されています。これは、ネットワークを使用してシステムに物理的に接続されます。 たとえば、有線 USB ヘッドセットと有線の 3.5 mm ヘッドフォンがあります。 前の 2 つの例外とは異なり、この例外は、これらのエンドポイントを既定のコンソール エンドポイントに優先するようにアップグレードします。 この例外は Windows 10 の新機能であり、ユーザーのプライバシーが向上し、他のユーザーが聞くことができるラウド スピーカー エンドポイント経由でユーザーのみが聞くことができるエンドポイントを優先します。
デフォルトの通信オーディオエンドポイントのヒューリスティック設定
このセクションでは、通信オーディオ エンドポイントの各要素の既定のヒューリスティック設定について説明します。 要因は優先度順に一覧表示されます。つまり、Windows 10 では、既定の通信エンドポイントを計算するときに、次の一覧の最初の要素が最も優先されます。 コンソールの既定のエンドポイントと通信の既定のエンドポイントのヒューリスティックの唯一の違いは、フォーム ファクターの設定と例外ルールです。
ジャック検出機能
ジャック検出機能のヒューリスティック設定は、既定の通信オーディオ エンドポイントと既定のコンソール オーディオ エンドポイントの両方で同じです。
フォーム ファクター
レンダリング通信の既定のデバイスと、通信の既定のデバイスをキャプチャするために、異なる優先順位リストが作成されます。
通信の既定のキャプチャ エンドポイントのフォーム ファクターの優先順位 (優先度が最も高いものから最も低い順) は次のとおりです。
- ヘッドセット
- 受話器
- マイク
- ラインレベル
通信の既定のレンダリング エンドポイントのフォーム ファクターの優先順位 (優先度が最も高いものから低い順) は次のとおりです。
- ヘッドセット
- 受話器
- ヘッドホン
- スピーカー
- ラインレベル
- DigitalAudioDisplayDevice (HDMI または DisplayPort)
- S/PDIF
- それ以外のもの (同じ優先順位で処理されます。つまり、 nRankFormFactor が 0 に等しい)
KSNodeType
KsNodeType ヒューリスティック設定は、既定の通信オーディオ エンドポイントと既定のコンソール オーディオ エンドポイントの両方で同じです。
バスの種類
バスの種類のヒューリスティック設定は、既定の通信オーディオ エンドポイントと既定のコンソール オーディオ エンドポイントの両方で同じです。
一般的な場所
Windows 10 では、一般的な場所の列挙値が、優先度が最も高いものから最も低いものまで、次の優先順位でランク付けされます。
- 分ける
- プライマリーボックス
- 国内
- その他 (同じ優先順位で処理されます。つまり、 nRankGenLoc は 0 に等しい)
オーディオ ドライバーは、KSPROPERTY_JACK_DESCRIPTION プロパティを使用してエンドポイントの一般的な位置情報を報告します。 詳細については、「 Jack Description プロパティ」を参照してください。
幾何学的位置
Windows 10 では、ジオメトリの位置の列挙値が、優先度が最も高いものから最も低いものまで、次の優先順位でランク付けされます。
- Front と InsideMobileLid
- その他 (同じ優先順位で処理されます。つまり、 nRankGeoLoc が 0 に等しい)
オーディオ ドライバーは、KSPROPERTY_JACK_DESCRIPTION プロパティを使用してエンドポイントの幾何学的な位置情報を報告します。 詳細については、「 Jack Description プロパティ」を参照してください。
例外
前述のヒューリスティック要因に加えて、Windows 10 には、既定の通信デバイスヒューリスティックに対して 3 つの例外が実装されますが、Windows 7 には 1 つしかありませんでした。
1 つ目の例外では、既定の通信エンドポイントとして選択されるため、ハンドセットや Speakerphone などの明らかな通信指向エンドポイントが優先されます。 具体的には、オーディオ サブシステムは、次のいずれかの値に一致する KSNodeType を使用してエンドポイントの WeightedRankValue の結果をアップグレードします。
- KSNODETYPE_PERSONAL_MICROPHONE
- KSNODETYPE_HEADSET
- KSNODETYPE_PHONE_LINE
- KSNODETYPE_DOWN_LINE_PHONE
- KSNODETYPE_COMMUNICATION_SPEAKER
- KSNODETYPE_HANDSET
- KSNODETYPE_TELEPHONE
- KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION(エコーリダクションなしのスピーカーフォン)
- KSONODEエコー抑制スピーカーフォン
- KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE
2 つ目の例外は、通信の使用に適さない、明らかなコンソール指向のエンドポイントであるエンドポイントを回避します。
- KSNODETYPE_SPEAKERS_STATIC_JACK
- モバイル シナリオにのみ存在する特殊なオーディオ エンドポイント。通信オーディオには使用できません
この執筆時点では、携帯ネットワーク オーディオ エンドポイントを優先する 3 つ目の例外が存在します。 この例外は、携帯ネットワーク機能を備えたモバイル シナリオにのみ存在し、このドキュメントの範囲外です。 この種類のエンドポイントはモバイル システムにのみ存在するので、この例外は無視しても問題ありません。
こちらも参照ください
SetupPreferredAudioDevices の