summaryrefslogtreecommitdiffstats
path: root/demux/demux.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-07-05 16:45:41 +0200
committerwm4 <wm4@nowhere>2014-07-05 17:07:14 +0200
commit58880c00eeca254a5391dd61a920081bb16bc2c1 (patch)
tree56f9bb23059b96c0d7e0eaf58b7ae44f36b0af84 /demux/demux.c
parenta97256c1d58fae714ae94301ab09044081d08c8e (diff)
downloadmpv-58880c00eeca254a5391dd61a920081bb16bc2c1.tar.bz2
mpv-58880c00eeca254a5391dd61a920081bb16bc2c1.tar.xz
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.
Diffstat (limited to 'demux/demux.c')
-rw-r--r--demux/demux.c9
1 files changed, 6 insertions, 3 deletions
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;
+ }
}
}