> ## 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.

# XWMAEncoder

> XWMAEncoder

将输入缓冲区编码为 xWMA 数据。

<a id="syntaxSection" />

## 语法

```cpp theme={null}
HRESULT XWMAEncoder(
         const BYTE *pInputBuffer,
         DWORD inputBufferSize,
         const WAVEFORMATEX *pInputFormat,
         DWORD outputBitrate,
         BYTE **ppEncodedBuffer,
         DWORD *pEncodedBufferSize,
         WAVEFORMATEX **ppEncodedBufferFormat,
         DWORD *pEncodedBufferFormatSize,
         DWORD **ppDecodedPacketCumulativeBytes,
         DWORD *pDecodedPacketCumulativeBytesSize)  
```

<a id="ID4EG" />

### 参数

*pInputBuffer*
类型：BYTE \*

指向包含 PCM 数据的输入缓冲区的指针，至少必须包含一帧。

*inputBufferSize*
类型：DWORD

输入缓冲区大小，以字节为单位。

*pInputFormat*
类型：WAVEFORMATEX \*

输入缓冲区的格式。

*outputBitrate*
类型：DWORD

指定请求的比特率，必须为 20000、32000、48000、64000、96000、160000 或 192000 之一。

*ppEncodedBuffer*
类型：BYTE \*\*

指向已编码数据指针的指针。

*pEncodedBufferSize*
类型：DWORD \*

指向 DWORD 的指针，用于存放已编码数据的大小（以字节为单位）。

*ppEncodedBufferFormat*
类型：WAVEFORMATEX \*\*

指向输出格式结构指针的指针。

*pEncodedBufferFormatSize*
类型：DWORD \*

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

*ppDecodedPacketCumulativeBytes*
类型：DWORD \*\*

解码后数据包累计数据大小数组（使用 free \[] 释放）。每个元素表示按顺序解码到对应 WMA 数据包时累计的字节数，必须包含 PacketCount 个元素。PacketCount 在 XAUDIO2\_BUFFER\_WMA 结构中设置。

*pDecodedPacketCumulativeBytesSize*
类型：DWORD \*

解码后数据包累计数据的大小（以字节为单位）。数据包数量 = \*pDecodedPacketCumulativeBytesSize / sizeof(DWORD)。

<a id="ID4EO" />

### 返回值

类型：HRESULT

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

| 错误码                                 | 说明                                                                  |
| ----------------------------------- | ------------------------------------------------------------------- |
| XWMA\_E\_UNSUPPORTED\_FORMATTAG     | 格式标签必须为 WAVE\_FORMAT\_PCM 或 WAVE\_FORMAT\_IEEE\_FLOAT。              |
| XWMA\_E\_UNSUPPORTED\_FRAMERATE     | nSamplesPerSec 必须介于 1 kHz 到 200 kHz 之间。                             |
| XWMA\_E\_UNSUPPORTED\_CHANNELS      | nChannels 必须为 1、2 或 6。                                              |
| XWMA\_E\_UNSUPPORTED\_BITSPERSAMPLE | 对于整数输入数据 wBitsPerSample 必须为 8、16 或 24；对于浮点数据必须为 32。                 |
| XWMA\_E\_UNSUPPORTED\_BITRATE       | 比特率必须为 20 Kbps、32 Kbps、48 Kbps、64 Kbps、96 Kbps、160 Kbps 或 192 Kbps。 |

<a id="remarks" />

## 备注

下表列出了每种采样率和声道数原生支持的比特率。

\| 输入| 输出选项|
\| --- | --- | --- | --- |
\| 22050 Hz 单声道| 20000|
\| 22050 Hz 立体声| 32000|
\| 32000 Hz 单声道| 20000|
\| 32000 Hz 立体声| 32000, 48000|
\| 44100 Hz 单声道| 32000, 48000|
\| 44100 Hz 立体声| 32000, 48000, 96000, 192000|
\| 44100 Hz 5.1| 96000, 192000|
\| 48000 Hz 立体声| 48000, 64000, 96000, 160000, 192000|
\| 48000 Hz 5.1| 48000, 192000|

<a id="requirements" />

## 要求

**头文件：** xwmaencoder.h

**库：** xwmaencoder.lib

## 另请参阅

[xWMA 命令行编码器](/build/console-features/audio/tools/xwmaencode-tools)


## Related topics

- [Xwmaencoder 函数](/zh-CN/build/console-features/audio/tools/xwmaencoder/tech-xwmaencoder-nativereference-funcs.md)
- [xWMA 概述](/zh-CN/build/console-features/audio/overviews/xwma-overview.md)
- [xWMA 编码器参考信息](/zh-CN/build/console-features/audio/tools/xwmaencoder/atoc-xwmaencoder.md)
- [xWMA 编码器库与命令行工具](/zh-CN/build/console-features/audio/tools/xwmaencoder/index.md)
- [XMA2 编码器库与命令行工具](/zh-CN/build/console-features/audio/tools/xma2encoder/index.md)
