summaryrefslogtreecommitdiff
path: root/apps/recorder/recording.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/recorder/recording.c')
-rw-r--r--apps/recorder/recording.c46
1 files changed, 39 insertions, 7 deletions
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index b2c81cd21b..a8586b9735 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -274,12 +274,14 @@ static short agc_maxgain;
274 274
275static void set_gain(void) 275static void set_gain(void)
276{ 276{
277#ifdef HAVE_MIC_REC
277 if(global_settings.rec_source == AUDIO_SRC_MIC) 278 if(global_settings.rec_source == AUDIO_SRC_MIC)
278 { 279 {
279 audio_set_recording_gain(global_settings.rec_mic_gain, 280 audio_set_recording_gain(global_settings.rec_mic_gain,
280 0, AUDIO_GAIN_MIC); 281 0, AUDIO_GAIN_MIC);
281 } 282 }
282 else 283 else
284#endif /* MIC */
283 { 285 {
284 /* AUDIO_SRC_LINEIN, AUDIO_SRC_FMRADIO, AUDIO_SRC_SPDIF */ 286 /* AUDIO_SRC_LINEIN, AUDIO_SRC_FMRADIO, AUDIO_SRC_SPDIF */
285 audio_set_recording_gain(global_settings.rec_left_gain, 287 audio_set_recording_gain(global_settings.rec_left_gain,
@@ -332,15 +334,19 @@ static bool agc_gain_is_max(bool left, bool right)
332 334
333 switch (global_settings.rec_source) 335 switch (global_settings.rec_source)
334 { 336 {
337#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
335 HAVE_LINE_REC_(case AUDIO_SRC_LINEIN:) 338 HAVE_LINE_REC_(case AUDIO_SRC_LINEIN:)
336 HAVE_FMRADIO_REC_(case AUDIO_SRC_FMRADIO:) 339 HAVE_FMRADIO_REC_(case AUDIO_SRC_FMRADIO:)
337 gain_current_l = global_settings.rec_left_gain; 340 gain_current_l = global_settings.rec_left_gain;
338 gain_current_r = global_settings.rec_right_gain; 341 gain_current_r = global_settings.rec_right_gain;
339 break; 342 break;
343#endif /* LINE, FMRADIO */
344#if defined(HAVE_MIC_REC)
340 case AUDIO_SRC_MIC: 345 case AUDIO_SRC_MIC:
341 default: 346 default:
342 gain_current_l = global_settings.rec_mic_gain; 347 gain_current_l = global_settings.rec_mic_gain;
343 gain_current_r = global_settings.rec_mic_gain; 348 gain_current_r = global_settings.rec_mic_gain;
349#endif /* MIC */
344 } 350 }
345 351
346 return ((left && (gain_current_l >= agc_maxgain)) || 352 return ((left && (gain_current_l >= agc_maxgain)) ||
@@ -353,13 +359,17 @@ static void change_recording_gain(bool increment, bool left, bool right)
353 359
354 switch (global_settings.rec_source) 360 switch (global_settings.rec_source)
355 { 361 {
362#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
356 HAVE_LINE_REC_(case AUDIO_SRC_LINEIN:) 363 HAVE_LINE_REC_(case AUDIO_SRC_LINEIN:)
357 HAVE_FMRADIO_REC_(case AUDIO_SRC_FMRADIO:) 364 HAVE_FMRADIO_REC_(case AUDIO_SRC_FMRADIO:)
358 if (left) global_settings.rec_left_gain += factor; 365 if (left) global_settings.rec_left_gain += factor;
359 if (right) global_settings.rec_right_gain += factor; 366 if (right) global_settings.rec_right_gain += factor;
360 break; 367 break;
368#endif /* LINE, FMRADIO */
369#if defined(HAVE_MIC_REC)
361 case AUDIO_SRC_MIC: 370 case AUDIO_SRC_MIC:
362 global_settings.rec_mic_gain += factor; 371 global_settings.rec_mic_gain += factor;
372#endif
363 } 373 }
364} 374}
365 375
@@ -858,6 +868,7 @@ static char * reclist_get_name(int selected_item, void * data,
858 buf2, sizeof(buf2))); 868 buf2, sizeof(buf2)));
859 break; 869 break;
860 case ITEM_GAIN: 870 case ITEM_GAIN:
871#ifdef HAVE_MIC_REC
861 if(global_settings.rec_source == AUDIO_SRC_MIC) 872 if(global_settings.rec_source == AUDIO_SRC_MIC)
862 { 873 {
863 /* Draw MIC recording gain */ 874 /* Draw MIC recording gain */
@@ -867,6 +878,7 @@ static char * reclist_get_name(int selected_item, void * data,
867 buf2, sizeof(buf2))); 878 buf2, sizeof(buf2)));
868 } 879 }
869 else 880 else
881#endif /* MIC */
870 { 882 {
871 int avg_gain = (global_settings.rec_left_gain + 883 int avg_gain = (global_settings.rec_left_gain +
872 global_settings.rec_right_gain) / 2; 884 global_settings.rec_right_gain) / 2;
@@ -902,6 +914,7 @@ static char * reclist_get_name(int selected_item, void * data,
902 str(LANG_RECORDING_AGC_MAXGAIN), 914 str(LANG_RECORDING_AGC_MAXGAIN),
903 fmt_gain(SOUND_LEFT_GAIN, 915 fmt_gain(SOUND_LEFT_GAIN,
904 agc_maxgain, buf2, sizeof(buf2))); 916 agc_maxgain, buf2, sizeof(buf2)));
917#ifdef HAVE_MIC_REC
905 else if (global_settings.rec_source == AUDIO_SRC_MIC) 918 else if (global_settings.rec_source == AUDIO_SRC_MIC)
906 snprintf(buffer, buffer_len, "%s: %s (%s)", 919 snprintf(buffer, buffer_len, "%s: %s (%s)",
907 str(LANG_RECORDING_AGC_MAXGAIN), 920 str(LANG_RECORDING_AGC_MAXGAIN),
@@ -911,6 +924,7 @@ static char * reclist_get_name(int selected_item, void * data,
911 agc_maxgain - global_settings.rec_mic_gain, 924 agc_maxgain - global_settings.rec_mic_gain,
912 buf3, sizeof(buf3))); 925 buf3, sizeof(buf3)));
913 else 926 else
927#endif /* MIC */
914 snprintf(buffer, buffer_len, "%s: %s (%s)", 928 snprintf(buffer, buffer_len, "%s: %s (%s)",
915 str(LANG_RECORDING_AGC_MAXGAIN), 929 str(LANG_RECORDING_AGC_MAXGAIN),
916 fmt_gain(SOUND_LEFT_GAIN, 930 fmt_gain(SOUND_LEFT_GAIN,
@@ -1180,15 +1194,18 @@ bool recording_screen(bool no_source)
1180#endif 1194#endif
1181 1195
1182#ifdef HAVE_AGC 1196#ifdef HAVE_AGC
1197#ifdef HAVE_MIC_REC
1183 if (global_settings.rec_source == AUDIO_SRC_MIC) { 1198 if (global_settings.rec_source == AUDIO_SRC_MIC) {
1184 agc_preset = global_settings.rec_agc_preset_mic; 1199 agc_preset = global_settings.rec_agc_preset_mic;
1185 agc_maxgain = global_settings.rec_agc_maxgain_mic; 1200 agc_maxgain = global_settings.rec_agc_maxgain_mic;
1186 } 1201 }
1187 else { 1202 else
1203#endif /* MIC */
1204 {
1188 agc_preset = global_settings.rec_agc_preset_line; 1205 agc_preset = global_settings.rec_agc_preset_line;
1189 agc_maxgain = global_settings.rec_agc_maxgain_line; 1206 agc_maxgain = global_settings.rec_agc_maxgain_line;
1190 } 1207 }
1191#endif 1208#endif /* HAVE_AGC */
1192 1209
1193 set_gain(); 1210 set_gain();
1194 update_countdown = 0; /* Update immediately */ 1211 update_countdown = 0; /* Update immediately */
@@ -1209,7 +1226,7 @@ bool recording_screen(bool no_source)
1209 } 1226 }
1210 else 1227 else
1211#endif 1228#endif
1212 if((global_settings.rec_source == AUDIO_SRC_MIC) || 1229 if(HAVE_MIC_REC_((global_settings.rec_source == AUDIO_SRC_MIC) || )
1213 (global_settings.rec_channels == 1)) 1230 (global_settings.rec_channels == 1))
1214 { 1231 {
1215 listid_to_enum[0] = ITEM_VOLUME_M; 1232 listid_to_enum[0] = ITEM_VOLUME_M;
@@ -1335,6 +1352,7 @@ bool recording_screen(bool no_source)
1335 setvol(); 1352 setvol();
1336 break; 1353 break;
1337 case ITEM_GAIN: 1354 case ITEM_GAIN:
1355#ifdef HAVE_MIC_REC
1338 if(global_settings.rec_source == AUDIO_SRC_MIC) 1356 if(global_settings.rec_source == AUDIO_SRC_MIC)
1339 { 1357 {
1340 if(global_settings.rec_mic_gain < 1358 if(global_settings.rec_mic_gain <
@@ -1342,6 +1360,7 @@ bool recording_screen(bool no_source)
1342 global_settings.rec_mic_gain++; 1360 global_settings.rec_mic_gain++;
1343 } 1361 }
1344 else 1362 else
1363#endif /* MIC */
1345 { 1364 {
1346 if(global_settings.rec_left_gain < 1365 if(global_settings.rec_left_gain <
1347 sound_max(SOUND_LEFT_GAIN)) 1366 sound_max(SOUND_LEFT_GAIN))
@@ -1365,15 +1384,19 @@ bool recording_screen(bool no_source)
1365 case ITEM_AGC_MODE: 1384 case ITEM_AGC_MODE:
1366 agc_preset = MIN(agc_preset + 1, AGC_MODE_SIZE); 1385 agc_preset = MIN(agc_preset + 1, AGC_MODE_SIZE);
1367 agc_enable = (agc_preset != 0); 1386 agc_enable = (agc_preset != 0);
1387#ifdef HAVE_MIC_REC
1368 if (global_settings.rec_source == AUDIO_SRC_MIC) { 1388 if (global_settings.rec_source == AUDIO_SRC_MIC) {
1369 global_settings.rec_agc_preset_mic = agc_preset; 1389 global_settings.rec_agc_preset_mic = agc_preset;
1370 agc_maxgain = global_settings.rec_agc_maxgain_mic; 1390 agc_maxgain = global_settings.rec_agc_maxgain_mic;
1371 } else { 1391 } else
1392#endif /* MIC */
1393 {
1372 global_settings.rec_agc_preset_line = agc_preset; 1394 global_settings.rec_agc_preset_line = agc_preset;
1373 agc_maxgain = global_settings.rec_agc_maxgain_line; 1395 agc_maxgain = global_settings.rec_agc_maxgain_line;
1374 } 1396 }
1375 break; 1397 break;
1376 case ITEM_AGC_MAXDB: 1398 case ITEM_AGC_MAXDB:
1399#ifdef HAVE_MIC_REC
1377 if (global_settings.rec_source == AUDIO_SRC_MIC) 1400 if (global_settings.rec_source == AUDIO_SRC_MIC)
1378 { 1401 {
1379 agc_maxgain = MIN(agc_maxgain + 1, 1402 agc_maxgain = MIN(agc_maxgain + 1,
@@ -1381,6 +1404,7 @@ bool recording_screen(bool no_source)
1381 global_settings.rec_agc_maxgain_mic = agc_maxgain; 1404 global_settings.rec_agc_maxgain_mic = agc_maxgain;
1382 } 1405 }
1383 else 1406 else
1407#endif /* MIC */
1384 { 1408 {
1385 agc_maxgain = MIN(agc_maxgain + 1, 1409 agc_maxgain = MIN(agc_maxgain + 1,
1386 sound_max(SOUND_LEFT_GAIN)); 1410 sound_max(SOUND_LEFT_GAIN));
@@ -1401,6 +1425,7 @@ bool recording_screen(bool no_source)
1401 setvol(); 1425 setvol();
1402 break; 1426 break;
1403 case ITEM_GAIN: 1427 case ITEM_GAIN:
1428#ifdef HAVE_MIC_REC
1404 if(global_settings.rec_source == AUDIO_SRC_MIC) 1429 if(global_settings.rec_source == AUDIO_SRC_MIC)
1405 { 1430 {
1406 if(global_settings.rec_mic_gain > 1431 if(global_settings.rec_mic_gain >
@@ -1408,6 +1433,7 @@ bool recording_screen(bool no_source)
1408 global_settings.rec_mic_gain--; 1433 global_settings.rec_mic_gain--;
1409 } 1434 }
1410 else 1435 else
1436#endif /* MIC */
1411 { 1437 {
1412 if(global_settings.rec_left_gain > 1438 if(global_settings.rec_left_gain >
1413 sound_min(SOUND_LEFT_GAIN)) 1439 sound_min(SOUND_LEFT_GAIN))
@@ -1431,22 +1457,26 @@ bool recording_screen(bool no_source)
1431 case ITEM_AGC_MODE: 1457 case ITEM_AGC_MODE:
1432 agc_preset = MAX(agc_preset - 1, 0); 1458 agc_preset = MAX(agc_preset - 1, 0);
1433 agc_enable = (agc_preset != 0); 1459 agc_enable = (agc_preset != 0);
1460#ifdef HAVE_MIC_REC
1434 if (global_settings.rec_source == AUDIO_SRC_MIC) { 1461 if (global_settings.rec_source == AUDIO_SRC_MIC) {
1435 global_settings.rec_agc_preset_mic = agc_preset; 1462 global_settings.rec_agc_preset_mic = agc_preset;
1436 agc_maxgain = global_settings.rec_agc_maxgain_mic; 1463 agc_maxgain = global_settings.rec_agc_maxgain_mic;
1437 } else { 1464 } else
1465#endif /* MIC */
1466 {
1438 global_settings.rec_agc_preset_line = agc_preset; 1467 global_settings.rec_agc_preset_line = agc_preset;
1439 agc_maxgain = global_settings.rec_agc_maxgain_line; 1468 agc_maxgain = global_settings.rec_agc_maxgain_line;
1440 } 1469 }
1441 break; 1470 break;
1442 case ITEM_AGC_MAXDB: 1471 case ITEM_AGC_MAXDB:
1472#ifdef HAVE_MIC_REC
1443 if (global_settings.rec_source == AUDIO_SRC_MIC) 1473 if (global_settings.rec_source == AUDIO_SRC_MIC)
1444 { 1474 {
1445 agc_maxgain = MAX(agc_maxgain - 1, 1475 agc_maxgain = MAX(agc_maxgain - 1,
1446 sound_min(SOUND_MIC_GAIN)); 1476 sound_min(SOUND_MIC_GAIN));
1447 global_settings.rec_agc_maxgain_mic = agc_maxgain; 1477 global_settings.rec_agc_maxgain_mic = agc_maxgain;
1448 } 1478 } else
1449 else 1479#endif /* MIC */
1450 { 1480 {
1451 agc_maxgain = MAX(agc_maxgain - 1, 1481 agc_maxgain = MAX(agc_maxgain - 1,
1452 sound_min(SOUND_LEFT_GAIN)); 1482 sound_min(SOUND_LEFT_GAIN));
@@ -1796,12 +1826,14 @@ bool recording_screen(bool no_source)
1796 } 1826 }
1797 1827
1798#ifdef HAVE_AGC 1828#ifdef HAVE_AGC
1829#ifdef HAVE_MIC_REC
1799 if (global_settings.rec_source == AUDIO_SRC_MIC) 1830 if (global_settings.rec_source == AUDIO_SRC_MIC)
1800 { 1831 {
1801 if(agc_maxgain < (global_settings.rec_mic_gain)) 1832 if(agc_maxgain < (global_settings.rec_mic_gain))
1802 change_recording_gain(false, true, true); 1833 change_recording_gain(false, true, true);
1803 } 1834 }
1804 else 1835 else
1836#endif /* MIC */
1805 { 1837 {
1806 if(agc_maxgain < (global_settings.rec_left_gain)) 1838 if(agc_maxgain < (global_settings.rec_left_gain))
1807 change_recording_gain(false, true, false); 1839 change_recording_gain(false, true, false);