Use libvorbis instead of FFmpeg

This commit is contained in:
bnnm 2019-10-20 19:50:35 +02:00
parent c4b259f5d8
commit abbe2ae80f
4 changed files with 20 additions and 25 deletions

View File

@ -379,22 +379,17 @@ static VGMSTREAM * init_vgmstream_ubi_bao_base(ubi_bao_header * bao, STREAMFILE
vgmstream->layout_type = layout_none; vgmstream->layout_type = layout_none;
break; break;
} }
#endif
#ifdef VGM_USE_VORBIS
case FMT_OGG: { case FMT_OGG: {
ffmpeg_codec_data *ffmpeg_data; vgmstream->codec_data = init_ogg_vorbis(streamData, start_offset, bao->stream_size, NULL);
if (!vgmstream->codec_data) goto fail;
ffmpeg_data = init_ffmpeg_offset(streamData, start_offset, bao->stream_size); vgmstream->coding_type = coding_OGG_VORBIS;
if (!ffmpeg_data) goto fail;
vgmstream->codec_data = ffmpeg_data;
vgmstream->coding_type = coding_FFmpeg;
vgmstream->layout_type = layout_none; vgmstream->layout_type = layout_none;
vgmstream->num_samples = bao->num_samples; /* ffmpeg_data->totalSamples */ vgmstream->num_samples = bao->num_samples; /* same as Ogg samples */
VGM_ASSERT(bao->num_samples != ffmpeg_data->totalSamples,
"UBI BAO: header samples %i vs ffmpeg %i differ\n", bao->num_samples, (uint32_t)ffmpeg_data->totalSamples);
break; break;
} }
#endif #endif
default: default:
goto fail; goto fail;

View File

@ -661,14 +661,12 @@ static VGMSTREAM * init_vgmstream_ubi_sb_base(ubi_sb_header *sb, STREAMFILE *str
xma_fix_raw_samples_ch(vgmstream, streamData, start_offset, sb->stream_size, sb->channels, 0, 0); xma_fix_raw_samples_ch(vgmstream, streamData, start_offset, sb->stream_size, sb->channels, 0, 0);
break; break;
} }
#endif
#ifdef VGM_USE_VORBIS
case FMT_OGG: { case FMT_OGG: {
ffmpeg_codec_data *ffmpeg_data; vgmstream->codec_data = init_ogg_vorbis(streamData, start_offset, sb->stream_size, NULL);
if (!vgmstream->codec_data) goto fail;
ffmpeg_data = init_ffmpeg_offset(streamData, start_offset, sb->stream_size); vgmstream->coding_type = coding_OGG_VORBIS;
if ( !ffmpeg_data ) goto fail;
vgmstream->codec_data = ffmpeg_data;
vgmstream->coding_type = coding_FFmpeg;
vgmstream->layout_type = layout_none; vgmstream->layout_type = layout_none;
break; break;
} }

View File

@ -540,11 +540,12 @@ VGMSTREAM * init_vgmstream_xwb(STREAMFILE *streamFile) {
vgmstream->layout_type = layout_none; vgmstream->layout_type = layout_none;
break; break;
} }
#endif
#ifdef VGM_USE_VORBIS
case OGG: { /* Oddworld: Strangers Wrath (iOS/Android) extension */ case OGG: { /* Oddworld: Strangers Wrath (iOS/Android) extension */
vgmstream->codec_data = init_ffmpeg_offset(streamFile, xwb.stream_offset, xwb.stream_size); vgmstream->codec_data = init_ogg_vorbis(streamFile, xwb.stream_offset, xwb.stream_size, NULL);
if ( !vgmstream->codec_data ) goto fail; if (!vgmstream->codec_data) goto fail;
vgmstream->coding_type = coding_FFmpeg; vgmstream->coding_type = coding_OGG_VORBIS;
vgmstream->layout_type = layout_none; vgmstream->layout_type = layout_none;
break; break;
} }

View File

@ -97,14 +97,15 @@ VGMSTREAM * init_vgmstream_xwc(STREAMFILE *streamFile) {
xma_fix_raw_samples(vgmstream, streamFile, start_offset,data_size, 0, 0,0); /* samples are ok, fix delay */ xma_fix_raw_samples(vgmstream, streamFile, start_offset,data_size, 0, 0,0); /* samples are ok, fix delay */
break; break;
} }
#endif
#ifdef VGM_USE_VORBIS
case 0x564F5242: { /* "VORB" (PC) */ case 0x564F5242: { /* "VORB" (PC) */
start_offset = 0x30; start_offset = 0x30;
data_size = data_size - start_offset; data_size = data_size - start_offset;
vgmstream->codec_data = init_ffmpeg_offset(streamFile, start_offset,data_size); vgmstream->codec_data = init_ogg_vorbis(streamFile, start_offset, data_size, NULL);
if ( !vgmstream->codec_data ) goto fail; if ( !vgmstream->codec_data ) goto fail;
vgmstream->coding_type = coding_FFmpeg; vgmstream->coding_type = coding_OGG_VORBIS;
vgmstream->layout_type = layout_none; vgmstream->layout_type = layout_none;
vgmstream->sample_rate = read_32bitLE(start_offset + 0x28, streamFile); vgmstream->sample_rate = read_32bitLE(start_offset + 0x28, streamFile);