GetShapeDmaFramesAvailable
取得可供讀取的框架數目。語法
參數
context _In_類型: SHAPE_DMA_CONTEXT* SHAPE_DMA_CONTEXT 結構的指標。
傳回值
類型: UINT32 可供讀取的框架數目。備註
您可以確保音訊緩衝區夠大,並以固定間隔 (與緩衝區大小相關) 串流資料,以避免直接記憶體存取 (DMA) 命令遭到封鎖。例如,如果您一次串流四個硬體框架,請確保緩衝區中有這些框架的某個倍數 (至少以八個框架進行雙重緩衝),讓硬體可以在遊戲的讀取指標之前寫入。或者,您可以在提交下一個 flowgraph 之前強制清空緩衝區 (取用、更新 DMA 讀取指標,然後提交 flowgraph)。如需詳細資訊,請參閱 封鎖的命令 (位於 SHAPE 概觀)。 DMA 系統支援讀取和寫入功能,並可自動進行浮點數轉整數及整數轉浮點數的轉換。DMA 系統使用環形緩衝區,其中包含以 128 個樣本為一個區塊的非交錯樣本。 DMA 處理器可讓可調式硬體音訊處理引擎 (SHAPE) 將資料從混音緩衝區傳送到主系統記憶體,並從主系統擷取資料到混音緩衝區以進行進一步處理。DMA 以區塊為單位進行,一次傳輸一個音訊框架的資料。為了便於處理區塊交錯的資料,略過值會指定讀取或寫入樣本時,系統記憶體中要 (從基底位址) 略過的音訊框架區塊數目。因此,多聲道串流的每個聲道都需要一個 DMA 內容。 音訊資料樣本一律以 32 位元值 (整數或浮點數) 讀取和寫入,如 SHAPE_DMA_CONTEXT 結構的floatConvert 旗標中所指定。請注意,DMA 的方向 (讀取或寫入) 是在 DMA 命令中指定,而不是在 DMA 內容中指定。這有助於減少資料頻寬量。DMA 引擎不進行訊號處理,但可以執行浮點數轉整數 (或整數轉浮點數) 的轉換。這可讓應用程式 CPU 以浮點格式處理資料樣本。
若要計算 DMA 緩衝區的大小,請使用下列公式:
