summaryrefslogtreecommitdiff
path: root/streamer.c
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2011-05-09 21:05:32 +0200
committerGravatar waker <wakeroid@gmail.com>2011-05-09 21:05:32 +0200
commit63c4e2c81e953b8ea11db12f5fe74dd50639aa1a (patch)
tree785baacae25aa9fc6c305d45618b3268a2289bff /streamer.c
parent21eb8ca30e68796bdff899cbbb18ecb8b7bf8985 (diff)
apply replaygain of streaming_track instead of playing_track
Diffstat (limited to 'streamer.c')
-rw-r--r--streamer.c37
1 files changed, 23 insertions, 14 deletions
diff --git a/streamer.c b/streamer.c
index f3c8c449..9cdadf5e 100644
--- a/streamer.c
+++ b/streamer.c
@@ -136,6 +136,23 @@ streamer_abort_files (void) {
}
}
+
+void
+streamer_set_replaygain (playItem_t *it) {
+ // setup replaygain
+ pl_lock ();
+ const char *gain;
+ gain = pl_find_meta (it, ":REPLAYGAIN_ALBUMGAIN");
+ float albumgain = gain ? atof (gain) : 1000;
+ float albumpeak = pl_get_item_replaygain (it, DDB_REPLAYGAIN_ALBUMPEAK);
+
+ gain = pl_find_meta (it, ":REPLAYGAIN_TRACKGAIN");
+ float trackgain = gain ? atof (gain) : 1000;
+ float trackpeak = pl_get_item_replaygain (it, DDB_REPLAYGAIN_TRACKPEAK);
+ pl_unlock ();
+ replaygain_set_values (albumgain, albumpeak, trackgain, trackpeak);
+}
+
static void
send_songstarted (playItem_t *trk) {
ddb_event_track_t *pev = (ddb_event_track_t *)messagepump_event_alloc (DB_EV_SONGSTARTED);
@@ -193,19 +210,6 @@ streamer_start_playback (playItem_t *from, playItem_t *it) {
if (playing_track) {
pl_item_ref (playing_track);
- // setup replaygain
- pl_lock ();
- const char *gain;
- gain = pl_find_meta (playing_track, ":REPLAYGAIN_ALBUMGAIN");
- float albumgain = gain ? atof (gain) : 1000;
- float albumpeak = pl_get_item_replaygain (playing_track, DDB_REPLAYGAIN_ALBUMPEAK);
-
- gain = pl_find_meta (playing_track, ":REPLAYGAIN_TRACKGAIN");
- float trackgain = gain ? atof (gain) : 1000;
- float trackpeak = pl_get_item_replaygain (playing_track, DDB_REPLAYGAIN_TRACKPEAK);
- pl_unlock ();
- replaygain_set_values (albumgain, albumpeak, trackgain, trackpeak);
-
playing_track->played = 1;
started_timestamp = time (NULL);
trace ("from=%p (%s), to=%p (%s) [2]\n", from, from ? pl_find_meta (from, ":URI") : "null", it, it ? pl_find_meta (it, ":URI") : "null");
@@ -770,7 +774,11 @@ streamer_set_current (playItem_t *it) {
pl_item_unref (streaming_track);
}
streaming_track = it;
- pl_item_ref (streaming_track);
+ if (streaming_track) {
+ pl_item_ref (streaming_track);
+ streamer_set_replaygain (streaming_track);
+ }
+
mutex_unlock (decodemutex);
trace ("bps=%d, channels=%d, samplerate=%d\n", new_fileinfo->fmt.bps, new_fileinfo->fmt.channels, new_fileinfo->fmt.samplerate);
}
@@ -1148,6 +1156,7 @@ streamer_thread (void *ctx) {
streaming_track = playing_track;
if (streaming_track) {
pl_item_ref (streaming_track);
+ streamer_set_replaygain (streaming_track);
}
mutex_unlock (decodemutex);