diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/mpeg.h | 9 | ||||
-rw-r--r-- | firmware/mpeg.c | 105 |
2 files changed, 61 insertions, 53 deletions
diff --git a/firmware/export/mpeg.h b/firmware/export/mpeg.h index 69bacc5c7b..6b44363f8f 100644 --- a/firmware/export/mpeg.h +++ b/firmware/export/mpeg.h | |||
@@ -105,9 +105,12 @@ void mpeg_set_buffer_margin(int seconds); | |||
105 | #define SOUND_NUMSETTINGS 11 | 105 | #define SOUND_NUMSETTINGS 11 |
106 | 106 | ||
107 | #define MPEG_SOUND_STEREO 0 | 107 | #define MPEG_SOUND_STEREO 0 |
108 | #define MPEG_SOUND_MONO 1 | 108 | #define MPEG_SOUND_STEREO_NARROW 1 |
109 | #define MPEG_SOUND_MONO_LEFT 2 | 109 | #define MPEG_SOUND_MONO 2 |
110 | #define MPEG_SOUND_MONO_RIGHT 3 | 110 | #define MPEG_SOUND_MONO_LEFT 3 |
111 | #define MPEG_SOUND_MONO_RIGHT 4 | ||
112 | #define MPEG_SOUND_KARAOKE 5 | ||
113 | #define MPEG_SOUND_STEREO_WIDE 6 | ||
111 | 114 | ||
112 | #define MPEG_STATUS_PLAY 1 | 115 | #define MPEG_STATUS_PLAY 1 |
113 | #define MPEG_STATUS_PAUSE 2 | 116 | #define MPEG_STATUS_PAUSE 2 |
diff --git a/firmware/mpeg.c b/firmware/mpeg.c index e9d0943115..b0f183592e 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c | |||
@@ -139,7 +139,7 @@ static int maxval[] = | |||
139 | 17, /* Loudness */ | 139 | 17, /* Loudness */ |
140 | 10, /* Bass boost */ | 140 | 10, /* Bass boost */ |
141 | 3, /* AVC */ | 141 | 3, /* AVC */ |
142 | 3, /* Channels */ | 142 | 6, /* Channels */ |
143 | 15, /* Left gain */ | 143 | 15, /* Left gain */ |
144 | 15, /* Right gain */ | 144 | 15, /* Right gain */ |
145 | 15, /* Mic gain */ | 145 | 15, /* Mic gain */ |
@@ -2654,68 +2654,73 @@ void mpeg_sound_channel_config(int configuration) | |||
2654 | #ifdef SIMULATOR | 2654 | #ifdef SIMULATOR |
2655 | (void)configuration; | 2655 | (void)configuration; |
2656 | #else | 2656 | #else |
2657 | unsigned long val_on = 0x80000; | 2657 | unsigned long val_ll = 0x80000; |
2658 | unsigned long val_off = 0; | 2658 | unsigned long val_lr = 0; |
2659 | unsigned long val_rl = 0; | ||
2660 | unsigned long val_rr = 0x80000; | ||
2659 | 2661 | ||
2660 | switch(configuration) | 2662 | switch(configuration) |
2661 | { | 2663 | { |
2662 | case MPEG_SOUND_STEREO: | 2664 | case MPEG_SOUND_STEREO: |
2663 | val_on = 0x80000; | 2665 | val_ll = 0x80000; |
2664 | #ifdef HAVE_MAS3587F | 2666 | val_lr = 0; |
2665 | mas_writemem(MAS_BANK_D0, 0x7fc, &val_on, 1); /* LL */ | 2667 | val_rl = 0; |
2666 | mas_writemem(MAS_BANK_D0, 0x7fd, &val_off, 1); /* LR */ | 2668 | val_rr = 0x80000; |
2667 | mas_writemem(MAS_BANK_D0, 0x7fe, &val_off, 1); /* RL */ | ||
2668 | mas_writemem(MAS_BANK_D0, 0x7ff, &val_on, 1); /* RR */ | ||
2669 | #else | ||
2670 | mas_writemem(MAS_BANK_D1, 0x7f8, &val_on, 1); /* LL */ | ||
2671 | mas_writemem(MAS_BANK_D1, 0x7f9, &val_off, 1); /* LR */ | ||
2672 | mas_writemem(MAS_BANK_D1, 0x7fa, &val_off, 1); /* RL */ | ||
2673 | mas_writemem(MAS_BANK_D1, 0x7fb, &val_on, 1); /* RR */ | ||
2674 | #endif | ||
2675 | break; | 2669 | break; |
2670 | |||
2676 | case MPEG_SOUND_MONO: | 2671 | case MPEG_SOUND_MONO: |
2677 | val_on = 0xc0000; | 2672 | val_ll = 0xc0000; |
2678 | #ifdef HAVE_MAS3587F | 2673 | val_lr = 0xc0000; |
2679 | mas_writemem(MAS_BANK_D0, 0x7fc, &val_on, 1); /* LL */ | 2674 | val_rl = 0xc0000; |
2680 | mas_writemem(MAS_BANK_D0, 0x7fd, &val_on, 1); /* LR */ | 2675 | val_rr = 0xc0000; |
2681 | mas_writemem(MAS_BANK_D0, 0x7fe, &val_on, 1); /* RL */ | ||
2682 | mas_writemem(MAS_BANK_D0, 0x7ff, &val_on, 1); /* RR */ | ||
2683 | #else | ||
2684 | mas_writemem(MAS_BANK_D1, 0x7f8, &val_on, 1); /* LL */ | ||
2685 | mas_writemem(MAS_BANK_D1, 0x7f9, &val_on, 1); /* LR */ | ||
2686 | mas_writemem(MAS_BANK_D1, 0x7fa, &val_on, 1); /* RL */ | ||
2687 | mas_writemem(MAS_BANK_D1, 0x7fb, &val_on, 1); /* RR */ | ||
2688 | #endif | ||
2689 | break; | 2676 | break; |
2677 | |||
2690 | case MPEG_SOUND_MONO_LEFT: | 2678 | case MPEG_SOUND_MONO_LEFT: |
2691 | val_on = 0x80000; | 2679 | val_ll = 0x80000; |
2692 | #ifdef HAVE_MAS3587F | 2680 | val_lr = 0x80000; |
2693 | mas_writemem(MAS_BANK_D0, 0x7fc, &val_on, 1); /* LL */ | 2681 | val_rl = 0; |
2694 | mas_writemem(MAS_BANK_D0, 0x7fd, &val_on, 1); /* LR */ | 2682 | val_rr = 0; |
2695 | mas_writemem(MAS_BANK_D0, 0x7fe, &val_off, 1); /* RL */ | ||
2696 | mas_writemem(MAS_BANK_D0, 0x7ff, &val_off, 1); /* RR */ | ||
2697 | #else | ||
2698 | mas_writemem(MAS_BANK_D1, 0x7f8, &val_on, 1); /* LL */ | ||
2699 | mas_writemem(MAS_BANK_D1, 0x7f9, &val_on, 1); /* LR */ | ||
2700 | mas_writemem(MAS_BANK_D1, 0x7fa, &val_off, 1); /* RL */ | ||
2701 | mas_writemem(MAS_BANK_D1, 0x7fb, &val_off, 1); /* RR */ | ||
2702 | #endif | ||
2703 | break; | 2683 | break; |
2684 | |||
2704 | case MPEG_SOUND_MONO_RIGHT: | 2685 | case MPEG_SOUND_MONO_RIGHT: |
2705 | val_on = 0x80000; | 2686 | val_ll = 0; |
2687 | val_lr = 0; | ||
2688 | val_rl = 0x80000; | ||
2689 | val_rr = 0x80000; | ||
2690 | break; | ||
2691 | |||
2692 | case MPEG_SOUND_STEREO_NARROW: | ||
2693 | val_ll = 0xa0000; | ||
2694 | val_lr = 0xe0000; | ||
2695 | val_rl = 0xe0000; | ||
2696 | val_rr = 0xa0000; | ||
2697 | break; | ||
2698 | |||
2699 | case MPEG_SOUND_STEREO_WIDE: | ||
2700 | val_ll = 0x80000; | ||
2701 | val_lr = 0x40000; | ||
2702 | val_rl = 0x40000; | ||
2703 | val_rr = 0x80000; | ||
2704 | break; | ||
2705 | case MPEG_SOUND_KARAOKE: | ||
2706 | val_ll = 0x80001; | ||
2707 | val_lr = 0x7ffff; | ||
2708 | val_rl = 0x7ffff; | ||
2709 | val_rr = 0x80001; | ||
2710 | break; | ||
2711 | } | ||
2712 | |||
2706 | #ifdef HAVE_MAS3587F | 2713 | #ifdef HAVE_MAS3587F |
2707 | mas_writemem(MAS_BANK_D0, 0x7fc, &val_off, 1); /* LL */ | 2714 | mas_writemem(MAS_BANK_D0, 0x7fc, &val_ll, 1); /* LL */ |
2708 | mas_writemem(MAS_BANK_D0, 0x7fd, &val_off, 1); /* LR */ | 2715 | mas_writemem(MAS_BANK_D0, 0x7fd, &val_lr, 1); /* LR */ |
2709 | mas_writemem(MAS_BANK_D0, 0x7fe, &val_on, 1); /* RL */ | 2716 | mas_writemem(MAS_BANK_D0, 0x7fe, &val_rl, 1); /* RL */ |
2710 | mas_writemem(MAS_BANK_D0, 0x7ff, &val_on, 1); /* RR */ | 2717 | mas_writemem(MAS_BANK_D0, 0x7ff, &val_rr, 1); /* RR */ |
2711 | #else | 2718 | #else |
2712 | mas_writemem(MAS_BANK_D1, 0x7f8, &val_off, 1); /* LL */ | 2719 | mas_writemem(MAS_BANK_D1, 0x7f8, &val_ll, 1); /* LL */ |
2713 | mas_writemem(MAS_BANK_D1, 0x7f9, &val_off, 1); /* LR */ | 2720 | mas_writemem(MAS_BANK_D1, 0x7f9, &val_lr, 1); /* LR */ |
2714 | mas_writemem(MAS_BANK_D1, 0x7fa, &val_on, 1); /* RL */ | 2721 | mas_writemem(MAS_BANK_D1, 0x7fa, &val_rl, 1); /* RL */ |
2715 | mas_writemem(MAS_BANK_D1, 0x7fb, &val_on, 1); /* RR */ | 2722 | mas_writemem(MAS_BANK_D1, 0x7fb, &val_rr, 1); /* RR */ |
2716 | #endif | 2723 | #endif |
2717 | break; | ||
2718 | } | ||
2719 | #endif | 2724 | #endif |
2720 | } | 2725 | } |
2721 | 2726 | ||