diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 851cbae0..3acb8fcf 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1296,6 +1296,8 @@ Marco Schl for fixing handling OSD areas that have invalid sizes for removing unused variables in skinclassic.c and skinsttng.c for removing leftover 'needsBufferReserve' variable from cTransfer + for adding an 'Id' parameter to cDevice::PlayAudio() to allow plugins to easier + process the audio data Jürgen Schmitz for reporting a bug in displaying the current channel when switching via the SVDRP diff --git a/HISTORY b/HISTORY index 0904a204..eba8fb7b 100644 --- a/HISTORY +++ b/HISTORY @@ -4271,7 +4271,7 @@ Video Disk Recorder Revision History - Separated the 'install' target into several individual targets; renamed the 'plugins-install' target to 'install-plugins' (thanks to Helmut Auer). -2006-02-03: Version 1.3.42 +2006-02-04: Version 1.3.42 - Removed leftover 'needsBufferReserve' variable from cTransfer (thanks to Marco Schlüßler). @@ -4281,3 +4281,5 @@ Video Disk Recorder Revision History - Fixed handling "pending" timers that blocked others that actually could record (reported by Thomas Koch). - Speeded up cVideoRepacker (thanks to Reinhard Nissl). +- Added an 'Id' parameter to cDevice::PlayAudio() to allow plugins to easier + process the audio data (thanks to Marco Schlüßler). diff --git a/device.c b/device.c index 0f19e3b1..faa59fd3 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 1.121 2006/01/08 11:39:37 kls Exp $ + * $Id: device.c 1.122 2006/02/04 10:21:51 kls Exp $ */ #include "device.h" @@ -977,7 +977,7 @@ int cDevice::PlayVideo(const uchar *Data, int Length) return -1; } -int cDevice::PlayAudio(const uchar *Data, int Length) +int cDevice::PlayAudio(const uchar *Data, int Length, uchar Id) { return -1; } @@ -1000,7 +1000,7 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly) case 0xC0 ... 0xDF: // audio SetAvailableTrack(ttAudio, c - 0xC0, c); if (!VideoOnly && c == availableTracks[currentAudioTrack].id) { - w = PlayAudio(Start, d); + w = PlayAudio(Start, d, c); if (FirstLoop) Audios.PlayAudio(Data, Length, c); } @@ -1026,7 +1026,7 @@ pre_1_3_19_PrivateStreamDeteced: if (Setup.UseDolbyDigital) { SetAvailableTrack(ttDolby, SubStreamIndex, SubStreamId); if (!VideoOnly && SubStreamId == availableTracks[currentAudioTrack].id) { - w = PlayAudio(Start, d); + w = PlayAudio(Start, d, SubStreamId); if (FirstLoop) Audios.PlayAudio(Data, Length, SubStreamId); } @@ -1035,7 +1035,7 @@ pre_1_3_19_PrivateStreamDeteced: case 0xA0: // LPCM SetAvailableTrack(ttAudio, SubStreamIndex, SubStreamId); if (!VideoOnly && SubStreamId == availableTracks[currentAudioTrack].id) { - w = PlayAudio(Start, d); + w = PlayAudio(Start, d, SubStreamId); if (FirstLoop) Audios.PlayAudio(Data, Length, SubStreamId); } diff --git a/device.h b/device.h index eb409f9c..f250ec1e 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 1.70 2006/01/08 10:10:26 kls Exp $ + * $Id: device.h 1.71 2006/02/04 10:22:54 kls Exp $ */ #ifndef __DEVICE_H @@ -424,9 +424,10 @@ protected: ///< Length) or not at all (returning 0 or -1 and setting 'errno' to EAGAIN). ///< \return Returns the number of bytes actually taken from Data, or -1 ///< in case of an error. - virtual int PlayAudio(const uchar *Data, int Length); + virtual int PlayAudio(const uchar *Data, int Length, uchar Id); ///< Plays the given data block as audio. ///< Data points to exactly one complete PES packet of the given Length. + ///< Id indicates the type of audio data this packet holds. ///< PlayAudio() shall process the packet either as a whole (returning ///< Length) or not at all (returning 0 or -1 and setting 'errno' to EAGAIN). ///< \return Returns the number of bytes actually taken from Data, or -1 diff --git a/dvbdevice.c b/dvbdevice.c index ee8c6235..f5f5f4e2 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.151 2006/01/28 15:37:01 kls Exp $ + * $Id: dvbdevice.c 1.152 2006/02/04 10:21:51 kls Exp $ */ #include "dvbdevice.h" @@ -1169,7 +1169,7 @@ int cDvbDevice::PlayVideo(const uchar *Data, int Length) return WriteAllOrNothing(fd_video, Data, Length, 1000, 10); } -int cDvbDevice::PlayAudio(const uchar *Data, int Length) +int cDvbDevice::PlayAudio(const uchar *Data, int Length, uchar Id) { return WriteAllOrNothing(fd_audio, Data, Length, 1000, 10); } diff --git a/dvbdevice.h b/dvbdevice.h index cc9d126a..ac84a946 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.37 2005/12/29 13:33:12 kls Exp $ + * $Id: dvbdevice.h 1.38 2006/02/04 10:21:51 kls Exp $ */ #ifndef __DVBDEVICE_H @@ -119,7 +119,7 @@ protected: virtual bool CanReplay(void) const; virtual bool SetPlayMode(ePlayMode PlayMode); virtual int PlayVideo(const uchar *Data, int Length); - virtual int PlayAudio(const uchar *Data, int Length); + virtual int PlayAudio(const uchar *Data, int Length, uchar Id); public: virtual int64_t GetSTC(void); virtual void TrickSpeed(int Speed);