summaryrefslogtreecommitdiff
path: root/client/device.h
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-02-18API changes of VDR 1.7.38 (thanks to mal@vdr-developer)Frank Schmirler
2013-01-29Implemented multi-device support for streamdev client (closes #1207)Frank Schmirler
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-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.
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-09-10streamdev-client returns true in its AvoidRecording() methodFrank Schmirler
2011-07-06added support for VDR 1.7.19 SignalStrength/SignalQualityFrank 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
2009-06-23added cDevice::NumProvidedSystems() which was introduced in VDR 1.7.0schmirl
Modified Files: HISTORY client/device.h
2008-10-02Added vdr-1.6.0-intcamdevices.patch (#429)schmirl
Modified Files: HISTORY README client/device.h Added Files: patches/vdr-1.6.0-intcamdevices.patch
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-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
2005-02-08- transferlordjaxom
2005-01-25- updated to 1.3.19lordjaxom
2004-12-30Initial revisionlordjaxom