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

# xWMA 개요

> XBOX 게임을 위한 xWMA 오디오 형식: 압축된 대사 및 음악 스트림용으로 XAudio2에서 소프트웨어로 디코딩되는 WMA Professional 서브셋입니다.

xWMA는 Windows Media Audio(WMA) Professional 압축 형식의 부분집합입니다. xWMA 디코딩은 [XAudio2](/build/console-features/audio/overviews/xaudio2-overview)에서 소프트웨어로 지원됩니다. xWMA는 경량 래퍼에서 WMA 비트 스트림 형식을 사용하며, 더 큰 압축을 달성하는 비용으로 CPU 사용량이 작은 대사와 음악에 유용합니다. 품질 설정을 통해 사용자는 압축된 사운드의 비트 레이트를 변경할 수 있습니다.

<Note>xWMA와 XMA2는 모두 Windows Media Audio(WMA)용으로 개발된 코덱에서 유래했으며, 둘 다 XBOX 게임용으로 특별히 개발되었습니다. XMA2에서 사용하는 사용 가능한 코덱과 매개변수의 부분집합은 xWMA에서 사용하는 부분집합보다 작습니다. xWMA와 XMA2 모두 XBOX용으로 개발되었지만, 서로 교환 가능하지 않습니다: 각 파일 형식의 헤더가 다르며 형식은 PC 버전의 Windows와 호환되지 않습니다. XMA2와 xWMA에서 사용하는 코덱도 약간 다르므로 각각은 사용된 압축 시스템에서 자체 아티팩트를 갖게 됩니다.</Note>

이 항목에서 다루는 내용:

