mirror of
https://github.com/vgmstream/vgmstream.git
synced 2025-02-17 19:19:16 +01:00
Remove fake .aiffl/aifcl (use .laif/laiff/laifc)
This commit is contained in:
parent
b82391063b
commit
79c444c52e
@ -58,9 +58,7 @@ static const char* extension_list[] = {
|
|||||||
//"aif", //common
|
//"aif", //common
|
||||||
"aif-Loop",
|
"aif-Loop",
|
||||||
"aifc", //common?
|
"aifc", //common?
|
||||||
"aifcl", //fake extension for .aif???
|
|
||||||
//"aiff", //common
|
//"aiff", //common
|
||||||
"aiffl", //fake extension for .aif???
|
|
||||||
"aix",
|
"aix",
|
||||||
"akb",
|
"akb",
|
||||||
"al",
|
"al",
|
||||||
|
@ -6,23 +6,24 @@ VGMSTREAM* init_vgmstream_aif_asobo(STREAMFILE* sf) {
|
|||||||
VGMSTREAM* vgmstream = NULL;
|
VGMSTREAM* vgmstream = NULL;
|
||||||
off_t start_offset;
|
off_t start_offset;
|
||||||
size_t data_size;
|
size_t data_size;
|
||||||
int loop_flag, channel_count;
|
int loop_flag, channels, sample_rate;
|
||||||
|
|
||||||
|
|
||||||
/* checks */
|
/* checks */
|
||||||
/* aif: standard, .laif/aiffl: for plugins */
|
if (read_u16le(0x00,sf) != 0x69) /* fmt chunk with Xbox codec */
|
||||||
if ( !check_extensions(sf,"aif,laif,aiffl") )
|
|
||||||
goto fail;
|
goto fail;
|
||||||
if ((uint16_t)read_16bitLE(0x00,sf) != 0x69) /* Xbox codec */
|
/* aif: standard, .laif: for plugins */
|
||||||
|
if ( !check_extensions(sf,"aif,laif") )
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
channel_count = read_16bitLE(0x02,sf); /* assumed, only stereo is known */
|
channels = read_u16le(0x02,sf); /* assumed, only stereo is known */
|
||||||
if (channel_count != 2) goto fail;
|
if (channels != 2) goto fail;
|
||||||
|
|
||||||
/* 0x08: ? */
|
sample_rate = read_u32le(0x04,sf);
|
||||||
if ((uint16_t)read_16bitLE(0x0c,sf) != 0x24*channel_count) /* Xbox block */
|
/* 0x08: bitrate */
|
||||||
|
if (read_u16le(0x0c,sf) != 0x24 * channels) /* Xbox block */
|
||||||
goto fail;
|
goto fail;
|
||||||
if ((uint16_t)read_16bitLE(0x0e,sf) != 0x04) /* Xbox bps */
|
if (read_u16le(0x0e,sf) != 0x04) /* Xbox bps */
|
||||||
goto fail;
|
goto fail;
|
||||||
loop_flag = 0;
|
loop_flag = 0;
|
||||||
|
|
||||||
@ -31,17 +32,17 @@ VGMSTREAM* init_vgmstream_aif_asobo(STREAMFILE* sf) {
|
|||||||
|
|
||||||
|
|
||||||
/* build the VGMSTREAM */
|
/* build the VGMSTREAM */
|
||||||
vgmstream = allocate_vgmstream(channel_count,loop_flag);
|
vgmstream = allocate_vgmstream(channels, loop_flag);
|
||||||
if (!vgmstream) goto fail;
|
if (!vgmstream) goto fail;
|
||||||
|
|
||||||
vgmstream->meta_type = meta_AIF_ASOBO;
|
vgmstream->meta_type = meta_AIF_ASOBO;
|
||||||
vgmstream->sample_rate = read_32bitLE(0x04,sf);
|
vgmstream->sample_rate = sample_rate;
|
||||||
vgmstream->num_samples = xbox_ima_bytes_to_samples(data_size,channel_count);
|
vgmstream->num_samples = xbox_ima_bytes_to_samples(data_size, channels);
|
||||||
|
|
||||||
vgmstream->coding_type = coding_XBOX_IMA;
|
vgmstream->coding_type = coding_XBOX_IMA;
|
||||||
vgmstream->layout_type = layout_none;
|
vgmstream->layout_type = layout_none;
|
||||||
|
|
||||||
if ( !vgmstream_open_stream(vgmstream, sf, start_offset) )
|
if (!vgmstream_open_stream(vgmstream, sf, start_offset))
|
||||||
goto fail;
|
goto fail;
|
||||||
return vgmstream;
|
return vgmstream;
|
||||||
|
|
||||||
|
@ -81,9 +81,11 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) {
|
|||||||
|
|
||||||
|
|
||||||
/* checks */
|
/* checks */
|
||||||
|
if (!is_id32be(0x00,sf, "FORM"))
|
||||||
|
goto fail;
|
||||||
|
|
||||||
/* .aif: common (AIFF or AIFC), .aiff: common AIFF, .aifc: common AIFC
|
/* .aif: common (AIFF or AIFC), .aiff: common AIFF, .aifc: common AIFC
|
||||||
* .laif/laifc/laiff: for plugins
|
* .laif/laiff/laifc: for plugins
|
||||||
* .aifcl/aiffl: for plugins?
|
|
||||||
* .cbd2: M2 games
|
* .cbd2: M2 games
|
||||||
* .bgm: Super Street Fighter II Turbo (3DO)
|
* .bgm: Super Street Fighter II Turbo (3DO)
|
||||||
* .acm: Crusader - No Remorse (SAT)
|
* .acm: Crusader - No Remorse (SAT)
|
||||||
@ -91,15 +93,17 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) {
|
|||||||
* .ai: Dragon Force (SAT)
|
* .ai: Dragon Force (SAT)
|
||||||
* (extensionless: Doom (3DO)
|
* (extensionless: Doom (3DO)
|
||||||
* .fda: Homeworld 2 (PC)
|
* .fda: Homeworld 2 (PC)
|
||||||
* .n64: Turok (N64) src */
|
* .n64: Turok (N64) src
|
||||||
|
* .pcm: Road Rash (SAT)
|
||||||
|
*/
|
||||||
if (check_extensions(sf, "aif,laif,")) {
|
if (check_extensions(sf, "aif,laif,")) {
|
||||||
is_aifc_ext = 1;
|
is_aifc_ext = 1;
|
||||||
is_aiff_ext = 1;
|
is_aiff_ext = 1;
|
||||||
}
|
}
|
||||||
else if (check_extensions(sf, "aifc,laifc,aifcl,afc,cbd2,bgm,fda,n64")) {
|
else if (check_extensions(sf, "aifc,laifc,afc,cbd2,bgm,fda,n64")) {
|
||||||
is_aifc_ext = 1;
|
is_aifc_ext = 1;
|
||||||
}
|
}
|
||||||
else if (check_extensions(sf, "aiff,laiff,acm,adp,ai,aiffl")) {
|
else if (check_extensions(sf, "aiff,laiff,acm,adp,ai,pcm")) {
|
||||||
is_aiff_ext = 1;
|
is_aiff_ext = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -107,17 +111,16 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
file_size = get_streamfile_size(sf);
|
file_size = get_streamfile_size(sf);
|
||||||
if (read_u32be(0x00,sf) != 0x464F524D && /* "FORM" */
|
if (read_u32be(0x04,sf) + 0x08 != file_size)
|
||||||
read_u32be(0x04,sf)+0x08 != file_size)
|
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/* AIFF originally allowed only PCM (non-compressed) audio, so newer AIFC was added,
|
/* AIFF originally allowed only PCM (non-compressed) audio, so newer AIFC was added,
|
||||||
* though some AIFF with other codecs exist */
|
* though some AIFF with other codecs exist */
|
||||||
if (read_u32be(0x08,sf) == 0x41494643) { /* "AIFC" */
|
if (is_id32be(0x08,sf, "AIFC")) {
|
||||||
if (!is_aifc_ext) goto fail;
|
if (!is_aifc_ext) goto fail;
|
||||||
is_aifc = 1;
|
is_aifc = 1;
|
||||||
}
|
}
|
||||||
else if (read_u32be(0x08,sf) == 0x41494646) { /* "AIFF" */
|
else if (is_id32be(0x08,sf, "AIFF")) {
|
||||||
if (!is_aiff_ext) goto fail;
|
if (!is_aiff_ext) goto fail;
|
||||||
is_aiff = 1;
|
is_aiff = 1;
|
||||||
}
|
}
|
||||||
@ -160,9 +163,7 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) {
|
|||||||
if (comm_found) goto fail;
|
if (comm_found) goto fail;
|
||||||
comm_found = 1;
|
comm_found = 1;
|
||||||
|
|
||||||
channels = read_u16be(offset + 0x00,sf);
|
channels = read_u16be(offset + 0x00,sf);
|
||||||
if (channels <= 0) goto fail;
|
|
||||||
|
|
||||||
sample_count = read_u32be(offset + 0x02,sf); /* sample_frames in theory, depends on codec */
|
sample_count = read_u32be(offset + 0x02,sf); /* sample_frames in theory, depends on codec */
|
||||||
sample_size = read_u16be(offset + 0x06,sf);
|
sample_size = read_u16be(offset + 0x06,sf);
|
||||||
sample_rate = read_f80be(offset + 0x08,sf);
|
sample_rate = read_f80be(offset + 0x08,sf);
|
||||||
@ -233,7 +234,7 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) {
|
|||||||
coding_type = coding_PCM16BE;
|
coding_type = coding_PCM16BE;
|
||||||
interleave = 2;
|
interleave = 2;
|
||||||
break;
|
break;
|
||||||
case 4: /* Crusader: No Remorse (SAT), Road Rash (3DO) */
|
case 4: /* Crusader: No Remorse (SAT), Road Rash (3DO/SAT) */
|
||||||
coding_type = coding_XA;
|
coding_type = coding_XA;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user