summaryrefslogtreecommitdiff
path: root/client/device.c
AgeCommit message (Collapse)Author
2015-01-24Fixed problems related to VTP filter streaming like ringbuffer overflows,Frank Schmirler
stuttering or aborting video stream (refs #2045) Toerless Eckert wrote: This patch tries to resolve problems in streamdev-client that can occur when enabling "StreamFilters". Enabling this option is necessary to receive certain programs with dynamic PIDs such as some german "regional" broadcast (eg: NDR). Problem: Without this fix, the following behavior was observed on a Raspberry PI running streamdev-0.6.1-git with VDR-2.6.1: - Buffer overflows of filter data - Stop/go video on channels - Total stopping of video More logs in: http://www.vdr-portal.de/board16-video-disk-recorder/board55-vdr-plugins/125237- streamdev-client-filter-daten-streamen-ndr-raspberry-haengt/ Analysis: VDR expect section data from filters separately from the main program stream. Historically, it received each filter data via a separate file descriptor from the DVB card. In the streamdev-client module, a socketpair is used to feed filter data to the main VDR code. During certain operations in VDR, such as startup or channel change (depending also on the speed of initialization of the video output driver), VDR does not consume the filter data as fast as it is provided by streamdev-client, resulting in overflow of the default socket buffers used by streamdev-client. To add to the problem of overflowing the socketpair buffers, the streamdev-client code sends several times a second short packets into the socketpair to determine if the receiving side (VDR) has closed the socketpair (IsClosed(), CarbageCollect()). This further clogs up the socketpair() buffer. The raspberry PI socketpair buffering behavior seems to be the same as that of other 3.x linux systems, the socket buffer size is by default 163840, and it can be increased via sysctl net.core.wmem_max. During startup, it can take up to 10 seconds before VDR will consume filter data, so the socketpair buffer can fill up with 10 seconds worth of data. Solution 1. IsClosed()/CarbageCollect() where removed from client/filter.c and replaced by explicitly tracking when VDR closes a filter socket. This alone seems to already resolve the problem of hanging or stop&go video and seems to be sufficient to receive dynamic-PID channels reliably. 2. filter.c was enhanced to request a larger socket buffer size if config option FilterSockBufSize is set. 3. If supported (if streamdev-client runs on linux), the socketpair queue is "flushed" to reduce the amount of "random" packet drop messages and to rather drop sequential messages.
2014-11-20Implemented GetCurrentlyTunedTransponder() on client (closes #2010)Frank Schmirler
2013-10-30Fixed channel switch issues with priority > 0Frank Schmirler
2013-10-19Fixed priority handling, messed up when adding multi-device supportFrank Schmirler
2013-01-29Implemented multi-device support for streamdev client (closes #1207)Frank Schmirler
2012-06-22Fixed compiler error in client/device.c with VDR < 1.7.22 (reported by ↵Frank Schmirler
Uwe@vdrportal)
2012-06-07Added DeviceName() and DeviceType() to client device. The server IP and theFrank Schmirler
number of the device used on the server are returned respectively.
2012-05-29Reimplemented some client device methodsFrank Schmirler
2012-05-27Dropped m_UpdatePriorityFrank Schmirler
2012-05-21Proper fix for "client sends ABRT after TUNE". Obsoletes many hacks in clientFrank Schmirler
2012-04-21Added streamdev-client support for upcoming streamdev-server versionsFrank Schmirler
with purely priority driven precedence.
2012-03-04With VDR 1.7.25 priorities down to -99 will be usedFrank Schmirler
2012-03-04Use the new streamdev-client setup option "Live TV Priority" to controlFrank Schmirler
precedence among multiple clients. The VDR option "Primary Limit" which has previouly been used for this purpose has been dropped in VDR 1.7.25.
2011-12-11Support for non-cycle-free setups (e.g. where two VDRs mutually shareFrank Schmirler
their DVB cards through streamdev-client/-server). Must be enabled in streamdev-server setup. Obsoletes recursion patches.
2011-12-09API change of VDR 1.7.22Frank Schmirler
2011-07-06added support for VDR 1.7.19 SignalStrength/SignalQualityFrank Schmirler
2011-03-07Dropped compatibility with VDR < 1.5.16Frank Schmirler
2011-02-16return value of streamdev-clients cDevice::NumProvidedSystems() nowFrank Schmirler
configurable in plugin setup (fixes #552)
2011-03-22Snapshot 2010-09-15Frank Schmirler
2010-06-08dropped "Synchronize EPG" featureschmirl
Modified Files: HISTORY README streamdev-client.c streamdev-client.h client/device.c client/setup.c client/setup.h client/socket.c client/socket.h po/de_DE.po po/fi_FI.po po/fr_FR.po po/it_IT.po po/lt_LT.po po/ru_RU.po po/sk_SK.po
2010-02-17switching between two encrypted channels on the same transponder didn'tschmirl
always work (thanks to sk8ter@vdrportal)
2009-10-19fixed regression from fix for switching between encrypted channels. It wasschmirl
no longer possible to receive multiple (FTA) streams from the same transponder
2009-04-06Added missing call to StopSectionHandler().schmirl
This method was introduced in VDR 1.5.15. Its absence could cause crashes when shutting down VDR
2009-01-29Added min/max priority (#508)schmirl
Modified Files: HISTORY README client/device.c client/setup.c client/setup.h po/de_DE.po po/fi_FI.po po/fr_FR.po po/it_IT.po po/ru_RU.po
2009-01-14Problem when switching between encrypted channels still exists if CA idschmirl
is set to FTA or streamdev device. Disabled transponder check.
2008-10-02Workaround for problem when switching from one encrypted channel to an otherschmirl
Yet it's not quite clear if this is really a proper fix. There have been contradictory reports (#476).
2008-04-08- added gettext support (thanks to Rolf Ahrenberg)schmirl
- added vdr-1.6.0-ignore_missing_cam patch - dropped obsolete respect_ca patch - removed legacy code for < VDR 1.5.9 (thanks to Rolf Ahrenberg)
2008-04-07- changed location of streamdevhosts.conf to VDRCONFDIR/plugins/streamdevschmirl
- changed externremux.sh's default location to VDRCONFDIR/plugins/streamdev - added sample externremux.sh from http://www.vdr-wiki.de/ - stop providing channels after client has been disabled at runtime - added logging of the client device's card index - changed default suspend mode to "Always suspended" - added "Hide Mainmenu Entry" setup option on client
2008-04-07- resurrected clients "Suspend Server" menu item as its mainmenu entryschmirl
- dropped unused code for remote timers/recordings on client side - dropped unused files client/{assembler,menu,remote}.[hc] - dropped unused files in libdvbmpeg (reported by tobi)
2008-04-07- removed legacy code for pre VDR 1.4schmirl
- dropped patches for pre VDR 1.4
2007-12-12Workaround which fixes tuning problems for VDR 1.5.x clients. Theseschmirl
sometimes send ABRT after TUNE. Clean solution wanted! Thanks to alexw (#255)
2007-07-20Lock in ~cStreamdevDevice when shutting down (#355).schmirl
Thanks to Petri Hintukainen.
2007-05-07Fixed segfaults due to cTSBuffer disconnect detection workarounds (#260)schmirl
2007-04-24client_device-sections-socket.patch by Petri Hintukainenschmirl
- Add separate data socket for sections data - Sections data can be received when there is no active live view (-> EPG scans etc. can be executed during replay etc.)
2007-04-24client_device-disconnect_detection-fix.patch by Petri Hintukainenschmirl
- Try to detect data stream disconnections to avoid 100% CPU-usage in cTSBuffer::Action()
2007-04-24client_device-vdr-1.5.1-fixes.patch by Petri Hintukainen (#219)schmirl
- VDR 1.5.0 calls some device members in different order and streamdev can't currently handle this. - do not trust in OpenDvr/CloseDvr, instead keep count of active PIDs, open data connection when it is needed and close it only when there are no active PIDs (closing data connection unsubscribes all pids at server end) - some sanity checks on server side Modified Files: client/device.c client/device.h server/connectionVTP.c
2007-04-23client_device.patch by Petri Hintukainenschmirl
- Implement virtual IsTunedToTransponder() - Return true from Provides... functions Modified Files: client/device.c client/device.h
2007-01-15Compatibility for vdr < 1.3.38 (#169)schmirl
2006-09-14- detach all receivers before tuning to different transponder. Otherwise ↵schmirl
ABRT will be sent after tuning, which will destroy the LiveStreamer on the server.
2005-04-24- removed assembler and thus saving one ringbufferlordjaxom
- fixed destruction order on channel switch (fixes one crash that happens occasionally when switching)
2005-02-08- transferlordjaxom
2005-02-08- transferlordjaxom
2005-02-08- transferlordjaxom
2005-01-25- updated to 1.3.19lordjaxom
2004-12-30Initial revisionlordjaxom