mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 21:22:39 -05:00
Fix some hardcoded assumptions in recording.c
There were some hardcoded branches handling left/right gain for line-in or FM radio inputs. If the target only has a microphone, these bits are useless and cause compile errors due to missing audiohw settings, etc. This patch #ifdef's them out. Change-Id: If6a6918b2fabb256261c84651803bbf44deacb1a
This commit is contained in:
parent
8e65f1db55
commit
acc7d16e3b
2 changed files with 103 additions and 60 deletions
|
|
@ -58,6 +58,8 @@ static int pm_max_right;
|
||||||
#if defined(HAVE_AGC) || defined(HAVE_HISTOGRAM)
|
#if defined(HAVE_AGC) || defined(HAVE_HISTOGRAM)
|
||||||
static int pm_peakhold_left; /* max. peak values between peakhold calls */
|
static int pm_peakhold_left; /* max. peak values between peakhold calls */
|
||||||
static int pm_peakhold_right; /* used for AGC and histogram display */
|
static int pm_peakhold_right; /* used for AGC and histogram display */
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_HISTOGRAM
|
||||||
static long next_histogram_update;
|
static long next_histogram_update;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,9 @@
|
||||||
#include "splash.h"
|
#include "splash.h"
|
||||||
#include "screen_access.h"
|
#include "screen_access.h"
|
||||||
#include "action.h"
|
#include "action.h"
|
||||||
|
#ifdef HAVE_FMRADIO_REC
|
||||||
# include "radio.h"
|
# include "radio.h"
|
||||||
|
#endif
|
||||||
#include "viewport.h"
|
#include "viewport.h"
|
||||||
#include "list.h"
|
#include "list.h"
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
|
|
@ -233,9 +235,9 @@ static long hist_time = 0;
|
||||||
|
|
||||||
static void set_gain(void)
|
static void set_gain(void)
|
||||||
{
|
{
|
||||||
|
switch(global_settings.rec_source) {
|
||||||
#ifdef HAVE_MIC_REC
|
#ifdef HAVE_MIC_REC
|
||||||
if(global_settings.rec_source == AUDIO_SRC_MIC)
|
case AUDIO_SRC_MIC:
|
||||||
{
|
|
||||||
if (global_settings.rec_mic_gain > sound_max(SOUND_MIC_GAIN))
|
if (global_settings.rec_mic_gain > sound_max(SOUND_MIC_GAIN))
|
||||||
global_settings.rec_mic_gain = sound_max(SOUND_MIC_GAIN);
|
global_settings.rec_mic_gain = sound_max(SOUND_MIC_GAIN);
|
||||||
|
|
||||||
|
|
@ -244,10 +246,11 @@ static void set_gain(void)
|
||||||
|
|
||||||
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);
|
||||||
}
|
break;
|
||||||
else
|
|
||||||
#endif /* MIC */
|
#endif /* MIC */
|
||||||
{
|
#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
|
||||||
|
HAVE_LINE_REC_(case AUDIO_SRC_LINEIN:)
|
||||||
|
HAVE_FMRADIO_REC_(case AUDIO_SRC_FMRADIO:)
|
||||||
if (global_settings.rec_left_gain > sound_max(SOUND_LEFT_GAIN))
|
if (global_settings.rec_left_gain > sound_max(SOUND_LEFT_GAIN))
|
||||||
global_settings.rec_left_gain = sound_max(SOUND_LEFT_GAIN);
|
global_settings.rec_left_gain = sound_max(SOUND_LEFT_GAIN);
|
||||||
|
|
||||||
|
|
@ -260,11 +263,13 @@ static void set_gain(void)
|
||||||
if (global_settings.rec_right_gain < sound_min(SOUND_RIGHT_GAIN))
|
if (global_settings.rec_right_gain < sound_min(SOUND_RIGHT_GAIN))
|
||||||
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_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,
|
||||||
AUDIO_GAIN_LINEIN);
|
AUDIO_GAIN_LINEIN);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* reset the clipping indicators */
|
/* reset the clipping indicators */
|
||||||
peak_meter_set_clip_hold(global_settings.peak_meter_clip_hold);
|
peak_meter_set_clip_hold(global_settings.peak_meter_clip_hold);
|
||||||
update_list = true;
|
update_list = true;
|
||||||
|
|
@ -332,6 +337,11 @@ static bool agc_gain_is_max(bool left, bool right)
|
||||||
|
|
||||||
static void change_recording_gain(bool increment, bool left, bool right)
|
static void change_recording_gain(bool increment, bool left, bool right)
|
||||||
{
|
{
|
||||||
|
#if !defined(HAVE_LINE_REC) || !defined(HAVE_FMRADIO_REC)
|
||||||
|
(void)left;
|
||||||
|
(void)right;
|
||||||
|
#endif
|
||||||
|
|
||||||
int factor = (increment ? 1 : -1);
|
int factor = (increment ? 1 : -1);
|
||||||
|
|
||||||
switch (global_settings.rec_source)
|
switch (global_settings.rec_source)
|
||||||
|
|
@ -789,26 +799,30 @@ static const char* reclist_get_name(int selected_item, void * data,
|
||||||
buf2, sizeof(buf2)));
|
buf2, sizeof(buf2)));
|
||||||
break;
|
break;
|
||||||
case ITEM_GAIN:
|
case ITEM_GAIN:
|
||||||
|
switch(global_settings.rec_source) {
|
||||||
#ifdef HAVE_MIC_REC
|
#ifdef HAVE_MIC_REC
|
||||||
if(global_settings.rec_source == AUDIO_SRC_MIC)
|
case AUDIO_SRC_MIC:
|
||||||
{
|
|
||||||
/* Draw MIC recording gain */
|
/* Draw MIC recording gain */
|
||||||
snprintf(buffer, buffer_len, "%s: %s", str(LANG_GAIN),
|
snprintf(buffer, buffer_len, "%s: %s", str(LANG_GAIN),
|
||||||
fmt_gain(SOUND_MIC_GAIN,
|
fmt_gain(SOUND_MIC_GAIN,
|
||||||
global_settings.rec_mic_gain,
|
global_settings.rec_mic_gain,
|
||||||
buf2, sizeof(buf2)));
|
buf2, sizeof(buf2)));
|
||||||
}
|
break;
|
||||||
else
|
|
||||||
#endif /* MIC */
|
#endif /* MIC */
|
||||||
{
|
#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
|
||||||
|
HAVE_LINE_REC_(case AUDIO_SRC_LINEIN:)
|
||||||
|
HAVE_FMRADIO_REC_(case AUDIO_SRC_FMRADIO:) {
|
||||||
int avg_gain = (global_settings.rec_left_gain +
|
int avg_gain = (global_settings.rec_left_gain +
|
||||||
global_settings.rec_right_gain) / 2;
|
global_settings.rec_right_gain) / 2;
|
||||||
snprintf(buffer, buffer_len, "%s: %s", str(LANG_GAIN),
|
snprintf(buffer, buffer_len, "%s: %s", str(LANG_GAIN),
|
||||||
fmt_gain(SOUND_LEFT_GAIN,
|
fmt_gain(SOUND_LEFT_GAIN,
|
||||||
avg_gain,
|
avg_gain,
|
||||||
buf2, sizeof(buf2)));
|
buf2, sizeof(buf2)));
|
||||||
|
} break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
|
||||||
case ITEM_GAIN_L:
|
case ITEM_GAIN_L:
|
||||||
snprintf(buffer, buffer_len, "%s: %s",
|
snprintf(buffer, buffer_len, "%s: %s",
|
||||||
str(LANG_GAIN_LEFT),
|
str(LANG_GAIN_LEFT),
|
||||||
|
|
@ -823,39 +837,43 @@ static const char* reclist_get_name(int selected_item, void * data,
|
||||||
global_settings.rec_right_gain,
|
global_settings.rec_right_gain,
|
||||||
buf2, sizeof(buf2)));
|
buf2, sizeof(buf2)));
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
#ifdef HAVE_AGC
|
#ifdef HAVE_AGC
|
||||||
case ITEM_AGC_MODE:
|
case ITEM_AGC_MODE:
|
||||||
snprintf(buffer, buffer_len, "%s: %s",
|
snprintf(buffer, buffer_len, "%s: %s",
|
||||||
str(LANG_RECORDING_AGC_PRESET),
|
str(LANG_RECORDING_AGC_PRESET),
|
||||||
agc_preset_str[agc_preset]);
|
agc_preset_str[agc_preset]);
|
||||||
break;
|
break;
|
||||||
case ITEM_AGC_MAXDB:
|
case ITEM_AGC_MAXDB: {
|
||||||
if (agc_preset == 0)
|
int bias, which;
|
||||||
|
switch(global_settings.rec_source) {
|
||||||
|
default:
|
||||||
|
#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
|
||||||
|
HAVE_LINE_IN_(case AUDIO_SRC_LINEIN:)
|
||||||
|
HAVE_FMRADIO_IN_(case AUDIO_SRC_FMRADIO:)
|
||||||
|
which = SOUND_LEFT_GAIN;
|
||||||
|
bias = (global_settings.rec_left_gain + global_settings.rec_right_gain) / 2;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_MIC_REC)
|
||||||
|
case AUDIO_SRC_MIC:
|
||||||
|
which = SOUND_MIC_GAIN;
|
||||||
|
bias = global_settings.rec_mic_gain;
|
||||||
|
break;
|
||||||
|
#endif /* MIC*/
|
||||||
|
}
|
||||||
|
|
||||||
|
if(agc_preset == 0) {
|
||||||
snprintf(buffer, buffer_len, "%s: %s",
|
snprintf(buffer, buffer_len, "%s: %s",
|
||||||
str(LANG_RECORDING_AGC_MAXGAIN),
|
str(LANG_RECORDING_AGC_MAXGAIN),
|
||||||
fmt_gain(SOUND_LEFT_GAIN,
|
fmt_gain(which, agc_maxgain, buf2, sizeof(buf2)));
|
||||||
agc_maxgain, buf2, sizeof(buf2)));
|
} else {
|
||||||
#ifdef HAVE_MIC_REC
|
|
||||||
else if (global_settings.rec_source == AUDIO_SRC_MIC)
|
|
||||||
snprintf(buffer, buffer_len, "%s: %s (%s)",
|
snprintf(buffer, buffer_len, "%s: %s (%s)",
|
||||||
str(LANG_RECORDING_AGC_MAXGAIN),
|
str(LANG_RECORDING_AGC_MAXGAIN),
|
||||||
fmt_gain(SOUND_MIC_GAIN,
|
fmt_gain(which, agc_maxgain, buf2, sizeof(buf2)),
|
||||||
agc_maxgain, buf2, sizeof(buf2)),
|
fmt_gain(which, agc_maxgain - bias, buf3, sizeof(buf3)));
|
||||||
fmt_gain(SOUND_MIC_GAIN,
|
}
|
||||||
agc_maxgain - global_settings.rec_mic_gain,
|
} break;
|
||||||
buf3, sizeof(buf3)));
|
|
||||||
else
|
|
||||||
#endif /* MIC */
|
|
||||||
snprintf(buffer, buffer_len, "%s: %s (%s)",
|
|
||||||
str(LANG_RECORDING_AGC_MAXGAIN),
|
|
||||||
fmt_gain(SOUND_LEFT_GAIN,
|
|
||||||
agc_maxgain, buf2, sizeof(buf2)),
|
|
||||||
fmt_gain(SOUND_LEFT_GAIN,
|
|
||||||
agc_maxgain -
|
|
||||||
(global_settings.rec_left_gain +
|
|
||||||
global_settings.rec_right_gain)/2,
|
|
||||||
buf3, sizeof(buf3)));
|
|
||||||
break;
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_SPDIF_REC
|
#ifdef HAVE_SPDIF_REC
|
||||||
case ITEM_SAMPLERATE_D:
|
case ITEM_SAMPLERATE_D:
|
||||||
|
|
@ -902,12 +920,14 @@ static void recording_step_levels(int setting_id, int steps)
|
||||||
global_settings.volume += steps;
|
global_settings.volume += steps;
|
||||||
setvol();
|
setvol();
|
||||||
break;
|
break;
|
||||||
|
#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
|
||||||
case SOUND_LEFT_GAIN:
|
case SOUND_LEFT_GAIN:
|
||||||
global_settings.rec_left_gain += steps;
|
global_settings.rec_left_gain += steps;
|
||||||
break;
|
break;
|
||||||
case SOUND_RIGHT_GAIN:
|
case SOUND_RIGHT_GAIN:
|
||||||
global_settings.rec_right_gain += steps;
|
global_settings.rec_right_gain += steps;
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
#ifdef HAVE_MIC_REC
|
#ifdef HAVE_MIC_REC
|
||||||
case SOUND_MIC_GAIN:
|
case SOUND_MIC_GAIN:
|
||||||
global_settings.rec_mic_gain += steps;
|
global_settings.rec_mic_gain += steps;
|
||||||
|
|
@ -1279,22 +1299,29 @@ bool recording_screen(bool no_source)
|
||||||
recording_step_levels(SOUND_VOLUME, 1);
|
recording_step_levels(SOUND_VOLUME, 1);
|
||||||
break;
|
break;
|
||||||
case ITEM_GAIN:
|
case ITEM_GAIN:
|
||||||
|
switch(global_settings.rec_source) {
|
||||||
#ifdef HAVE_MIC_REC
|
#ifdef HAVE_MIC_REC
|
||||||
if(global_settings.rec_source == AUDIO_SRC_MIC)
|
case AUDIO_SRC_MIC:
|
||||||
recording_step_levels(SOUND_MIC_GAIN, 1);
|
recording_step_levels(SOUND_MIC_GAIN, 1);
|
||||||
else
|
break;
|
||||||
#endif /* MIC */
|
#endif /* MIC */
|
||||||
{
|
#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
|
||||||
|
HAVE_LINE_REC_(case AUDIO_SRC_LINEIN:)
|
||||||
|
HAVE_FMRADIO_REC_(case AUDIO_SRC_FMRADIO:)
|
||||||
recording_step_levels(SOUND_LEFT_GAIN, 1);
|
recording_step_levels(SOUND_LEFT_GAIN, 1);
|
||||||
recording_step_levels(SOUND_RIGHT_GAIN, 1);
|
recording_step_levels(SOUND_RIGHT_GAIN, 1);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
|
||||||
case ITEM_GAIN_L:
|
case ITEM_GAIN_L:
|
||||||
recording_step_levels(SOUND_LEFT_GAIN, 1);
|
recording_step_levels(SOUND_LEFT_GAIN, 1);
|
||||||
break;
|
break;
|
||||||
case ITEM_GAIN_R:
|
case ITEM_GAIN_R:
|
||||||
recording_step_levels(SOUND_RIGHT_GAIN, 1);
|
recording_step_levels(SOUND_RIGHT_GAIN, 1);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
#ifdef HAVE_AGC
|
#ifdef HAVE_AGC
|
||||||
case ITEM_AGC_MODE:
|
case ITEM_AGC_MODE:
|
||||||
agc_preset = MIN(agc_preset + 1, AGC_MODE_SIZE);
|
agc_preset = MIN(agc_preset + 1, AGC_MODE_SIZE);
|
||||||
|
|
@ -1311,19 +1338,22 @@ bool recording_screen(bool no_source)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ITEM_AGC_MAXDB:
|
case ITEM_AGC_MAXDB:
|
||||||
#ifdef HAVE_MIC_REC
|
switch(global_settings.rec_source) {
|
||||||
if (global_settings.rec_source == AUDIO_SRC_MIC)
|
#if defined(HAVE_LINE_IN) || defined(HAVE_FMRADIO_IN)
|
||||||
{
|
HAVE_LINE_IN_(case AUDIO_SRC_LINEIN:)
|
||||||
agc_maxgain = MIN(agc_maxgain + 1,
|
HAVE_FMRADIO_IN_(case AUDIO_SRC_FMRADIO:)
|
||||||
sound_max(SOUND_MIC_GAIN));
|
|
||||||
global_settings.rec_agc_maxgain_mic = agc_maxgain;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif /* MIC */
|
|
||||||
{
|
|
||||||
agc_maxgain = MIN(agc_maxgain + 1,
|
agc_maxgain = MIN(agc_maxgain + 1,
|
||||||
sound_max(SOUND_LEFT_GAIN));
|
sound_max(SOUND_LEFT_GAIN));
|
||||||
global_settings.rec_agc_maxgain_line = agc_maxgain;
|
global_settings.rec_agc_maxgain_line = agc_maxgain;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_MIC_REC
|
||||||
|
case AUDIO_SRC_MIC:
|
||||||
|
agc_maxgain = MIN(agc_maxgain + 1,
|
||||||
|
sound_max(SOUND_MIC_GAIN));
|
||||||
|
global_settings.rec_agc_maxgain_mic = agc_maxgain;
|
||||||
|
break;
|
||||||
|
#endif /* MIC */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif /* HAVE_AGC */
|
#endif /* HAVE_AGC */
|
||||||
|
|
@ -1339,22 +1369,29 @@ bool recording_screen(bool no_source)
|
||||||
recording_step_levels(SOUND_VOLUME, -1);
|
recording_step_levels(SOUND_VOLUME, -1);
|
||||||
break;
|
break;
|
||||||
case ITEM_GAIN:
|
case ITEM_GAIN:
|
||||||
|
switch(global_settings.rec_source) {
|
||||||
#ifdef HAVE_MIC_REC
|
#ifdef HAVE_MIC_REC
|
||||||
if(global_settings.rec_source == AUDIO_SRC_MIC)
|
case AUDIO_SRC_MIC:
|
||||||
recording_step_levels(SOUND_MIC_GAIN, -1);
|
recording_step_levels(SOUND_MIC_GAIN, -1);
|
||||||
else
|
break;
|
||||||
#endif /* MIC */
|
#endif /* MIC */
|
||||||
{
|
#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
|
||||||
|
HAVE_LINE_REC_(case AUDIO_SRC_LINEIN:)
|
||||||
|
HAVE_FMRADIO_REC_(case AUDIO_SRC_FMRADIO:)
|
||||||
recording_step_levels(SOUND_LEFT_GAIN, -1);
|
recording_step_levels(SOUND_LEFT_GAIN, -1);
|
||||||
recording_step_levels(SOUND_RIGHT_GAIN, -1);
|
recording_step_levels(SOUND_RIGHT_GAIN, -1);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
|
||||||
case ITEM_GAIN_L:
|
case ITEM_GAIN_L:
|
||||||
recording_step_levels(SOUND_LEFT_GAIN, -1);
|
recording_step_levels(SOUND_LEFT_GAIN, -1);
|
||||||
break;
|
break;
|
||||||
case ITEM_GAIN_R:
|
case ITEM_GAIN_R:
|
||||||
recording_step_levels(SOUND_RIGHT_GAIN, -1);
|
recording_step_levels(SOUND_RIGHT_GAIN, -1);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
#ifdef HAVE_AGC
|
#ifdef HAVE_AGC
|
||||||
case ITEM_AGC_MODE:
|
case ITEM_AGC_MODE:
|
||||||
agc_preset = MAX(agc_preset - 1, 0);
|
agc_preset = MAX(agc_preset - 1, 0);
|
||||||
|
|
@ -1371,18 +1408,22 @@ bool recording_screen(bool no_source)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ITEM_AGC_MAXDB:
|
case ITEM_AGC_MAXDB:
|
||||||
#ifdef HAVE_MIC_REC
|
switch(global_settings.rec_source) {
|
||||||
if (global_settings.rec_source == AUDIO_SRC_MIC)
|
#if defined(HAVE_LINE_IN) || defined(HAVE_FMRADIO_IN)
|
||||||
{
|
HAVE_LINE_IN_(case AUDIO_SRC_LINEIN:)
|
||||||
agc_maxgain = MAX(agc_maxgain - 1,
|
HAVE_FMRADIO_IN_(case AUDIO_SRC_FMRADIO:)
|
||||||
sound_min(SOUND_MIC_GAIN));
|
|
||||||
global_settings.rec_agc_maxgain_mic = agc_maxgain;
|
|
||||||
} else
|
|
||||||
#endif /* MIC */
|
|
||||||
{
|
|
||||||
agc_maxgain = MAX(agc_maxgain - 1,
|
agc_maxgain = MAX(agc_maxgain - 1,
|
||||||
sound_min(SOUND_LEFT_GAIN));
|
sound_min(SOUND_LEFT_GAIN));
|
||||||
global_settings.rec_agc_maxgain_line = agc_maxgain;
|
global_settings.rec_agc_maxgain_line = agc_maxgain;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_MIC_REC
|
||||||
|
case AUDIO_SRC_MIC:
|
||||||
|
agc_maxgain = MAX(agc_maxgain - 1,
|
||||||
|
sound_min(SOUND_MIC_GAIN));
|
||||||
|
global_settings.rec_agc_maxgain_mic = agc_maxgain;
|
||||||
|
break;
|
||||||
|
#endif /* MIC */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif /* HAVE_AGC */
|
#endif /* HAVE_AGC */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue