KSAUDIO_POSITION structure (ksmedia.h)
The KSAUDIO_POSITION structure specifies the current positions of the play and write cursors in the sound buffer for an audio stream.
Syntax
typedef struct {
#if ...
ULONGLONG PlayOffset;
#if ...
ULONGLONG WriteOffset;
#else
DWORDLONG PlayOffset;
#endif
#else
DWORDLONG WriteOffset;
#endif
} KSAUDIO_POSITION, *PKSAUDIO_POSITION;
Members
PlayOffset
Specifies the current play position as a byte offset.
WriteOffset
Specifies the current write position as a byte offset.
Remarks
This structure is used to get and set the data value for the KSPROPERTY_AUDIO_POSITION property.
For a looped client buffer (with stream type KSINTERFACE_STANDARD_LOOPED_STREAMING), PlayOffset and WriteOffset are byte offsets into the client buffer. When either offset reaches the end of the buffer, it wraps around to the start of the buffer. Hence, neither offset ever exceeds the buffer size.
For a nonlooped client buffer (with stream type KSINTERFACE_STANDARD_STREAMING), PlayOffset and WriteOffset are not offsets into any one physical buffer that either your driver has allocated or a client has allocated. Instead, these offsets are stream-relative and can be thought of as offsets into an idealized buffer that contains the entire stream and is contiguous from beginning to end. Any internal offsets that point into the actual physical buffers that contain the data need to be maintained separately.
During playback, the PlayOffset and WriteOffset values are interpreted as follows:
- PlayOffset is the offset of the last byte in the buffer that has played. PlayOffset + 1 is the offset of the next byte that will play.
- WriteOffset is the offset of the last byte in the playback buffer.
During recording, the PlayOffset and WriteOffset values are interpreted as follows:
- PlayOffset is the offset of the last byte in the buffer that has been captured. PlayOffset + 1 is the offset of the next byte that will be captured.
- WriteOffset is the offset of the last byte in the capture buffer.
The space between PlayOffset and WriteOffset is considered off-limits to the client because it represents the portion of the client buffer that has already been sent to the driver and might still be in use by the driver.
For more information, see Audio Position Property.
Requirements
Requirement | Value |
---|---|
Header | ksmedia.h (include Ksmedia.h) |
See also
KSINTERFACE_STANDARD_LOOPED_STREAMING