共用方式為


KSMUSICFORMAT 結構 (ksmedia.h)

KSMUSICFORMAT 結構可用來傳送和接收來自 WDM 音訊裝置之輸入和輸出的 MIDI 資料相關信息。

語法

typedef struct {
  ULONG TimeDeltaMs;
  ULONG ByteCount;
} KSMUSICFORMAT, *PKSMUSICFORMAT;

成員

TimeDeltaMs

指出應該播放這個數列MIDI數據位元組的時機。 如果這是緩衝區中的第一個 KSMUSICFORMAT 結構,則此欄位代表 KSSTREAM_HEADER 結構中 PresentationTime 的差異(時間變更,以毫秒為單位)。 否則,欄位代表上一則訊息的差異位移(以毫秒為單位)(KSMUSICFORMAT 結構)。 如果這次是過去,則會立即播放訊息。

ByteCount

指定遵循此結構的數據位元組數目。 因為後續的結構或屬性應該對齊 DWORD,而且可能會允許額外的空白或已使用的位元組,ByteCount 應該是實際存在的位元組數目,且不包含任何分隔數據結構的填補。

言論

此結構可用來傳送和接收包含MIDI輸入和輸出資料流相關信息的 IRP。 IRP 本身包含在其 SystemBuffer 中, 欄位KSSTREAM_HEADER結構的指標,做為要讀取或寫入串流驅動程式釘選之數據封包的標頭。 KS 數據流標頭在其 Data 欄位中包含包含數據的緩衝區指標。 該緩衝區中的數據是由一連串訊息所組成,每個訊息都是 KSMUSICFORMAT 結構,緊接著一些位元組的數據。

這些 IRP 中的時間戳一律會在連續發行的 IRP 中增加。 不過,由於序列中的每個 IRP 在服務下一個 IRP 開始之前都會完整服務,因此時間也必須一律在 IRP 之間增加。 這可能會導致異常情況,如下列範例所述。

行動 描述
IRP #1 PresentationTime = 123 毫秒
訊息 #1 TimeDeltaMs:0 將會以 123 毫秒的速度播放。
訊息 #2 TimeDeltaMs:1 將會以 124 毫秒的速度播放。
訊息 #3 TimeDeltaMs:7 將會以 131 毫秒播放。
IRP #2 PresentationTime = 120 毫秒
訊息 #1 TimeDeltaMs:5 應該以 125 毫秒播放,但實際上是在 131 毫秒播放。 在前一個 IRP 131 毫秒完成之前,不會處理此 IRP。
訊息 #2 TimeDeltaMs:15 將會以 140 毫秒播放。

要求

要求 價值
標頭 ksmedia.h (包括 Ksmedia.h)

另請參閱

KSSTREAM_HEADER