diff options
author | waker <wakeroid@gmail.com> | 2011-05-09 21:05:32 +0200 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2011-05-09 21:05:32 +0200 |
commit | 63c4e2c81e953b8ea11db12f5fe74dd50639aa1a (patch) | |
tree | 785baacae25aa9fc6c305d45618b3268a2289bff /streamer.c | |
parent | 21eb8ca30e68796bdff899cbbb18ecb8b7bf8985 (diff) |
apply replaygain of streaming_track instead of playing_track
Diffstat (limited to 'streamer.c')
-rw-r--r-- | streamer.c | 37 |
1 files changed, 23 insertions, 14 deletions
@@ -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); |