diff --git a/Plugins/vgmstream/vgmstream/VGMDecoder.h b/Plugins/vgmstream/vgmstream/VGMDecoder.h index 1b2d086ca..a15ace51b 100644 --- a/Plugins/vgmstream/vgmstream/VGMDecoder.h +++ b/Plugins/vgmstream/vgmstream/VGMDecoder.h @@ -28,6 +28,7 @@ @interface VGMDecoder : NSObject { VGMSTREAM *stream; + BOOL playForever; int sampleRate; int channels; int bitrate; diff --git a/Plugins/vgmstream/vgmstream/VGMDecoder.m b/Plugins/vgmstream/vgmstream/VGMDecoder.m index 43de625ac..4e74530ef 100644 --- a/Plugins/vgmstream/vgmstream/VGMDecoder.m +++ b/Plugins/vgmstream/vgmstream/VGMDecoder.m @@ -198,12 +198,27 @@ if ( !stream ) return NO; + vgmstream_mixing_autodownmix(stream, 6); + + playForever = IsRepeatOneSet(); + sampleRate = stream->sample_rate; channels = stream->channels; totalFrames = get_vgmstream_play_samples( 2.0, 10.0, 10.0, stream ); framesFade = stream->loop_flag ? sampleRate * 10 : 0; framesLength = totalFrames - framesFade; + vgmstream_cfg_t vcfg = {0}; + + vcfg.allow_play_forever = 1; + vcfg.play_forever = playForever; + vcfg.loop_count = 2; + vcfg.fade_time = 10; + vcfg.fade_delay = 0; + vcfg.ignore_loop = 0; + + vgmstream_apply_config(stream, &vcfg); + framesRead = 0; bitrate = get_vgmstream_average_bitrate(stream); @@ -232,6 +247,11 @@ { BOOL repeatone = IsRepeatOneSet(); + if (repeatone != playForever) { + playForever = repeatone; + vgmstream_set_play_forever(stream, repeatone); + } + BOOL loopokay = repeatone && stream->loop_flag; if (!loopokay) {