diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d35421a9..94258a46 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1146,6 +1146,7 @@ Marco Schl this is now done when attaching the player to the device for adding DeviceClrAvailableTracks() and DeviceSetCurrentAudioTrack() to cPlayer for reporting a missing 'resultSkipped = 0' in cRemux::Clear() + for reporting a missing reset of the 'repacker' in cTS2PES::Clear() Jürgen Schmitz for reporting a bug in displaying the current channel when switching via the SVDRP diff --git a/HISTORY b/HISTORY index 0cbaf08e..9a873b81 100644 --- a/HISTORY +++ b/HISTORY @@ -3413,3 +3413,5 @@ Video Disk Recorder Revision History - 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. +- Added missing reset of the 'repacker' to cTS2PES::Clear() (thanks to Marco + Schlüßler for reporting this one). diff --git a/remux.c b/remux.c index dbed8fa8..ca65a61e 100644 --- a/remux.c +++ b/remux.c @@ -11,7 +11,7 @@ * The cDolbyRepacker code was originally written by Reinhard Nissl , * and adapted to the VDR coding style by Klaus.Schmidinger@cadsoft.de. * - * $Id: remux.c 1.30 2005/02/13 10:23:10 kls Exp $ + * $Id: remux.c 1.31 2005/02/13 14:36:23 kls Exp $ */ #include "remux.h" @@ -29,6 +29,7 @@ protected: public: cRepacker(void) { maxPacketSize = 6 + 65535; subStreamId = 0; } virtual ~cRepacker() {} + virtual void Reset(void) {} virtual int Put(cRingBufferLinear *ResultBuffer, const uchar *Data, int Count) = 0; virtual int BreakAt(const uchar *Data, int Count) = 0; void SetMaxPacketSize(int MaxPacketSize) { maxPacketSize = MaxPacketSize; } @@ -56,13 +57,13 @@ private: get_length, output_packet } state; - void Reset(void); void ResetPesHeader(void); void AppendSubStreamID(void); bool FinishRemainder(cRingBufferLinear *ResultBuffer, const uchar *const Data, const int Todo, int &Done, int &Bite); bool StartNewPacket(cRingBufferLinear *ResultBuffer, const uchar *const Data, const int Todo, int &Done, int &Bite); public: cDolbyRepacker(void); + virtual void Reset(void); virtual int Put(cRingBufferLinear *ResultBuffer, const uchar *Data, int Count); virtual int BreakAt(const uchar *Data, int Count); }; @@ -474,6 +475,8 @@ cTS2PES::~cTS2PES() void cTS2PES::Clear(void) { reset_ipack(); + if (repacker) + repacker->Reset(); } void cTS2PES::store(uint8_t *Data, int Count)