When pausing live video, the current audio and subtitle tracks are now retained

This commit is contained in:
Klaus Schmidinger 2013-02-01 12:06:50 +01:00
parent 250419d2c9
commit 45f660e358
6 changed files with 23 additions and 7 deletions

View File

@ -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.

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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

4
menu.c
View File

@ -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();