xWMA와 XMA2는 모두 Windows Media Audio(WMA)용으로 개발된 코덱에서 유래했으며, 둘 다 XBOX 게임용으로 특별히 개발되었습니다. XMA2에서 사용하는 사용 가능한 코덱과 매개변수의 부분집합은 xWMA에서 사용하는 부분집합보다 작습니다. xWMA와 XMA2 모두 XBOX용으로 개발되었지만, 서로 교환 가능하지 않습니다: 각 파일 형식의 헤더가 다르며 형식은 PC 버전의 Windows와 호환되지 않습니다. XMA2와 xWMA에서 사용하는 코덱도 약간 다르므로 각각은 사용된 압축 시스템에서 자체 아티팩트를 갖게 됩니다.
xWMA 인코딩
xWMA로 오디오 데이터를 인코딩하려면 xWMAEncode 명령줄 도구 또는 XWMAEncoder.lib를 사용하는 사용자 지정 도구를 사용하십시오.xWMAEncode
XAudio2와 함께 사용할 xWMA로 오디오 파일을 인코딩하려면 xWMA 명령줄 인코더를 사용하십시오.XWMAEncoder.lib
XWMAEncoder.lib는 xWMA 명령줄 인코더 명령줄 도구의 대안으로 사용 가능한 정적 링크 라이브러리입니다. 사용자 지정 도구는 XWMAEncoder 함수를 사용하여 xWMA 인코딩을 수행하기 위해 이 라이브러리에 의존합니다. 이 함수 사용의 세부사항과 예제는 XBOX 360 문서를 참고하십시오.xWMA 디코딩
xWMA의 소프트웨어 디코딩은 Windows와 XBOX One의 XAudio2에서, 그리고 xWMADecode API를 통해 지원됩니다.xWMA 루핑
xWMA는 xWMA 파일 내의 루프 영역이나 임의 패킷의 루핑을 지원하지 않습니다. 전체 xWMA 파일만 루프될 수 있습니다. XAudio2에서 xWMA는 IXAudio2SourceVoice::SubmitSourceBuffer에 전달되는 XAUDIO2_BUFFER 값에 대한 루핑 관련 제약이 있습니다. xWMA 파일의 모든 오디오 데이터가 하나의 버퍼로 제출되고 사용자가 이를 루프하려는 경우 다음 제한을 충족해야 합니다.- XAUDIO2_BUFFER.LoopBegin은 항상 0이어야 합니다.
- XAUDIO2_BUFFER.LoopLength는 0이거나 전체 파일의 xWMA 데이터의 샘플 크기여야 합니다.
- XAUDIO2_BUFFER.LoopCount는 어떤 값이든 가질 수 있습니다.
- XAUDIO2_BUFFER.Flags는 XAUDIO2_END_OF_STREAM으로 설정되어야 합니다.
xWMA 파일의 구조
xWMA 파일은 다음과 같은 유형의 청크를 포함하는 표준 RIFF 파일입니다. | 청크 FCC| 설명| | --- | --- | --- | --- | | RIFF| 표준 RIFF 청크는 다음을 포함합니다:1. 데이터 섹션의 처음 4바이트에
XWMA 값의 파일 유형을 포함합니다. 2. 데이터 섹션의 나머지에 파일의 다른 청크를 포함합니다. | | fmt| 이 청크는 xWMA 파일의 형식 헤더를 포함합니다. 이 청크의 데이터는 하나 또는 두 개의 채널이 있는 xWMA 데이터에 대한 WAVEFORMATEX 구조 또는 3개 이상의 채널이 있는 xWMA 데이터에 대한 WAVEFORMATEXTENSIBLE 구조에 해당합니다. | | data| 이 청크는 인코딩된 xWMA 오디오 데이터를 포함합니다. xWMA가 XAudio2에서 사용될 때, 데이터 청크의 내용은 버퍼로 읽혀지고 XAUDIO2_BUFFER 구조의 pAudioData 멤버로 소스 보이스에 전달됩니다. 데이터 청크의 내용은 바이트 스왑될 필요가 없습니다. | | dpds| 이 청크는 해당 xWMA 패킷이 순서대로 디코딩된 후 누적된 바이트 수인 디코드된 패킷 누적 데이터 크기 배열을 포함합니다. 이 청크의 크기(UINT32로 측정)와 그 데이터 섹션의 내용은 XAudio2에서 XAUDIO2_BUFFER_WMA 구조를 채우는 데 사용됩니다. |
