mirror of
https://github.com/vgmstream/vgmstream.git
synced 2025-01-18 07:44:43 +01:00
Unify IMA/IMA_int with standard IMA decoder + add stereo IMA
This commit is contained in:
parent
3ce9e2c8ab
commit
8363e26b88
@ -21,7 +21,6 @@ void decode_xbox_ima(VGMSTREAM * vgmstream,VGMSTREAMCHANNEL * stream, sample * o
|
|||||||
void decode_xbox_ima_int(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do,int channel);
|
void decode_xbox_ima_int(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do,int channel);
|
||||||
void decode_snds_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do, int channel);
|
void decode_snds_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do, int channel);
|
||||||
void decode_standard_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do, int channel, int is_stereo, int is_high_first);
|
void decode_standard_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do, int channel, int is_stereo, int is_high_first);
|
||||||
void decode_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do);
|
|
||||||
void decode_3ds_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do);
|
void decode_3ds_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do);
|
||||||
void decode_rad_ima(VGMSTREAM * vgmstream,VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do,int channel);
|
void decode_rad_ima(VGMSTREAM * vgmstream,VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do,int channel);
|
||||||
void decode_rad_ima_mono(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do);
|
void decode_rad_ima_mono(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do);
|
||||||
|
@ -45,7 +45,6 @@ static const int IMA_IndexTable[16] =
|
|||||||
static void n3ds_ima_expand_nibble(VGMSTREAMCHANNEL * stream, off_t byte_offset, int nibble_shift, int32_t * hist1, int32_t * step_index) {
|
static void n3ds_ima_expand_nibble(VGMSTREAMCHANNEL * stream, off_t byte_offset, int nibble_shift, int32_t * hist1, int32_t * step_index) {
|
||||||
int sample_nibble, sample_decoded, step, delta;
|
int sample_nibble, sample_decoded, step, delta;
|
||||||
|
|
||||||
//"original" ima nibble expansion
|
|
||||||
sample_nibble = (read_8bit(byte_offset,stream->streamfile) >> nibble_shift)&0xf;
|
sample_nibble = (read_8bit(byte_offset,stream->streamfile) >> nibble_shift)&0xf;
|
||||||
sample_decoded = *hist1;
|
sample_decoded = *hist1;
|
||||||
|
|
||||||
@ -169,6 +168,7 @@ static void ubi_ima_expand_nibble(VGMSTREAMCHANNEL * stream, off_t byte_offset,
|
|||||||
*hist1 = clamp16(sample_decoded);
|
*hist1 = clamp16(sample_decoded);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* *** */
|
||||||
|
|
||||||
void decode_nds_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do) {
|
void decode_nds_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do) {
|
||||||
int i, sample_count;
|
int i, sample_count;
|
||||||
@ -458,28 +458,6 @@ void decode_standard_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channel
|
|||||||
stream->adpcm_step_index = step_index;
|
stream->adpcm_step_index = step_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
void decode_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do) {
|
|
||||||
int i, sample_count;
|
|
||||||
|
|
||||||
int32_t hist1 = stream->adpcm_history1_32;
|
|
||||||
int step_index = stream->adpcm_step_index;
|
|
||||||
|
|
||||||
//external interleave
|
|
||||||
|
|
||||||
//no header
|
|
||||||
|
|
||||||
for (i=first_sample,sample_count=0; i<first_sample+samples_to_do; i++,sample_count+=channelspacing) {
|
|
||||||
off_t byte_offset = stream->offset + i/2;
|
|
||||||
int nibble_shift = (i&1?4:0); //low nibble order
|
|
||||||
|
|
||||||
ms_ima_expand_nibble(stream, byte_offset,nibble_shift, &hist1, &step_index);
|
|
||||||
outbuf[sample_count] = (short)(hist1);
|
|
||||||
}
|
|
||||||
|
|
||||||
stream->adpcm_history1_32 = hist1;
|
|
||||||
stream->adpcm_step_index = step_index;
|
|
||||||
}
|
|
||||||
|
|
||||||
void decode_3ds_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do) {
|
void decode_3ds_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing, int32_t first_sample, int32_t samples_to_do) {
|
||||||
int i, sample_count;
|
int i, sample_count;
|
||||||
|
|
||||||
|
@ -401,51 +401,53 @@ static const coding_info coding_info_list[] = {
|
|||||||
{coding_PCM16LE, "Little Endian 16-bit PCM"},
|
{coding_PCM16LE, "Little Endian 16-bit PCM"},
|
||||||
{coding_PCM16LE_XOR_int, "Little Endian 16-bit PCM with 2 byte interleave and XOR obfuscation"},
|
{coding_PCM16LE_XOR_int, "Little Endian 16-bit PCM with 2 byte interleave and XOR obfuscation"},
|
||||||
{coding_PCM16BE, "Big Endian 16-bit PCM"},
|
{coding_PCM16BE, "Big Endian 16-bit PCM"},
|
||||||
{coding_PCM16_int, "16-bit PCM with 2 byte interleave"},
|
{coding_PCM16_int, "16-bit PCM with 2 byte interleave (block)"},
|
||||||
{coding_PCM8, "8-bit PCM"},
|
{coding_PCM8, "8-bit PCM"},
|
||||||
|
{coding_PCM8_int, "8-bit PCM with 1 byte interleave (block)"},
|
||||||
{coding_PCM8_U, "8-bit unsigned PCM"},
|
{coding_PCM8_U, "8-bit unsigned PCM"},
|
||||||
{coding_PCM8_U_int, "8-bit unsigned PCM with 1 byte interleave"},
|
{coding_PCM8_U_int, "8-bit unsigned PCM with 1 byte interleave (block)"},
|
||||||
{coding_PCM8_int, "8-bit PCM with 1 byte interleave"},
|
{coding_PCM8_SB_int, "8-bit PCM with sign bit, 1 byte interleave (block)"},
|
||||||
{coding_PCM8_SB_int, "8-bit PCM with sign bit, 1 byte interleave"},
|
|
||||||
{coding_ULAW, "8-bit u-Law"},
|
{coding_ULAW, "8-bit u-Law"},
|
||||||
{coding_ALAW, "8-bit a-Law"},
|
{coding_ALAW, "8-bit a-Law"},
|
||||||
{coding_PCMFLOAT, "32-bit float PCM"},
|
{coding_PCMFLOAT, "32-bit float PCM"},
|
||||||
|
|
||||||
{coding_CRI_ADX, "CRI ADX 4-bit ADPCM"},
|
{coding_CRI_ADX, "CRI ADX 4-bit ADPCM"},
|
||||||
{coding_CRI_ADX_exp, "CRI ADX 4-bit ADPCM with exponential scale"},
|
{coding_CRI_ADX_fixed, "CRI ADX 4-bit ADPCM (fixed coefficients)"},
|
||||||
{coding_CRI_ADX_fixed, "CRI ADX 4-bit ADPCM with fixed coefficients"},
|
{coding_CRI_ADX_exp, "CRI ADX 4-bit ADPCM (exponential scale)"},
|
||||||
{coding_CRI_ADX_enc_8, "CRI ADX 4-bit ADPCM (type 8 encryption)"},
|
{coding_CRI_ADX_enc_8, "CRI ADX 4-bit ADPCM (type 8 encryption)"},
|
||||||
{coding_CRI_ADX_enc_9, "CRI ADX 4-bit ADPCM (type 9 encryption)"},
|
{coding_CRI_ADX_enc_9, "CRI ADX 4-bit ADPCM (type 9 encryption)"},
|
||||||
|
|
||||||
{coding_NGC_DSP, "Nintendo DSP 4-bit ADPCM"},
|
{coding_NGC_DSP, "Nintendo DSP 4-bit ADPCM"},
|
||||||
{coding_NGC_DTK, "Nintendo DTK 4-bit ADPCM"},
|
{coding_NGC_DTK, "Nintendo DTK 4-bit ADPCM"},
|
||||||
{coding_NGC_AFC, "Nintendo AFC 4-bit ADPCM"},
|
{coding_NGC_AFC, "Nintendo AFC 4-bit ADPCM"},
|
||||||
{coding_CRI_HCA, "CRI HCA"},
|
|
||||||
{coding_NDS_IMA, "NDS-style 4-bit IMA ADPCM"},
|
|
||||||
{coding_DAT4_IMA, "Eurocom DAT4 4-bit IMA ADPCM"},
|
|
||||||
{coding_G721, "CCITT G.721 4-bit ADPCM"},
|
{coding_G721, "CCITT G.721 4-bit ADPCM"},
|
||||||
|
|
||||||
|
{coding_XA, "CD-ROM XA 4-bit ADPCM"},
|
||||||
{coding_PSX, "Playstation 4-bit ADPCM"},
|
{coding_PSX, "Playstation 4-bit ADPCM"},
|
||||||
{coding_PSX_badflags, "Playstation 4-bit ADPCM (bad flags)"},
|
{coding_PSX_badflags, "Playstation 4-bit ADPCM (bad flags)"},
|
||||||
{coding_PSX_bmdx, "Playstation 4-bit ADPCM (BMDX encryption)"},
|
{coding_PSX_bmdx, "Playstation 4-bit ADPCM (BMDX encryption)"},
|
||||||
{coding_PSX_cfg, "Playstation 4-bit ADPCM (configurable)"},
|
{coding_PSX_cfg, "Playstation 4-bit ADPCM (configurable)"},
|
||||||
{coding_HEVAG, "Playstation Vita HEVAG 4-bit ADPCM"},
|
{coding_HEVAG, "Playstation Vita HEVAG 4-bit ADPCM"},
|
||||||
{coding_XA, "CD-ROM XA 4-bit ADPCM"},
|
|
||||||
{coding_XBOX, "XBOX 4-bit IMA ADPCM"},
|
{coding_EA_XA, "Electronic Arts EA-XA 4-bit ADPCM v1"},
|
||||||
{coding_XBOX_int, "XBOX 4-bit IMA ADPCM (interleaved)"},
|
{coding_EA_XA_int, "Electronic Arts EA-XA 4-bit ADPCM v1 (mono/interleave)"},
|
||||||
{coding_EA_XA, "Electronic Arts EA-XA 4-bit ADPCM (v1)"},
|
{coding_EA_XA_V2, "Electronic Arts EA-XA 4-bit ADPCM v2"},
|
||||||
{coding_EA_XA_int, "Electronic Arts EA-XA 4-bit ADPCM (v1) (interleaved)"},
|
|
||||||
{coding_EA_XA_V2, "Electronic Arts EA-XA 4-bit ADPCM (v2)"},
|
|
||||||
{coding_MAXIS_XA, "Maxis EA-XA 4-bit ADPCM"},
|
{coding_MAXIS_XA, "Maxis EA-XA 4-bit ADPCM"},
|
||||||
{coding_SDX2, "Squareroot-delta-exact (SDX2) 8-bit DPCM"},
|
{coding_EA_XAS, "Electronic Arts EA-XAS 4-bit ADPCM"},
|
||||||
{coding_SDX2_int, "Squareroot-delta-exact (SDX2) 8-bit DPCM with 1 byte interleave"},
|
|
||||||
{coding_CBD2, "Cuberoot-delta-exact (CBD2) 8-bit DPCM"},
|
|
||||||
{coding_CBD2_int, "Cuberoot-delta-exact (CBD2) 8-bit DPCM with 1 byte interleave"},
|
|
||||||
{coding_DVI_IMA, "Intel DVI 4-bit IMA ADPCM"},
|
|
||||||
{coding_DVI_IMA_int, "Intel DVI 4-bit IMA ADPCM (interleaved)"},
|
|
||||||
{coding_IMA_int, "IMA 4-bit ADPCM (interleaved)"},
|
|
||||||
{coding_IMA, "IMA 4-bit ADPCM"},
|
{coding_IMA, "IMA 4-bit ADPCM"},
|
||||||
|
{coding_IMA_int, "IMA 4-bit ADPCM (mono/interleave)"},
|
||||||
|
{coding_DVI_IMA, "Intel DVI 4-bit IMA ADPCM"},
|
||||||
|
{coding_DVI_IMA_int, "Intel DVI 4-bit IMA ADPCM (mono/interleave)"},
|
||||||
{coding_3DS_IMA, "3DS IMA 4-bit ADPCM"},
|
{coding_3DS_IMA, "3DS IMA 4-bit ADPCM"},
|
||||||
{coding_MS_IMA, "Microsoft 4-bit IMA ADPCM"},
|
{coding_MS_IMA, "Microsoft 4-bit IMA ADPCM"},
|
||||||
|
{coding_XBOX, "XBOX 4-bit IMA ADPCM"},
|
||||||
|
{coding_XBOX_int, "XBOX 4-bit IMA ADPCM (mono/interleave)"},
|
||||||
|
{coding_NDS_IMA, "NDS-style 4-bit IMA ADPCM"},
|
||||||
|
{coding_DAT4_IMA, "Eurocom DAT4 4-bit IMA ADPCM"},
|
||||||
{coding_RAD_IMA, "Radical 4-bit IMA ADPCM"},
|
{coding_RAD_IMA, "Radical 4-bit IMA ADPCM"},
|
||||||
{coding_RAD_IMA_mono, "Radical 4-bit IMA ADPCM (mono)"},
|
{coding_RAD_IMA_mono, "Radical 4-bit IMA ADPCM (mono/interleave)"},
|
||||||
{coding_APPLE_IMA4, "Apple Quicktime 4-bit IMA ADPCM"},
|
{coding_APPLE_IMA4, "Apple Quicktime 4-bit IMA ADPCM"},
|
||||||
{coding_SNDS_IMA, "Heavy Iron .snds 4-bit IMA ADPCM"},
|
{coding_SNDS_IMA, "Heavy Iron .snds 4-bit IMA ADPCM"},
|
||||||
{coding_OTNS_IMA, "Omikron: The Nomad Soul 4-bit IMA ADPCM"},
|
{coding_OTNS_IMA, "Omikron: The Nomad Soul 4-bit IMA ADPCM"},
|
||||||
@ -454,15 +456,9 @@ static const coding_info coding_info_list[] = {
|
|||||||
{coding_REF_IMA, "Reflections 4-bit IMA ADPCM"},
|
{coding_REF_IMA, "Reflections 4-bit IMA ADPCM"},
|
||||||
{coding_AWC_IMA, "Rockstar AWC 4-bit IMA ADPCM"},
|
{coding_AWC_IMA, "Rockstar AWC 4-bit IMA ADPCM"},
|
||||||
{coding_UBI_IMA, "Ubisoft 4-bit IMA ADPCM"},
|
{coding_UBI_IMA, "Ubisoft 4-bit IMA ADPCM"},
|
||||||
{coding_WS, "Westwood Studios VBR ADPCM"},
|
|
||||||
{coding_ACM, "InterPlay ACM"},
|
|
||||||
{coding_NWA0, "NWA DPCM Level 0"},
|
|
||||||
{coding_NWA1, "NWA DPCM Level 1"},
|
|
||||||
{coding_NWA2, "NWA DPCM Level 2"},
|
|
||||||
{coding_NWA3, "NWA DPCM Level 3"},
|
|
||||||
{coding_NWA4, "NWA DPCM Level 4"},
|
|
||||||
{coding_NWA5, "NWA DPCM Level 5"},
|
|
||||||
{coding_MSADPCM, "Microsoft 4-bit ADPCM"},
|
{coding_MSADPCM, "Microsoft 4-bit ADPCM"},
|
||||||
|
{coding_WS, "Westwood Studios VBR ADPCM"},
|
||||||
{coding_AICA, "Yamaha AICA 4-bit ADPCM"},
|
{coding_AICA, "Yamaha AICA 4-bit ADPCM"},
|
||||||
{coding_NDS_PROCYON, "Procyon Studio Digital Sound Elements NDS 4-bit APDCM"},
|
{coding_NDS_PROCYON, "Procyon Studio Digital Sound Elements NDS 4-bit APDCM"},
|
||||||
{coding_L5_555, "Level-5 0x555 4-bit ADPCM"},
|
{coding_L5_555, "Level-5 0x555 4-bit ADPCM"},
|
||||||
@ -471,7 +467,20 @@ static const coding_info coding_info_list[] = {
|
|||||||
{coding_MTAF, "Konami MTAF 4-bit ADPCM"},
|
{coding_MTAF, "Konami MTAF 4-bit ADPCM"},
|
||||||
{coding_MTA2, "Konami MTA2 4-bit ADPCM"},
|
{coding_MTA2, "Konami MTA2 4-bit ADPCM"},
|
||||||
{coding_MC3, "Paradigm MC3 3-bit ADPCM"},
|
{coding_MC3, "Paradigm MC3 3-bit ADPCM"},
|
||||||
{coding_EA_XAS, "Electronic Arts EA-XAS 4-bit ADPCM"},
|
|
||||||
|
{coding_SDX2, "Squareroot-delta-exact (SDX2) 8-bit DPCM"},
|
||||||
|
{coding_SDX2_int, "Squareroot-delta-exact (SDX2) 8-bit DPCM with 1 byte interleave"},
|
||||||
|
{coding_CBD2, "Cuberoot-delta-exact (CBD2) 8-bit DPCM"},
|
||||||
|
{coding_CBD2_int, "Cuberoot-delta-exact (CBD2) 8-bit DPCM with 1 byte interleave"},
|
||||||
|
{coding_ACM, "InterPlay ACM"},
|
||||||
|
{coding_NWA0, "NWA DPCM Level 0"},
|
||||||
|
{coding_NWA1, "NWA DPCM Level 1"},
|
||||||
|
{coding_NWA2, "NWA DPCM Level 2"},
|
||||||
|
{coding_NWA3, "NWA DPCM Level 3"},
|
||||||
|
{coding_NWA4, "NWA DPCM Level 4"},
|
||||||
|
{coding_NWA5, "NWA DPCM Level 5"},
|
||||||
|
|
||||||
|
{coding_CRI_HCA, "CRI HCA"},
|
||||||
|
|
||||||
#ifdef VGM_USE_VORBIS
|
#ifdef VGM_USE_VORBIS
|
||||||
{coding_ogg_vorbis, "Ogg Vorbis"},
|
{coding_ogg_vorbis, "Ogg Vorbis"},
|
||||||
@ -772,7 +781,7 @@ static const meta_info meta_info_list[] = {
|
|||||||
{meta_WII_WAS, "WAS (iSWS) DSP header"},
|
{meta_WII_WAS, "WAS (iSWS) DSP header"},
|
||||||
{meta_XBOX_HLWAV, "Half Life 2 bgm header"},
|
{meta_XBOX_HLWAV, "Half Life 2 bgm header"},
|
||||||
{meta_STX, "Nintendo .stx header"},
|
{meta_STX, "Nintendo .stx header"},
|
||||||
{meta_MYSPD, "U-Sing .myspd header"},
|
{meta_MYSPD, "U-Sing .MYSPD header"},
|
||||||
{meta_HIS, "Her Interactive Sound header"},
|
{meta_HIS, "Her Interactive Sound header"},
|
||||||
{meta_PS2_AST, "KOEI AST header"},
|
{meta_PS2_AST, "KOEI AST header"},
|
||||||
{meta_CAPDSP, "Capcom DSP header"},
|
{meta_CAPDSP, "Capcom DSP header"},
|
||||||
|
@ -1018,9 +1018,9 @@ int get_vgmstream_samples_per_frame(VGMSTREAM * vgmstream) {
|
|||||||
case coding_NGC_DTK:
|
case coding_NGC_DTK:
|
||||||
return 28;
|
return 28;
|
||||||
case coding_G721:
|
case coding_G721:
|
||||||
|
case coding_IMA:
|
||||||
case coding_DVI_IMA:
|
case coding_DVI_IMA:
|
||||||
case coding_SNDS_IMA:
|
case coding_SNDS_IMA:
|
||||||
case coding_IMA:
|
|
||||||
case coding_OTNS_IMA:
|
case coding_OTNS_IMA:
|
||||||
case coding_UBI_IMA:
|
case coding_UBI_IMA:
|
||||||
return 1;
|
return 1;
|
||||||
@ -1175,7 +1175,6 @@ int get_vgmstream_frame_size(VGMSTREAM * vgmstream) {
|
|||||||
return 0x14;
|
return 0x14;
|
||||||
case coding_NGC_DTK:
|
case coding_NGC_DTK:
|
||||||
return 32;
|
return 32;
|
||||||
case coding_IMA:
|
|
||||||
case coding_G721:
|
case coding_G721:
|
||||||
case coding_SNDS_IMA:
|
case coding_SNDS_IMA:
|
||||||
case coding_OTNS_IMA:
|
case coding_OTNS_IMA:
|
||||||
@ -1209,10 +1208,12 @@ int get_vgmstream_frame_size(VGMSTREAM * vgmstream) {
|
|||||||
return 0x4c*vgmstream->channels;
|
return 0x4c*vgmstream->channels;
|
||||||
case coding_WS:
|
case coding_WS:
|
||||||
return vgmstream->current_block_size;
|
return vgmstream->current_block_size;
|
||||||
|
case coding_IMA:
|
||||||
case coding_IMA_int:
|
case coding_IMA_int:
|
||||||
case coding_DVI_IMA:
|
case coding_DVI_IMA:
|
||||||
case coding_DVI_IMA_int:
|
case coding_DVI_IMA_int:
|
||||||
case coding_3DS_IMA:
|
case coding_3DS_IMA:
|
||||||
|
return 0x01;
|
||||||
case coding_AICA:
|
case coding_AICA:
|
||||||
return 1;
|
return 1;
|
||||||
case coding_APPLE_IMA4:
|
case coding_APPLE_IMA4:
|
||||||
@ -1610,10 +1611,13 @@ void decode_vgmstream(VGMSTREAM * vgmstream, int samples_written, int samples_to
|
|||||||
samples_to_do);
|
samples_to_do);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case coding_IMA:
|
||||||
|
case coding_IMA_int:
|
||||||
case coding_DVI_IMA:
|
case coding_DVI_IMA:
|
||||||
case coding_DVI_IMA_int:
|
case coding_DVI_IMA_int:
|
||||||
for (chan=0;chan<vgmstream->channels;chan++) {
|
for (chan=0;chan<vgmstream->channels;chan++) {
|
||||||
int is_stereo = vgmstream->channels > 1 && vgmstream->coding_type == coding_DVI_IMA;
|
int is_stereo = (vgmstream->channels > 1 && vgmstream->coding_type == coding_IMA)
|
||||||
|
|| (vgmstream->channels > 1 && vgmstream->coding_type == coding_DVI_IMA);
|
||||||
int is_high_first = vgmstream->coding_type == coding_DVI_IMA || vgmstream->coding_type == coding_DVI_IMA_int;
|
int is_high_first = vgmstream->coding_type == coding_DVI_IMA || vgmstream->coding_type == coding_DVI_IMA_int;
|
||||||
|
|
||||||
decode_standard_ima(&vgmstream->ch[chan],buffer+samples_written*vgmstream->channels+chan,
|
decode_standard_ima(&vgmstream->ch[chan],buffer+samples_written*vgmstream->channels+chan,
|
||||||
@ -1621,14 +1625,6 @@ void decode_vgmstream(VGMSTREAM * vgmstream, int samples_written, int samples_to
|
|||||||
samples_to_do, chan, is_stereo, is_high_first);
|
samples_to_do, chan, is_stereo, is_high_first);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case coding_IMA:
|
|
||||||
case coding_IMA_int:
|
|
||||||
for (chan=0;chan<vgmstream->channels;chan++) {
|
|
||||||
decode_ima(&vgmstream->ch[chan],buffer+samples_written*vgmstream->channels+chan,
|
|
||||||
vgmstream->channels,vgmstream->samples_into_block,
|
|
||||||
samples_to_do);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case coding_3DS_IMA:
|
case coding_3DS_IMA:
|
||||||
for (chan=0;chan<vgmstream->channels;chan++) {
|
for (chan=0;chan<vgmstream->channels;chan++) {
|
||||||
decode_3ds_ima(&vgmstream->ch[chan],buffer+samples_written*vgmstream->channels+chan,
|
decode_3ds_ima(&vgmstream->ch[chan],buffer+samples_written*vgmstream->channels+chan,
|
||||||
|
@ -116,18 +116,19 @@ typedef enum {
|
|||||||
coding_MAXIS_XA, /* Maxis EA-XA ADPCM */
|
coding_MAXIS_XA, /* Maxis EA-XA ADPCM */
|
||||||
coding_EA_XAS, /* Electronic Arts EA-XAS ADPCM */
|
coding_EA_XAS, /* Electronic Arts EA-XAS ADPCM */
|
||||||
|
|
||||||
coding_XBOX, /* XBOX IMA ADPCM */
|
coding_IMA, /* IMA ADPCM (stereo or mono, low nibble first) */
|
||||||
coding_XBOX_int, /* XBOX IMA ADPCM (interleaved) */
|
coding_IMA_int, /* IMA ADPCM (mono/interleave, low nibble first) */
|
||||||
coding_IMA, /* IMA ADPCM (low nibble first) */
|
|
||||||
coding_IMA_int, /* IMA ADPCM (interleaved) */
|
|
||||||
coding_DVI_IMA, /* DVI IMA ADPCM (stereo or mono, high nibble first) */
|
coding_DVI_IMA, /* DVI IMA ADPCM (stereo or mono, high nibble first) */
|
||||||
coding_DVI_IMA_int, /* DVI IMA ADPCM (mono/interleave, high nibble first) */
|
coding_DVI_IMA_int, /* DVI IMA ADPCM (mono/interleave, high nibble first) */
|
||||||
coding_NDS_IMA, /* IMA ADPCM w/ NDS layout */
|
coding_3DS_IMA, /* 3DS IMA ADPCM */
|
||||||
coding_MS_IMA, /* Microsoft IMA ADPCM */
|
coding_MS_IMA, /* Microsoft IMA ADPCM */
|
||||||
|
coding_XBOX, /* XBOX IMA ADPCM */
|
||||||
|
coding_XBOX_int, /* XBOX IMA ADPCM (interleaved) */
|
||||||
|
coding_NDS_IMA, /* IMA ADPCM w/ NDS layout */
|
||||||
|
coding_DAT4_IMA, /* Eurocom 'DAT4' IMA ADPCM */
|
||||||
coding_RAD_IMA, /* Radical IMA ADPCM */
|
coding_RAD_IMA, /* Radical IMA ADPCM */
|
||||||
coding_RAD_IMA_mono, /* Radical IMA ADPCM, mono (for interleave) */
|
coding_RAD_IMA_mono, /* Radical IMA ADPCM, mono (for interleave) */
|
||||||
coding_APPLE_IMA4, /* Apple Quicktime IMA4 */
|
coding_APPLE_IMA4, /* Apple Quicktime IMA4 */
|
||||||
coding_DAT4_IMA, /* Eurocom 'DAT4' IMA ADPCM */
|
|
||||||
coding_SNDS_IMA, /* Heavy Iron Studios .snds IMA ADPCM */
|
coding_SNDS_IMA, /* Heavy Iron Studios .snds IMA ADPCM */
|
||||||
coding_OTNS_IMA, /* Omikron The Nomad Soul IMA ADPCM */
|
coding_OTNS_IMA, /* Omikron The Nomad Soul IMA ADPCM */
|
||||||
coding_FSB_IMA, /* FMOD's FSB multichannel IMA ADPCM */
|
coding_FSB_IMA, /* FMOD's FSB multichannel IMA ADPCM */
|
||||||
@ -135,7 +136,6 @@ typedef enum {
|
|||||||
coding_REF_IMA, /* Reflections IMA ADPCM */
|
coding_REF_IMA, /* Reflections IMA ADPCM */
|
||||||
coding_AWC_IMA, /* Rockstar AWC IMA ADPCM */
|
coding_AWC_IMA, /* Rockstar AWC IMA ADPCM */
|
||||||
coding_UBI_IMA, /* Ubisoft IMA ADPCM */
|
coding_UBI_IMA, /* Ubisoft IMA ADPCM */
|
||||||
coding_3DS_IMA, /* 3DS IMA ADPCM */
|
|
||||||
|
|
||||||
coding_MSADPCM, /* Microsoft ADPCM */
|
coding_MSADPCM, /* Microsoft ADPCM */
|
||||||
coding_WS, /* Westwood Studios VBR ADPCM */
|
coding_WS, /* Westwood Studios VBR ADPCM */
|
||||||
@ -153,9 +153,7 @@ typedef enum {
|
|||||||
coding_SDX2_int, /* SDX2 2:1 Squareroot-Delta-Exact compression with sample-level interleave */
|
coding_SDX2_int, /* SDX2 2:1 Squareroot-Delta-Exact compression with sample-level interleave */
|
||||||
coding_CBD2, /* CBD2 2:1 Cuberoot-Delta-Exact compression DPCM */
|
coding_CBD2, /* CBD2 2:1 Cuberoot-Delta-Exact compression DPCM */
|
||||||
coding_CBD2_int, /* CBD2 2:1 Cuberoot-Delta-Exact compression, with sample-level interleave */
|
coding_CBD2_int, /* CBD2 2:1 Cuberoot-Delta-Exact compression, with sample-level interleave */
|
||||||
|
|
||||||
coding_ACM, /* InterPlay ACM */
|
coding_ACM, /* InterPlay ACM */
|
||||||
|
|
||||||
coding_NWA0, /* Visual Art's NWA (compressed at various levels) */
|
coding_NWA0, /* Visual Art's NWA (compressed at various levels) */
|
||||||
coding_NWA1,
|
coding_NWA1,
|
||||||
coding_NWA2,
|
coding_NWA2,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user