IAudioClock2::GetDevicePosition メソッド (audioclient.h)

GetDevicePosition メソッドは、現在のデバイスの位置をフレーム単位でハードウェアから直接取得します。

構文

HRESULT GetDevicePosition(
  [out] UINT64 *DevicePosition,
  [out] UINT64 *QPCPosition
);

パラメーター

[out] DevicePosition

デバイスの位置をフレーム単位で受け取ります。 受信した位置は、メソッドがハードウェアから直接取得する未処理の値です。 詳細については、「解説」を参照してください。

[out] QPCPosition

GetDevicePosition 呼び出しに応答して、オーディオ エンドポイント デバイスが DevicePosition パラメーターで取得したデバイス位置を読み取った時点で、パフォーマンス カウンターの値を受け取ります。
GetDevicePosition は 、カウンター値を QPCPosition に書き込む前に、100 ナノ秒の時間単位に変換します。 クライアントがパフォーマンス カウンター値を必要としない場合、QPCPositionNULL にすることができます。 詳細については、「解説」を参照してください。

戻り値

メソッドが成功した場合は、S_OK を返します。

リターン コード 説明
E_POINTER
Parameter DevicePositionNULL です
AUDCLNT_E_DEVICE_INVALIDATED
オーディオ エンドポイントが切断されました。
AUDCLNT_S_POSITION_STALLED
このストリームに対して IAudioClient::Start メソッドが呼び出されていません。

注釈

このメソッドは、共有モード ストリームにのみ適用されます。

このメソッドは、次の 2 つの相関ストリーム位置値を取得します。

  • デバイスの位置。 クライアントは、 DevicePosition で未処理のデバイス位置を取得します。 これは、現在スピーカーを介して再生されている (レンダリング ストリームの場合)、またはマイク (キャプチャ ストリームの場合) を介して記録されているサンプルのストリーム位置です。 デバイス エンドポイントのサンプリング レートは、クライアントで使用されるミックス形式のサンプリング レートとは異なる場合があります。 クライアントからデバイスの位置を取得するには、 IAudioClock::GetPosition を呼び出します。
  • パフォーマンス カウンター。 クライアントは 、QPCPosition でパフォーマンス カウンターを取得します。 GetDevicePosition は、オーディオ エンドポイント デバイスが GetDevicePosition メソッドの DevicePosition パラメーターにストリーム位置を格納する時点で QueryPerformanceCounter 関数を呼び出してカウンター値を取得します。 GetDevicePosition は 、カウンター値を 100 ナノ秒の時間単位に変換します。 QueryPerformanceCounterQueryPerformanceFrequency の詳細については、Windows SDKドキュメントを参照してください。
GetDevicePosition 呼び出し時のデバイスの位置とパフォーマンス カウンターを指定すると、クライアントは QueryPerformanceCounter を呼び出して現在のパフォーマンス カウンターを取得し、元のデバイス位置が記録されてからカウンターが進んだ距離に基づいてデバイスの位置を推定することで、後でデバイスの位置をよりタイムリーに推定できます。 クライアントは QueryPerformanceCounter 関数を呼び出して、カウンターをインクリメントするクロックの頻度を取得できます。 QueryPerformanceCounter から取得した生カウンター値と GetDevicePosition によって取得された値を比較する前に、次のように生カウンター値を 100 ナノ秒の時間単位に変換します。
  1. 生のカウンター値に 10,000,000 を乗算します。
  2. QueryPerformanceFrequency から取得したカウンター頻度で結果を除算します。

要件

要件
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー audioclient.h

こちらもご覧ください

IAudioClock2