From 45f660e35894902316045782232cb5a95a971212 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Fri, 1 Feb 2013 12:06:50 +0100 Subject: When pausing live video, the current audio and subtitle tracks are now retained --- HISTORY | 3 ++- UPDATE-2.0.0 | 1 + config.h | 6 +++--- device.c | 9 ++++++++- device.h | 7 ++++++- menu.c | 4 +++- 6 files changed, 23 insertions(+), 7 deletions(-) diff --git a/HISTORY b/HISTORY index 012ea082..d7e22972 100644 --- a/HISTORY +++ b/HISTORY @@ -7534,7 +7534,7 @@ Video Disk Recorder Revision History - Reduced the number of retries in cTransfer::Receive() to avoid blocking recordings in case the primary device can't handle the current live signal. -2013-01-30: Version 1.7.37 +2013-02-01: Version 1.7.37 - Now also using FindHeader() in cMpeg2Fixer::AdjTref() (pointed out by Sören Moch). - Added missing template for DVBDIR to Make.config.template (reported by Derek Kelly). @@ -7558,3 +7558,4 @@ Video Disk Recorder Revision History switched (reported by Uwe Scheffler). - Updated the Slovakian language texts (thanks to Milan Hrala). - Improved LIRC timing for repeat function. +- When pausing live video, the current audio and subtitle tracks are now retained. diff --git a/UPDATE-2.0.0 b/UPDATE-2.0.0 index d1753678..b13ac410 100644 --- a/UPDATE-2.0.0 +++ b/UPDATE-2.0.0 @@ -282,6 +282,7 @@ Time Shifting: deleted. - The setup parameter "Recording/Instant rec. time (min)" can now be set to '0', which means to record only the currently running event. +- When pausing live video, the current audio and subtitle tracks are now retained. Timers: diff --git a/config.h b/config.h index 5832c1df..44ea7146 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 2.61 2013/01/22 17:08:50 kls Exp $ + * $Id: config.h 2.62 2013/02/01 12:00:35 kls Exp $ */ #ifndef __CONFIG_H @@ -27,8 +27,8 @@ // The plugin API's version number: -#define APIVERSION "1.7.36" -#define APIVERSNUM 10736 // Version * 10000 + Major * 100 + Minor +#define APIVERSION "1.7.37" +#define APIVERSNUM 10737 // Version * 10000 + Major * 100 + Minor // When loading plugins, VDR searches them by their APIVERSION, which // may be smaller than VDRVERSION in case there have been no changes to diff --git a/device.c b/device.c index 2678d688..af416411 100644 --- a/device.c +++ b/device.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: device.c 2.70 2012/11/19 09:59:09 kls Exp $ + * $Id: device.c 2.71 2013/02/01 12:00:09 kls Exp $ */ #include "device.h" @@ -98,6 +98,7 @@ cDevice::cDevice(void) currentAudioTrack = ttNone; currentAudioTrackMissingCount = 0; currentSubtitleTrack = ttNone; + keepTracks = false; liveSubtitle = NULL; dvbSubtitleConverter = NULL; autoSelectPreferredSubtitleLanguage = true; @@ -923,6 +924,8 @@ void cDevice::SetVolume(int Volume, bool Absolute) void cDevice::ClrAvailableTracks(bool DescriptionsOnly, bool IdsOnly) { + if (keepTracks) + return; if (DescriptionsOnly) { for (int i = ttNone; i < ttMaxTrackTypes; i++) *availableTracks[i].description = 0; @@ -1044,6 +1047,8 @@ bool cDevice::SetCurrentSubtitleTrack(eTrackType Type, bool Manual) void cDevice::EnsureAudioTrack(bool Force) { + if (keepTracks) + return; if (Force || !availableTracks[currentAudioTrack].id) { eTrackType PreferredTrack = ttAudioFirst; int PreferredAudioChannel = 0; @@ -1075,6 +1080,8 @@ void cDevice::EnsureAudioTrack(bool Force) void cDevice::EnsureSubtitleTrack(void) { + if (keepTracks) + return; if (Setup.DisplaySubtitles) { eTrackType PreferredTrack = ttNone; int LanguagePreference = INT_MAX; // higher than the maximum possible value diff --git a/device.h b/device.h index e8673969..a6254517 100644 --- a/device.h +++ b/device.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: device.h 2.44 2013/01/22 17:01:16 kls Exp $ + * $Id: device.h 2.45 2013/02/01 11:54:08 kls Exp $ */ #ifndef __DEVICE_H @@ -490,6 +490,7 @@ private: cMutex mutexCurrentSubtitleTrack; int currentAudioTrackMissingCount; bool autoSelectPreferredSubtitleLanguage; + bool keepTracks; int pre_1_3_19_PrivateStream; protected: virtual void SetAudioTrackDevice(eTrackType Type); @@ -539,6 +540,10 @@ public: void EnsureSubtitleTrack(void); ///< Makes sure one of the preferred language subtitle tracks is selected. ///< Only has an effect if Setup.DisplaySubtitles is on. + void SetKeepTracks(bool KeepTracks) { keepTracks = KeepTracks; } + ///< Controls whether the current audio and subtitle track settings shall + ///< be kept as they currently are, or if they shall be automatically + ///< adjusted. This is used when pausing live video. // Audio facilities diff --git a/menu.c b/menu.c index d7faa872..e303681d 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 2.74 2013/01/17 14:20:08 kls Exp $ + * $Id: menu.c 2.75 2013/02/01 12:00:10 kls Exp $ */ #include "menu.h" @@ -4485,6 +4485,7 @@ cString cReplayControl::fileName; cReplayControl::cReplayControl(bool PauseLive) :cDvbPlayerControl(fileName, PauseLive) { + cDevice::PrimaryDevice()->SetKeepTracks(PauseLive); currentReplayControl = this; displayReplay = NULL; marksModified = false; @@ -4504,6 +4505,7 @@ cReplayControl::cReplayControl(bool PauseLive) cReplayControl::~cReplayControl() { + cDevice::PrimaryDevice()->SetKeepTracks(false); Hide(); cStatus::MsgReplaying(this, NULL, fileName, false); Stop(); -- cgit v1.2.3