1
0
Fork 0
forked from len0rd/rockbox

recording.c

1) fix bug in fmt_gain()
2) take into account steps field of sound_settings_info struct when inc/dec gain

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29593 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Marcin Bukat 2011-03-15 22:35:04 +00:00
parent c24c3ebe0f
commit 2e4259e497

View file

@ -308,12 +308,30 @@ static void set_gain(void)
#ifdef HAVE_MIC_REC #ifdef HAVE_MIC_REC
if(global_settings.rec_source == AUDIO_SRC_MIC) if(global_settings.rec_source == AUDIO_SRC_MIC)
{ {
if (global_settings.rec_mic_gain > sound_max(SOUND_MIC_GAIN))
global_settings.rec_mic_gain = sound_max(SOUND_MIC_GAIN);
if (global_settings.rec_mic_gain < sound_min(SOUND_MIC_GAIN))
global_settings.rec_mic_gain = sound_min(SOUND_MIC_GAIN);
audio_set_recording_gain(global_settings.rec_mic_gain, audio_set_recording_gain(global_settings.rec_mic_gain,
0, AUDIO_GAIN_MIC); 0, AUDIO_GAIN_MIC);
} }
else else
#endif /* MIC */ #endif /* MIC */
{ {
if (global_settings.rec_left_gain > sound_max(SOUND_LEFT_GAIN))
global_settings.rec_left_gain = sound_max(SOUND_LEFT_GAIN);
if (global_settings.rec_left_gain < sound_min(SOUND_LEFT_GAIN))
global_settings.rec_left_gain = sound_min(SOUND_LEFT_GAIN);
if (global_settings.rec_right_gain > sound_max(SOUND_RIGHT_GAIN))
global_settings.rec_right_gain = sound_max(SOUND_RIGHT_GAIN);
if (global_settings.rec_right_gain < sound_min(SOUND_RIGHT_GAIN))
global_settings.rec_right_gain = sound_min(SOUND_RIGHT_GAIN);
/* AUDIO_SRC_LINEIN, AUDIO_SRC_FMRADIO, AUDIO_SRC_SPDIF */ /* AUDIO_SRC_LINEIN, AUDIO_SRC_FMRADIO, AUDIO_SRC_SPDIF */
audio_set_recording_gain(global_settings.rec_left_gain, audio_set_recording_gain(global_settings.rec_left_gain,
global_settings.rec_right_gain, global_settings.rec_right_gain,
@ -572,6 +590,8 @@ static const char* const fmtstr[] =
"%c%d.%02d %s " /* 2 decimals */ "%c%d.%02d %s " /* 2 decimals */
}; };
static const char factor[] = {1, 10, 100};
static char *fmt_gain(int snd, int val, char *str, int len) static char *fmt_gain(int snd, int val, char *str, int len)
{ {
int i, d, numdec; int i, d, numdec;
@ -589,8 +609,8 @@ static char *fmt_gain(int snd, int val, char *str, int len)
if(numdec) if(numdec)
{ {
i = val / (10*numdec); i = val / factor[numdec];
d = val % (10*numdec); d = val % factor[numdec];
snprintf(str, len, fmtstr[numdec], sign, i, d, unit); snprintf(str, len, fmtstr[numdec], sign, i, d, unit);
} }
else else
@ -1402,37 +1422,34 @@ bool recording_screen(bool no_source)
switch (listid_to_enum[gui_synclist_get_sel_pos(&lists)]) switch (listid_to_enum[gui_synclist_get_sel_pos(&lists)])
{ {
case ITEM_VOLUME: case ITEM_VOLUME:
global_settings.volume++; global_settings.volume += sound_steps(SOUND_VOLUME);
setvol(); setvol();
break; break;
case ITEM_GAIN: case ITEM_GAIN:
#ifdef HAVE_MIC_REC #ifdef HAVE_MIC_REC
if(global_settings.rec_source == AUDIO_SRC_MIC) if(global_settings.rec_source == AUDIO_SRC_MIC)
{ {
if(global_settings.rec_mic_gain < global_settings.rec_mic_gain +=
sound_max(SOUND_MIC_GAIN)) sound_steps(SOUND_MIC_GAIN);
global_settings.rec_mic_gain++;
} }
else else
#endif /* MIC */ #endif /* MIC */
{ {
if(global_settings.rec_left_gain < global_settings.rec_left_gain +=
sound_max(SOUND_LEFT_GAIN)) sound_steps(SOUND_LEFT_GAIN);
global_settings.rec_left_gain++; global_settings.rec_right_gain +=
if(global_settings.rec_right_gain < sound_steps(SOUND_RIGHT_GAIN);
sound_max(SOUND_RIGHT_GAIN))
global_settings.rec_right_gain++;
} }
break; break;
case ITEM_GAIN_L: case ITEM_GAIN_L:
if(global_settings.rec_left_gain < global_settings.rec_left_gain +=
sound_max(SOUND_LEFT_GAIN)) sound_steps(SOUND_LEFT_GAIN);
global_settings.rec_left_gain++;
break; break;
case ITEM_GAIN_R: case ITEM_GAIN_R:
if(global_settings.rec_right_gain < global_settings.rec_right_gain +=
sound_max(SOUND_RIGHT_GAIN)) sound_steps(SOUND_RIGHT_GAIN);
global_settings.rec_right_gain++;
break; break;
#ifdef HAVE_AGC #ifdef HAVE_AGC
case ITEM_AGC_MODE: case ITEM_AGC_MODE:
@ -1475,37 +1492,37 @@ bool recording_screen(bool no_source)
switch (listid_to_enum[gui_synclist_get_sel_pos(&lists)]) switch (listid_to_enum[gui_synclist_get_sel_pos(&lists)])
{ {
case ITEM_VOLUME: case ITEM_VOLUME:
global_settings.volume--; global_settings.volume -= sound_steps(SOUND_VOLUME);
/* check range and update */
setvol(); setvol();
break; break;
case ITEM_GAIN: case ITEM_GAIN:
#ifdef HAVE_MIC_REC #ifdef HAVE_MIC_REC
if(global_settings.rec_source == AUDIO_SRC_MIC) if(global_settings.rec_source == AUDIO_SRC_MIC)
{ {
if(global_settings.rec_mic_gain > global_settings.rec_mic_gain -=
sound_min(SOUND_MIC_GAIN)) sound_steps(SOUND_MIC_GAIN);
global_settings.rec_mic_gain--;
} }
else else
#endif /* MIC */ #endif /* MIC */
{ {
if(global_settings.rec_left_gain > global_settings.rec_left_gain -=
sound_min(SOUND_LEFT_GAIN)) sound_steps(SOUND_LEFT_GAIN);
global_settings.rec_left_gain--;
if(global_settings.rec_right_gain > global_settings.rec_right_gain -=
sound_min(SOUND_RIGHT_GAIN)) sound_steps(SOUND_RIGHT_GAIN);
global_settings.rec_right_gain--;
} }
break; break;
case ITEM_GAIN_L: case ITEM_GAIN_L:
if(global_settings.rec_left_gain > global_settings.rec_left_gain -=
sound_min(SOUND_LEFT_GAIN)) sound_steps(SOUND_LEFT_GAIN);
global_settings.rec_left_gain--;
break; break;
case ITEM_GAIN_R: case ITEM_GAIN_R:
if(global_settings.rec_right_gain > global_settings.rec_right_gain -=
sound_min(SOUND_RIGHT_GAIN)) sound_steps(SOUND_RIGHT_GAIN);
global_settings.rec_right_gain--;
break; break;
#ifdef HAVE_AGC #ifdef HAVE_AGC
case ITEM_AGC_MODE: case ITEM_AGC_MODE: