diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/gui/skin_engine/skin_display.c | 10 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 6 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_render.c | 6 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_tokens.c | 18 | ||||
-rw-r--r-- | apps/recorder/peakmeter.c | 24 | ||||
-rw-r--r-- | apps/recorder/peakmeter.h | 2 |
6 files changed, 59 insertions, 7 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index 47de4638d8..d38c8fd0ce 100644 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include "playlist.h" | 42 | #include "playlist.h" |
43 | #include "audio.h" | 43 | #include "audio.h" |
44 | #include "tagcache.h" | 44 | #include "tagcache.h" |
45 | #include "peakmeter.h" | ||
45 | 46 | ||
46 | #ifdef HAVE_LCD_BITMAP | 47 | #ifdef HAVE_LCD_BITMAP |
47 | #include "peakmeter.h" | 48 | #include "peakmeter.h" |
@@ -159,6 +160,15 @@ void draw_progressbar(struct gui_wps *gwps, int line, struct progressbar *pb) | |||
159 | length = 100; | 160 | length = 100; |
160 | end = battery_level(); | 161 | end = battery_level(); |
161 | } | 162 | } |
163 | else if (pb->type == SKIN_TOKEN_PEAKMETER_LEFTBAR || | ||
164 | pb->type == SKIN_TOKEN_PEAKMETER_RIGHTBAR) | ||
165 | { | ||
166 | int left, right, val; | ||
167 | peak_meter_current_vals(&left, &right); | ||
168 | val = pb->type == SKIN_TOKEN_PEAKMETER_LEFTBAR ? left : right; | ||
169 | length = MAX_PEAK; | ||
170 | end = peak_meter_scale_value(val, length); | ||
171 | } | ||
162 | #if CONFIG_TUNER | 172 | #if CONFIG_TUNER |
163 | else if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF)) | 173 | else if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF)) |
164 | { | 174 | { |
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index f292ff3946..5a90873d86 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c | |||
@@ -744,6 +744,10 @@ static int parse_progressbar_tag(struct skin_element* element, | |||
744 | token->type = SKIN_TOKEN_BATTERY_PERCENTBAR; | 744 | token->type = SKIN_TOKEN_BATTERY_PERCENTBAR; |
745 | else if (token->type == SKIN_TOKEN_TUNER_RSSI) | 745 | else if (token->type == SKIN_TOKEN_TUNER_RSSI) |
746 | token->type = SKIN_TOKEN_TUNER_RSSI_BAR; | 746 | token->type = SKIN_TOKEN_TUNER_RSSI_BAR; |
747 | else if (token->type == SKIN_TOKEN_PEAKMETER_LEFT) | ||
748 | token->type = SKIN_TOKEN_PEAKMETER_LEFTBAR; | ||
749 | else if (token->type == SKIN_TOKEN_PEAKMETER_RIGHT) | ||
750 | token->type = SKIN_TOKEN_PEAKMETER_RIGHTBAR; | ||
747 | pb->type = token->type; | 751 | pb->type = token->type; |
748 | 752 | ||
749 | return 0; | 753 | return 0; |
@@ -1410,6 +1414,8 @@ static int skin_element_callback(struct skin_element* element, void* data) | |||
1410 | case SKIN_TOKEN_VOLUME: | 1414 | case SKIN_TOKEN_VOLUME: |
1411 | case SKIN_TOKEN_BATTERY_PERCENT: | 1415 | case SKIN_TOKEN_BATTERY_PERCENT: |
1412 | case SKIN_TOKEN_PLAYER_PROGRESSBAR: | 1416 | case SKIN_TOKEN_PLAYER_PROGRESSBAR: |
1417 | case SKIN_TOKEN_PEAKMETER_LEFT: | ||
1418 | case SKIN_TOKEN_PEAKMETER_RIGHT: | ||
1413 | #ifdef HAVE_RADIO_RSSI | 1419 | #ifdef HAVE_RADIO_RSSI |
1414 | case SKIN_TOKEN_TUNER_RSSI: | 1420 | case SKIN_TOKEN_TUNER_RSSI: |
1415 | #endif | 1421 | #endif |
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index 68a5433eb1..424e0c29cc 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c | |||
@@ -139,6 +139,12 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, | |||
139 | draw_peakmeters(gwps, info->line_number, vp); | 139 | draw_peakmeters(gwps, info->line_number, vp); |
140 | break; | 140 | break; |
141 | #endif | 141 | #endif |
142 | #ifdef HAVE_LCD_BITMAP | ||
143 | case SKIN_TOKEN_PEAKMETER_LEFTBAR: | ||
144 | case SKIN_TOKEN_PEAKMETER_RIGHTBAR: | ||
145 | data->peak_meter_enabled = true; | ||
146 | /* fall through to the progressbar code */ | ||
147 | #endif | ||
142 | case SKIN_TOKEN_VOLUMEBAR: | 148 | case SKIN_TOKEN_VOLUMEBAR: |
143 | case SKIN_TOKEN_BATTERY_PERCENTBAR: | 149 | case SKIN_TOKEN_BATTERY_PERCENTBAR: |
144 | #ifdef HAVE_LCD_BITMAP | 150 | #ifdef HAVE_LCD_BITMAP |
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index 217835a1e2..c644d5b3aa 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c | |||
@@ -59,6 +59,7 @@ | |||
59 | #include "skin_engine.h" | 59 | #include "skin_engine.h" |
60 | #include "statusbar-skinned.h" | 60 | #include "statusbar-skinned.h" |
61 | #include "root_menu.h" | 61 | #include "root_menu.h" |
62 | #include "peakmeter.h" | ||
62 | #ifdef HAVE_RECORDING | 63 | #ifdef HAVE_RECORDING |
63 | #include "recording.h" | 64 | #include "recording.h" |
64 | #include "pcm_record.h" | 65 | #include "pcm_record.h" |
@@ -1267,6 +1268,23 @@ const char *get_token_value(struct gui_wps *gwps, | |||
1267 | #endif | 1268 | #endif |
1268 | 1269 | ||
1269 | 1270 | ||
1271 | #ifdef HAVE_LCD_BITMAP | ||
1272 | /* peakmeter */ | ||
1273 | case SKIN_TOKEN_PEAKMETER_LEFT: | ||
1274 | case SKIN_TOKEN_PEAKMETER_RIGHT: | ||
1275 | { | ||
1276 | int left, right, val; | ||
1277 | peak_meter_current_vals(&left, &right); | ||
1278 | val = token->type == SKIN_TOKEN_PEAKMETER_LEFT ? | ||
1279 | left : right; | ||
1280 | val = peak_meter_scale_value(val, limit==1 ? MAX_PEAK : limit); | ||
1281 | if (intval) | ||
1282 | *intval = val; | ||
1283 | snprintf(buf, buf_size, "%d", val); | ||
1284 | data->peak_meter_enabled = true; | ||
1285 | return buf; | ||
1286 | } | ||
1287 | #endif | ||
1270 | 1288 | ||
1271 | #if (CONFIG_CODEC == SWCODEC) | 1289 | #if (CONFIG_CODEC == SWCODEC) |
1272 | case SKIN_TOKEN_CROSSFADE: | 1290 | case SKIN_TOKEN_CROSSFADE: |
diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c index aacfc23cee..ca1b8c8750 100644 --- a/apps/recorder/peakmeter.c +++ b/apps/recorder/peakmeter.c | |||
@@ -930,6 +930,21 @@ void peak_meter_screen(struct screen *display, int x, int y, int height) | |||
930 | peak_meter_draw(display, &scales[display->screen_type], x, y, | 930 | peak_meter_draw(display, &scales[display->screen_type], x, y, |
931 | display->getwidth() - x, height); | 931 | display->getwidth() - x, height); |
932 | } | 932 | } |
933 | |||
934 | /* sets *left and *right to the current *unscaled* values */ | ||
935 | void peak_meter_current_vals(int *left, int *right) | ||
936 | { | ||
937 | static int left_level = 0, right_level = 0; | ||
938 | if (level_check){ | ||
939 | /* only read the volume info from MAS if peek since last read*/ | ||
940 | left_level = peak_meter_read_l(); | ||
941 | right_level = peak_meter_read_r(); | ||
942 | level_check = false; | ||
943 | } | ||
944 | *left = left_level; | ||
945 | *right = right_level; | ||
946 | } | ||
947 | |||
933 | /** | 948 | /** |
934 | * Draws a peak meter in the specified size at the specified position. | 949 | * Draws a peak meter in the specified size at the specified position. |
935 | * @param int x - The x coordinate. | 950 | * @param int x - The x coordinate. |
@@ -944,7 +959,7 @@ void peak_meter_screen(struct screen *display, int x, int y, int height) | |||
944 | static void peak_meter_draw(struct screen *display, struct meter_scales *scales, | 959 | static void peak_meter_draw(struct screen *display, struct meter_scales *scales, |
945 | int x, int y, int width, int height) | 960 | int x, int y, int width, int height) |
946 | { | 961 | { |
947 | static int left_level = 0, right_level = 0; | 962 | int left_level = 0, right_level = 0; |
948 | int left = 0, right = 0; | 963 | int left = 0, right = 0; |
949 | int meterwidth = width - 3; | 964 | int meterwidth = width - 3; |
950 | int i, delta; | 965 | int i, delta; |
@@ -964,12 +979,7 @@ static void peak_meter_draw(struct screen *display, struct meter_scales *scales, | |||
964 | if (peak_meter_enabled) { | 979 | if (peak_meter_enabled) { |
965 | 980 | ||
966 | 981 | ||
967 | if (level_check){ | 982 | peak_meter_current_vals(&left_level, &right_level); |
968 | /* only read the volume info from MAS if peek since last read*/ | ||
969 | left_level = peak_meter_read_l(); | ||
970 | right_level = peak_meter_read_r(); | ||
971 | level_check = false; | ||
972 | } | ||
973 | 983 | ||
974 | /* scale the samples dBfs */ | 984 | /* scale the samples dBfs */ |
975 | left = peak_meter_scale_value(left_level, meterwidth); | 985 | left = peak_meter_scale_value(left_level, meterwidth); |
diff --git a/apps/recorder/peakmeter.h b/apps/recorder/peakmeter.h index 4abcc154f3..fee4882679 100644 --- a/apps/recorder/peakmeter.h +++ b/apps/recorder/peakmeter.h | |||
@@ -34,6 +34,8 @@ extern void pm_reset_clipcount(void); | |||
34 | extern void pm_activate_clipcount(bool active); | 34 | extern void pm_activate_clipcount(bool active); |
35 | 35 | ||
36 | extern void peak_meter_enable(bool enable); | 36 | extern void peak_meter_enable(bool enable); |
37 | /* sets *left and *right to the current *unscaled* values */ | ||
38 | extern void peak_meter_current_vals(int *left, int *right); | ||
37 | 39 | ||
38 | extern void peak_meter_playback(bool playback); | 40 | extern void peak_meter_playback(bool playback); |
39 | extern int peak_meter_draw_get_btn(int action_context, int x[], int y[], | 41 | extern int peak_meter_draw_get_btn(int action_context, int x[], int y[], |