Difference between revisions of "EA Command And Conquer 3 Audio Codec"

From MultimediaWiki
Jump to navigation Jump to search
Line 16: Line 16:
               3 = EXm0 (possibly XMA, PC version of the code has no handler for this)
               3 = EXm0 (possibly XMA, PC version of the code has no handler for this)
               4 = XAS ADPCM (ID is Xas1)
               4 = XAS ADPCM (ID is Xas1)
               5 = EALayer3 MPEG Layer 3 audio variant (EL31)
               5 = EALayer3 MPEG Layer 3 audio variant (ID is EL31)
               6 = EALayer3 related codec (L32P)
               6 = EALayer3 related codec (ID is L32P)
               7 = EALayer3 related codec (L32S)
               7 = EALayer3 related codec (ID is L32S)
  byte  1      related to channel count. Seems to be set to
  byte  1      related to channel count. Seems to be set to
               (channel count - 1) * 4 so 0 = mono, 4 = stereo,  
               (channel count - 1) * 4 so 0 = mono, 4 = stereo,  

Revision as of 03:08, 15 August 2010

This format is found on certain .cdata files used for sound effects/voice inside the *.BIG resource files of Command & Conquer 3 and Red Alert 3. Using a program such as OS Big Editor 0.4 you can open the DemoStreams.big file from the C&C3 Demo and extract any .cdata file from the "data\global_demo_common\cdata" folder.

File Layout

The file begins with a 16-byte header, which is then followed by codec specific data. All numbers are encoded in big endian. If bytes 0 and 1 are 0x0000, it means that the audio file is a streamed audio file and the actual header data is stored elsewhere in the game data. (all known streamed audio from the game uses EA Layer 3 codec)


byte  0      codec type
             0 = none
             1 = none
             2 = no compression (ID is P6B0)
             3 = EXm0 (possibly XMA, PC version of the code has no handler for this)
             4 = XAS ADPCM (ID is Xas1)
             5 = EALayer3 MPEG Layer 3 audio variant (ID is EL31)
             6 = EALayer3 related codec (ID is L32P)
             7 = EALayer3 related codec (ID is L32S)
byte  1      related to channel count. Seems to be set to
             (channel count - 1) * 4 so 0 = mono, 4 = stereo, 
             0xC = 4 channels and 0x14 = 5.1 (i.e. 6 channels)
bytes 2-3    sample rate
bytes 4-7    total samples
bytes 8-11   total file size (bytes)
bytes 12-16  total samples

EA ADPCM XAS

XAS is a variation on the Electronic Arts XA codec that uses four independant PCM deltas.

Compressed audio data is arranged in 76-byte blocks that follow sequentially after the header. Each block corresponds to 128 audio samples. In files with stereo audio, the blocks alternate between left and right channels. For example, the first block is for the first channel, the next is for the second channel and so on.

Each block beings with a 16-byte header, and is followed by 15 x 4-byte compressed audio blobs.

Notes

Thanks to KMX at Derelict Studios for finding out the initial information on this format as it applies to C&C3.