mirror of
https://github.com/vgmstream/vgmstream.git
synced 2024-11-12 09:40:51 +01:00
commit
5fe83c0c02
@ -856,4 +856,6 @@ VGMSTREAM * init_vgmstream_fsb5_fev_bank(STREAMFILE * streamFile);
|
||||
|
||||
VGMSTREAM * init_vgmstream_bwav(STREAMFILE * streamFile);
|
||||
|
||||
VGMSTREAM * init_vgmstream_opus_prototype(STREAMFILE * streamFile);
|
||||
|
||||
#endif /*_META_H*/
|
||||
|
@ -341,3 +341,30 @@ VGMSTREAM * init_vgmstream_opus_opusx(STREAMFILE *streamFile) {
|
||||
fail:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Prototype variation [Clannad (Switch)] */
|
||||
VGMSTREAM * init_vgmstream_opus_prototype(STREAMFILE *streamFile) {
|
||||
off_t offset = 0;
|
||||
int num_samples = 0, loop_start = 0, loop_end = 0, loop_flag;
|
||||
|
||||
/* checks */
|
||||
if (!check_extensions(streamFile, "opus,lopus"))
|
||||
goto fail;
|
||||
if (read_32bitBE(0x00, streamFile) != 0x4F505553 || /* "OPUS" */
|
||||
read_32bitBE(0x18, streamFile) != 0x01000080)
|
||||
goto fail;
|
||||
|
||||
offset = 0x18;
|
||||
num_samples = read_32bitLE(0x08, streamFile);
|
||||
|
||||
/* Check if there's a loop end value to determine loop_flag*/
|
||||
loop_flag = read_32bitLE(0x10, streamFile);
|
||||
if (loop_flag) {
|
||||
loop_start = read_32bitLE(0x0C, streamFile);
|
||||
loop_end = read_32bitLE(0x10, streamFile);
|
||||
}
|
||||
|
||||
return init_vgmstream_opus(streamFile, meta_OPUS, offset, num_samples, loop_start, loop_end);
|
||||
fail:
|
||||
return NULL;
|
||||
}
|
||||
|
@ -481,6 +481,7 @@ VGMSTREAM * (*init_vgmstream_functions[])(STREAMFILE *streamFile) = {
|
||||
init_vgmstream_9tav,
|
||||
init_vgmstream_fsb5_fev_bank,
|
||||
init_vgmstream_bwav,
|
||||
init_vgmstream_opus_prototype,
|
||||
|
||||
/* lowest priority metas (should go after all metas, and TXTH should go before raw formats) */
|
||||
init_vgmstream_txth, /* proper parsers should supersede TXTH, once added */
|
||||
|
Loading…
Reference in New Issue
Block a user