summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorPeter D'Hoye <peter.dhoye@gmail.com>2011-06-05 12:36:27 +0000
committerPeter D'Hoye <peter.dhoye@gmail.com>2011-06-05 12:36:27 +0000
commit82f4c60db4f16642c1ee9f461d7eb060c11a49d8 (patch)
treea7a75d4e57941ebd1b5b15b051a28d1d4751964e /apps
parent62e06cc2a432bb9499646f089796157135829195 (diff)
downloadrockbox-82f4c60db4f16642c1ee9f461d7eb060c11a49d8.zip
rockbox-82f4c60db4f16642c1ee9f461d7eb060c11a49d8.tar.gz
rockbox-82f4c60db4f16642c1ee9f461d7eb060c11a49d8.tar.bz2
rockbox-82f4c60db4f16642c1ee9f461d7eb060c11a49d8.tar.xz
Make the histogram code usable for playback as well. Move the recording histogram code to peakmeter, rename it to remove the recording reference, and rename anything referring to it as well. Change the drawing code so there are more options to position them. This may change your histogram settings, so check after upgrading.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29969 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/features.txt4
-rw-r--r--apps/lang/catala.lang8
-rw-r--r--apps/lang/czech.lang8
-rw-r--r--apps/lang/dansk.lang8
-rw-r--r--apps/lang/deutsch.lang8
-rw-r--r--apps/lang/english.lang8
-rw-r--r--apps/lang/espanol.lang8
-rw-r--r--apps/lang/francais.lang8
-rw-r--r--apps/lang/hebrew.lang8
-rw-r--r--apps/lang/hrvatski.lang8
-rw-r--r--apps/lang/italiano.lang8
-rw-r--r--apps/lang/japanese.lang8
-rw-r--r--apps/lang/nederlands.lang8
-rw-r--r--apps/lang/polski.lang8
-rw-r--r--apps/lang/portugues-brasileiro.lang8
-rw-r--r--apps/lang/portugues.lang8
-rw-r--r--apps/lang/russian.lang8
-rw-r--r--apps/lang/slovak.lang8
-rw-r--r--apps/lang/slovenscina.lang8
-rw-r--r--apps/lang/srpski.lang8
-rw-r--r--apps/lang/svenska.lang8
-rw-r--r--apps/lang/tagalog.lang8
-rw-r--r--apps/lang/thai.lang8
-rw-r--r--apps/menus/display_menu.c27
-rw-r--r--apps/menus/recording_menu.c23
-rw-r--r--apps/recorder/peakmeter.c121
-rw-r--r--apps/recorder/peakmeter.h6
-rw-r--r--apps/recorder/recording.c132
-rw-r--r--apps/settings.h4
-rw-r--r--apps/settings_list.c10
30 files changed, 263 insertions, 240 deletions
diff --git a/apps/features.txt b/apps/features.txt
index 54e6afd..93b81ff 100644
--- a/apps/features.txt
+++ b/apps/features.txt
@@ -129,8 +129,8 @@ recording_mic
#endif
#endif
-#if defined(HAVE_RECORDING_HISTOGRAM)
-recording_histogram
+#if defined(HAVE_HISTOGRAM)
+histogram
#endif
#if defined(HAVE_REMOTE_LCD)
diff --git a/apps/lang/catala.lang b/apps/lang/catala.lang
index f133e3d..ec79dd7 100644
--- a/apps/lang/catala.lang
+++ b/apps/lang/catala.lang
@@ -12078,20 +12078,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Intèrval d'histograma"
+ histogram: "Intèrval d'histograma"
</dest>
<voice>
*: none
- recording_histogram: "Intèrval d'histograma"
+ histogram: "Intèrval d'histograma"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/czech.lang b/apps/lang/czech.lang
index 5d99107..43bf034 100644
--- a/apps/lang/czech.lang
+++ b/apps/lang/czech.lang
@@ -12086,20 +12086,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Rozsah histogramu"
+ histogram: "Rozsah histogramu"
</dest>
<voice>
*: none
- recording_histogram: "Rozsah histogramu"
+ histogram: "Rozsah histogramu"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/dansk.lang b/apps/lang/dansk.lang
index 3d4557a..20ebb5e 100644
--- a/apps/lang/dansk.lang
+++ b/apps/lang/dansk.lang
@@ -12566,20 +12566,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</dest>
<voice>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/deutsch.lang b/apps/lang/deutsch.lang
index ccaa140..75004b4 100644
--- a/apps/lang/deutsch.lang
+++ b/apps/lang/deutsch.lang
@@ -12440,20 +12440,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Histogrammintervall"
+ histogram: "Histogrammintervall"
</dest>
<voice>
*: none
- recording_histogram: "Histogrammintervall"
+ histogram: "Histogrammintervall"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 128d5c5..de23842 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -12169,20 +12169,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</dest>
<voice>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/espanol.lang b/apps/lang/espanol.lang
index cf4266c..f689bd6 100644
--- a/apps/lang/espanol.lang
+++ b/apps/lang/espanol.lang
@@ -12372,20 +12372,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Intervalo del histograma"
+ histogram: "Intervalo del histograma"
</dest>
<voice>
*: none
- recording_histogram: "Intervalo del histograma"
+ histogram: "Intervalo del histograma"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/francais.lang b/apps/lang/francais.lang
index a1a7566..2adf811 100644
--- a/apps/lang/francais.lang
+++ b/apps/lang/francais.lang
@@ -12110,20 +12110,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Intervalle de l'histogramme"
+ histogram: "Intervalle de l'histogramme"
</dest>
<voice>
*: none
- recording_histogram: "Intervalle de l'histogramme"
+ histogram: "Intervalle de l'histogramme"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/hebrew.lang b/apps/lang/hebrew.lang
index 2400b0b..b6937db 100644
--- a/apps/lang/hebrew.lang
+++ b/apps/lang/hebrew.lang
@@ -12548,20 +12548,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</dest>
<voice>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/hrvatski.lang b/apps/lang/hrvatski.lang
index d681a0e..1def220 100644
--- a/apps/lang/hrvatski.lang
+++ b/apps/lang/hrvatski.lang
@@ -12087,20 +12087,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Interval histograma"
+ histogram: "Interval histograma"
</dest>
<voice>
*: none
- recording_histogram: "Interval histograma"
+ histogram: "Interval histograma"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/italiano.lang b/apps/lang/italiano.lang
index 677b242..fa95de5 100644
--- a/apps/lang/italiano.lang
+++ b/apps/lang/italiano.lang
@@ -12089,20 +12089,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Intervallo Istogramma"
+ histogram: "Intervallo Istogramma"
</dest>
<voice>
*: none
- recording_histogram: "Intervallo Istogramma"
+ histogram: "Intervallo Istogramma"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/japanese.lang b/apps/lang/japanese.lang
index f1c45c9..d0b0ae8 100644
--- a/apps/lang/japanese.lang
+++ b/apps/lang/japanese.lang
@@ -12093,20 +12093,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "ヒストグラムの間隔"
+ histogram: "ヒストグラムの間隔"
</dest>
<voice>
*: none
- recording_histogram: "ヒストグラムの間隔"
+ histogram: "ヒストグラムの間隔"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/nederlands.lang b/apps/lang/nederlands.lang
index db552d5..08bf3df 100644
--- a/apps/lang/nederlands.lang
+++ b/apps/lang/nederlands.lang
@@ -12092,20 +12092,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</dest>
<voice>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/polski.lang b/apps/lang/polski.lang
index d54afde..00e1dde 100644
--- a/apps/lang/polski.lang
+++ b/apps/lang/polski.lang
@@ -12382,20 +12382,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Przedziały histogramu"
+ histogram: "Przedziały histogramu"
</dest>
<voice>
*: none
- recording_histogram: "Przedziały histogramu"
+ histogram: "Przedziały histogramu"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/portugues-brasileiro.lang b/apps/lang/portugues-brasileiro.lang
index 0bc6618..3036a79 100644
--- a/apps/lang/portugues-brasileiro.lang
+++ b/apps/lang/portugues-brasileiro.lang
@@ -12085,20 +12085,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Intervalo do Histograma"
+ histogram: "Intervalo do Histograma"
</dest>
<voice>
*: none
- recording_histogram: "Intervalo do Histograma"
+ histogram: "Intervalo do Histograma"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/portugues.lang b/apps/lang/portugues.lang
index 3917140..f2ce99b 100644
--- a/apps/lang/portugues.lang
+++ b/apps/lang/portugues.lang
@@ -12537,20 +12537,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Intervalo do Histograma"
+ histogram: "Intervalo do Histograma"
</dest>
<voice>
*: none
- recording_histogram: "Intervalo do Histograma"
+ histogram: "Intervalo do Histograma"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/russian.lang b/apps/lang/russian.lang
index dd43c4e..cbe432d 100644
--- a/apps/lang/russian.lang
+++ b/apps/lang/russian.lang
@@ -12520,20 +12520,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Интервал гистограммы"
+ histogram: "Интервал гистограммы"
</dest>
<voice>
*: none
- recording_histogram: "Интервал гистограммы"
+ histogram: "Интервал гистограммы"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/slovak.lang b/apps/lang/slovak.lang
index d4fc985..94a175e 100644
--- a/apps/lang/slovak.lang
+++ b/apps/lang/slovak.lang
@@ -12085,20 +12085,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Interval Histogramu"
+ histogram: "Interval Histogramu"
</dest>
<voice>
*: none
- recording_histogram: "Interval histogramu"
+ histogram: "Interval histogramu"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/slovenscina.lang b/apps/lang/slovenscina.lang
index 9f1bda7..14ef2c9 100644
--- a/apps/lang/slovenscina.lang
+++ b/apps/lang/slovenscina.lang
@@ -12011,20 +12011,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</dest>
<voice>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/srpski.lang b/apps/lang/srpski.lang
index 7cd4d94..179e6963 100644
--- a/apps/lang/srpski.lang
+++ b/apps/lang/srpski.lang
@@ -12499,20 +12499,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Интервал хистограма"
+ histogram: "Интервал хистограма"
</dest>
<voice>
*: none
- recording_histogram: "Интервал хистограма"
+ histogram: "Интервал хистограма"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/svenska.lang b/apps/lang/svenska.lang
index 6d94e52..ec25e00 100644
--- a/apps/lang/svenska.lang
+++ b/apps/lang/svenska.lang
@@ -12091,20 +12091,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Histogramintervall"
+ histogram: "Histogramintervall"
</dest>
<voice>
*: none
- recording_histogram: "Histogramintervall"
+ histogram: "Histogramintervall"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/tagalog.lang b/apps/lang/tagalog.lang
index f4bbc32..816c039 100644
--- a/apps/lang/tagalog.lang
+++ b/apps/lang/tagalog.lang
@@ -12559,20 +12559,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</dest>
<voice>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/thai.lang b/apps/lang/thai.lang
index d01fde0..0fceae4 100644
--- a/apps/lang/thai.lang
+++ b/apps/lang/thai.lang
@@ -12511,20 +12511,20 @@
</voice>
</phrase>
<phrase>
- id: LANG_RECORDING_HISTOGRAM_INTERVAL
+ id: LANG_HISTOGRAM_INTERVAL
desc: in record settings menu
user: core
<source>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</source>
<dest>
*: none
- recording_histogram: "ช่วงเวลาฮิสโตแกรม"
+ histogram: "ช่วงเวลาฮิสโตแกรม"
</dest>
<voice>
*: none
- recording_histogram: "Histogram interval"
+ histogram: "Histogram interval"
</voice>
</phrase>
<phrase>
diff --git a/apps/menus/display_menu.c b/apps/menus/display_menu.c
index 4badf96..7e7b5a6 100644
--- a/apps/menus/display_menu.c
+++ b/apps/menus/display_menu.c
@@ -443,6 +443,30 @@ static int peak_meter_max(void) {
settings_apply_pm_range();
return retval;
}
+
+#if defined(HAVE_HISTOGRAM)
+static bool history_interval(void)
+{
+ static const struct opt_items names[] = {
+ { "0s", TALK_ID(0, UNIT_SEC) },
+ { "1s", TALK_ID(1, UNIT_SEC) },
+ { "2s", TALK_ID(2, UNIT_SEC) },
+ { "4s", TALK_ID(4, UNIT_SEC) }
+ };
+
+ /* reconfigure histogram settings here */
+
+ return set_option(str(LANG_HISTOGRAM_INTERVAL),
+ &global_settings.histogram_interval,
+ INT, names, 4, NULL );
+}
+
+MENUITEM_FUNCTION(histogram, 0,
+ ID2P(LANG_HISTOGRAM_INTERVAL),
+ history_interval, NULL, NULL, Icon_Menu_setting);
+
+#endif
+
MENUITEM_FUNCTION(peak_meter_scale_item, 0, ID2P(LANG_PM_SCALE),
peak_meter_scale, NULL, NULL, Icon_NOICON);
MENUITEM_FUNCTION(peak_meter_min_item, 0, ID2P(LANG_PM_MIN),
@@ -455,6 +479,9 @@ MAKE_MENU(peak_meter_menu, ID2P(LANG_PM_MENU), NULL, Icon_NOICON,
#ifdef HAVE_RECORDING
&peak_meter_clipcounter,
#endif
+#ifdef HAVE_HISTOGRAM
+ &histogram,
+#endif
&peak_meter_scale_item, &peak_meter_min_item, &peak_meter_max_item);
#endif /* HAVE_LCD_BITMAP */
/* PEAK METER MENU */
diff --git a/apps/menus/recording_menu.c b/apps/menus/recording_menu.c
index 8eaeab6..ae237b1 100644
--- a/apps/menus/recording_menu.c
+++ b/apps/menus/recording_menu.c
@@ -392,26 +392,6 @@ MENUITEM_FUNCTION(agc_cliptime, 0, ID2P(LANG_RECORDING_AGC_CLIPTIME),
agc_cliptime_func, NULL, NULL, Icon_Menu_setting);
#endif /* HAVE_AGC */
-#if defined(HAVE_RECORDING_HISTOGRAM)
-static bool history_interval(void)
-{
- static const struct opt_items names[] = {
- { "0s", TALK_ID(0, UNIT_SEC) },
- { "1s", TALK_ID(1, UNIT_SEC) },
- { "2s", TALK_ID(2, UNIT_SEC) },
- { "4s", TALK_ID(4, UNIT_SEC) }
- };
- return set_option(str(LANG_RECORDING_HISTOGRAM_INTERVAL),
- &global_settings.rec_histogram_interval,
- INT, names, 4, NULL );
-}
-
-MENUITEM_FUNCTION(recording_histogram, 0,
- ID2P(LANG_RECORDING_HISTOGRAM_INTERVAL),
- history_interval, NULL, NULL, Icon_Menu_setting);
-
-#endif
-
/** Rec trigger **/
enum trigger_menu_option
{
@@ -666,9 +646,6 @@ MAKE_MENU(recording_settings_menu, ID2P(LANG_RECORDING_SETTINGS),
#ifdef HAVE_AGC
&agc_preset, &agc_cliptime,
#endif
-#if defined(HAVE_RECORDING_HISTOGRAM)
- &recording_histogram,
-#endif
#ifdef HAVE_LCD_BITMAP
&peak_meter_menu,
#endif
diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c
index ca1b8c8..c13c4c9 100644
--- a/apps/recorder/peakmeter.c
+++ b/apps/recorder/peakmeter.c
@@ -28,6 +28,7 @@
#include "storage.h"
#include "lcd.h"
#include "scrollbar.h"
+#include "string.h"
#include "button.h"
#include "system.h"
#include "font.h"
@@ -64,9 +65,10 @@ static int pm_cur_left; /* current values (last peak_meter_peek) */
static int pm_cur_right;
static int pm_max_left; /* maximum values between peak meter draws */
static int pm_max_right;
-#if defined(HAVE_AGC) || defined(HAVE_RECORDING_HISTOGRAM)
+#if defined(HAVE_AGC) || defined(HAVE_HISTOGRAM)
static int pm_peakhold_left; /* max. peak values between peakhold calls */
static int pm_peakhold_right; /* used for AGC and histogram display */
+static long next_histogram_update;
#endif
/* Clip hold */
@@ -134,6 +136,38 @@ static unsigned int peeks_per_redraw[PEEKS_PER_DRAW_SIZE];
static unsigned int ticks_per_redraw[TICKS_PER_DRAW_SIZE];
#endif
+#if defined(HAVE_HISTOGRAM)
+#define HIST_BUF_SIZE (LCD_WIDTH / 2)
+static int hist_l = 0;
+static int hist_r = 0;
+static unsigned char history_l[HIST_BUF_SIZE];
+static unsigned char history_r[HIST_BUF_SIZE];
+static const char hist_level_marks[6] = { 29, 26, 23, 17, 9, 2};
+static int history_pos = 0;
+#define HIST_W (LCD_WIDTH / 2)
+#if LCD_DEPTH > 1
+#ifdef HAVE_LCD_COLOR
+#define LCD_BAL_L LCD_RGBPACK(0, 0, 255)
+#define LCD_BAL_R LCD_RGBPACK(204, 0, 0)
+#define LCD_HIST_OVER LCD_RGBPACK(204, 0, 0)
+#define LCD_HIST_HI LCD_RGBPACK(255, 204, 0)
+#define LCD_HIST_OK LCD_RGBPACK(51, 153, 0)
+#else /* HAVE_LCD_COLOR */
+#define LCD_BATT_OK LCD_BLACK
+#define LCD_BATT_LO LCD_DARKGRAY
+#define LCD_DISK_OK LCD_BLACK
+#define LCD_DISK_LO LCD_DARKGRAY
+#define LCD_HIST_OVER LCD_BLACK
+#define LCD_HIST_OK LCD_DARKGRAY
+#define LCD_BAL LCD_DARKGRAY
+#endif /* HAVE_LCD_COLOR */
+#else /* LCD_DEPTH > 1 */
+#define LCD_HIST_OVER LCD_DEFAULT_FG
+#define LCD_HIST_OK LCD_DEFAULT_FG
+#define LCD_BAL LCD_DEFAULT_FG
+#endif /* LCD_DEPTH > 1 */
+#endif /* HAVE_HISTOGRAM */
+
static void peak_meter_draw(struct screen *display, struct meter_scales *meter_scales,
int x, int y, int width, int height);
@@ -810,7 +844,7 @@ static int peak_meter_read_l(void)
retval = pm_max_left;
-#if defined(HAVE_RECORDING_HISTOGRAM) || defined(HAVE_AGC)
+#if defined(HAVE_HISTOGRAM) || defined(HAVE_AGC)
/* store max peak value for peak_meter_get_peakhold_x readout */
pm_peakhold_left = MAX(pm_max_left, pm_peakhold_left);
#endif
@@ -843,7 +877,7 @@ static int peak_meter_read_r(void)
retval = pm_max_right;
-#if defined(HAVE_RECORDING_HISTOGRAM) || defined(HAVE_AGC)
+#if defined(HAVE_HISTOGRAM) || defined(HAVE_AGC)
/* store max peak value for peak_meter_get_peakhold_x readout */
pm_peakhold_right = MAX(pm_max_right, pm_peakhold_right);
#endif
@@ -857,7 +891,7 @@ static int peak_meter_read_r(void)
return retval;
}
-#if defined(HAVE_AGC) || defined(HAVE_RECORDING_HISTOGRAM)
+#if defined(HAVE_AGC) || defined(HAVE_HISTOGRAM)
/**
* Reads out the current peak-hold values since the last call.
* This is used by the histogram feature in the recording screen.
@@ -869,6 +903,14 @@ void peak_meter_get_peakhold(int *peak_left, int *peak_right)
*peak_left = pm_peakhold_left;
if (peak_right)
*peak_right = pm_peakhold_right;
+
+#ifdef HAVE_HISTOGRAM
+ if (*peak_left > hist_l)
+ hist_l = *peak_left;
+ if (*peak_right > hist_r)
+ hist_r = *peak_right;
+#endif
+
pm_peakhold_left = 0;
pm_peakhold_right = 0;
}
@@ -1447,4 +1489,75 @@ bool peak_meter_histogram(void)
}
#endif
+#ifdef HAVE_HISTOGRAM
+void histogram_init()
+{
+ /* get update interval, clear buffer, reset drawing position */
+ memset(history_l, 0, sizeof(unsigned char)*HIST_BUF_SIZE);
+ memset(history_r, 0, sizeof(unsigned char)*HIST_BUF_SIZE);
+ next_histogram_update = current_tick +
+ (global_settings.histogram_interval * HZ);
+}
+
+void histogram_draw(int x1, int x2, int y1, int y2, int width, int height)
+{
+ int i, j;
+ if (current_tick >= next_histogram_update)
+ {
+ /* fill history buffer */
+ history_l[history_pos] = hist_l * height / 32767;
+ history_r[history_pos] = hist_r * height / 32767;
+ history_pos = (history_pos + 1) % HIST_BUF_SIZE;
+ history_l[history_pos] = history_r[history_pos] = 0;
+ history_l[(history_pos + 1) % HIST_BUF_SIZE] = 0;
+ history_r[(history_pos + 1) % HIST_BUF_SIZE] = 0;
+ hist_l = 0;
+ hist_r = 0;
+ next_histogram_update = current_tick +
+ (global_settings.histogram_interval * HZ);
+ }
+ lcd_set_drawmode(DRMODE_SOLID);
+ lcd_drawrect(x1, y1, width, height);
+ lcd_drawrect(x2, y2, width, height);
+ lcd_set_drawmode(DRMODE_FG);
+
+ j = history_pos;
+ for (i = width-2; i >= 0; i--)
+ {
+ j--;
+ if(j<0)
+ j = HIST_BUF_SIZE-1;
+ if (history_l[j])
+ {
+ if (history_l[j] == height)
+ lcd_set_foreground(LCD_HIST_OVER);
+#ifdef HAVE_LCD_COLOR
+ else if (history_l[j] > hist_level_marks[1])
+ lcd_set_foreground(LCD_HIST_HI);
+#endif
+ else
+ lcd_set_foreground(LCD_HIST_OK);
+ lcd_vline(x1 + i, y1 + height - 2, y1 + height - history_l[j]);
+ }
+ if (history_r[j])
+ {
+ if (history_r[j] == height)
+ lcd_set_foreground(LCD_HIST_OVER);
+#ifdef HAVE_LCD_COLOR
+ else if (history_r[j] > hist_level_marks[1])
+ lcd_set_foreground(LCD_HIST_HI);
+#endif
+ else
+ lcd_set_foreground(LCD_HIST_OK);
+ lcd_vline(x2 + i, y2 + height - 2, y2 + height - history_r[j]);
+ }
+ }
+ lcd_set_foreground(
+#ifdef HAVE_LCD_COLOR
+ global_settings.fg_color);
+#else
+ LCD_DEFAULT_FG);
+#endif
+}
+#endif /* HAVE_HISTOGRAM */
diff --git a/apps/recorder/peakmeter.h b/apps/recorder/peakmeter.h
index fee4882..6be43a5 100644
--- a/apps/recorder/peakmeter.h
+++ b/apps/recorder/peakmeter.h
@@ -56,6 +56,11 @@ extern int calc_db (int isample);
extern int peak_meter_db2sample(int db);
extern unsigned short peak_meter_scale_value(unsigned short val, int meterwidth);
+#ifdef HAVE_HISTOGRAM
+extern void histogram_init(void);
+extern void histogram_draw(int x1, int x2, int y1, int y2, int width, int height);
+#endif
+
/* valid values for trigger_status */
#define TRIG_OFF 0x00
#define TRIG_READY 0x01
@@ -103,3 +108,4 @@ struct meter_scales{
extern void peak_meter_screen(struct screen *display, int x, int y, int height);
#endif /* __PEAKMETER_H__ */
+
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index 34283b6..6faaa6c 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -269,39 +269,9 @@ static short agc_baltime = 0;
/* AGC maximum gain */
static short agc_maxgain;
#endif /* HAVE_AGC */
-#if defined(HAVE_AGC) || defined(HAVE_RECORDING_HISTOGRAM)
+#if defined(HAVE_AGC)
static long hist_time = 0;
-#endif /* HAVE_AGC or HAVE_RECORDING_HISTOGRAM */
-/* Histogram data */
-/* TO DO: move some of this stuff inside the recording function? */
-#ifdef HAVE_RECORDING_HISTOGRAM
-static int hist_l = 0;
-static int hist_r = 0;
-#define HIST_BUF_SIZE (LCD_WIDTH)
-#define HIST_Y (hist_pos_y+hist_size_h-1)
-#define HIST_W (LCD_WIDTH / 2 - 4)
-#if LCD_DEPTH > 1
-#ifdef HAVE_LCD_COLOR
-#define LCD_BAL_L LCD_RGBPACK(0, 0, 255)
-#define LCD_BAL_R LCD_RGBPACK(204, 0, 0)
-#define LCD_HIST_OVER LCD_RGBPACK(204, 0, 0)
-#define LCD_HIST_HI LCD_RGBPACK(255, 204, 0)
-#define LCD_HIST_OK LCD_RGBPACK(51, 153, 0)
-#else /* HAVE_LCD_COLOR */
-#define LCD_BATT_OK LCD_BLACK
-#define LCD_BATT_LO LCD_DARKGRAY
-#define LCD_DISK_OK LCD_BLACK
-#define LCD_DISK_LO LCD_DARKGRAY
-#define LCD_HIST_OVER LCD_BLACK
-#define LCD_HIST_OK LCD_DARKGRAY
-#define LCD_BAL LCD_DARKGRAY
-#endif /* HAVE_LCD_COLOR */
-#else /* LCD_DEPTH > 1 */
-#define LCD_HIST_OVER LCD_DEFAULT_FG
-#define LCD_HIST_OK LCD_DEFAULT_FG
-#define LCD_BAL LCD_DEFAULT_FG
-#endif /* LCD_DEPTH > 1 */
-#endif /* HAVE_RECORDING_HISTOGRAM */
+#endif /* HAVE_AGC */
static void set_gain(void)
{
@@ -368,13 +338,6 @@ static bool read_peak_levels(int *peak_l, int *peak_r, int *balance)
*balance += balance_mem[i];
*balance = *balance / BAL_MEM_SIZE;
-#ifdef HAVE_RECORDING_HISTOGRAM
- if (*peak_l > hist_l)
- hist_l = *peak_l;
- if (*peak_r > hist_r)
- hist_r = *peak_r;
-#endif
-
return true;
}
@@ -1089,18 +1052,12 @@ bool recording_screen(bool no_source)
/* tweak layout tiny screens / big fonts */
bool compact_view[NB_SCREENS] = { false };
struct gui_synclist lists; /* the list in the bottom vp */
-#if defined(HAVE_AGC) || defined(HAVE_RECORDING_HISTOGRAM)
+#if defined(HAVE_AGC)
bool peak_valid = false;
#endif
-#if defined(HAVE_RECORDING_HISTOGRAM)
- int j;
+#if defined(HAVE_HISTOGRAM)
unsigned short hist_pos_y = 0;
unsigned short hist_size_h = 0;
- int history_pos = 0;
- short hist_time_interval = 1; /* 1, 2, 4, 8 */
- unsigned char history_l[HIST_BUF_SIZE];
- unsigned char history_r[HIST_BUF_SIZE];
- const char hist_level_marks[6] = { 29, 26, 23, 17, 9, 2};
#endif
#ifdef HAVE_FMRADIO_REC
int prev_rec_source = global_settings.rec_source; /* detect source change */
@@ -1186,10 +1143,9 @@ bool recording_screen(bool no_source)
/* top vp, 4 lines, force sys font if total screen < 6 lines
NOTE: one could limit the list to 1 line and get away with 5 lines */
top_height_req[i] = 4;
-#if defined(HAVE_RECORDING_HISTOGRAM)
- if((global_settings.rec_histogram_interval) && (!i))
+#if defined(HAVE_HISTOGRAM)
+ if((global_settings.histogram_interval) && (!i))
top_height_req[i] += 1; /* use one line for histogram */
- hist_time_interval = 1 << global_settings.rec_histogram_interval;
#endif
v = &vp_top[i];
viewport_set_defaults(v, i);
@@ -1229,13 +1185,11 @@ bool recording_screen(bool no_source)
send_event(GUI_EVENT_ACTIONUPDATE, (void*)1); /* force a redraw */
-#if defined(HAVE_RECORDING_HISTOGRAM)
- history_pos = 0;
+#if defined(HAVE_HISTOGRAM)
hist_pos_y = (compact_view[0] ? 3 : 4) * (font_get(vp_top[0].font)->height)
+ 1;
hist_size_h = font_get(vp_top[0].font)->height - 2;
- memset(history_l, 0, sizeof(unsigned char)*HIST_BUF_SIZE);
- memset(history_r, 0, sizeof(unsigned char)*HIST_BUF_SIZE);
+ histogram_init();
#endif
FOR_NB_SCREENS(i)
@@ -1887,75 +1841,21 @@ bool recording_screen(bool no_source)
}
}
-#ifdef HAVE_RECORDING_HISTOGRAM
- if(global_settings.rec_histogram_interval)
- {
- if (peak_valid && !(hist_time % hist_time_interval) && hist_l)
+#ifdef HAVE_HISTOGRAM
+ if(global_settings.histogram_interval)
{
- /* fill history buffer */
- history_l[history_pos] = hist_l * hist_size_h / 32767;
- history_r[history_pos] = hist_r * hist_size_h / 32767;
- history_pos = (history_pos + 1) % HIST_BUF_SIZE;
- history_l[history_pos] = history_r[history_pos] = 0;
- history_l[(history_pos + 1) % HIST_BUF_SIZE] = 0;
- history_r[(history_pos + 1) % HIST_BUF_SIZE] = 0;
- hist_l = 0;
- hist_r = 0;
+ histogram_draw(0,
+ screens[0].getwidth()/2,
+ hist_pos_y,
+ hist_pos_y,
+ screens[0].getwidth()/2,
+ hist_size_h);
}
- lcd_set_drawmode(DRMODE_SOLID);
- lcd_drawrect(0, hist_pos_y - 1,
- HIST_W + 2, hist_size_h + 1);
- lcd_drawrect(HIST_W + 6, hist_pos_y - 1,
- HIST_W + 2, hist_size_h + 1);
- lcd_set_drawmode(DRMODE_FG);
-
- j = history_pos;
- for (i = HIST_W-1; i >= 0; i--)
- {
- j--;
- if(j<0)
- j = HIST_BUF_SIZE-1;
- if (history_l[j])
- {
- if (history_l[j] == hist_size_h)
- lcd_set_foreground(LCD_HIST_OVER);
-#ifdef HAVE_LCD_COLOR
- else if (history_l[j] > hist_level_marks[1])
- lcd_set_foreground(LCD_HIST_HI);
#endif
- else
- lcd_set_foreground(LCD_HIST_OK);
- lcd_vline(1 + i, HIST_Y-1, HIST_Y - history_l[j]);
- }
- if (history_r[j])
- {
- if (history_r[j] == hist_size_h)
- lcd_set_foreground(LCD_HIST_OVER);
-#ifdef HAVE_LCD_COLOR
- else if (history_r[j] > hist_level_marks[1])
- lcd_set_foreground(LCD_HIST_HI);
-#endif
- else
- lcd_set_foreground(LCD_HIST_OK);
- lcd_vline(HIST_W+7 + i, HIST_Y-1, HIST_Y - history_r[j]);
- }
- }
- lcd_set_foreground(
-#ifdef HAVE_LCD_COLOR
- global_settings.fg_color);
-#else
- LCD_DEFAULT_FG);
-#endif
- for (i = 0; i < 6; i++)
- lcd_hline(HIST_W + 3, HIST_W + 4,
- HIST_Y - hist_level_marks[i]);
- }
-#endif /* HAVE_RECORDING_HISTOGRAM */
#ifdef HAVE_AGC
hist_time++;
#endif
-
/* draw the trigger status */
if (peak_meter_trigger_status() != TRIG_OFF)
{
diff --git a/apps/settings.h b/apps/settings.h
index bed88c8..05965b3 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -438,8 +438,8 @@ struct user_settings
int rec_stop_gap; /* index of trig_durations */
int rec_trigger_mode; /* see TRIG_MODE_XXX constants */
int rec_trigger_type; /* what to do when trigger released */
-#ifdef HAVE_RECORDING_HISTOGRAM
- int rec_histogram_interval; /* recording peakmeter histogram */
+#ifdef HAVE_HISTOGRAM
+ int histogram_interval; /* recording peakmeter histogram */
#endif
#ifdef HAVE_AGC
diff --git a/apps/settings_list.c b/apps/settings_list.c
index f282b8a..019a144 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1238,14 +1238,14 @@ const struct settings_list settings[] = {
CHOICE_SETTING(F_RECSETTING, rec_trigger_type, LANG_RECORD_TRIGGER_TYPE, TRIG_TYPE_STOP,
"trigger type","stop,pause,nf stp", NULL ,3,
ID2P(LANG_RECORD_TRIGGER_STOP), ID2P(LANG_PAUSE), ID2P(LANG_RECORD_TRIGGER_NEWFILESTP)),
-#ifdef HAVE_RECORDING_HISTOGRAM
+#endif /* HAVE_RECORDING */
+
+#ifdef HAVE_HISTOGRAM
/* TO DO: additional restictions of following REP items? */
- TABLE_SETTING(F_RECSETTING, rec_histogram_interval, LANG_RECORDING_HISTOGRAM_INTERVAL, 0,
+ TABLE_SETTING(F_RECSETTING, histogram_interval, LANG_HISTOGRAM_INTERVAL, 0,
"histogram interval","0s,1s,2s,4s",
UNIT_SEC, NULL, NULL, NULL, 4, 0,1,2,4),
-#endif /* HAVE_RECORDING_HISTOGRAM */
-
-#endif /* HAVE_RECORDING */
+#endif /* HAVE_HISTOGRAM */
#ifdef HAVE_SPDIF_POWER
OFFON_SETTING(F_SOUNDSETTING, spdif_enable, LANG_SPDIF_ENABLE, false,