diff options
-rw-r--r-- | src/crossfade.c | 5 | ||||
-rw-r--r-- | src/crossfade.h | 1 | ||||
-rw-r--r-- | src/player_thread.c | 1 |
3 files changed, 5 insertions, 2 deletions
diff --git a/src/crossfade.c b/src/crossfade.c index a21b05fa2..fb3515fc4 100644 --- a/src/crossfade.c +++ b/src/crossfade.c @@ -18,7 +18,6 @@ */ #include "crossfade.h" -#include "audio.h" #include "pcm_mix.h" #include "pipe.h" #include "audio_format.h" @@ -29,12 +28,14 @@ unsigned cross_fade_calc(float duration, float total_time, const struct audio_format *af, + const struct audio_format *old_format, unsigned max_chunks) { unsigned int chunks; if (duration <= 0 || duration >= total_time || - !isCurrentAudioFormat(af)) + /* we can't crossfade when the audio formats are different */ + !audio_format_equals(af, old_format)) return 0; assert(duration > 0); diff --git a/src/crossfade.h b/src/crossfade.h index 34ddcb433..31495f806 100644 --- a/src/crossfade.h +++ b/src/crossfade.h @@ -25,6 +25,7 @@ struct music_chunk; unsigned cross_fade_calc(float duration, float total_time, const struct audio_format *af, + const struct audio_format *old_format, unsigned max_chunks); void cross_fade_apply(struct music_chunk *a, const struct music_chunk *b, diff --git a/src/player_thread.c b/src/player_thread.c index b1b08c52d..239fbab2d 100644 --- a/src/player_thread.c +++ b/src/player_thread.c @@ -403,6 +403,7 @@ static void do_play(void) crossFadeChunks = cross_fade_calc(pc.cross_fade_seconds, dc.total_time, &dc.out_audio_format, + &play_audio_format, music_pipe_size() - pc.buffered_before_play); if (crossFadeChunks > 0) { |