Playback: Fix problems with crossfade on short tracks.

Addresses issues brought up in this thread:
http://forums.rockbox.org/index.php/topic,51605.0.html

While we're at it, improve the quality with a sample-level fader.

Change-Id: I73dde60d6858a1c9042812e26d490739e3906a1e
This commit is contained in:
Michael Sevakis 2016-12-28 00:06:39 -05:00
parent dbee727664
commit 6c837394ca
2 changed files with 363 additions and 294 deletions

File diff suppressed because it is too large Load diff

View file

@ -50,13 +50,10 @@ void pcmbuf_start_track_change(enum pcm_track_change_type type);
/* Crossfade */ /* Crossfade */
#ifdef HAVE_CROSSFADE #ifdef HAVE_CROSSFADE
bool pcmbuf_is_crossfade_active(void);
void pcmbuf_request_crossfade_enable(int setting); void pcmbuf_request_crossfade_enable(int setting);
bool pcmbuf_is_same_size(void); bool pcmbuf_is_same_size(void);
#else #else
/* Dummy functions with sensible returns */ /* Dummy functions with sensible returns */
static FORCE_INLINE bool pcmbuf_is_crossfade_active(void)
{ return false; }
static FORCE_INLINE void pcmbuf_request_crossfade_enable(bool on_off) static FORCE_INLINE void pcmbuf_request_crossfade_enable(bool on_off)
{ return; (void)on_off; } { return; (void)on_off; }
static FORCE_INLINE bool pcmbuf_is_same_size(void) static FORCE_INLINE bool pcmbuf_is_same_size(void)