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 是客户端缓冲区的字节偏移量。 当任一偏移量到达缓冲区的末尾时,它将环绕到缓冲区的开头。 因此,两个偏移量都未超过缓冲区大小。

对于非oop客户端缓冲区(具有流类型 KSINTERFACE_STANDARD_STREAMING),PlayOffsetWriteOffset 不会偏移到驱动程序已分配或客户端分配的任何物理缓冲区中。 相反,这些偏移量是相对于流的,可以视为包含整个流的理想化缓冲区的偏移量,并且从头到尾是连续的。 指向包含数据的实际物理缓冲区的任何内部偏移量都需要单独维护。

在播放期间,PlayOffsetWriteOffset 值解释如下:

  • PlayOffset 是播放的缓冲区中最后一个字节的偏移量。 PlayOffset + 1 是下一个将播放的字节的偏移量。
  • WriteOffset 是播放缓冲区中最后一个字节的偏移量。
当客户端将另一个缓冲区提交到设备进行播放时,WriteOffset 会在收到该缓冲区时递增,以指示新的 WriteOffset 值,但直到设备实际播放该缓冲区之后,PlayOffset 才会更改。

录制期间,PlayOffsetWriteOffset 值解释如下:

  • PlayOffset 是已捕获的缓冲区中最后一个字节的偏移量。 PlayOffset + 1 是将捕获的下一个字节的偏移量。
  • WriteOffset 是捕获缓冲区中最后一个字节的偏移量。
当应用程序将另一个缓冲区提交到设备进行捕获时,WriteOffset 值会在收到该缓冲区时递增。 在实际将数据捕获到缓冲区之前,PlayOffset 值不会更改。

PlayOffsetWriteOffset 之间的空间被视为客户端的禁区,因为它表示已发送到驱动程序的客户端缓冲区部分,并且可能仍由驱动程序使用。

有关详细信息,请参阅 音频位置属性

要求

要求 价值
标头 ksmedia.h (包括 Ksmedia.h)

另请参阅

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION