KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION
KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION屬性要求會以位元組為單位指定 WaveRT 緩衝區的目前寫入位置。 卸載驅動程式可以使用這個寫入位置資訊來知道 WaveRT 緩衝區中有多少有效資料。
使用量摘要資料表
Get | 集合 | 目標 | 屬性描述項類型 | 屬性值類型 |
---|---|---|---|---|
否 |
是 |
透過 Pin 實例的節點 |
KSP_NODE |
ULONG |
傳回值
KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION屬性要求會傳回STATUS_SUCCESS,表示它已順利完成。 否則,要求會傳回適當的錯誤狀態碼。
備註
若要進一步瞭解如何解譯此屬性要求提供的資訊,請假設大小為 n 個位元組的迴圈緩衝區。 寫入任何資料之前的初始寫入位置為 0。 資料會以區塊為單位寫入緩衝區,而區塊是一個倍數 的顯示方式為一個包含于其中一個的顯示單位。nBlockAlign 位元組。
例如,緩衝區可能包含 20 毫秒的 16 位 PCM 身歷聲資料,取樣為 48000 Hz。 因此,根據此範例 nBlockAlign = 2 * 16 / 8 = 4 個位元組的顯示方式,于此範例中, 根據顯示于其上之 NBlockAlign 成員的描述。 這表示緩衝區的長度會是 48000 * 20 / 1000 = 960 框架,或 960 * 4 = 3840 個位元組。
第一個 Set 要求會指定寫入緩衝區的位元組數目。 而且因為「寫入位置」是以位元組表示,所以 1920 的值會指定一半的緩衝區大小,而 3840 的值則表示完整的緩衝區大小。 為了判斷寫入的新位元組數目,為了發出後續 的 Set 要求,下列虛擬程式碼會示範如何執行計算:
if new write position > old write position:
bytes written = new write position – old write position
if new write position < old write position, we’ve wrapped:
bytes written = (new write position + buffer size) – old write position
if new write position = old write position, we’ve had a glitch
log a "duplicate write position" glitch event
規格需求
版本 |
Windows 8 |
標頭 |
Ksmedia.h |