Commit Graph

340 Commits

Author SHA1 Message Date
Frank Schmirler e2a9b979d3 fixed compilation for VDR 2.3.7 (thanks to Jasmin J) 2017-09-30 21:31:48 +02:00
Frank Schmirler 644078220b added .gitignore (thanks to Jasmin J) 2017-09-30 21:29:27 +02:00
Frank Schmirler 95256a52cf fixed some warnings in libdvbmpeg (thanks to Jasmin J) 2017-09-30 21:27:51 +02:00
Frank Schmirler b84b7d858c fixed lseek error check in libdvbmpeg 2017-01-20 16:15:19 +01:00
Frank Schmirler 674bb5b331 Streamdev-server compatibility with VDR 2.3.1 (fixes #2249) 2016-03-21 00:28:02 +01:00
Frank Schmirler d66c635a80 client compatibility with VDR 2.3.1 (refs #2243) 2015-10-05 01:02:13 +02:00
Frank Schmirler fc52e920ad use cReceiver::SetPriority(...) in VDR 2.1.4+ 2015-10-04 21:41:35 +02:00
Frank Schmirler 84c6f6b6f3 doubled size of client's filter buffer (fixes #2045) 2015-01-24 00:55:39 +01:00
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 dd556ee7fd Don't abort externremux when internal read buffer is empty 2014-09-19 15:23:14 +02:00
Frank Schmirler 58f0348578 Show old VDR PES recordings in HTTP menu only if PES mode is selected 2014-09-08 22:35:18 +02:00
Frank Schmirler e83c9d92aa Implemented remuxing of recordings (closes #1892) 2014-09-07 02:48:07 +02:00
Frank Schmirler 520adaf3da Implemented remuxing when replaying recordings 2014-09-07 02:30:06 +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 2d919997a8 Moved remux from livestreamer to streamer 2014-08-10 15:57:16 +02:00
Frank Schmirler 703dffa0cb Updated HISTORY 2014-08-09 23:07:51 +02:00
Frank Schmirler bdee8c1923 Implemented VDR 2.1.4 cStatus::ChannelChange(...) 2014-08-09 23:04:45 +02:00
Frank Schmirler 83262870d5 Call detach only if receiver is attached 2014-08-09 22:59:31 +02:00
Frank Schmirler 888cf0a2f8 Try changing to other device when receiver got detached 2014-06-23 23:30:55 +02:00
Frank Schmirler 1dc1423429 In TSPIDS mode, create and attach receiver with empty pid list to occupy device 2014-06-23 23:28:36 +02:00
Frank Schmirler 5a173b0b21 No need for Detach/Attach in SwitchDevice as it is only called when detached. 2014-06-23 23:27:10 +02:00
Frank Schmirler 3e9e7f7de6 Setting streamer to NULL if TUNE fails should not be necessary 2014-06-23 23:21:56 +02:00
Frank Schmirler 62fa951c61 Fixed initialization of m_StreamType 2014-06-23 23:13:30 +02:00
Frank Schmirler bfbf19decc Dropped unused function and parameter. 2014-06-22 11:21:02 +02:00
Frank Schmirler e555017565 Revised class responsibilities: Moved live TV related functions to livestreamer 2014-06-07 00:24:27 +02:00
Frank Schmirler 7be0c81a81 Moved streamer from each individual connection class to cServerConnection 2014-05-18 18:16:51 +02:00
Frank Schmirler 2cdf160648 Configurable buffer for live TV 2014-05-18 15:24:24 +02:00
Frank Schmirler 54440cb080 Typo 2014-05-18 15:16:13 +02:00
Frank Schmirler 40704cdcbc Release 0.6.1 2013-11-28 20:59:04 +01:00
Frank Schmirler 5fcd6eca69 Updated Slovak translation (closes #1626) 2013-11-25 12:44:22 +01:00
Frank Schmirler a4a774c6ce Updated Finnish translation (thanks to Rolf Ahrenberg) 2013-11-25 12:40:30 +01:00
Frank Schmirler c18f7d47e7 Disabled PS remuxer which is said to produce anything but PS 2013-11-17 11:20:42 +01:00
Frank Schmirler 1439b016b3 The patches intcamdevices and ignore_missing_cam are no longer required
on VDR >= 1.7.30. The localchannelprovide patch became obsolete with VDR
1.7.21.
2013-11-17 10:52:12 +01:00
Frank Schmirler f194ca2074 Added option to suspend live TV when the server starts (closes #1296) 2013-11-02 16:58:17 +01: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 69b654d539 Removed noisy debug messages 2013-10-21 22:21:12 +02:00
Frank Schmirler 5e5070edc0 Fixed HTTP menu destruction 2013-10-20 17:40:22 +02:00
Frank Schmirler dfc8339c9e API change of VDR 2.1.2 2013-10-20 00:10:39 +02:00
Frank Schmirler a9c2adb565 Fixed priority handling, messed up when adding multi-device support 2013-10-19 01:22:45 +02:00
Frank Schmirler 8c5859ed4a Added HTTP "Server" header 2013-10-02 00:03:39 +02:00
Frank Schmirler e1ba17ca21 Ignore dummy file extensions (.ts, .vob, .vdr) when parsing HTTP URIs 2013-10-01 23:52:03 +02:00