* [xWMA 인코딩](#ID4EW)
* [xWMA 디코딩](#ID4E6B)
* [xWMA 루핑](#ID4ETD)
* [xWMA 파일의 구조](#ID4ESE)

<a id="ID4EW" />

## xWMA 인코딩

xWMA로 오디오 데이터를 인코딩하려면 xWMAEncode 명령줄 도구 또는 XWMAEncoder.lib를 사용하는 사용자 지정 도구를 사용하십시오.

### xWMAEncode

XAudio2와 함께 사용할 xWMA로 오디오 파일을 인코딩하려면 [xWMA 명령줄 인코더](/build/console-features/audio/tools/xwmaencode-tools)를 사용하십시오.

### XWMAEncoder.lib

XWMAEncoder.lib는 [xWMA 명령줄 인코더](/build/console-features/audio/tools/xwmaencode-tools) 명령줄 도구의 대안으로 사용 가능한 정적 링크 라이브러리입니다. 사용자 지정 도구는 **XWMAEncoder** 함수를 사용하여 xWMA 인코딩을 수행하기 위해 이 라이브러리에 의존합니다. 이 함수 사용의 세부사항과 예제는 XBOX 360 문서를 참고하십시오.

<a id="ID4E6B" />

## xWMA 디코딩

xWMA의 소프트웨어 디코딩은 Windows와 XBOX One의 XAudio2에서, 그리고 xWMADecode API를 통해 지원됩니다.

| 기술         | 설명                                                                                                                                                                                                                                                                                                                                                                               |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| XACT       | XACT는 XBOX One에서 지원되지 않습니다.                                                                                                                                                                                                                                                                                                                                                      |
| XAudio2    | XAudio2에서 xWMA로 인코딩된 데이터를 사용하려면 (1) xWMA 관련 값으로 WAVEFORMATEXTENSIBLE 구조를 초기화하고, (2) 소스 보이스를 생성할 때 [CreateSourceVoice](https://learn.microsoft.com/windows/desktop/api/xaudio2/nf-xaudio2-ixaudio2-createsourcevoice)에 구조를 인수로 전달하십시오. XAudio2에서 사운드를 로드하고 재생하는 예제는 [XAudio2로 사운드를 재생하는 방법](https://msdn.microsoft.com/library/windows/desktop/ee415787\(v=vs.85\).aspx)을 참고하십시오. |
| XWMADecode | XAudio2를 사용하지 않고 xWMA 버퍼를 PCM 버퍼로 직접 디코딩하려면 XWMADecode API를 사용하십시오.                                                                                                                                                                                                                                                                                                              |

<a id="ID4ETD" />

## xWMA 루핑

xWMA는 xWMA 파일 내의 루프 영역이나 임의 패킷의 루핑을 지원하지 않습니다. 전체 xWMA 파일만 루프될 수 있습니다. XAudio2에서 xWMA는 [IXAudio2SourceVoice::SubmitSourceBuffer](https://learn.microsoft.com/windows/desktop/api/xaudio2/nf-xaudio2-ixaudio2sourcevoice-submitsourcebuffer)에 전달되는 [XAUDIO2\_BUFFER](https://learn.microsoft.com/windows/desktop/api/xaudio2/ns-xaudio2-xaudio2_buffer) 값에 대한 루핑 관련 제약이 있습니다. xWMA 파일의 모든 오디오 데이터가 하나의 버퍼로 제출되고 사용자가 이를 루프하려는 경우 다음 제한을 충족해야 합니다.

1. XAUDIO2\_BUFFER.LoopBegin은 항상 0이어야 합니다.
2. XAUDIO2\_BUFFER.LoopLength는 0이거나 전체 파일의 xWMA 데이터의 샘플 크기여야 합니다.
3. XAUDIO2\_BUFFER.LoopCount는 어떤 값이든 가질 수 있습니다.
4. XAUDIO2\_BUFFER.Flags는 XAUDIO2\_END\_OF\_STREAM으로 설정되어야 합니다.

xWMA 오디오 데이터가 하나 이상의 버퍼로 제출되는 경우, 오디오는 일련의 버퍼를 다시 제출하여 수동으로만 루프될 수 있습니다.

xWMA 오디오가 루프되는 동안 무음 기간이 발생할 수 있으므로, xWMA 오디오의 루핑은 일반적으로 부드러운 페이드 인 및 페이드 아웃이 있는 사운드에만 사용되어야 합니다. 예로는 바다 파도 소리와 특정 종류의 미묘한 앰비언트 노이즈가 있습니다.

<a id="ID4ESE" />

## xWMA 파일의 구조

xWMA 파일은 다음과 같은 유형의 청크를 포함하는 표준 RIFF 파일입니다.

\| 청크 FCC| 설명|
\| --- | --- | --- | --- |
\| RIFF| 표준 RIFF 청크는 다음을 포함합니다: <br />1. 데이터 섹션의 처음 4바이트에 `XWMA` 값의 파일 유형을 포함합니다. <br /> 2. 데이터 섹션의 나머지에 파일의 다른 청크를 포함합니다. |
\| fmt| 이 청크는 xWMA 파일의 형식 헤더를 포함합니다. 이 청크의 데이터는 하나 또는 두 개의 채널이 있는 xWMA 데이터에 대한 [WAVEFORMATEX](https://learn.microsoft.com/windows/desktop/api/mmreg/ns-mmreg-waveformatex) 구조 또는 3개 이상의 채널이 있는 xWMA 데이터에 대한 WAVEFORMATEXTENSIBLE 구조에 해당합니다. |
\| data| 이 청크는 인코딩된 xWMA 오디오 데이터를 포함합니다. xWMA가 XAudio2에서 사용될 때, 데이터 청크의 내용은 버퍼로 읽혀지고 [XAUDIO2\_BUFFER](https://learn.microsoft.com/windows/desktop/api/xaudio2/ns-xaudio2-xaudio2_buffer) 구조의 pAudioData 멤버로 소스 보이스에 전달됩니다. 데이터 청크의 내용은 바이트 스왑될 필요가 없습니다. |
\| dpds| 이 청크는 해당 xWMA 패킷이 순서대로 디코딩된 후 누적된 바이트 수인 디코드된 패킷 누적 데이터 크기 배열을 포함합니다. 이 청크의 크기(UINT32로 측정)와 그 데이터 섹션의 내용은 XAudio2에서 [XAUDIO2\_BUFFER\_WMA](https://learn.microsoft.com/windows/desktop/api/xaudio2/ns-xaudio2-xaudio2_buffer_wma) 구조를 채우는 데 사용됩니다. |

<a id="ID4EPG" />

## 함께 보기

[xWMA 명령줄 인코더](/build/console-features/audio/tools/xwmaencode-tools)


## Related topics

- [개요](/ko/build/console-features/audio/overviews/index.md)
- [XBOX One의 오디오 아키텍처](/ko/build/console-features/audio/overviews/xbox-one-audio-architecture.md)
- [XMA2 개요](/ko/build/console-features/audio/overviews/xma2-overview.md)
- [SHAPE 개요](/ko/build/console-features/audio/overviews/shape-overview.md)
- [오디오](/ko/build/console-features/audio/gc-audio-toc.md)
