From 58880c00eeca254a5391dd61a920081bb16bc2c1 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 5 Jul 2014 16:45:41 +0200 Subject: demux: make replaygain per-track It's unlikely that files with multiple audio tracks and with replaygain actually happen, but this change might help avoid minor corner cases with later changes. --- demux/demux.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'demux/demux.c') diff --git a/demux/demux.c b/demux/demux.c index c45575f755..92a68d260e 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -429,8 +429,7 @@ static void demux_export_replaygain(demuxer_t *demuxer) { float tg, tp, ag, ap; - if (!demuxer->replaygain_data && - !decode_gain(demuxer, "REPLAYGAIN_TRACK_GAIN", &tg) && + if (!decode_gain(demuxer, "REPLAYGAIN_TRACK_GAIN", &tg) && !decode_peak(demuxer, "REPLAYGAIN_TRACK_PEAK", &tp) && !decode_gain(demuxer, "REPLAYGAIN_ALBUM_GAIN", &ag) && !decode_peak(demuxer, "REPLAYGAIN_ALBUM_PEAK", &ap)) @@ -442,7 +441,11 @@ static void demux_export_replaygain(demuxer_t *demuxer) rgain->album_gain = ag; rgain->album_peak = ap; - demuxer->replaygain_data = rgain; + for (int n = 0; n < demuxer->num_streams; n++) { + struct sh_stream *sh = demuxer->streams[n]; + if (sh->audio && !sh->audio->replaygain_data) + sh->audio->replaygain_data = rgain; + } } } -- cgit v1.2.3