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

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

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

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

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

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

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

要求

要求
Header ksmedia.h (包括 Ksmedia.h)

另请参阅

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION