summaryrefslogtreecommitdiff
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
parent62e06cc2a432bb9499646f089796157135829195 (diff)
downloadrockbox-82f4c60db4f16642c1ee9f461d7eb060c11a49d8.tar.gz
rockbox-82f4c60db4f16642c1ee9f461d7eb060c11a49d8.zip
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
-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
-rw-r--r--firmware/export/config/iriverh100.h2
-rw-r--r--firmware/export/config/iriverh120.h2
-rw-r--r--firmware/export/config/iriverh300.h2
33 files changed, 266 insertions, 243 deletions
diff --git a/apps/features.txt b/apps/features.txt
index 54e6afddf3..93b81ff4a5 100644
--- a/apps/features.txt
+++ b/apps/features.txt
@@ -129,8 +129,8 @@ recording_mic
129#endif 129#endif
130#endif 130#endif
131 131
132#if defined(HAVE_RECORDING_HISTOGRAM) 132#if defined(HAVE_HISTOGRAM)
133recording_histogram 133histogram
134#endif 134#endif
135 135
136#if defined(HAVE_REMOTE_LCD) 136#if defined(HAVE_REMOTE_LCD)
diff --git a/apps/lang/catala.lang b/apps/lang/catala.lang
index f133e3dd9e..ec79dd7d89 100644
--- a/apps/lang/catala.lang
+++ b/apps/lang/catala.lang
@@ -12078,20 +12078,20 @@
12078 </voice> 12078 </voice>
12079</phrase> 12079</phrase>
12080<phrase> 12080<phrase>
12081 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12081 id: LANG_HISTOGRAM_INTERVAL
12082 desc: in record settings menu 12082 desc: in record settings menu
12083 user: core 12083 user: core
12084 <source> 12084 <source>
12085 *: none 12085 *: none
12086 recording_histogram: "Histogram interval" 12086 histogram: "Histogram interval"
12087 </source> 12087 </source>
12088 <dest> 12088 <dest>
12089 *: none 12089 *: none
12090 recording_histogram: "Intèrval d'histograma" 12090 histogram: "Intèrval d'histograma"
12091 </dest> 12091 </dest>
12092 <voice> 12092 <voice>
12093 *: none 12093 *: none
12094 recording_histogram: "Intèrval d'histograma" 12094 histogram: "Intèrval d'histograma"
12095 </voice> 12095 </voice>
12096</phrase> 12096</phrase>
12097<phrase> 12097<phrase>
diff --git a/apps/lang/czech.lang b/apps/lang/czech.lang
index 5d99107296..43bf034071 100644
--- a/apps/lang/czech.lang
+++ b/apps/lang/czech.lang
@@ -12086,20 +12086,20 @@
12086 </voice> 12086 </voice>
12087</phrase> 12087</phrase>
12088<phrase> 12088<phrase>
12089 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12089 id: LANG_HISTOGRAM_INTERVAL
12090 desc: in record settings menu 12090 desc: in record settings menu
12091 user: core 12091 user: core
12092 <source> 12092 <source>
12093 *: none 12093 *: none
12094 recording_histogram: "Histogram interval" 12094 histogram: "Histogram interval"
12095 </source> 12095 </source>
12096 <dest> 12096 <dest>
12097 *: none 12097 *: none
12098 recording_histogram: "Rozsah histogramu" 12098 histogram: "Rozsah histogramu"
12099 </dest> 12099 </dest>
12100 <voice> 12100 <voice>
12101 *: none 12101 *: none
12102 recording_histogram: "Rozsah histogramu" 12102 histogram: "Rozsah histogramu"
12103 </voice> 12103 </voice>
12104</phrase> 12104</phrase>
12105<phrase> 12105<phrase>
diff --git a/apps/lang/dansk.lang b/apps/lang/dansk.lang
index 3d4557ac4f..20ebb5e58b 100644
--- a/apps/lang/dansk.lang
+++ b/apps/lang/dansk.lang
@@ -12566,20 +12566,20 @@
12566 </voice> 12566 </voice>
12567</phrase> 12567</phrase>
12568<phrase> 12568<phrase>
12569 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12569 id: LANG_HISTOGRAM_INTERVAL
12570 desc: in record settings menu 12570 desc: in record settings menu
12571 user: core 12571 user: core
12572 <source> 12572 <source>
12573 *: none 12573 *: none
12574 recording_histogram: "Histogram interval" 12574 histogram: "Histogram interval"
12575 </source> 12575 </source>
12576 <dest> 12576 <dest>
12577 *: none 12577 *: none
12578 recording_histogram: "Histogram interval" 12578 histogram: "Histogram interval"
12579 </dest> 12579 </dest>
12580 <voice> 12580 <voice>
12581 *: none 12581 *: none
12582 recording_histogram: "Histogram interval" 12582 histogram: "Histogram interval"
12583 </voice> 12583 </voice>
12584</phrase> 12584</phrase>
12585<phrase> 12585<phrase>
diff --git a/apps/lang/deutsch.lang b/apps/lang/deutsch.lang
index ccaa140b37..75004b44db 100644
--- a/apps/lang/deutsch.lang
+++ b/apps/lang/deutsch.lang
@@ -12440,20 +12440,20 @@
12440 </voice> 12440 </voice>
12441</phrase> 12441</phrase>
12442<phrase> 12442<phrase>
12443 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12443 id: LANG_HISTOGRAM_INTERVAL
12444 desc: in record settings menu 12444 desc: in record settings menu
12445 user: core 12445 user: core
12446 <source> 12446 <source>
12447 *: none 12447 *: none
12448 recording_histogram: "Histogram interval" 12448 histogram: "Histogram interval"
12449 </source> 12449 </source>
12450 <dest> 12450 <dest>
12451 *: none 12451 *: none
12452 recording_histogram: "Histogrammintervall" 12452 histogram: "Histogrammintervall"
12453 </dest> 12453 </dest>
12454 <voice> 12454 <voice>
12455 *: none 12455 *: none
12456 recording_histogram: "Histogrammintervall" 12456 histogram: "Histogrammintervall"
12457 </voice> 12457 </voice>
12458</phrase> 12458</phrase>
12459<phrase> 12459<phrase>
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 128d5c5fad..de2384214d 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -12169,20 +12169,20 @@
12169 </voice> 12169 </voice>
12170</phrase> 12170</phrase>
12171<phrase> 12171<phrase>
12172 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12172 id: LANG_HISTOGRAM_INTERVAL
12173 desc: in record settings menu 12173 desc: in record settings menu
12174 user: core 12174 user: core
12175 <source> 12175 <source>
12176 *: none 12176 *: none
12177 recording_histogram: "Histogram interval" 12177 histogram: "Histogram interval"
12178 </source> 12178 </source>
12179 <dest> 12179 <dest>
12180 *: none 12180 *: none
12181 recording_histogram: "Histogram interval" 12181 histogram: "Histogram interval"
12182 </dest> 12182 </dest>
12183 <voice> 12183 <voice>
12184 *: none 12184 *: none
12185 recording_histogram: "Histogram interval" 12185 histogram: "Histogram interval"
12186 </voice> 12186 </voice>
12187</phrase> 12187</phrase>
12188<phrase> 12188<phrase>
diff --git a/apps/lang/espanol.lang b/apps/lang/espanol.lang
index cf4266c062..f689bd6999 100644
--- a/apps/lang/espanol.lang
+++ b/apps/lang/espanol.lang
@@ -12372,20 +12372,20 @@
12372 </voice> 12372 </voice>
12373</phrase> 12373</phrase>
12374<phrase> 12374<phrase>
12375 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12375 id: LANG_HISTOGRAM_INTERVAL
12376 desc: in record settings menu 12376 desc: in record settings menu
12377 user: core 12377 user: core
12378 <source> 12378 <source>
12379 *: none 12379 *: none
12380 recording_histogram: "Histogram interval" 12380 histogram: "Histogram interval"
12381 </source> 12381 </source>
12382 <dest> 12382 <dest>
12383 *: none 12383 *: none
12384 recording_histogram: "Intervalo del histograma" 12384 histogram: "Intervalo del histograma"
12385 </dest> 12385 </dest>
12386 <voice> 12386 <voice>
12387 *: none 12387 *: none
12388 recording_histogram: "Intervalo del histograma" 12388 histogram: "Intervalo del histograma"
12389 </voice> 12389 </voice>
12390</phrase> 12390</phrase>
12391<phrase> 12391<phrase>
diff --git a/apps/lang/francais.lang b/apps/lang/francais.lang
index a1a7566647..2adf811d54 100644
--- a/apps/lang/francais.lang
+++ b/apps/lang/francais.lang
@@ -12110,20 +12110,20 @@
12110 </voice> 12110 </voice>
12111</phrase> 12111</phrase>
12112<phrase> 12112<phrase>
12113 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12113 id: LANG_HISTOGRAM_INTERVAL
12114 desc: in record settings menu 12114 desc: in record settings menu
12115 user: core 12115 user: core
12116 <source> 12116 <source>
12117 *: none 12117 *: none
12118 recording_histogram: "Histogram interval" 12118 histogram: "Histogram interval"
12119 </source> 12119 </source>
12120 <dest> 12120 <dest>
12121 *: none 12121 *: none
12122 recording_histogram: "Intervalle de l'histogramme" 12122 histogram: "Intervalle de l'histogramme"
12123 </dest> 12123 </dest>
12124 <voice> 12124 <voice>
12125 *: none 12125 *: none
12126 recording_histogram: "Intervalle de l'histogramme" 12126 histogram: "Intervalle de l'histogramme"
12127 </voice> 12127 </voice>
12128</phrase> 12128</phrase>
12129<phrase> 12129<phrase>
diff --git a/apps/lang/hebrew.lang b/apps/lang/hebrew.lang
index 2400b0bb53..b6937db808 100644
--- a/apps/lang/hebrew.lang
+++ b/apps/lang/hebrew.lang
@@ -12548,20 +12548,20 @@
12548 </voice> 12548 </voice>
12549</phrase> 12549</phrase>
12550<phrase> 12550<phrase>
12551 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12551 id: LANG_HISTOGRAM_INTERVAL
12552 desc: in record settings menu 12552 desc: in record settings menu
12553 user: core 12553 user: core
12554 <source> 12554 <source>
12555 *: none 12555 *: none
12556 recording_histogram: "Histogram interval" 12556 histogram: "Histogram interval"
12557 </source> 12557 </source>
12558 <dest> 12558 <dest>
12559 *: none 12559 *: none
12560 recording_histogram: "Histogram interval" 12560 histogram: "Histogram interval"
12561 </dest> 12561 </dest>
12562 <voice> 12562 <voice>
12563 *: none 12563 *: none
12564 recording_histogram: "Histogram interval" 12564 histogram: "Histogram interval"
12565 </voice> 12565 </voice>
12566</phrase> 12566</phrase>
12567<phrase> 12567<phrase>
diff --git a/apps/lang/hrvatski.lang b/apps/lang/hrvatski.lang
index d681a0ed6c..1def22085f 100644
--- a/apps/lang/hrvatski.lang
+++ b/apps/lang/hrvatski.lang
@@ -12087,20 +12087,20 @@
12087 </voice> 12087 </voice>
12088</phrase> 12088</phrase>
12089<phrase> 12089<phrase>
12090 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12090 id: LANG_HISTOGRAM_INTERVAL
12091 desc: in record settings menu 12091 desc: in record settings menu
12092 user: core 12092 user: core
12093 <source> 12093 <source>
12094 *: none 12094 *: none
12095 recording_histogram: "Histogram interval" 12095 histogram: "Histogram interval"
12096 </source> 12096 </source>
12097 <dest> 12097 <dest>
12098 *: none 12098 *: none
12099 recording_histogram: "Interval histograma" 12099 histogram: "Interval histograma"
12100 </dest> 12100 </dest>
12101 <voice> 12101 <voice>
12102 *: none 12102 *: none
12103 recording_histogram: "Interval histograma" 12103 histogram: "Interval histograma"
12104 </voice> 12104 </voice>
12105</phrase> 12105</phrase>
12106<phrase> 12106<phrase>
diff --git a/apps/lang/italiano.lang b/apps/lang/italiano.lang
index 677b242e3d..fa95de5086 100644
--- a/apps/lang/italiano.lang
+++ b/apps/lang/italiano.lang
@@ -12089,20 +12089,20 @@
12089 </voice> 12089 </voice>
12090</phrase> 12090</phrase>
12091<phrase> 12091<phrase>
12092 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12092 id: LANG_HISTOGRAM_INTERVAL
12093 desc: in record settings menu 12093 desc: in record settings menu
12094 user: core 12094 user: core
12095 <source> 12095 <source>
12096 *: none 12096 *: none
12097 recording_histogram: "Histogram interval" 12097 histogram: "Histogram interval"
12098 </source> 12098 </source>
12099 <dest> 12099 <dest>
12100 *: none 12100 *: none
12101 recording_histogram: "Intervallo Istogramma" 12101 histogram: "Intervallo Istogramma"
12102 </dest> 12102 </dest>
12103 <voice> 12103 <voice>
12104 *: none 12104 *: none
12105 recording_histogram: "Intervallo Istogramma" 12105 histogram: "Intervallo Istogramma"
12106 </voice> 12106 </voice>
12107</phrase> 12107</phrase>
12108<phrase> 12108<phrase>
diff --git a/apps/lang/japanese.lang b/apps/lang/japanese.lang
index f1c45c9187..d0b0ae8434 100644
--- a/apps/lang/japanese.lang
+++ b/apps/lang/japanese.lang
@@ -12093,20 +12093,20 @@
12093 </voice> 12093 </voice>
12094</phrase> 12094</phrase>
12095<phrase> 12095<phrase>
12096 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12096 id: LANG_HISTOGRAM_INTERVAL
12097 desc: in record settings menu 12097 desc: in record settings menu
12098 user: core 12098 user: core
12099 <source> 12099 <source>
12100 *: none 12100 *: none
12101 recording_histogram: "Histogram interval" 12101 histogram: "Histogram interval"
12102 </source> 12102 </source>
12103 <dest> 12103 <dest>
12104 *: none 12104 *: none
12105 recording_histogram: "ヒストグラムの間隔" 12105 histogram: "ヒストグラムの間隔"
12106 </dest> 12106 </dest>
12107 <voice> 12107 <voice>
12108 *: none 12108 *: none
12109 recording_histogram: "ヒストグラムの間隔" 12109 histogram: "ヒストグラムの間隔"
12110 </voice> 12110 </voice>
12111</phrase> 12111</phrase>
12112<phrase> 12112<phrase>
diff --git a/apps/lang/nederlands.lang b/apps/lang/nederlands.lang
index db552d52c6..08bf3dfa81 100644
--- a/apps/lang/nederlands.lang
+++ b/apps/lang/nederlands.lang
@@ -12092,20 +12092,20 @@
12092 </voice> 12092 </voice>
12093</phrase> 12093</phrase>
12094<phrase> 12094<phrase>
12095 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12095 id: LANG_HISTOGRAM_INTERVAL
12096 desc: in record settings menu 12096 desc: in record settings menu
12097 user: core 12097 user: core
12098 <source> 12098 <source>
12099 *: none 12099 *: none
12100 recording_histogram: "Histogram interval" 12100 histogram: "Histogram interval"
12101 </source> 12101 </source>
12102 <dest> 12102 <dest>
12103 *: none 12103 *: none
12104 recording_histogram: "Histogram interval" 12104 histogram: "Histogram interval"
12105 </dest> 12105 </dest>
12106 <voice> 12106 <voice>
12107 *: none 12107 *: none
12108 recording_histogram: "Histogram interval" 12108 histogram: "Histogram interval"
12109 </voice> 12109 </voice>
12110</phrase> 12110</phrase>
12111<phrase> 12111<phrase>
diff --git a/apps/lang/polski.lang b/apps/lang/polski.lang
index d54afde4e9..00e1ddeaf8 100644
--- a/apps/lang/polski.lang
+++ b/apps/lang/polski.lang
@@ -12382,20 +12382,20 @@
12382 </voice> 12382 </voice>
12383</phrase> 12383</phrase>
12384<phrase> 12384<phrase>
12385 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12385 id: LANG_HISTOGRAM_INTERVAL
12386 desc: in record settings menu 12386 desc: in record settings menu
12387 user: core 12387 user: core
12388 <source> 12388 <source>
12389 *: none 12389 *: none
12390 recording_histogram: "Histogram interval" 12390 histogram: "Histogram interval"
12391 </source> 12391 </source>
12392 <dest> 12392 <dest>
12393 *: none 12393 *: none
12394 recording_histogram: "Przedziały histogramu" 12394 histogram: "Przedziały histogramu"
12395 </dest> 12395 </dest>
12396 <voice> 12396 <voice>
12397 *: none 12397 *: none
12398 recording_histogram: "Przedziały histogramu" 12398 histogram: "Przedziały histogramu"
12399 </voice> 12399 </voice>
12400</phrase> 12400</phrase>
12401<phrase> 12401<phrase>
diff --git a/apps/lang/portugues-brasileiro.lang b/apps/lang/portugues-brasileiro.lang
index 0bc6618887..3036a79151 100644
--- a/apps/lang/portugues-brasileiro.lang
+++ b/apps/lang/portugues-brasileiro.lang
@@ -12085,20 +12085,20 @@
12085 </voice> 12085 </voice>
12086</phrase> 12086</phrase>
12087<phrase> 12087<phrase>
12088 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12088 id: LANG_HISTOGRAM_INTERVAL
12089 desc: in record settings menu 12089 desc: in record settings menu
12090 user: core 12090 user: core
12091 <source> 12091 <source>
12092 *: none 12092 *: none
12093 recording_histogram: "Histogram interval" 12093 histogram: "Histogram interval"
12094 </source> 12094 </source>
12095 <dest> 12095 <dest>
12096 *: none 12096 *: none
12097 recording_histogram: "Intervalo do Histograma" 12097 histogram: "Intervalo do Histograma"
12098 </dest> 12098 </dest>
12099 <voice> 12099 <voice>
12100 *: none 12100 *: none
12101 recording_histogram: "Intervalo do Histograma" 12101 histogram: "Intervalo do Histograma"
12102 </voice> 12102 </voice>
12103</phrase> 12103</phrase>
12104<phrase> 12104<phrase>
diff --git a/apps/lang/portugues.lang b/apps/lang/portugues.lang
index 3917140b35..f2ce99bb73 100644
--- a/apps/lang/portugues.lang
+++ b/apps/lang/portugues.lang
@@ -12537,20 +12537,20 @@
12537 </voice> 12537 </voice>
12538</phrase> 12538</phrase>
12539<phrase> 12539<phrase>
12540 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12540 id: LANG_HISTOGRAM_INTERVAL
12541 desc: in record settings menu 12541 desc: in record settings menu
12542 user: core 12542 user: core
12543 <source> 12543 <source>
12544 *: none 12544 *: none
12545 recording_histogram: "Histogram interval" 12545 histogram: "Histogram interval"
12546 </source> 12546 </source>
12547 <dest> 12547 <dest>
12548 *: none 12548 *: none
12549 recording_histogram: "Intervalo do Histograma" 12549 histogram: "Intervalo do Histograma"
12550 </dest> 12550 </dest>
12551 <voice> 12551 <voice>
12552 *: none 12552 *: none
12553 recording_histogram: "Intervalo do Histograma" 12553 histogram: "Intervalo do Histograma"
12554 </voice> 12554 </voice>
12555</phrase> 12555</phrase>
12556<phrase> 12556<phrase>
diff --git a/apps/lang/russian.lang b/apps/lang/russian.lang
index dd43c4e735..cbe432d873 100644
--- a/apps/lang/russian.lang
+++ b/apps/lang/russian.lang
@@ -12520,20 +12520,20 @@
12520 </voice> 12520 </voice>
12521</phrase> 12521</phrase>
12522<phrase> 12522<phrase>
12523 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12523 id: LANG_HISTOGRAM_INTERVAL
12524 desc: in record settings menu 12524 desc: in record settings menu
12525 user: core 12525 user: core
12526 <source> 12526 <source>
12527 *: none 12527 *: none
12528 recording_histogram: "Histogram interval" 12528 histogram: "Histogram interval"
12529 </source> 12529 </source>
12530 <dest> 12530 <dest>
12531 *: none 12531 *: none
12532 recording_histogram: "Интервал гистограммы" 12532 histogram: "Интервал гистограммы"
12533 </dest> 12533 </dest>
12534 <voice> 12534 <voice>
12535 *: none 12535 *: none
12536 recording_histogram: "Интервал гистограммы" 12536 histogram: "Интервал гистограммы"
12537 </voice> 12537 </voice>
12538</phrase> 12538</phrase>
12539<phrase> 12539<phrase>
diff --git a/apps/lang/slovak.lang b/apps/lang/slovak.lang
index d4fc98567c..94a175eb15 100644
--- a/apps/lang/slovak.lang
+++ b/apps/lang/slovak.lang
@@ -12085,20 +12085,20 @@
12085 </voice> 12085 </voice>
12086</phrase> 12086</phrase>
12087<phrase> 12087<phrase>
12088 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12088 id: LANG_HISTOGRAM_INTERVAL
12089 desc: in record settings menu 12089 desc: in record settings menu
12090 user: core 12090 user: core
12091 <source> 12091 <source>
12092 *: none 12092 *: none
12093 recording_histogram: "Histogram interval" 12093 histogram: "Histogram interval"
12094 </source> 12094 </source>
12095 <dest> 12095 <dest>
12096 *: none 12096 *: none
12097 recording_histogram: "Interval Histogramu" 12097 histogram: "Interval Histogramu"
12098 </dest> 12098 </dest>
12099 <voice> 12099 <voice>
12100 *: none 12100 *: none
12101 recording_histogram: "Interval histogramu" 12101 histogram: "Interval histogramu"
12102 </voice> 12102 </voice>
12103</phrase> 12103</phrase>
12104<phrase> 12104<phrase>
diff --git a/apps/lang/slovenscina.lang b/apps/lang/slovenscina.lang
index 9f1bda76c7..14ef2c98eb 100644
--- a/apps/lang/slovenscina.lang
+++ b/apps/lang/slovenscina.lang
@@ -12011,20 +12011,20 @@
12011 </voice> 12011 </voice>
12012</phrase> 12012</phrase>
12013<phrase> 12013<phrase>
12014 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12014 id: LANG_HISTOGRAM_INTERVAL
12015 desc: in record settings menu 12015 desc: in record settings menu
12016 user: core 12016 user: core
12017 <source> 12017 <source>
12018 *: none 12018 *: none
12019 recording_histogram: "Histogram interval" 12019 histogram: "Histogram interval"
12020 </source> 12020 </source>
12021 <dest> 12021 <dest>
12022 *: none 12022 *: none
12023 recording_histogram: "Histogram interval" 12023 histogram: "Histogram interval"
12024 </dest> 12024 </dest>
12025 <voice> 12025 <voice>
12026 *: none 12026 *: none
12027 recording_histogram: "Histogram interval" 12027 histogram: "Histogram interval"
12028 </voice> 12028 </voice>
12029</phrase> 12029</phrase>
12030<phrase> 12030<phrase>
diff --git a/apps/lang/srpski.lang b/apps/lang/srpski.lang
index 7cd4d94263..179e696363 100644
--- a/apps/lang/srpski.lang
+++ b/apps/lang/srpski.lang
@@ -12499,20 +12499,20 @@
12499 </voice> 12499 </voice>
12500</phrase> 12500</phrase>
12501<phrase> 12501<phrase>
12502 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12502 id: LANG_HISTOGRAM_INTERVAL
12503 desc: in record settings menu 12503 desc: in record settings menu
12504 user: core 12504 user: core
12505 <source> 12505 <source>
12506 *: none 12506 *: none
12507 recording_histogram: "Histogram interval" 12507 histogram: "Histogram interval"
12508 </source> 12508 </source>
12509 <dest> 12509 <dest>
12510 *: none 12510 *: none
12511 recording_histogram: "Интервал хистограма" 12511 histogram: "Интервал хистограма"
12512 </dest> 12512 </dest>
12513 <voice> 12513 <voice>
12514 *: none 12514 *: none
12515 recording_histogram: "Интервал хистограма" 12515 histogram: "Интервал хистограма"
12516 </voice> 12516 </voice>
12517</phrase> 12517</phrase>
12518<phrase> 12518<phrase>
diff --git a/apps/lang/svenska.lang b/apps/lang/svenska.lang
index 6d94e52dfb..ec25e0071d 100644
--- a/apps/lang/svenska.lang
+++ b/apps/lang/svenska.lang
@@ -12091,20 +12091,20 @@
12091 </voice> 12091 </voice>
12092</phrase> 12092</phrase>
12093<phrase> 12093<phrase>
12094 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12094 id: LANG_HISTOGRAM_INTERVAL
12095 desc: in record settings menu 12095 desc: in record settings menu
12096 user: core 12096 user: core
12097 <source> 12097 <source>
12098 *: none 12098 *: none
12099 recording_histogram: "Histogram interval" 12099 histogram: "Histogram interval"
12100 </source> 12100 </source>
12101 <dest> 12101 <dest>
12102 *: none 12102 *: none
12103 recording_histogram: "Histogramintervall" 12103 histogram: "Histogramintervall"
12104 </dest> 12104 </dest>
12105 <voice> 12105 <voice>
12106 *: none 12106 *: none
12107 recording_histogram: "Histogramintervall" 12107 histogram: "Histogramintervall"
12108 </voice> 12108 </voice>
12109</phrase> 12109</phrase>
12110<phrase> 12110<phrase>
diff --git a/apps/lang/tagalog.lang b/apps/lang/tagalog.lang
index f4bbc32bc7..816c039222 100644
--- a/apps/lang/tagalog.lang
+++ b/apps/lang/tagalog.lang
@@ -12559,20 +12559,20 @@
12559 </voice> 12559 </voice>
12560</phrase> 12560</phrase>
12561<phrase> 12561<phrase>
12562 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12562 id: LANG_HISTOGRAM_INTERVAL
12563 desc: in record settings menu 12563 desc: in record settings menu
12564 user: core 12564 user: core
12565 <source> 12565 <source>
12566 *: none 12566 *: none
12567 recording_histogram: "Histogram interval" 12567 histogram: "Histogram interval"
12568 </source> 12568 </source>
12569 <dest> 12569 <dest>
12570 *: none 12570 *: none
12571 recording_histogram: "Histogram interval" 12571 histogram: "Histogram interval"
12572 </dest> 12572 </dest>
12573 <voice> 12573 <voice>
12574 *: none 12574 *: none
12575 recording_histogram: "Histogram interval" 12575 histogram: "Histogram interval"
12576 </voice> 12576 </voice>
12577</phrase> 12577</phrase>
12578<phrase> 12578<phrase>
diff --git a/apps/lang/thai.lang b/apps/lang/thai.lang
index d01fde0689..0fceae4ca4 100644
--- a/apps/lang/thai.lang
+++ b/apps/lang/thai.lang
@@ -12511,20 +12511,20 @@
12511 </voice> 12511 </voice>
12512</phrase> 12512</phrase>
12513<phrase> 12513<phrase>
12514 id: LANG_RECORDING_HISTOGRAM_INTERVAL 12514 id: LANG_HISTOGRAM_INTERVAL
12515 desc: in record settings menu 12515 desc: in record settings menu
12516 user: core 12516 user: core
12517 <source> 12517 <source>
12518 *: none 12518 *: none
12519 recording_histogram: "Histogram interval" 12519 histogram: "Histogram interval"
12520 </source> 12520 </source>
12521 <dest> 12521 <dest>
12522 *: none 12522 *: none
12523 recording_histogram: "ช่วงเวลาฮิสโตแกรม" 12523 histogram: "ช่วงเวลาฮิสโตแกรม"
12524 </dest> 12524 </dest>
12525 <voice> 12525 <voice>
12526 *: none 12526 *: none
12527 recording_histogram: "Histogram interval" 12527 histogram: "Histogram interval"
12528 </voice> 12528 </voice>
12529</phrase> 12529</phrase>
12530<phrase> 12530<phrase>
diff --git a/apps/menus/display_menu.c b/apps/menus/display_menu.c
index 4badf960ba..7e7b5a6903 100644
--- a/apps/menus/display_menu.c
+++ b/apps/menus/display_menu.c
@@ -443,6 +443,30 @@ static int peak_meter_max(void) {
443 settings_apply_pm_range(); 443 settings_apply_pm_range();
444 return retval; 444 return retval;
445} 445}
446
447#if defined(HAVE_HISTOGRAM)
448static bool history_interval(void)
449{
450 static const struct opt_items names[] = {
451 { "0s", TALK_ID(0, UNIT_SEC) },
452 { "1s", TALK_ID(1, UNIT_SEC) },
453 { "2s", TALK_ID(2, UNIT_SEC) },
454 { "4s", TALK_ID(4, UNIT_SEC) }
455 };
456
457 /* reconfigure histogram settings here */
458
459 return set_option(str(LANG_HISTOGRAM_INTERVAL),
460 &global_settings.histogram_interval,
461 INT, names, 4, NULL );
462}
463
464MENUITEM_FUNCTION(histogram, 0,
465 ID2P(LANG_HISTOGRAM_INTERVAL),
466 history_interval, NULL, NULL, Icon_Menu_setting);
467
468#endif
469
446MENUITEM_FUNCTION(peak_meter_scale_item, 0, ID2P(LANG_PM_SCALE), 470MENUITEM_FUNCTION(peak_meter_scale_item, 0, ID2P(LANG_PM_SCALE),
447 peak_meter_scale, NULL, NULL, Icon_NOICON); 471 peak_meter_scale, NULL, NULL, Icon_NOICON);
448MENUITEM_FUNCTION(peak_meter_min_item, 0, ID2P(LANG_PM_MIN), 472MENUITEM_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,
455#ifdef HAVE_RECORDING 479#ifdef HAVE_RECORDING
456 &peak_meter_clipcounter, 480 &peak_meter_clipcounter,
457#endif 481#endif
482#ifdef HAVE_HISTOGRAM
483 &histogram,
484#endif
458 &peak_meter_scale_item, &peak_meter_min_item, &peak_meter_max_item); 485 &peak_meter_scale_item, &peak_meter_min_item, &peak_meter_max_item);
459#endif /* HAVE_LCD_BITMAP */ 486#endif /* HAVE_LCD_BITMAP */
460/* PEAK METER MENU */ 487/* PEAK METER MENU */
diff --git a/apps/menus/recording_menu.c b/apps/menus/recording_menu.c
index 8eaeab699c..ae237b1b4a 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),
392 agc_cliptime_func, NULL, NULL, Icon_Menu_setting); 392 agc_cliptime_func, NULL, NULL, Icon_Menu_setting);
393#endif /* HAVE_AGC */ 393#endif /* HAVE_AGC */
394 394
395#if defined(HAVE_RECORDING_HISTOGRAM)
396static bool history_interval(void)
397{
398 static const struct opt_items names[] = {
399 { "0s", TALK_ID(0, UNIT_SEC) },
400 { "1s", TALK_ID(1, UNIT_SEC) },
401 { "2s", TALK_ID(2, UNIT_SEC) },
402 { "4s", TALK_ID(4, UNIT_SEC) }
403 };
404 return set_option(str(LANG_RECORDING_HISTOGRAM_INTERVAL),
405 &global_settings.rec_histogram_interval,
406 INT, names, 4, NULL );
407}
408
409MENUITEM_FUNCTION(recording_histogram, 0,
410 ID2P(LANG_RECORDING_HISTOGRAM_INTERVAL),
411 history_interval, NULL, NULL, Icon_Menu_setting);
412
413#endif
414
415/** Rec trigger **/ 395/** Rec trigger **/
416enum trigger_menu_option 396enum trigger_menu_option
417{ 397{
@@ -666,9 +646,6 @@ MAKE_MENU(recording_settings_menu, ID2P(LANG_RECORDING_SETTINGS),
666#ifdef HAVE_AGC 646#ifdef HAVE_AGC
667 &agc_preset, &agc_cliptime, 647 &agc_preset, &agc_cliptime,
668#endif 648#endif
669#if defined(HAVE_RECORDING_HISTOGRAM)
670 &recording_histogram,
671#endif
672#ifdef HAVE_LCD_BITMAP 649#ifdef HAVE_LCD_BITMAP
673 &peak_meter_menu, 650 &peak_meter_menu,
674#endif 651#endif
diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c
index ca1b8c8750..c13c4c9539 100644
--- a/apps/recorder/peakmeter.c
+++ b/apps/recorder/peakmeter.c
@@ -28,6 +28,7 @@
28#include "storage.h" 28#include "storage.h"
29#include "lcd.h" 29#include "lcd.h"
30#include "scrollbar.h" 30#include "scrollbar.h"
31#include "string.h"
31#include "button.h" 32#include "button.h"
32#include "system.h" 33#include "system.h"
33#include "font.h" 34#include "font.h"
@@ -64,9 +65,10 @@ static int pm_cur_left; /* current values (last peak_meter_peek) */
64static int pm_cur_right; 65static int pm_cur_right;
65static int pm_max_left; /* maximum values between peak meter draws */ 66static int pm_max_left; /* maximum values between peak meter draws */
66static int pm_max_right; 67static int pm_max_right;
67#if defined(HAVE_AGC) || defined(HAVE_RECORDING_HISTOGRAM) 68#if defined(HAVE_AGC) || defined(HAVE_HISTOGRAM)
68static int pm_peakhold_left; /* max. peak values between peakhold calls */ 69static int pm_peakhold_left; /* max. peak values between peakhold calls */
69static int pm_peakhold_right; /* used for AGC and histogram display */ 70static int pm_peakhold_right; /* used for AGC and histogram display */
71static long next_histogram_update;
70#endif 72#endif
71 73
72/* Clip hold */ 74/* Clip hold */
@@ -134,6 +136,38 @@ static unsigned int peeks_per_redraw[PEEKS_PER_DRAW_SIZE];
134static unsigned int ticks_per_redraw[TICKS_PER_DRAW_SIZE]; 136static unsigned int ticks_per_redraw[TICKS_PER_DRAW_SIZE];
135#endif 137#endif
136 138
139#if defined(HAVE_HISTOGRAM)
140#define HIST_BUF_SIZE (LCD_WIDTH / 2)
141static int hist_l = 0;
142static int hist_r = 0;
143static unsigned char history_l[HIST_BUF_SIZE];
144static unsigned char history_r[HIST_BUF_SIZE];
145static const char hist_level_marks[6] = { 29, 26, 23, 17, 9, 2};
146static int history_pos = 0;
147#define HIST_W (LCD_WIDTH / 2)
148#if LCD_DEPTH > 1
149#ifdef HAVE_LCD_COLOR
150#define LCD_BAL_L LCD_RGBPACK(0, 0, 255)
151#define LCD_BAL_R LCD_RGBPACK(204, 0, 0)
152#define LCD_HIST_OVER LCD_RGBPACK(204, 0, 0)
153#define LCD_HIST_HI LCD_RGBPACK(255, 204, 0)
154#define LCD_HIST_OK LCD_RGBPACK(51, 153, 0)
155#else /* HAVE_LCD_COLOR */
156#define LCD_BATT_OK LCD_BLACK
157#define LCD_BATT_LO LCD_DARKGRAY
158#define LCD_DISK_OK LCD_BLACK
159#define LCD_DISK_LO LCD_DARKGRAY
160#define LCD_HIST_OVER LCD_BLACK
161#define LCD_HIST_OK LCD_DARKGRAY
162#define LCD_BAL LCD_DARKGRAY
163#endif /* HAVE_LCD_COLOR */
164#else /* LCD_DEPTH > 1 */
165#define LCD_HIST_OVER LCD_DEFAULT_FG
166#define LCD_HIST_OK LCD_DEFAULT_FG
167#define LCD_BAL LCD_DEFAULT_FG
168#endif /* LCD_DEPTH > 1 */
169#endif /* HAVE_HISTOGRAM */
170
137static void peak_meter_draw(struct screen *display, struct meter_scales *meter_scales, 171static void peak_meter_draw(struct screen *display, struct meter_scales *meter_scales,
138 int x, int y, int width, int height); 172 int x, int y, int width, int height);
139 173
@@ -810,7 +844,7 @@ static int peak_meter_read_l(void)
810 844
811 retval = pm_max_left; 845 retval = pm_max_left;
812 846
813#if defined(HAVE_RECORDING_HISTOGRAM) || defined(HAVE_AGC) 847#if defined(HAVE_HISTOGRAM) || defined(HAVE_AGC)
814 /* store max peak value for peak_meter_get_peakhold_x readout */ 848 /* store max peak value for peak_meter_get_peakhold_x readout */
815 pm_peakhold_left = MAX(pm_max_left, pm_peakhold_left); 849 pm_peakhold_left = MAX(pm_max_left, pm_peakhold_left);
816#endif 850#endif
@@ -843,7 +877,7 @@ static int peak_meter_read_r(void)
843 877
844 retval = pm_max_right; 878 retval = pm_max_right;
845 879
846#if defined(HAVE_RECORDING_HISTOGRAM) || defined(HAVE_AGC) 880#if defined(HAVE_HISTOGRAM) || defined(HAVE_AGC)
847 /* store max peak value for peak_meter_get_peakhold_x readout */ 881 /* store max peak value for peak_meter_get_peakhold_x readout */
848 pm_peakhold_right = MAX(pm_max_right, pm_peakhold_right); 882 pm_peakhold_right = MAX(pm_max_right, pm_peakhold_right);
849#endif 883#endif
@@ -857,7 +891,7 @@ static int peak_meter_read_r(void)
857 return retval; 891 return retval;
858} 892}
859 893
860#if defined(HAVE_AGC) || defined(HAVE_RECORDING_HISTOGRAM) 894#if defined(HAVE_AGC) || defined(HAVE_HISTOGRAM)
861/** 895/**
862 * Reads out the current peak-hold values since the last call. 896 * Reads out the current peak-hold values since the last call.
863 * This is used by the histogram feature in the recording screen. 897 * 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)
869 *peak_left = pm_peakhold_left; 903 *peak_left = pm_peakhold_left;
870 if (peak_right) 904 if (peak_right)
871 *peak_right = pm_peakhold_right; 905 *peak_right = pm_peakhold_right;
906
907#ifdef HAVE_HISTOGRAM
908 if (*peak_left > hist_l)
909 hist_l = *peak_left;
910 if (*peak_right > hist_r)
911 hist_r = *peak_right;
912#endif
913
872 pm_peakhold_left = 0; 914 pm_peakhold_left = 0;
873 pm_peakhold_right = 0; 915 pm_peakhold_right = 0;
874} 916}
@@ -1447,4 +1489,75 @@ bool peak_meter_histogram(void)
1447} 1489}
1448#endif 1490#endif
1449 1491
1492#ifdef HAVE_HISTOGRAM
1493void histogram_init()
1494{
1495 /* get update interval, clear buffer, reset drawing position */
1496 memset(history_l, 0, sizeof(unsigned char)*HIST_BUF_SIZE);
1497 memset(history_r, 0, sizeof(unsigned char)*HIST_BUF_SIZE);
1498 next_histogram_update = current_tick +
1499 (global_settings.histogram_interval * HZ);
1500}
1501
1502void histogram_draw(int x1, int x2, int y1, int y2, int width, int height)
1503{
1504 int i, j;
1505 if (current_tick >= next_histogram_update)
1506 {
1507 /* fill history buffer */
1508 history_l[history_pos] = hist_l * height / 32767;
1509 history_r[history_pos] = hist_r * height / 32767;
1510 history_pos = (history_pos + 1) % HIST_BUF_SIZE;
1511 history_l[history_pos] = history_r[history_pos] = 0;
1512 history_l[(history_pos + 1) % HIST_BUF_SIZE] = 0;
1513 history_r[(history_pos + 1) % HIST_BUF_SIZE] = 0;
1514 hist_l = 0;
1515 hist_r = 0;
1516 next_histogram_update = current_tick +
1517 (global_settings.histogram_interval * HZ);
1518 }
1519 lcd_set_drawmode(DRMODE_SOLID);
1520 lcd_drawrect(x1, y1, width, height);
1521 lcd_drawrect(x2, y2, width, height);
1522 lcd_set_drawmode(DRMODE_FG);
1523
1524 j = history_pos;
1525 for (i = width-2; i >= 0; i--)
1526 {
1527 j--;
1528 if(j<0)
1529 j = HIST_BUF_SIZE-1;
1530 if (history_l[j])
1531 {
1532 if (history_l[j] == height)
1533 lcd_set_foreground(LCD_HIST_OVER);
1534#ifdef HAVE_LCD_COLOR
1535 else if (history_l[j] > hist_level_marks[1])
1536 lcd_set_foreground(LCD_HIST_HI);
1537#endif
1538 else
1539 lcd_set_foreground(LCD_HIST_OK);
1540 lcd_vline(x1 + i, y1 + height - 2, y1 + height - history_l[j]);
1541 }
1542 if (history_r[j])
1543 {
1544 if (history_r[j] == height)
1545 lcd_set_foreground(LCD_HIST_OVER);
1546#ifdef HAVE_LCD_COLOR
1547 else if (history_r[j] > hist_level_marks[1])
1548 lcd_set_foreground(LCD_HIST_HI);
1549#endif
1550 else
1551 lcd_set_foreground(LCD_HIST_OK);
1552 lcd_vline(x2 + i, y2 + height - 2, y2 + height - history_r[j]);
1553 }
1554 }
1555 lcd_set_foreground(
1556#ifdef HAVE_LCD_COLOR
1557 global_settings.fg_color);
1558#else
1559 LCD_DEFAULT_FG);
1560#endif
1561}
1562#endif /* HAVE_HISTOGRAM */
1450 1563
diff --git a/apps/recorder/peakmeter.h b/apps/recorder/peakmeter.h
index fee4882679..6be43a5f3a 100644
--- a/apps/recorder/peakmeter.h
+++ b/apps/recorder/peakmeter.h
@@ -56,6 +56,11 @@ extern int calc_db (int isample);
56extern int peak_meter_db2sample(int db); 56extern int peak_meter_db2sample(int db);
57extern unsigned short peak_meter_scale_value(unsigned short val, int meterwidth); 57extern unsigned short peak_meter_scale_value(unsigned short val, int meterwidth);
58 58
59#ifdef HAVE_HISTOGRAM
60extern void histogram_init(void);
61extern void histogram_draw(int x1, int x2, int y1, int y2, int width, int height);
62#endif
63
59/* valid values for trigger_status */ 64/* valid values for trigger_status */
60#define TRIG_OFF 0x00 65#define TRIG_OFF 0x00
61#define TRIG_READY 0x01 66#define TRIG_READY 0x01
@@ -103,3 +108,4 @@ struct meter_scales{
103 108
104extern void peak_meter_screen(struct screen *display, int x, int y, int height); 109extern void peak_meter_screen(struct screen *display, int x, int y, int height);
105#endif /* __PEAKMETER_H__ */ 110#endif /* __PEAKMETER_H__ */
111
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index 34283b6cb5..6faaa6c48c 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -269,39 +269,9 @@ static short agc_baltime = 0;
269/* AGC maximum gain */ 269/* AGC maximum gain */
270static short agc_maxgain; 270static short agc_maxgain;
271#endif /* HAVE_AGC */ 271#endif /* HAVE_AGC */
272#if defined(HAVE_AGC) || defined(HAVE_RECORDING_HISTOGRAM) 272#if defined(HAVE_AGC)
273static long hist_time = 0; 273static long hist_time = 0;
274#endif /* HAVE_AGC or HAVE_RECORDING_HISTOGRAM */ 274#endif /* HAVE_AGC */
275/* Histogram data */
276/* TO DO: move some of this stuff inside the recording function? */
277#ifdef HAVE_RECORDING_HISTOGRAM
278static int hist_l = 0;
279static int hist_r = 0;
280#define HIST_BUF_SIZE (LCD_WIDTH)
281#define HIST_Y (hist_pos_y+hist_size_h-1)
282#define HIST_W (LCD_WIDTH / 2 - 4)
283#if LCD_DEPTH > 1
284#ifdef HAVE_LCD_COLOR
285#define LCD_BAL_L LCD_RGBPACK(0, 0, 255)
286#define LCD_BAL_R LCD_RGBPACK(204, 0, 0)
287#define LCD_HIST_OVER LCD_RGBPACK(204, 0, 0)
288#define LCD_HIST_HI LCD_RGBPACK(255, 204, 0)
289#define LCD_HIST_OK LCD_RGBPACK(51, 153, 0)
290#else /* HAVE_LCD_COLOR */
291#define LCD_BATT_OK LCD_BLACK
292#define LCD_BATT_LO LCD_DARKGRAY
293#define LCD_DISK_OK LCD_BLACK
294#define LCD_DISK_LO LCD_DARKGRAY
295#define LCD_HIST_OVER LCD_BLACK
296#define LCD_HIST_OK LCD_DARKGRAY
297#define LCD_BAL LCD_DARKGRAY
298#endif /* HAVE_LCD_COLOR */
299#else /* LCD_DEPTH > 1 */
300#define LCD_HIST_OVER LCD_DEFAULT_FG
301#define LCD_HIST_OK LCD_DEFAULT_FG
302#define LCD_BAL LCD_DEFAULT_FG
303#endif /* LCD_DEPTH > 1 */
304#endif /* HAVE_RECORDING_HISTOGRAM */
305 275
306static void set_gain(void) 276static void set_gain(void)
307{ 277{
@@ -368,13 +338,6 @@ static bool read_peak_levels(int *peak_l, int *peak_r, int *balance)
368 *balance += balance_mem[i]; 338 *balance += balance_mem[i];
369 *balance = *balance / BAL_MEM_SIZE; 339 *balance = *balance / BAL_MEM_SIZE;
370 340
371#ifdef HAVE_RECORDING_HISTOGRAM
372 if (*peak_l > hist_l)
373 hist_l = *peak_l;
374 if (*peak_r > hist_r)
375 hist_r = *peak_r;
376#endif
377
378 return true; 341 return true;
379} 342}
380 343
@@ -1089,18 +1052,12 @@ bool recording_screen(bool no_source)
1089 /* tweak layout tiny screens / big fonts */ 1052 /* tweak layout tiny screens / big fonts */
1090 bool compact_view[NB_SCREENS] = { false }; 1053 bool compact_view[NB_SCREENS] = { false };
1091 struct gui_synclist lists; /* the list in the bottom vp */ 1054 struct gui_synclist lists; /* the list in the bottom vp */
1092#if defined(HAVE_AGC) || defined(HAVE_RECORDING_HISTOGRAM) 1055#if defined(HAVE_AGC)
1093 bool peak_valid = false; 1056 bool peak_valid = false;
1094#endif 1057#endif
1095#if defined(HAVE_RECORDING_HISTOGRAM) 1058#if defined(HAVE_HISTOGRAM)
1096 int j;
1097 unsigned short hist_pos_y = 0; 1059 unsigned short hist_pos_y = 0;
1098 unsigned short hist_size_h = 0; 1060 unsigned short hist_size_h = 0;
1099 int history_pos = 0;
1100 short hist_time_interval = 1; /* 1, 2, 4, 8 */
1101 unsigned char history_l[HIST_BUF_SIZE];
1102 unsigned char history_r[HIST_BUF_SIZE];
1103 const char hist_level_marks[6] = { 29, 26, 23, 17, 9, 2};
1104#endif 1061#endif
1105#ifdef HAVE_FMRADIO_REC 1062#ifdef HAVE_FMRADIO_REC
1106 int prev_rec_source = global_settings.rec_source; /* detect source change */ 1063 int prev_rec_source = global_settings.rec_source; /* detect source change */
@@ -1186,10 +1143,9 @@ bool recording_screen(bool no_source)
1186 /* top vp, 4 lines, force sys font if total screen < 6 lines 1143 /* top vp, 4 lines, force sys font if total screen < 6 lines
1187 NOTE: one could limit the list to 1 line and get away with 5 lines */ 1144 NOTE: one could limit the list to 1 line and get away with 5 lines */
1188 top_height_req[i] = 4; 1145 top_height_req[i] = 4;
1189#if defined(HAVE_RECORDING_HISTOGRAM) 1146#if defined(HAVE_HISTOGRAM)
1190 if((global_settings.rec_histogram_interval) && (!i)) 1147 if((global_settings.histogram_interval) && (!i))
1191 top_height_req[i] += 1; /* use one line for histogram */ 1148 top_height_req[i] += 1; /* use one line for histogram */
1192 hist_time_interval = 1 << global_settings.rec_histogram_interval;
1193#endif 1149#endif
1194 v = &vp_top[i]; 1150 v = &vp_top[i];
1195 viewport_set_defaults(v, i); 1151 viewport_set_defaults(v, i);
@@ -1229,13 +1185,11 @@ bool recording_screen(bool no_source)
1229 1185
1230 send_event(GUI_EVENT_ACTIONUPDATE, (void*)1); /* force a redraw */ 1186 send_event(GUI_EVENT_ACTIONUPDATE, (void*)1); /* force a redraw */
1231 1187
1232#if defined(HAVE_RECORDING_HISTOGRAM) 1188#if defined(HAVE_HISTOGRAM)
1233 history_pos = 0;
1234 hist_pos_y = (compact_view[0] ? 3 : 4) * (font_get(vp_top[0].font)->height) 1189 hist_pos_y = (compact_view[0] ? 3 : 4) * (font_get(vp_top[0].font)->height)
1235 + 1; 1190 + 1;
1236 hist_size_h = font_get(vp_top[0].font)->height - 2; 1191 hist_size_h = font_get(vp_top[0].font)->height - 2;
1237 memset(history_l, 0, sizeof(unsigned char)*HIST_BUF_SIZE); 1192 histogram_init();
1238 memset(history_r, 0, sizeof(unsigned char)*HIST_BUF_SIZE);
1239#endif 1193#endif
1240 1194
1241 FOR_NB_SCREENS(i) 1195 FOR_NB_SCREENS(i)
@@ -1887,75 +1841,21 @@ bool recording_screen(bool no_source)
1887 } 1841 }
1888 } 1842 }
1889 1843
1890#ifdef HAVE_RECORDING_HISTOGRAM 1844#ifdef HAVE_HISTOGRAM
1891 if(global_settings.rec_histogram_interval) 1845 if(global_settings.histogram_interval)
1892 {
1893 if (peak_valid && !(hist_time % hist_time_interval) && hist_l)
1894 { 1846 {
1895 /* fill history buffer */ 1847 histogram_draw(0,
1896 history_l[history_pos] = hist_l * hist_size_h / 32767; 1848 screens[0].getwidth()/2,
1897 history_r[history_pos] = hist_r * hist_size_h / 32767; 1849 hist_pos_y,
1898 history_pos = (history_pos + 1) % HIST_BUF_SIZE; 1850 hist_pos_y,
1899 history_l[history_pos] = history_r[history_pos] = 0; 1851 screens[0].getwidth()/2,
1900 history_l[(history_pos + 1) % HIST_BUF_SIZE] = 0; 1852 hist_size_h);
1901 history_r[(history_pos + 1) % HIST_BUF_SIZE] = 0;
1902 hist_l = 0;
1903 hist_r = 0;
1904 } 1853 }
1905 lcd_set_drawmode(DRMODE_SOLID);
1906 lcd_drawrect(0, hist_pos_y - 1,
1907 HIST_W + 2, hist_size_h + 1);
1908 lcd_drawrect(HIST_W + 6, hist_pos_y - 1,
1909 HIST_W + 2, hist_size_h + 1);
1910 lcd_set_drawmode(DRMODE_FG);
1911
1912 j = history_pos;
1913 for (i = HIST_W-1; i >= 0; i--)
1914 {
1915 j--;
1916 if(j<0)
1917 j = HIST_BUF_SIZE-1;
1918 if (history_l[j])
1919 {
1920 if (history_l[j] == hist_size_h)
1921 lcd_set_foreground(LCD_HIST_OVER);
1922#ifdef HAVE_LCD_COLOR
1923 else if (history_l[j] > hist_level_marks[1])
1924 lcd_set_foreground(LCD_HIST_HI);
1925#endif 1854#endif
1926 else
1927 lcd_set_foreground(LCD_HIST_OK);
1928 lcd_vline(1 + i, HIST_Y-1, HIST_Y - history_l[j]);
1929 }
1930 if (history_r[j])
1931 {
1932 if (history_r[j] == hist_size_h)
1933 lcd_set_foreground(LCD_HIST_OVER);
1934#ifdef HAVE_LCD_COLOR
1935 else if (history_r[j] > hist_level_marks[1])
1936 lcd_set_foreground(LCD_HIST_HI);
1937#endif
1938 else
1939 lcd_set_foreground(LCD_HIST_OK);
1940 lcd_vline(HIST_W+7 + i, HIST_Y-1, HIST_Y - history_r[j]);
1941 }
1942 }
1943 lcd_set_foreground(
1944#ifdef HAVE_LCD_COLOR
1945 global_settings.fg_color);
1946#else
1947 LCD_DEFAULT_FG);
1948#endif
1949 for (i = 0; i < 6; i++)
1950 lcd_hline(HIST_W + 3, HIST_W + 4,
1951 HIST_Y - hist_level_marks[i]);
1952 }
1953#endif /* HAVE_RECORDING_HISTOGRAM */
1954 1855
1955#ifdef HAVE_AGC 1856#ifdef HAVE_AGC
1956 hist_time++; 1857 hist_time++;
1957#endif 1858#endif
1958
1959 /* draw the trigger status */ 1859 /* draw the trigger status */
1960 if (peak_meter_trigger_status() != TRIG_OFF) 1860 if (peak_meter_trigger_status() != TRIG_OFF)
1961 { 1861 {
diff --git a/apps/settings.h b/apps/settings.h
index bed88c82ea..05965b3119 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -438,8 +438,8 @@ struct user_settings
438 int rec_stop_gap; /* index of trig_durations */ 438 int rec_stop_gap; /* index of trig_durations */
439 int rec_trigger_mode; /* see TRIG_MODE_XXX constants */ 439 int rec_trigger_mode; /* see TRIG_MODE_XXX constants */
440 int rec_trigger_type; /* what to do when trigger released */ 440 int rec_trigger_type; /* what to do when trigger released */
441#ifdef HAVE_RECORDING_HISTOGRAM 441#ifdef HAVE_HISTOGRAM
442 int rec_histogram_interval; /* recording peakmeter histogram */ 442 int histogram_interval; /* recording peakmeter histogram */
443#endif 443#endif
444 444
445#ifdef HAVE_AGC 445#ifdef HAVE_AGC
diff --git a/apps/settings_list.c b/apps/settings_list.c
index f282b8afc0..019a14437e 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1238,14 +1238,14 @@ const struct settings_list settings[] = {
1238 CHOICE_SETTING(F_RECSETTING, rec_trigger_type, LANG_RECORD_TRIGGER_TYPE, TRIG_TYPE_STOP, 1238 CHOICE_SETTING(F_RECSETTING, rec_trigger_type, LANG_RECORD_TRIGGER_TYPE, TRIG_TYPE_STOP,
1239 "trigger type","stop,pause,nf stp", NULL ,3, 1239 "trigger type","stop,pause,nf stp", NULL ,3,
1240 ID2P(LANG_RECORD_TRIGGER_STOP), ID2P(LANG_PAUSE), ID2P(LANG_RECORD_TRIGGER_NEWFILESTP)), 1240 ID2P(LANG_RECORD_TRIGGER_STOP), ID2P(LANG_PAUSE), ID2P(LANG_RECORD_TRIGGER_NEWFILESTP)),
1241#ifdef HAVE_RECORDING_HISTOGRAM 1241#endif /* HAVE_RECORDING */
1242
1243#ifdef HAVE_HISTOGRAM
1242 /* TO DO: additional restictions of following REP items? */ 1244 /* TO DO: additional restictions of following REP items? */
1243 TABLE_SETTING(F_RECSETTING, rec_histogram_interval, LANG_RECORDING_HISTOGRAM_INTERVAL, 0, 1245 TABLE_SETTING(F_RECSETTING, histogram_interval, LANG_HISTOGRAM_INTERVAL, 0,
1244 "histogram interval","0s,1s,2s,4s", 1246 "histogram interval","0s,1s,2s,4s",
1245 UNIT_SEC, NULL, NULL, NULL, 4, 0,1,2,4), 1247 UNIT_SEC, NULL, NULL, NULL, 4, 0,1,2,4),
1246#endif /* HAVE_RECORDING_HISTOGRAM */ 1248#endif /* HAVE_HISTOGRAM */
1247
1248#endif /* HAVE_RECORDING */
1249 1249
1250#ifdef HAVE_SPDIF_POWER 1250#ifdef HAVE_SPDIF_POWER
1251 OFFON_SETTING(F_SOUNDSETTING, spdif_enable, LANG_SPDIF_ENABLE, false, 1251 OFFON_SETTING(F_SOUNDSETTING, spdif_enable, LANG_SPDIF_ENABLE, false,
diff --git a/firmware/export/config/iriverh100.h b/firmware/export/config/iriverh100.h
index 4ebbde8ab1..1a89c7ca2d 100644
--- a/firmware/export/config/iriverh100.h
+++ b/firmware/export/config/iriverh100.h
@@ -123,7 +123,7 @@
123 123
124#define HAVE_AGC 124#define HAVE_AGC
125 125
126#define HAVE_RECORDING_HISTOGRAM 126#define HAVE_HISTOGRAM
127 127
128#define BATTERY_CAPACITY_DEFAULT 1300 /* default battery capacity */ 128#define BATTERY_CAPACITY_DEFAULT 1300 /* default battery capacity */
129#define BATTERY_CAPACITY_MIN 1300 /* min. capacity selectable */ 129#define BATTERY_CAPACITY_MIN 1300 /* min. capacity selectable */
diff --git a/firmware/export/config/iriverh120.h b/firmware/export/config/iriverh120.h
index 44b8988a1b..199b948245 100644
--- a/firmware/export/config/iriverh120.h
+++ b/firmware/export/config/iriverh120.h
@@ -114,7 +114,7 @@
114/* define this if you have recording possibility */ 114/* define this if you have recording possibility */
115#define HAVE_RECORDING 115#define HAVE_RECORDING
116 116
117#define HAVE_RECORDING_HISTOGRAM 117#define HAVE_HISTOGRAM
118 118
119/* Define bitmask of input sources - recordable bitmask can be defined 119/* Define bitmask of input sources - recordable bitmask can be defined
120 explicitly if different */ 120 explicitly if different */
diff --git a/firmware/export/config/iriverh300.h b/firmware/export/config/iriverh300.h
index c4224d03c6..dbe701362a 100644
--- a/firmware/export/config/iriverh300.h
+++ b/firmware/export/config/iriverh300.h
@@ -110,7 +110,7 @@
110/* define this if you have recording possibility */ 110/* define this if you have recording possibility */
111#define HAVE_RECORDING 111#define HAVE_RECORDING
112 112
113#define HAVE_RECORDING_HISTOGRAM 113#define HAVE_HISTOGRAM
114 114
115/* Define bitmask of input sources - recordable bitmask can be defined 115/* Define bitmask of input sources - recordable bitmask can be defined
116 explicitly if different */ 116 explicitly if different */