共用方式為


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

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