Hello community, here is the log from the commit of package vdr-plugin-satip for openSUSE:Factory checked in at 2015-11-02 12:55:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/vdr-plugin-satip (Old) and /work/SRC/openSUSE:Factory/.vdr-plugin-satip.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "vdr-plugin-satip" Changes: -------- --- /work/SRC/openSUSE:Factory/vdr-plugin-satip/vdr-plugin-satip.changes 2015-05-18 22:32:38.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.vdr-plugin-satip.new/vdr-plugin-satip.changes 2015-11-02 12:55:06.000000000 +0100 @@ -1,0 +2,8 @@ +Wed Oct 28 19:45:46 UTC 2015 - seife+obs@b1-systems.com + +- update to version 2.2.3 (2015-09-18) + * Added a timeout for releasing idling devices + * Reset the RTSP connection after any failed connect + * Added tweaks for minisatip and Schwaiger MS41IP + +------------------------------------------------------------------- Old: ---- vdr-satip-2.2.2.tgz New: ---- vdr-satip-2.2.3.tgz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ vdr-plugin-satip.spec ++++++ --- /var/tmp/diff_new_pack.98SRik/_old 2015-11-02 12:55:07.000000000 +0100 +++ /var/tmp/diff_new_pack.98SRik/_new 2015-11-02 12:55:07.000000000 +0100 @@ -18,7 +18,7 @@ Name: vdr-plugin-satip -Version: 2.2.2 +Version: 2.2.3 Release: 0 Summary: SAT>IP Input Plugin for the Video Disc Recorder VDR License: GPL-2.0 ++++++ vdr-satip-2.2.2.tgz -> vdr-satip-2.2.3.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/HISTORY new/satip-2.2.3/HISTORY --- old/satip-2.2.2/HISTORY 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/HISTORY 2015-09-18 03:20:00.000000000 +0200 @@ -137,3 +137,10 @@ interface. - Added new ATTA and DETA SVDRP commands. - Set the default device count to two. + +2015-09-18: Version 2.2.3 + +- Added a timeout for releasing idling devices. +- Reset the RTSP connection after any failed connect. +- Added tweaks for minisatip and Schwaiger MS41IP. +- Updated for vdr-2.3.1 (Thanks to Klaus Schmidinger). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/device.c new/satip-2.2.3/device.c --- old/satip-2.2.2/device.c 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/device.c 2015-09-18 03:20:00.000000000 +0200 @@ -103,7 +103,12 @@ bool live = (device == cDevice::ActualDevice()); bool lock = device->HasLock(); const cChannel *channel = device->GetCurrentlyTunedTransponder(); +#if defined(APIVERSNUM) && APIVERSNUM >= 20301 + LOCK_TIMERS_READ; + for (const cTimer *timer = Timers->First(); timer; timer = Timers->Next(timer)) { +#else for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) { +#endif if (timer->Recording()) { cRecordControl *control = cRecordControls::GetRecordControl(timer); if (control && control->Device() == device) @@ -128,13 +133,20 @@ cString cSatipDevice::GetGeneralInformation(void) { debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM); +#if defined(APIVERSNUM) && APIVERSNUM >= 20301 + LOCK_CHANNELS_READ; +#endif return cString::sprintf("SAT>IP device: %d\nCardIndex: %d\nStream: %s\nSignal: %s\nStream bitrate: %s\n%sChannel: %s", deviceIndexM, CardIndex(), pTunerM ? *pTunerM->GetInformation() : "", pTunerM ? *pTunerM->GetSignalStatus() : "", pTunerM ? *pTunerM->GetTunerStatistic() : "", *GetBufferStatistic(), +#if defined(APIVERSNUM) && APIVERSNUM >= 20301 + *Channels->GetByNumber(cDevice::CurrentChannel())->ToText()); +#else *Channels.GetByNumber(cDevice::CurrentChannel())->ToText()); +#endif } cString cSatipDevice::GetPidsInformation(void) @@ -350,7 +362,7 @@ bool cSatipDevice::SetPid(cPidHandle *handleP, int typeP, bool onP) { - debug12("%s (%d, %d, %d) [device %u]", __PRETTY_FUNCTION__, handleP->pid, typeP, onP, deviceIndexM); + debug12("%s (%d, %d, %d) [device %u]", __PRETTY_FUNCTION__, handleP ? handleP->pid : -1, typeP, onP, deviceIndexM); if (pTunerM && handleP && handleP->pid >= 0) { if (onP) return pTunerM->SetPid(handleP->pid, typeP, true); @@ -460,6 +472,11 @@ return slot; } +bool cSatipDevice::IsIdle(void) +{ + return !Receiving(); +} + uchar *cSatipDevice::GetData(int *availableP) { debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/device.h new/satip-2.2.3/device.h --- old/satip-2.2.2/device.h 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/device.h 2015-09-18 03:20:00.000000000 +0200 @@ -43,7 +43,7 @@ // constructor & destructor public: - cSatipDevice(unsigned int deviceIndexP); + explicit cSatipDevice(unsigned int deviceIndexP); virtual ~cSatipDevice(); cString GetInformation(unsigned int pageP = SATIP_DEVICE_INFO_ALL); @@ -110,6 +110,7 @@ virtual int GetId(void); virtual int GetPmtPid(void); virtual int GetCISlot(void); + virtual bool IsIdle(void); }; #endif // __SATIP_DEVICE_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/deviceif.h new/satip-2.2.3/deviceif.h --- old/satip-2.2.2/deviceif.h 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/deviceif.h 2015-09-18 03:20:00.000000000 +0200 @@ -16,9 +16,10 @@ virtual int GetId(void) = 0; virtual int GetPmtPid(void) = 0; virtual int GetCISlot(void) = 0; + virtual bool IsIdle(void) = 0; private: - cSatipDeviceIf(const cSatipDeviceIf&); + explicit cSatipDeviceIf(const cSatipDeviceIf&); cSatipDeviceIf& operator=(const cSatipDeviceIf&); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/discoverif.h new/satip-2.2.3/discoverif.h --- old/satip-2.2.2/discoverif.h 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/discoverif.h 2015-09-18 03:20:00.000000000 +0200 @@ -15,7 +15,7 @@ virtual void SetUrl(const char *urlP) = 0; private: - cSatipDiscoverIf(const cSatipDiscoverIf&); + explicit cSatipDiscoverIf(const cSatipDiscoverIf&); cSatipDiscoverIf& operator=(const cSatipDiscoverIf&); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/msearch.h new/satip-2.2.3/msearch.h --- old/satip-2.2.2/msearch.h 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/msearch.h 2015-09-18 03:20:00.000000000 +0200 @@ -26,7 +26,7 @@ bool registeredM; public: - cSatipMsearch(cSatipDiscoverIf &discoverP); + explicit cSatipMsearch(cSatipDiscoverIf &discoverP); virtual ~cSatipMsearch(); void Probe(void); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/po/ca_ES.po new/satip-2.2.3/po/ca_ES.po --- old/satip-2.2.2/po/ca_ES.po 2015-04-26 11:53:39.000000000 +0200 +++ new/satip-2.2.3/po/ca_ES.po 2015-09-18 18:04:09.000000000 +0200 @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: vdr-satip 2.2.2\n" +"Project-Id-Version: vdr-satip 2.2.3\n" "Report-Msgid-Bugs-To: <see README>\n" "POT-Creation-Date: 2015-04-26 04:26+0300\n" "PO-Revision-Date: 2015-04-26 04:26+0300\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/po/de_DE.po new/satip-2.2.3/po/de_DE.po --- old/satip-2.2.2/po/de_DE.po 2015-04-26 11:53:39.000000000 +0200 +++ new/satip-2.2.3/po/de_DE.po 2015-09-18 18:04:09.000000000 +0200 @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: vdr-satip 2.2.2\n" +"Project-Id-Version: vdr-satip 2.2.3\n" "Report-Msgid-Bugs-To: <see README>\n" "POT-Creation-Date: 2015-04-26 04:26+0300\n" "PO-Revision-Date: 2015-04-26 04:26+0300\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/po/es_ES.po new/satip-2.2.3/po/es_ES.po --- old/satip-2.2.2/po/es_ES.po 2015-04-26 11:53:39.000000000 +0200 +++ new/satip-2.2.3/po/es_ES.po 2015-09-18 18:04:09.000000000 +0200 @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: vdr-satip 2.2.2\n" +"Project-Id-Version: vdr-satip 2.2.3\n" "Report-Msgid-Bugs-To: <see README>\n" "POT-Creation-Date: 2015-04-26 04:26+0300\n" "PO-Revision-Date: 2015-04-26 04:26+0300\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/po/fi_FI.po new/satip-2.2.3/po/fi_FI.po --- old/satip-2.2.2/po/fi_FI.po 2015-04-26 11:53:39.000000000 +0200 +++ new/satip-2.2.3/po/fi_FI.po 2015-09-18 18:04:09.000000000 +0200 @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: vdr-satip 2.2.2\n" +"Project-Id-Version: vdr-satip 2.2.3\n" "Report-Msgid-Bugs-To: <see README>\n" "POT-Creation-Date: 2015-04-26 04:26+0300\n" "PO-Revision-Date: 2015-04-26 04:26+0300\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/pollerif.h new/satip-2.2.3/pollerif.h --- old/satip-2.2.2/pollerif.h 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/pollerif.h 2015-09-18 03:20:00.000000000 +0200 @@ -17,7 +17,7 @@ virtual cString ToString(void) const = 0; private: - cSatipPollerIf(const cSatipPollerIf&); + explicit cSatipPollerIf(const cSatipPollerIf&); cSatipPollerIf& operator=(const cSatipPollerIf&); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/rtcp.c new/satip-2.2.3/rtcp.c --- old/satip-2.2.2/rtcp.c 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/rtcp.c 2015-09-18 03:20:00.000000000 +0200 @@ -36,7 +36,7 @@ int cSatipRtcp::GetApplicationOffset(int *lengthP) { - debug16("%s (%d) [device %d]", __PRETTY_FUNCTION__, *lengthP, tunerM.GetId()); + debug16("%s (%d) [device %d]", __PRETTY_FUNCTION__, lengthP ? *lengthP : -1, tunerM.GetId()); if (!lengthP) return -1; int offset = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/rtcp.h new/satip-2.2.3/rtcp.h --- old/satip-2.2.2/rtcp.h 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/rtcp.h 2015-09-18 03:20:00.000000000 +0200 @@ -23,7 +23,7 @@ int GetApplicationOffset(int *lengthP); public: - cSatipRtcp(cSatipTunerIf &tunerP); + explicit cSatipRtcp(cSatipTunerIf &tunerP); virtual ~cSatipRtcp(); // for internal poller interface diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/rtp.h new/satip-2.2.3/rtp.h --- old/satip-2.2.2/rtp.h 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/rtp.h 2015-09-18 03:20:00.000000000 +0200 @@ -28,7 +28,7 @@ int GetHeaderLength(unsigned char *bufferP, unsigned int lengthP); public: - cSatipRtp(cSatipTunerIf &tunerP); + explicit cSatipRtp(cSatipTunerIf &tunerP); virtual ~cSatipRtp(); virtual void Close(void); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/rtsp.h new/satip-2.2.3/rtsp.h --- old/satip-2.2.2/rtsp.h 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/rtsp.h 2015-09-18 03:20:00.000000000 +0200 @@ -50,7 +50,7 @@ cSatipRtsp& operator=(const cSatipRtsp&); public: - cSatipRtsp(cSatipTunerIf &tunerP); + explicit cSatipRtsp(cSatipTunerIf &tunerP); virtual ~cSatipRtsp(); cString RtspUnescapeString(const char *strP); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/satip.c new/satip-2.2.3/satip.c --- old/satip-2.2.2/satip.c 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/satip.c 2015-09-18 03:20:00.000000000 +0200 @@ -27,7 +27,7 @@ #define GITVERSION "" #endif - const char VERSION[] = "2.2.2" GITVERSION; + const char VERSION[] = "2.2.3" GITVERSION; static const char DESCRIPTION[] = trNOOP("SAT>IP Devices"); class cPluginSatip : public cPlugin { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/server.c new/satip-2.2.3/server.c --- old/satip-2.2.2/server.c 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/server.c 2015-09-18 03:20:00.000000000 +0200 @@ -108,7 +108,8 @@ quirksM = cString::sprintf("%s%sPlayPids", *quirksM, isempty(*quirksM) ? "" : ","); } // These devices contain a frontend locking bug: - if (strstr(*descriptionM, "fritzdvbc") // Fritz!WLAN Repeater DVB-C + if (strstr(*descriptionM, "fritzdvbc") || // Fritz!WLAN Repeater DVB-C + strstr(*descriptionM, "Schwaiger Sat>IP Server") // Schwaiger MS41IP ) { quirkM |= eSatipQuirkForceLock; quirksM = cString::sprintf("%s%sForceLock", *quirksM, isempty(*quirksM) ? "" : ","); @@ -116,8 +117,11 @@ debug3("%s description=%s quirks=%s", __PRETTY_FUNCTION__, *descriptionM, *quirksM); } // These devices support the X_PMT protocol extension - if (strstr(*descriptionM, "OctopusNet")) // Digital Devices OctopusNet + if (strstr(*descriptionM, "OctopusNet") || // Digital Devices OctopusNet + strstr(*descriptionM, "minisatip") // minisatip server + ) { hasCiM = true; + } char *s, *p = strdup(*modelM); char *r = strtok_r(p, ",", &s); while (r) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/setup.c new/satip-2.2.3/setup.c --- old/satip-2.2.2/setup.c 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/setup.c 2015-09-18 03:20:00.000000000 +0200 @@ -94,7 +94,7 @@ void Setup(void); public: - cSatipServerInfo(cSatipServer *serverP); + explicit cSatipServerInfo(cSatipServer *serverP); virtual ~cSatipServerInfo(); virtual eOSState ProcessKey(eKeys keyP); }; @@ -145,7 +145,7 @@ cSatipServer *serverM; public: - cSatipServerItem(cSatipServer *serverP); + explicit cSatipServerItem(cSatipServer *serverP); cSatipServer *Server(void) { return serverM; } virtual void SetMenuItem(cSkinDisplayMenu *displayMenuP, int indexP, bool currentP, bool selectableP); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/tuner.c new/satip-2.2.3/tuner.c --- old/satip-2.2.2/tuner.c 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/tuner.c 2015-09-18 03:20:00.000000000 +0200 @@ -91,6 +91,10 @@ void cSatipTuner::Action(void) { debug1("%s Entering [device %d]", __PRETTY_FUNCTION__, deviceIdM); + + bool lastIdleStatus = false; + cTimeMs idleCheck(eIdleCheckTimeoutMs); + cTimeMs tuning(eTuningTimeoutMs); reConnectM.Set(eConnectTimeoutMs); // Do the thread loop while (Running()) { @@ -107,6 +111,7 @@ case tsSet: debug4("%s: tsSet [device %d]", __PRETTY_FUNCTION__, deviceIdM); if (Connect()) { + tuning.Set(eTuningTimeoutMs); RequestState(tsTuned, smInternal); UpdatePids(true); } @@ -116,6 +121,8 @@ case tsTuned: debug4("%s: tsTuned [device %d]", __PRETTY_FUNCTION__, deviceIdM); reConnectM.Set(eConnectTimeoutMs); + idleCheck.Set(eIdleCheckTimeoutMs); + lastIdleStatus = false; // Read reception statistics via DESCRIBE and RTCP if (hasLockM || ReadReceptionStatus()) { // Quirk for devices without valid reception data @@ -127,6 +134,10 @@ if (hasLockM) RequestState(tsLocked, smInternal); } + else if (tuning.TimedOut()) { + error("Tuning timeout - retuning [device %d]", deviceIdM); + RequestState(tsSet, smInternal); + } break; case tsLocked: debug4("%s: tsLocked [device %d]", __PRETTY_FUNCTION__, deviceIdM); @@ -145,6 +156,16 @@ RequestState(tsSet, smInternal); break; } + if (idleCheck.TimedOut()) { + bool currentIdleStatus = deviceM->IsIdle(); + if (lastIdleStatus && currentIdleStatus) { + info("Idle timeout - releasing [device %d]", deviceIdM); + RequestState(tsRelease, smInternal); + } + lastIdleStatus = currentIdleStatus; + idleCheck.Set(eIdleCheckTimeoutMs); + break; + } break; default: error("Unknown tuner status %d [device %d]", currentStateM, deviceIdM); @@ -209,8 +230,7 @@ return true; } } - else - rtspM.Reset(); + rtspM.Reset(); streamIdM = -1; error("Connect failed [device %d]", deviceIdM); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/tuner.h new/satip-2.2.3/tuner.h --- old/satip-2.2.2/tuner.h 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/tuner.h 2015-09-18 03:20:00.000000000 +0200 @@ -83,6 +83,8 @@ eStatusUpdateTimeoutMs = 1000, // in milliseconds ePidUpdateIntervalMs = 250, // in milliseconds eConnectTimeoutMs = 5000, // in milliseconds + eIdleCheckTimeoutMs = 15000, // in milliseconds + eTuningTimeoutMs = 20000, // in milliseconds eMinKeepAliveIntervalMs = 30000 // in milliseconds }; enum eTunerState { tsIdle, tsRelease, tsSet, tsTuned, tsLocked }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/satip-2.2.2/tunerif.h new/satip-2.2.3/tunerif.h --- old/satip-2.2.2/tunerif.h 2015-04-26 03:20:00.000000000 +0200 +++ new/satip-2.2.3/tunerif.h 2015-09-18 03:20:00.000000000 +0200 @@ -19,7 +19,7 @@ virtual int GetId(void) = 0; private: - cSatipTunerIf(const cSatipTunerIf&); + explicit cSatipTunerIf(const cSatipTunerIf&); cSatipTunerIf& operator=(const cSatipTunerIf&); };