> ## 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](/reference/audio/shapeflowgraph/structs/shape_flowgraph_command) 命令。

*contextId*   \
类型:UINT32

此命令将引用的 DMA 上下文 ID(即索引)。

*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 概述](/build/console-features/audio/overviews/acp-overview)

[SHAPE 概述](/build/console-features/audio/overviews/shape-overview)

[shapeflowgraph](/reference/audio/shapeflowgraph/shapeflowgraph_members)


## Related topics

- [ShapeFlowGraph](/zh-CN/reference/audio/shapeflowgraph/shapeflowgraph_members.md)
- [SHAPE_FLOWGRAPH_DMA_COMMAND](/zh-CN/reference/audio/shapeflowgraph/structs/shape_flowgraph_dma_command.md)
- [SetShapeDmaChannel](/zh-CN/reference/audio/shapedmacontext/functions/setshapedmachannel.md)
- [SetShapeDmaBufferFull](/zh-CN/reference/audio/shapedmacontext/functions/setshapedmabufferfull.md)
- [SetShapeDmaFloatSamples](/zh-CN/reference/audio/shapedmacontext/functions/setshapedmafloatsamples.md)
