> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SetShapeDmaCommand

> SetShapeDmaCommand

# SetShapeDmaCommand

初始化 SHAPE DMA 命令。

## 語法

```cpp theme={null}
HRESULT SetShapeDmaCommand(  
         SHAPE_FLOWGRAPH_COMMAND* command,  
         UINT32 contextId,  
         UINT32 mixBuffer,  
         bool writeToMixBuffer  
)  
```

### 參數

*command*   \_Inout\_\
類型：SHAPE\_FLOWGRAPH\_COMMAND\*

要初始化的 [SHAPE\_FLOWGRAPH\_COMMAND](/zh-TW/reference/audio/shapeflowgraph/structs/shape_flowgraph_command) 命令。

*contextId*   \
類型：UINT32

此命令將參考的 DMA 內容識別碼 (也就是索引)。

*mixBuffer*   \
類型：UINT32

要讀取或寫入的混音緩衝區，視 *writeToMemory* 旗標的設定而定。

*writeToMixBuffer*   \
類型：bool

如果 DMA 命令要寫入指定的混音緩衝區並從主記憶體讀取，則為 True。如果 DMA 命令要從指定的混音緩衝區讀取並寫入主記憶體，則為 False。

### 傳回值

類型：HRESULT

如果函式成功，會傳回 `S_OK`。如果一或多個引數無效，函式會傳回 `E_INVALIDARG`。

## 備註

直接記憶體存取 (DMA) 系統支援讀取和寫入功能，並可自動進行浮點數轉整數及整數轉浮點數的轉換。DMA 系統使用環形緩衝區，其中包含以 128 個取樣為一區塊的非交錯取樣。

DMA 處理器可讓可調整硬體音訊處理引擎 (SHAPE) 將資料從混音緩衝區傳送到主系統記憶體，並從主系統擷取資料到混音緩衝區以供進一步處理。DMA 是以區塊為單位進行，一次傳輸一個音訊框架的資料。為了啟用區塊交錯資料，略過值會指定在讀取或寫入取樣時，要從基底位址略過系統記憶體中的多少個音訊框架區塊。多聲道串流的每個聲道都需要一個 DMA 內容。音訊資料取樣一律以 32 位元值 (整數或浮點數) 讀取和寫入，如 DMA 內容的 `floatConvert` 旗標所指定。

<Note>DMA 的方向 (讀取或寫入) 是在 DMA 命令中指定，而不是在 DMA 內容中指定。這有助於減少資料頻寬量。DMA 引擎沒有訊號處理功能，但可以執行浮點數轉整數或整數轉浮點數的轉換。這可讓應用程式 CPU 以浮點格式處理資料取樣。</Note>

## 需求

**標頭：** shapeflowgraph.h

**支援的平台：** XBOX One 系列主機與 XBOX Series 主機

## 另請參閱

[ACP 概觀](/zh-TW/build/console-features/audio/overviews/acp-overview)

[SHAPE 概觀](/zh-TW/build/console-features/audio/overviews/shape-overview)

[shapeflowgraph](/zh-TW/reference/audio/shapeflowgraph/shapeflowgraph_members)


## Related topics

- [SetShapeDmaCommand](/es/reference/audio/shapeflowgraph/functions/setshapedmacommand.md)
- [ShapeFlowGraph](/reference/audio/shapeflowgraph/shapeflowgraph_members.md)
