次の方法で共有


KSAUDIO_POSITION構造体 (ksmedia.h)

KSAUDIO_POSITION構造体は、オーディオ ストリームのサウンド バッファー内の再生カーソルと書き込みカーソルの現在位置を指定します。

構文

typedef struct {
#if ...
  ULONGLONG PlayOffset;
#if ...
  ULONGLONG WriteOffset;
#else
  DWORDLONG PlayOffset;
#endif
#else
  DWORDLONG WriteOffset;
#endif
} KSAUDIO_POSITION, *PKSAUDIO_POSITION;

メンバーズ

PlayOffset

現在の再生位置をバイト オフセットとして指定します。

WriteOffset

現在の書き込み位置をバイト オフセットとして指定します。

備考

この構造体は、KSPROPERTY_AUDIO_POSITION プロパティのデータ値を取得および設定するために使用されます。

ループされたクライアント バッファー (ストリームの種類が KSINTERFACE_STANDARD_LOOPED_STREAMING) の場合、PlayOffset 、および WriteOffset は、クライアント バッファーへのバイト オフセットです。 いずれかのオフセットがバッファーの末尾に達すると、バッファーの先頭までラップされます。 そのため、どちらのオフセットもバッファー サイズを超えることはありません。

ループされていないクライアント バッファー (ストリームの種類が KSINTERFACE_STANDARD_STREAMING) の場合、PlayOffsetWriteOffset は、ドライバーが割り当てた物理バッファーまたはクライアントが割り当てた 1 つの物理バッファーにオフセットされません。 代わりに、これらのオフセットはストリーム相対であり、ストリーム全体を含み、最初から最後まで連続する理想的なバッファーへのオフセットと考えることができます。 データを含む実際の物理バッファーを指す内部オフセットは、個別に維持する必要があります。

再生中、PlayOffset と WriteOffset は次のように解釈されます。

  • PlayOffset は、再生されたバッファー内の最後のバイトのオフセットです。 PlayOffset + 1 は、再生される次のバイトのオフセットです。
  • WriteOffset は、再生バッファー内の最後のバイトのオフセットです。
クライアントが再生のために別のバッファーをデバイスに送信すると、WriteOffset は、そのバッファーを受け取ると、新しい WriteOffset 値を示すためにインクリメントされますが、PlayOffset は、そのバッファーがデバイスによって実際に再生されるまで変更されません。

記録中、PlayOffset と WriteOffset は次のように解釈されます。

  • PlayOffset は、キャプチャされたバッファー内の最後のバイトのオフセットです。 PlayOffset + 1 は、キャプチャされる次のバイトのオフセットです。
  • WriteOffset は、キャプチャ バッファー内の最後のバイトのオフセットです。
アプリケーションがキャプチャのために別のバッファーをデバイスに送信すると、WriteOffset 値はそのバッファーを受信するとインクリメントされます。 PlayOffset 値は、データが実際にバッファーにキャプチャされるまで変更されません。

PlayOffset と WriteOffset 間の領域は、既にドライバーに送信されており、ドライバーによって引き続き使用されている可能性があるクライアント バッファーの部分を表しているため、クライアントの制限外と見なされます。

詳細については、「Audio Position プロパティの」を参照してください。

必要条件

要件 価値
ヘッダー ksmedia.h (Ksmedia.h を含む)

関連項目

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION