Поделиться через


структура 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) PlayOffset и WriteOffset не являются смещениями в один физический буфер, выделенный драйвером или клиентом. Вместо этого эти смещения являются относительными по потоку и могут рассматриваться как смещения в идеализованный буфер, который содержит весь поток и является непрерывным от начала до конца. Все внутренние смещения, указывающие на фактические физические буферы, содержащие данные, должны храниться отдельно.

Во время воспроизведения значения PlayOffset и WriteOffset интерпретируются следующим образом:

  • PlayOffset — это смещение последнего байта в буфере, который играл. PlayOffset + 1 — это смещение следующего байта, который будет играть.
  • WriteOffset — это смещение последнего байта в буфере воспроизведения.
Когда клиент отправляет другому буферу на устройство для воспроизведения, WriteOffset увеличивается после получения этого буфера, чтобы указать новое значение WriteOffset , но PlayOffset не изменяется до тех пор, пока этот буфер не будет воспроизведен устройством.

Во время записи значения PlayOffset и WriteOffset интерпретируются следующим образом:

  • PlayOffset — это смещение последнего байта в буфере, который был захвачен. PlayOffset + 1 — это смещение следующего байта, который будет записан.
  • WriteOffset — это смещение последнего байта в буфере записи.
Когда приложение отправляет другой буфер на устройство для записи, значение WriteOffset увеличивается при получении этого буфера. Значение PlayOffset не изменится, пока данные не будут записаны в буфер.

Пространство между PlayOffset и WriteOffset считается отключенным для клиента, так как оно представляет часть буфера клиента, которая уже была отправлена драйверу и может по-прежнему использоваться драйвером.

Дополнительные сведения см. в разделе Audio Position Property.

Требования

Требование Значение
Заголовок ksmedia.h (включая Ksmedia.h)

См. также раздел

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION