From 84d57ed54d1d1d42e0ad0ac5ed0efe954fa740cf Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 13 Feb 2005 14:26:37 +0100 Subject: [PATCH] Implemented cDvbDevice::SetTransferModeForDolbyDigital() --- HISTORY | 3 +++ dvbdevice.c | 10 +++++++++- dvbdevice.h | 5 ++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/HISTORY b/HISTORY index 1e8212b3..0cbaf08e 100644 --- a/HISTORY +++ b/HISTORY @@ -3410,3 +3410,6 @@ Video Disk Recorder Revision History library files from this version of VDR (suggested by Andreas Brachold). - Added a missing 'resultSkipped = 0' to cRemux::Clear() (thanks to Marco Schlüßler for reporting this one). +- The new function cDvbDevice::SetTransferModeForDolbyDigital() can be used by + plugins that implement Dolby Digital output and thus want to prevent the cDvbDevice + from starting Transfer Mode in order to replay DD over the DVB device. diff --git a/dvbdevice.c b/dvbdevice.c index 5659c515..741848a8 100644 --- a/dvbdevice.c +++ b/dvbdevice.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.c 1.119 2005/02/08 14:07:16 kls Exp $ + * $Id: dvbdevice.c 1.120 2005/02/13 14:26:37 kls Exp $ */ #include "dvbdevice.h" @@ -346,6 +346,7 @@ void cDvbTuner::Action(void) // --- cDvbDevice ------------------------------------------------------------ int cDvbDevice::devVideoOffset = -1; +bool cDvbDevice::setTransferModeForDolbyDigital = true; cDvbDevice::cDvbDevice(int n) { @@ -861,6 +862,11 @@ void cDvbDevice::SetDigitalAudioDevice(bool On) } } +void cDvbDevice::SetTransferModeForDolbyDigital(bool On) +{ + setTransferModeForDolbyDigital = On; +} + void cDvbDevice::SetAudioTrackDevice(eTrackType Type) { const tTrackId *TrackId = GetTrack(Type); @@ -872,6 +878,8 @@ void cDvbDevice::SetAudioTrackDevice(eTrackType Type) } } else if (IS_DOLBY_TRACK(Type)) { + if (!setTransferModeForDolbyDigital) + return; // Currently this works only in Transfer Mode cChannel *Channel = Channels.GetByNumber(CurrentChannel()); if (Channel) diff --git a/dvbdevice.h b/dvbdevice.h index 233515d8..99456e73 100644 --- a/dvbdevice.h +++ b/dvbdevice.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.h 1.32 2005/01/06 13:30:51 kls Exp $ + * $Id: dvbdevice.h 1.33 2005/02/13 14:14:31 kls Exp $ */ #ifndef __DVBDEVICE_H @@ -99,11 +99,14 @@ protected: private: bool digitalAudio; + static bool setTransferModeForDolbyDigital; protected: virtual int GetAudioChannelDevice(void); virtual void SetAudioChannelDevice(int AudioChannel); virtual void SetVolumeDevice(int Volume); virtual void SetDigitalAudioDevice(bool On); +public: + static void SetTransferModeForDolbyDigital(bool On); // Player facilities