次の方法で共有


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) の場合、 PlayOffsetWriteOffset はクライアント バッファーへのバイト オフセットです。 いずれかのオフセットがバッファーの末尾に達すると、バッファーの先頭までラップされます。 そのため、どちらのオフセットもバッファー サイズを超えることはありません。

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

再生中、 PlayOffsetWriteOffset の値は次のように解釈されます。

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

記録中、 PlayOffsetWriteOffset の値は次のように解釈されます。

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

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

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

要件

要件
Header ksmedia.h (Ksmedia.h を含む)

こちらもご覧ください

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION