summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2011-03-15 22:35:04 +0000
committerMarcin Bukat <marcin.bukat@gmail.com>2011-03-15 22:35:04 +0000
commit2e4259e49743edf7781afc81974005e375503c6e (patch)
tree0ffc44f11e1a44b6d1b46ee75893a7ebefd09a48
parentc24c3ebe0fac3fe22019f7020dacd7fcd457e19c (diff)
downloadrockbox-2e4259e49743edf7781afc81974005e375503c6e.tar.gz
rockbox-2e4259e49743edf7781afc81974005e375503c6e.zip
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
-rw-r--r--apps/recorder/recording.c85
1 files changed, 51 insertions, 34 deletions
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index d5db373717..b4f7d25cf8 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -308,12 +308,30 @@ static void set_gain(void)
308#ifdef HAVE_MIC_REC 308#ifdef HAVE_MIC_REC
309 if(global_settings.rec_source == AUDIO_SRC_MIC) 309 if(global_settings.rec_source == AUDIO_SRC_MIC)
310 { 310 {
311 if (global_settings.rec_mic_gain > sound_max(SOUND_MIC_GAIN))
312 global_settings.rec_mic_gain = sound_max(SOUND_MIC_GAIN);
313
314 if (global_settings.rec_mic_gain < sound_min(SOUND_MIC_GAIN))
315 global_settings.rec_mic_gain = sound_min(SOUND_MIC_GAIN);
316
311 audio_set_recording_gain(global_settings.rec_mic_gain, 317 audio_set_recording_gain(global_settings.rec_mic_gain,
312 0, AUDIO_GAIN_MIC); 318 0, AUDIO_GAIN_MIC);
313 } 319 }
314 else 320 else
315#endif /* MIC */ 321#endif /* MIC */
316 { 322 {
323 if (global_settings.rec_left_gain > sound_max(SOUND_LEFT_GAIN))
324 global_settings.rec_left_gain = sound_max(SOUND_LEFT_GAIN);
325
326 if (global_settings.rec_left_gain < sound_min(SOUND_LEFT_GAIN))
327 global_settings.rec_left_gain = sound_min(SOUND_LEFT_GAIN);
328
329 if (global_settings.rec_right_gain > sound_max(SOUND_RIGHT_GAIN))
330 global_settings.rec_right_gain = sound_max(SOUND_RIGHT_GAIN);
331
332 if (global_settings.rec_right_gain < sound_min(SOUND_RIGHT_GAIN))
333 global_settings.rec_right_gain = sound_min(SOUND_RIGHT_GAIN);
334
317 /* AUDIO_SRC_LINEIN, AUDIO_SRC_FMRADIO, AUDIO_SRC_SPDIF */ 335 /* AUDIO_SRC_LINEIN, AUDIO_SRC_FMRADIO, AUDIO_SRC_SPDIF */
318 audio_set_recording_gain(global_settings.rec_left_gain, 336 audio_set_recording_gain(global_settings.rec_left_gain,
319 global_settings.rec_right_gain, 337 global_settings.rec_right_gain,
@@ -572,6 +590,8 @@ static const char* const fmtstr[] =
572 "%c%d.%02d %s " /* 2 decimals */ 590 "%c%d.%02d %s " /* 2 decimals */
573}; 591};
574 592
593static const char factor[] = {1, 10, 100};
594
575static char *fmt_gain(int snd, int val, char *str, int len) 595static char *fmt_gain(int snd, int val, char *str, int len)
576{ 596{
577 int i, d, numdec; 597 int i, d, numdec;
@@ -589,8 +609,8 @@ static char *fmt_gain(int snd, int val, char *str, int len)
589 609
590 if(numdec) 610 if(numdec)
591 { 611 {
592 i = val / (10*numdec); 612 i = val / factor[numdec];
593 d = val % (10*numdec); 613 d = val % factor[numdec];
594 snprintf(str, len, fmtstr[numdec], sign, i, d, unit); 614 snprintf(str, len, fmtstr[numdec], sign, i, d, unit);
595 } 615 }
596 else 616 else
@@ -1402,37 +1422,34 @@ bool recording_screen(bool no_source)
1402 switch (listid_to_enum[gui_synclist_get_sel_pos(&lists)]) 1422 switch (listid_to_enum[gui_synclist_get_sel_pos(&lists)])
1403 { 1423 {
1404 case ITEM_VOLUME: 1424 case ITEM_VOLUME:
1405 global_settings.volume++; 1425 global_settings.volume += sound_steps(SOUND_VOLUME);
1406 setvol(); 1426 setvol();
1407 break; 1427 break;
1408 case ITEM_GAIN: 1428 case ITEM_GAIN:
1409#ifdef HAVE_MIC_REC 1429#ifdef HAVE_MIC_REC
1410 if(global_settings.rec_source == AUDIO_SRC_MIC) 1430 if(global_settings.rec_source == AUDIO_SRC_MIC)
1411 { 1431 {
1412 if(global_settings.rec_mic_gain < 1432 global_settings.rec_mic_gain +=
1413 sound_max(SOUND_MIC_GAIN)) 1433 sound_steps(SOUND_MIC_GAIN);
1414 global_settings.rec_mic_gain++;
1415 } 1434 }
1416 else 1435 else
1417#endif /* MIC */ 1436#endif /* MIC */
1418 { 1437 {
1419 if(global_settings.rec_left_gain < 1438 global_settings.rec_left_gain +=
1420 sound_max(SOUND_LEFT_GAIN)) 1439 sound_steps(SOUND_LEFT_GAIN);
1421 global_settings.rec_left_gain++; 1440 global_settings.rec_right_gain +=
1422 if(global_settings.rec_right_gain < 1441 sound_steps(SOUND_RIGHT_GAIN);
1423 sound_max(SOUND_RIGHT_GAIN))
1424 global_settings.rec_right_gain++;
1425 } 1442 }
1426 break; 1443 break;
1427 case ITEM_GAIN_L: 1444 case ITEM_GAIN_L:
1428 if(global_settings.rec_left_gain < 1445 global_settings.rec_left_gain +=
1429 sound_max(SOUND_LEFT_GAIN)) 1446 sound_steps(SOUND_LEFT_GAIN);
1430 global_settings.rec_left_gain++; 1447
1431 break; 1448 break;
1432 case ITEM_GAIN_R: 1449 case ITEM_GAIN_R:
1433 if(global_settings.rec_right_gain < 1450 global_settings.rec_right_gain +=
1434 sound_max(SOUND_RIGHT_GAIN)) 1451 sound_steps(SOUND_RIGHT_GAIN);
1435 global_settings.rec_right_gain++; 1452
1436 break; 1453 break;
1437#ifdef HAVE_AGC 1454#ifdef HAVE_AGC
1438 case ITEM_AGC_MODE: 1455 case ITEM_AGC_MODE:
@@ -1475,37 +1492,37 @@ bool recording_screen(bool no_source)
1475 switch (listid_to_enum[gui_synclist_get_sel_pos(&lists)]) 1492 switch (listid_to_enum[gui_synclist_get_sel_pos(&lists)])
1476 { 1493 {
1477 case ITEM_VOLUME: 1494 case ITEM_VOLUME:
1478 global_settings.volume--; 1495 global_settings.volume -= sound_steps(SOUND_VOLUME);
1496
1497 /* check range and update */
1479 setvol(); 1498 setvol();
1480 break; 1499 break;
1481 case ITEM_GAIN: 1500 case ITEM_GAIN:
1482#ifdef HAVE_MIC_REC 1501#ifdef HAVE_MIC_REC
1483 if(global_settings.rec_source == AUDIO_SRC_MIC) 1502 if(global_settings.rec_source == AUDIO_SRC_MIC)
1484 { 1503 {
1485 if(global_settings.rec_mic_gain > 1504 global_settings.rec_mic_gain -=
1486 sound_min(SOUND_MIC_GAIN)) 1505 sound_steps(SOUND_MIC_GAIN);
1487 global_settings.rec_mic_gain--;
1488 } 1506 }
1489 else 1507 else
1490#endif /* MIC */ 1508#endif /* MIC */
1491 { 1509 {
1492 if(global_settings.rec_left_gain > 1510 global_settings.rec_left_gain -=
1493 sound_min(SOUND_LEFT_GAIN)) 1511 sound_steps(SOUND_LEFT_GAIN);
1494 global_settings.rec_left_gain--; 1512
1495 if(global_settings.rec_right_gain > 1513 global_settings.rec_right_gain -=
1496 sound_min(SOUND_RIGHT_GAIN)) 1514 sound_steps(SOUND_RIGHT_GAIN);
1497 global_settings.rec_right_gain--;
1498 } 1515 }
1499 break; 1516 break;
1500 case ITEM_GAIN_L: 1517 case ITEM_GAIN_L:
1501 if(global_settings.rec_left_gain > 1518 global_settings.rec_left_gain -=
1502 sound_min(SOUND_LEFT_GAIN)) 1519 sound_steps(SOUND_LEFT_GAIN);
1503 global_settings.rec_left_gain--; 1520
1504 break; 1521 break;
1505 case ITEM_GAIN_R: 1522 case ITEM_GAIN_R:
1506 if(global_settings.rec_right_gain > 1523 global_settings.rec_right_gain -=
1507 sound_min(SOUND_RIGHT_GAIN)) 1524 sound_steps(SOUND_RIGHT_GAIN);
1508 global_settings.rec_right_gain--; 1525
1509 break; 1526 break;
1510#ifdef HAVE_AGC 1527#ifdef HAVE_AGC
1511 case ITEM_AGC_MODE: 1528 case ITEM_AGC_MODE: