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

# XAudio2XMAEncoder

> XAudio2XMAEncoder

将输入流编码为 XMA 格式。

## 语法

```cpp theme={null}
HRESULT XAudio2XMAEncoder(
         DWORD InputStreamCount,
         const XMAENCODERSTREAM *pStreams,
         DWORD Compression,
         DWORD Flags,
         DWORD BlockSizeInKbytes,
         VOID **ppEncodedBuffer,
         DWORD *pEncodedBufferSize,
         XMA2WAVEFORMATEX **ppEncodedBufferFormat,
         DWORD *pEncodedBufferFormatSize,
         DWORD **ppSeekTable,
         DWORD *pSeekTableSize)  
```

### 参数

*InputStreamCount*
类型：DWORD

输入流的数量。

*pStreams*
类型：XMAENCODERSTREAM \*

指向输入流的指针。

*Compression*
类型：DWORD

要使用的 XMA2 压缩质量级别（1 到 100）。

*Flags*
类型：DWORD

零，或以下一个或多个标志的组合。

| 标志 | 值 | 说明 |
| - | - | - |
| XMAENCODER\_LOOP | 0x00000001 | 如果存在循环点，则使用循环点，并对波形做重采样使循环点对齐到 128 采样边界。如果没有循环点，则从头到尾循环整个波形，并对波形做重采样，使波形的循环末尾（即整个波形长度）对齐到 128 采样边界。 |
| XMAENCODER\_NOFILTER | 0x00000002 | 不做滤波。 |
| XMAENCODER\_DECODEFROMXMA | 0x00000004 | 内存编码器不支持。 |
| XMAENCODER\_VERBOSE | 0x00000008 | 启用调试输出。 |
| XMAENCODER\_PACKSTREAMS | 0x00000010 | 将声道尽可能打包到最少的流中。 |

*BlockSizeInKbytes*
类型：DWORD

要使用的 XMA2 压缩块大小，以 KB 为单位（2 到 8190）。不能为零。

*ppEncodedBuffer*
类型：VOID \*\*

指向用于存放编码数据的缓冲区指针的指针。

*pEncodedBufferSize*
类型：DWORD \*

指向 DWORD 的指针，用于存放已编码缓冲区的大小。

*ppEncodedBufferFormat*
类型：XMA2WAVEFORMATEX \*\*

指向结构指针的指针，用于存放已编码流的格式细节。

*pEncodedBufferFormatSize*
类型：DWORD \*

指向 DWORD 的指针，用于存放格式结构的大小。

*ppSeekTable*
类型：DWORD \*\*

指向指针的指针，用于存放 seek 表。

*pSeekTableSize*
类型：DWORD \*

指向 DWORD 的指针，用于存放 seek 表的大小。

### 返回值

类型：HRESULT

成功时返回 S\_OK；否则返回下表中的错误码之一。

| 错误码 | 实现 | 说明 |
| - | - | - |
| XMAENCODER\_E\_OUTOFMEMORY | E\_OUTOFMEMORY | 内存不足。 |
| XMAENCODER\_E\_INVALIDARG | E\_INVALIDARG | 参数无效。 |
| XMAENCODER\_E\_NOTIMPL | E\_NOTIMPL | 未实现。 |
| XMAENCODER\_E\_FAIL | E\_FAIL | 未知错误。 |
| XMAENCODER\_E\_INVALIDLOOP | XMAENCODERERROR(0x001) | 循环点无效。 |
| XMAENCODER\_E\_UNSUPPORTEDFORMAT | XMAENCODERERROR(0x002) | 格式无效。 |
| XMAENCODER\_E\_OUTOFRANGE | XMAENCODERERROR(0x003) | 参数超出有效范围。 |
| XMAENCODER\_E\_READFAILED | XMAENCODERERROR(0x004) | 读操作失败。 |
| XMAENCODER\_E\_INVALIDFRAME | XMAENCODERERROR(0x005) | 无效的 XMA 帧。 |
| XMAENCODER\_E\_INCOMPLETEFRAME | XMAENCODERERROR(0x006) | 不完整的 XMA 帧。 |
| XMAENCODER\_E\_ZEROSTUFFINGBIT | XMAENCODERERROR(0x007) | 填充位为零。 |
| XMAENCODER\_E\_GETDATAFAILED | XMAENCODERERROR(0x008) | 数据获取失败。 |

## 要求

**头文件：** xmaencoder.h

**库：** xmaencoder.lib

## 另请参阅

[XMA2 编码器工具](https://docs.xbox.com/zh-CN/build/console-features/audio/tools/xma2encodertool.md)


## Related topics

- [XMA2 编码器参考信息](https://docs.xbox.com/zh-CN/build/console-features/audio/tools/xma2encoder/atoc-xmaencoder.md)
- [XMA2encoder 函数](https://docs.xbox.com/zh-CN/build/console-features/audio/tools/xma2encoder/tech-xmaencoder-funcs.md)
- [XMA2 编码器库与命令行工具](https://docs.xbox.com/zh-CN/build/console-features/audio/tools/xma2encoder/index.md)
- [XMA2 编码器工具](https://docs.xbox.com/zh-CN/build/console-features/audio/tools/xma2encodertool.md)
- [XWMAEncoder](https://docs.xbox.com/zh-CN/build/console-features/audio/tools/xwmaencoder/methods/xwmaencoder-xwmaencoder-xbox-microsoft-m.md)
