LinuxTV Patchwork Patch: Add 'MUTEON' and 'MUTEOFF' options to the SVDRP VOLU command

login
register
mail settings
Submitter Sebastian Frei
Date March 21, 2013, 7:48 p.m.
Message ID <14358675.91UhXQkOyA@nop>
Download mbox | patch
Permalink /patch/17559/
State New
Headers show

Comments

Sebastian Frei - March 21, 2013, 7:48 p.m.
Hi all,

I made a tiny patch to extend the SVDRP VOLU command.
Up until now VDR only had an option to _toggle_ the current audio muted status,
but no options to force the audio muted status on or off. I want to mute the
audio via SVDRP and unmute it again later.

My usecase: I'm running mpd on the same host as VDR, if I start playing music
with mpd from my tablet I can mute VDR automatically with a shell script and
unmute it again after stopping the music.
Using the (already implemented) VOLU 0 command also mutes the audio, but the
previous audio volume gets lost, so you cannot unmute audio again and return to
the previous volume.

Best regards
Sebastian
Hardy Flor - March 21, 2013, 8:40 p.m.
Hi Sebastian Frei,

with  ... &&(!cDevice::PrimaryDevice()->IsMute())) is the command not 
recognized and the string "Unknown option: MuteON" will return, when you 
call svdr more than one with "MuteON".

Hardy
Klaus Schmidinger - March 22, 2013, 9:15 a.m.
On 21.03.2013 20:48, Sebastian Frei wrote:
> Hi all,
>
> I made a tiny patch to extend the SVDRP VOLU command.

There will be no more changes for version 2.0.
I'll look at this again after that.

> Up until now VDR only had an option to _toggle_ the current audio muted status,
> but no options to force the audio muted status on or off. I want to mute the
> audio via SVDRP and unmute it again later.
>
> My usecase: I'm running mpd on the same host as VDR, if I start playing music
> with mpd from my tablet I can mute VDR automatically with a shell script and
> unmute it again after stopping the music.
> Using the (already implemented) VOLU 0 command also mutes the audio, but the
> previous audio volume gets lost, so you cannot unmute audio again and return to
> the previous volume.

You could query the current volume level with a plain VOLU command, store that
value and use it later.

Klaus

Patch

--- vdr-1.7.41/svdrp.c	2013-02-17 14:17:36.000000000 +0100
+++ vdr-1.7.41.mute/svdrp.c	2013-03-21 20:30:53.440746278 +0100
@@ -317,12 +317,13 @@ 
   "UPDR\n"
   "    Initiates a re-read of the recordings directory, which is the SVDRP\n"
   "    equivalent to 'touch .update'.",
-  "VOLU [ <number> | + | - | mute ]\n"
+  "VOLU [ <number> | + | - | mute | muteon | muteoff ]\n"
   "    Set the audio volume to the given number (which is limited to the range\n"
   "    0...255). If the special options '+' or '-' are given, the volume will\n"
   "    be turned up or down, respectively. The option 'mute' will toggle the\n"
-  "    audio muting. If no option is given, the current audio volume level will\n"
-  "    be returned.",
+  "    audio muting, 'muteon' will turn muting on, 'muteoff' will turn muting\n"
+  "    off.  If no option is given, the current audio volume level will be\n"
+  "    returned.",
   "QUIT\n"
   "    Exit vdr (SVDRP).\n"
   "    You can also hit Ctrl-D to exit.",
@@ -1609,6 +1610,10 @@ 
         cDevice::PrimaryDevice()->SetVolume(-VOLUMEDELTA);
      else if (strcasecmp(Option, "MUTE") == 0)
         cDevice::PrimaryDevice()->ToggleMute();
+     else if ((strcasecmp(Option, "MUTEON") == 0)&&(!cDevice::PrimaryDevice()->IsMute()))
+        cDevice::PrimaryDevice()->ToggleMute();
+     else if ((strcasecmp(Option, "MUTEOFF") == 0)&&(cDevice::PrimaryDevice()->IsMute()))
+        cDevice::PrimaryDevice()->ToggleMute();
      else {
         Reply(501, "Unknown option: \"%s\"", Option);
         return;

Privacy Policy