共用方式為


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) 的非oop用戶端緩衝區 (,PlayOffset 和 WriteOffset 不會位移至驅動程式配置或用戶端配置的任何實體緩衝區。 相反地,這些位移是數據流相對的,而且可以視為包含整個數據流且從頭到尾連續的理想化緩衝區中的位移。 指向包含數據的實際實體緩衝區的任何內部位移都必須分開維護。

播放期間, 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