Commit Graph

76 Commits

Author SHA1 Message Date
Frank Schmirler
3e06c59196 make sure TimedWrite(...) doesn't return failure after a slow but successful
write operation (refs #2045)
2015-01-24 00:49:51 +01:00
Frank Schmirler
b33d2631df Fixed problems related to VTP filter streaming like ringbuffer overflows,
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.
2015-01-24 00:19:04 +01:00
Frank Schmirler
657c8bc49c Added Polish translation (closes #2038) 2014-12-23 12:40:13 +01:00
Frank Schmirler
5f5fb7953e Converted suspend.dat into proper PES format (closes #2034) 2014-12-22 21:56:41 +01:00
Frank Schmirler
7b17f7725c Implemented GetCurrentlyTunedTransponder() on client (closes #2010) 2014-11-20 14:21:44 +01:00
Frank Schmirler
1ee2049c4d Added service call returning the number of clients (closes #1967) 2014-11-07 23:51:13 +01:00
Frank Schmirler
99b223c55f Added SVDRP commands to list and disconnect clients (closes #1860) 2014-11-07 23:01:08 +01:00
Frank Schmirler
7df7185e1a fixed recplayer issues with large TS files (>4GB) 2014-10-24 12:29:49 +02:00
Frank Schmirler
71c26e7455 Merged duplicate 2014-09-02 08:54:28 +02:00
Frank Schmirler
e8629b5ec6 Make ChannelChange retune only if CA IDs changed (closes #1767) 2014-08-31 00:20:35 +02:00
Frank Schmirler
1d4a7e06b4 Set device occupied when streamdev switches away LiveTV on the server, to
reduce the risk that the VDR main loop immediately switches back, resulting
in a black screen on the client (reported by hummel99)
2013-11-01 15:33:19 +01:00
Frank Schmirler
458a21a62a Fixed channel switch issues with priority > 0 2013-10-30 21:18:56 +01:00
Frank Schmirler
8c5859ed4a Added HTTP "Server" header 2013-10-02 00:03:39 +02:00
Frank Schmirler
c92de13d06 Select start position for replaying a recording by parameter pos=
Based on offset_5.diff from hivdr@vdrportal with the following modifications:
- indenting
- replaced isyslog with Dprintf
- left out HTTP header "Server:" for the moment
2013-09-27 17:33:18 +02:00
Frank Schmirler
d7652d89ca Start cSuspendCtl hidden or it will prevent idle shutdown.
As long as a cControl is not hidden, cControl::Control() will return a value
and LastInteract is updated in the VDR main loop.
2013-07-16 13:12:20 +02:00
Frank Schmirler
08198729ac Adapted Makefiles to VDR 1.7.36+ (thanks to macmenot). Old makefiles have
been renamed to Makefile-1.7.33 (fixes #1199)
2013-02-27 13:11:23 +01:00
Frank Schmirler
9135cde712 Basic support for HTTP streaming of recordings 2012-12-16 13:29:15 +01:00
Frank Schmirler
84db6323a6 Corrected typos (thanks to Ville Skytt) 2012-06-28 17:17:59 +02:00
Frank Schmirler
281105f0c7 Fixed compiler error in client/device.c with VDR < 1.7.22 (reported by Uwe@vdrportal) 2012-06-22 08:54:47 +02:00
Frank Schmirler
8719007f5a New special meaning "show current channel" when channel 0 is requested.
Applies to HTTP streaming only (thanks to Rolf Ahrenberg)
2012-04-21 22:47:36 +02:00
Frank Schmirler
a047fc7d32 Report the server-side HTTP status "503 Service unavailable" instead of
the client-side error "409 Conflict" when a channel is unavailable
(suggested by Methodus)
2012-03-01 09:01:37 +01:00
Frank Schmirler
229e8fbfff Update of po headers and Finnish translation (thanks to Rolf Ahrenberg) 2011-12-13 12:59:31 +01:00
Frank Schmirler
ffb8707118 Added "Hide mainmenu entry" option on server (thanks to Rolf Ahrenberg) 2011-12-08 13:07:17 +01:00
Frank Schmirler
ce1583a756 Code cleanup and optimization (thanks to Ville Skytt) 2011-11-21 13:03:06 +01:00
Frank Schmirler
30674fb6c8 fixed memory leak in libdvbmpeg read_pes (fixes #769) 2011-11-12 22:31:39 +01:00
Frank Schmirler
6c9c6ca77f restricted VTP command RENR to liemikuutio patch < 1.32 (fixes #786).
Build fails with newer versions of this patch. RENR was introduced for XBMC
which is no longer using streamdev at all, so the impact should be low.
2011-11-07 17:15:10 +01:00
Frank Schmirler
9cb72968f6 updated outdated COPYING file and FSF address (fixes #767, fixes #768) 2011-11-07 16:57:23 +01:00
Frank Schmirler
24a1638ddd increased WRITERBUFSIZE. Has been reported to fix some ringbuffer overflows
(thanks to Lubo Doleel)
2011-09-02 13:18:01 +02:00
frank
09e0a0176b - new externremux.sh mencoder config options: audio pid by language code
(-alang) and verbosity (-msglevel) (thanks to Pekko Tiitto)
2011-05-02 23:39:19 +02:00
Frank Schmirler
58a4f3dbe5 Added Spanish translation 2011-03-18 15:52:42 +01:00
Frank Schmirler
3a2936a140 updated copy of GetClippedNumProvidedSystems to the version used since VDR 1.7.15 2011-02-01 14:24:47 +01:00
Frank Schmirler
06d5418e42 Fixed the code deciding if a device is in use for live TV or not. It did
not work as expected for FF cards (fixes #536)
2011-01-28 12:42:33 +01:00
Frank Schmirler
abf8a62fe9 make sure that a client doesn't interrupt replaying on server's FF card
http://www.vdr-portal.de/board/thread.php?postid=948311 (reported by wtor)
2010-12-10 18:06:39 +01:00
Frank Schmirler
a35675490d switching away live TV failed even when "always suspended"
The vdr main loop usually switches back to the previous channel at
"Make sure we have a visible programme in case device usage has changed"
(#472)
2010-12-10 17:03:04 +01:00
Frank Schmirler
0c07109974 fixed regression: no receiver created for ES/PS/PES
(reported by Gavin Hamill)
2010-12-10 16:38:54 +01:00
Frank Schmirler
6ea5efe939 Snapshot 2010-09-15 2011-03-22 21:16:18 +02:00
schmirl
0a860a1e3e don't use std::map.at(). It's not available in older libstdc++ version
Modified Files:
	CONTRIBUTORS HISTORY remux/extern.c server/connectionHTTP.c
2010-07-22 14:18:17 +00:00
schmirl
c7d19619db fixed extremux x264 using value of ABR for VBR 2010-07-22 06:30:46 +00:00
schmirl
c0a7f1610a fixed wrong URL path in m3u playlists 2010-07-20 12:26:29 +00:00
schmirl
edc3ad1c8e - set externremux.sh executable in distribution archive
- externremux quality value should be wlan54, not wlan45
2010-07-20 06:23:32 +00:00
schmirl
1a1141e4a1 Switched to proper tsplay-0.2 patch detection
Modified Files:
	server/recplayer.c Makefile CONTRIBUTORS HISTORY
2010-06-04 18:32:34 +00:00
schmirl
6f984b87e3 Added support for EnhancedAC3 2010-04-19 10:17:33 +00:00
schmirl
8a128f7c57 fixed a memory leak in cStreamdevPatFilter::GetPid (thanks to lhanisch) 2010-02-20 23:02:10 +00:00
schmirl
dd7cc838ad switching between two encrypted channels on the same transponder didn't
always work (thanks to sk8ter@vdrportal)
2010-02-17 12:39:02 +00:00
schmirl
93c9aa9af0 added DELT FORCE option to delete running timers (#554) 2010-01-29 12:03:01 +00:00
schmirl
c882a991cc added VDR 1.7.11 parental rating support for VTP LSTE command (#555) 2010-01-29 11:44:52 +00:00
schmirl
b44c9ac3f5 added Lithuanian translation (thanks to Valdemaras Pipiras) 2009-12-15 13:38:29 +00:00
schmirl
d794d83854 added defines for large file support to Makefile as required by VDR 1.7.4+ 2009-11-04 11:12:20 +00:00
schmirl
b5bd22e7bd Added Slovak translations (thanks to Milan Hrala) 2009-11-03 11:21:14 +00:00
schmirl
73e30fd5ca silenced warnings concerning asprintf (requested by Rolf Ahrenberg)
Modified Files:
	CONTRIBUTORS HISTORY server/connectionVTP.c server/setup.c
2009-10-13 06:38:47 +00:00