diff options
author | Marcin Bukat <marcin.bukat@gmail.com> | 2011-03-15 22:35:04 +0000 |
---|---|---|
committer | Marcin Bukat <marcin.bukat@gmail.com> | 2011-03-15 22:35:04 +0000 |
commit | 2e4259e49743edf7781afc81974005e375503c6e (patch) | |
tree | 0ffc44f11e1a44b6d1b46ee75893a7ebefd09a48 | |
parent | c24c3ebe0fac3fe22019f7020dacd7fcd457e19c (diff) | |
download | rockbox-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.c | 85 |
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 | ||
593 | static const char factor[] = {1, 10, 100}; | ||
594 | |||
575 | static char *fmt_gain(int snd, int val, char *str, int len) | 595 | static 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: |