Get rid of tdspeed_enabled in struct dsp_config and use the global_settings member instead. That one needs to be checked in tdspeed_init() as well, else the buffers are always allocated.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21305 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Thomas Martitz 2009-06-16 00:59:24 +00:00
parent 3866755d28
commit cb57a568e8
2 changed files with 18 additions and 14 deletions

View file

@ -161,7 +161,6 @@ struct dsp_config
int sample_depth;
int sample_bytes;
int stereo_mode;
bool tdspeed_enabled; /* User has enabled timestretch */
int tdspeed_percent; /* Speed % */
bool tdspeed_active; /* Timestretch is in use */
int frac_bits;
@ -266,12 +265,12 @@ void sound_set_pitch(int permille)
AUDIO_DSP.codec_frequency);
}
void tdspeed_setup(struct dsp_config *dspc)
static void tdspeed_setup(struct dsp_config *dspc)
{
dspc->tdspeed_active = false;
if (dspc == &AUDIO_DSP)
{
if (!dspc->tdspeed_enabled)
if(!dsp_timestretch_enabled())
return;
if (dspc->tdspeed_percent == 0)
dspc->tdspeed_percent = 100;
@ -304,7 +303,7 @@ void dsp_timestretch_enable(bool enable)
if (big_sample_buf_count < 0)
big_sample_buf_count = 0;
}
AUDIO_DSP.tdspeed_enabled = enable;
global_settings.timestretch_enabled = enable;
tdspeed_setup(&AUDIO_DSP);
}
@ -321,7 +320,7 @@ int dsp_get_timestretch()
bool dsp_timestretch_enabled()
{
return (AUDIO_DSP.tdspeed_enabled && big_sample_buf_count > 0);
return (global_settings.timestretch_enabled && big_sample_buf_count > 0);
}
/* Convert count samples to the internal format, if needed. Updates src

View file

@ -28,6 +28,7 @@
#include "debug.h"
#include "system.h"
#include "tdspeed.h"
#include "settings.h"
#define assert(cond)
@ -56,15 +57,18 @@ static int32_t *outbuf[2] = { NULL, NULL };
void tdspeed_init()
{
/* Allocate buffers */
if (overlap_buffer[0] == NULL)
overlap_buffer[0] = (int32_t *) buffer_alloc(FIXED_BUFSIZE * sizeof(int32_t));
if (overlap_buffer[1] == NULL)
overlap_buffer[1] = (int32_t *) buffer_alloc(FIXED_BUFSIZE * sizeof(int32_t));
if (outbuf[0] == NULL)
outbuf[0] = (int32_t *) buffer_alloc(TDSPEED_OUTBUFSIZE * sizeof(int32_t));
if (outbuf[1] == NULL)
outbuf[1] = (int32_t *) buffer_alloc(TDSPEED_OUTBUFSIZE * sizeof(int32_t));
if (global_settings.timestretch_enabled)
{
/* Allocate buffers */
if (overlap_buffer[0] == NULL)
overlap_buffer[0] = (int32_t *) buffer_alloc(FIXED_BUFSIZE * sizeof(int32_t));
if (overlap_buffer[1] == NULL)
overlap_buffer[1] = (int32_t *) buffer_alloc(FIXED_BUFSIZE * sizeof(int32_t));
if (outbuf[0] == NULL)
outbuf[0] = (int32_t *) buffer_alloc(TDSPEED_OUTBUFSIZE * sizeof(int32_t));
if (outbuf[1] == NULL)
outbuf[1] = (int32_t *) buffer_alloc(TDSPEED_OUTBUFSIZE * sizeof(int32_t));
}
}
@ -327,3 +331,4 @@ int tdspeed_doit(int32_t *src[], int count)
src[1] = outbuf[1];
return count;
}