summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2001-09-16 15:06:54 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2001-09-16 15:06:54 +0200
commita4e97d871e2d85819d957f4df10ab650ef0447ab (patch)
treed02fdf273761d743c0c4afc1946f43885993566c
parent987a0e931cbd488be35fcf4d8979ea9cf7d17b63 (diff)
downloadvdr-a4e97d871e2d85819d957f4df10ab650ef0447ab.tar.gz
vdr-a4e97d871e2d85819d957f4df10ab650ef0447ab.tar.bz2
New keys 'Volume+', 'Volume-' and 'Mute'
-rw-r--r--HISTORY2
-rw-r--r--INSTALL2
-rw-r--r--MANUAL5
-rw-r--r--config.c5
-rw-r--r--config.h5
-rw-r--r--dvbapi.c22
-rw-r--r--dvbapi.h14
-rw-r--r--i18n.c29
-rw-r--r--keys-pc.conf3
-rw-r--r--vdr.c14
10 files changed, 94 insertions, 7 deletions
diff --git a/HISTORY b/HISTORY
index a50e8764..16e52835 100644
--- a/HISTORY
+++ b/HISTORY
@@ -755,3 +755,5 @@ Video Disk Recorder Revision History
- Fixed manipulating an editing mark at the very end of a recording.
- Fixed starting a new replay immediately after stopping a previous one (had
caused a mix between live video and replay).
+- Three new keys ("Volume+", Volume-" and "Mute") to control the DVB card's
+ audio output volume.
diff --git a/INSTALL b/INSTALL
index b3271f9d..56200e86 100644
--- a/INSTALL
+++ b/INSTALL
@@ -294,6 +294,8 @@ The default PC key assignments are:
Red, Green, Yellow, Blue 'F1'..'F4'
0..9 '0'..'9' in top row
Power 'P'
+ Volume+/- '+', '-'
+ Mute 'm'
If you prefer different key assignments, or if the default doesn't work for
your keyboard, simply delete the file 'keys-pc.conf' and restart 'vdr' to get
diff --git a/MANUAL b/MANUAL
index 83a1aa2a..05f2f3ca 100644
--- a/MANUAL
+++ b/MANUAL
@@ -8,7 +8,7 @@ Video Disk Recorder User's Manual
possible, several keys have different meanings in the various
modes:
- Key Normal Main Channels Timers Edit/New Recordings Replay
+ Key Normal Main Channels Timers Edit/New Recordings Replay
Up Ch up Crsr up Crsr up Crsr up Crsr up Crsr up Play
Down Ch down Crsr down Crsr down Crsr down Crsr down Crsr down Pause
@@ -23,6 +23,9 @@ Video Disk Recorder User's Manual
Blue - Resume Mark Mark(1) - Summary Stop
0..9 Ch select - - - Numeric inp. - Editing
Power Shutdown - - - - - -
+ Volume+ Volume up - - - - - -
+ Volume- Volume down - - - - - -
+ Mute Mute - - - - - -
(1) The "Mark" button in the "Timers" menu only works if sorting the timers
has been disabled in the "Setup" menu.
diff --git a/config.c b/config.c
index 15042ef0..87e83323 100644
--- a/config.c
+++ b/config.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: config.c 1.71 2001/09/16 08:57:58 kls Exp $
+ * $Id: config.c 1.72 2001/09/16 14:54:32 kls Exp $
*/
#include "config.h"
@@ -39,6 +39,9 @@ tKey keyTable[] = { // "Up" and "Down" must be the first two keys!
{ k8, "8", 0 },
{ k9, "9", 0 },
{ kPower, "Power", 0 },
+ { kVolUp, "Volume+", 0 },
+ { kVolDn, "Volume-", 0 },
+ { kMute, "Mute", 0 },
{ kNone, "", 0 },
};
diff --git a/config.h b/config.h
index a4bfa5bf..194d04e2 100644
--- a/config.h
+++ b/config.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: config.h 1.78 2001/09/15 15:38:40 kls Exp $
+ * $Id: config.h 1.79 2001/09/16 14:54:36 kls Exp $
*/
#ifndef __CONFIG_H
@@ -43,6 +43,9 @@ enum eKeys { // "Up" and "Down" must be the first two keys!
kBlue,
k0, k1, k2, k3, k4, k5, k6, k7, k8, k9,
kPower,
+ kVolUp,
+ kVolDn,
+ kMute,
kNone,
// The following flags are OR'd with the above codes:
k_Repeat = 0x8000,
diff --git a/dvbapi.c b/dvbapi.c
index 462e1954..16b3e308 100644
--- a/dvbapi.c
+++ b/dvbapi.c
@@ -7,7 +7,7 @@
* DVD support initially written by Andreas Schultz <aschultz@warp10.net>
* based on dvdplayer-0.5 by Matjaz Thaler <matjaz.thaler@guest.arnes.si>
*
- * $Id: dvbapi.c 1.124 2001/09/16 10:10:28 kls Exp $
+ * $Id: dvbapi.c 1.125 2001/09/16 13:55:03 kls Exp $
*/
//#define DVDDEBUG 1
@@ -2539,6 +2539,8 @@ cDvbApi::cDvbApi(int n)
osd = NULL;
#endif
currentChannel = 1;
+ mute = false;
+ volume = 255;
}
cDvbApi::~cDvbApi()
@@ -3622,6 +3624,24 @@ bool cDvbApi::ToggleAudioTrack(void)
return false;
}
+void cDvbApi::ToggleMute(void)
+{
+ int OldVolume = volume;
+ mute = !mute;
+ SetVolume(0, mute);
+ volume = OldVolume;
+}
+
+void cDvbApi::SetVolume(int Volume, bool Absolute)
+{
+ if (fd_audio >= 0) {
+ volume = min(max(Absolute ? Volume : volume + Volume, 0), 255);
+ audioMixer_t am;
+ am.volume_left = am.volume_right = volume;
+ CHECK(ioctl(fd_audio, AUDIO_SET_MIXER, &am));
+ }
+}
+
void cDvbApi::SetAudioCommand(const char *Command)
{
delete audioCommand;
diff --git a/dvbapi.h b/dvbapi.h
index 5e19a8e1..d0a68e79 100644
--- a/dvbapi.h
+++ b/dvbapi.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbapi.h 1.50 2001/09/15 13:46:00 kls Exp $
+ * $Id: dvbapi.h 1.51 2001/09/16 13:54:23 kls Exp $
*/
#ifndef __DVBAPI_H
@@ -315,6 +315,18 @@ private:
public:
static void SetAudioCommand(const char *Command);
static const char *AudioCommand(void) { return audioCommand; }
+
+ // Volume facilities:
+
+private:
+ bool mute;
+ int volume;
+public:
+ void ToggleMute(void);
+ // Turns the volume off or on.
+ void SetVolume(int Volume, bool Absolute = false);
+ // Sets the volume to the given value, either absolutely or relative to
+ // the current volume.
};
class cEITScanner {
diff --git a/i18n.c b/i18n.c
index 1170c244..5e440c95 100644
--- a/i18n.c
+++ b/i18n.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: i18n.c 1.42 2001/09/09 13:54:35 kls Exp $
+ * $Id: i18n.c 1.43 2001/09/16 14:43:05 kls Exp $
*
* Slovenian translations provided by Miha Setina <mihasetina@softhome.net>
* Italian translations provided by Alberto Carraro <bertocar@tin.it>
@@ -1211,6 +1211,33 @@ const tPhrase Phrases[] = {
"", // TODO
"", // TODO
},
+ { "Volume+",
+ "Lautstärke+",
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ },
+ { "Volume-",
+ "Lautstärke-",
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ },
+ { "Mute",
+ "Stumm",
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ },
// Miscellaneous:
{ "yes",
"ja",
diff --git a/keys-pc.conf b/keys-pc.conf
index ab4b58d5..d727712d 100644
--- a/keys-pc.conf
+++ b/keys-pc.conf
@@ -22,3 +22,6 @@ Blue 0000010C
8 00000038
9 00000039
Power 00000050
+Volume+ 0000002B
+Volume- 0000002D
+Mute 0000006D
diff --git a/vdr.c b/vdr.c
index 2ba16905..b288108d 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* The project's page is at http://www.cadsoft.de/people/kls/vdr
*
- * $Id: vdr.c 1.72 2001/09/08 14:34:29 kls Exp $
+ * $Id: vdr.c 1.73 2001/09/16 14:54:45 kls Exp $
*/
#define _GNU_SOURCE
@@ -52,6 +52,8 @@
#define SHUTDOWNWAIT 300 // seconds to wait in user prompt before automatic shutdown
#define MANUALSTART 600 // seconds the next timer must be in the future to assume manual start
+#define VOLUMEDELTA 5 // used to increase/decrease the volume
+
static int Interrupted = 0;
static void SignalHandler(int signum)
@@ -424,6 +426,16 @@ int main(int argc, char *argv[])
case kMenu: Menu = new cMenuMain(ReplayControl); break;
// Viewing Control:
case kOk: LastChannel = -1; break; // forces channel display
+ // Volume Control:
+ case kVolUp|k_Repeat:
+ case kVolUp:
+ case kVolDn|k_Repeat:
+ case kVolDn:
+ cDvbApi::PrimaryDvbApi->SetVolume(NORMALKEY(key) == kVolDn ? -VOLUMEDELTA : VOLUMEDELTA);
+ break;
+ case kMute:
+ cDvbApi::PrimaryDvbApi->ToggleMute();
+ break;
// Power off:
case kPower: isyslog(LOG_INFO, "Power button pressed");
DELETENULL(*Interact);