Commit Graph

149 Commits

Author SHA1 Message Date
schmirl
c8bf0474f9 Client did not reconnect properly to server when server app restarts.
When Read() on the command channel failed, the buffer size was not
trimmed. Read() was never called again as the buffer appeared to be full. Fixes #322 reported by alexw.
2007-07-20 06:54:03 +00:00
schmirl
e9bd0c96f3 Lock in ~cStreamdevDevice when shutting down (#355).
Thanks to Petri Hintukainen.
2007-07-20 06:46:47 +00:00
schmirl
60b44caf3d cRingBufferLinear::Read() will return 0 either if EOF is encountered
or if the buffer is full. We need to check the buffer space to distinguish
these two cases (#307).
2007-05-30 14:20:14 +00:00
schmirl
bb1ac54c87 Set DSCP 41 on stream data packets. WMM capable WLAN accesspoints
should understand this and give precedence. For Internet streaming
it could be used by traffic shapers. Suggested by ollo@vdrportal (#237).
Modified Files:
	server/connectionHTTP.c server/connectionVTP.c tools/socket.c
	tools/socket.h
2007-05-09 09:12:42 +00:00
schmirl
2b103196d6 Check vasprintf return code (thanks to rofafor) 2007-05-07 12:25:11 +00:00
schmirl
d93eec41f3 Fixed segfaults due to cTSBuffer disconnect detection workarounds (#260) 2007-05-07 12:18:18 +00:00
schmirl
7fdf0c6832 Fixed memory leak in buffer overflow situation (thanks to rofafor) 2007-05-07 11:43:23 +00:00
schmirl
8378d5a17c Removed duplicated code fragments probably caused by patches with too
few context lines
2007-04-26 06:25:13 +00:00
schmirl
fdda49c9f3 server_live-filter_remove_setfilter.patch by Petri Hintukainen
- remove (now unused) cStreamdevLiveStreamer::SetFilter()
Modified Files:
	server/livestreamer.c server/livestreamer.h
2007-04-24 11:42:41 +00:00
schmirl
d012504c3a server_connectionVTP-add-filter-stream.patch by Petri Hintukainen
- Add new stream for section filters data
2007-04-24 11:40:35 +00:00
schmirl
9994ecfd08 server_live-filter-streamer.patch by Petri Hintukainen
- Add cStreamdevFilterStreamer that is binded to current device, not channel
- new streamer can exist even when there is no active data connection (live view)
Modified Files:
	server/livestreamer.c server/livestreamer.h
2007-04-24 11:36:16 +00:00
schmirl
99d19c67d8 server_livefilter-add_public_Add_and_Del.patch by Petri Hintukainen
- Add public Add/Del members instead of friend class
2007-04-24 11:29:29 +00:00
schmirl
60b89e8646 client_device-sections-socket.patch by Petri Hintukainen
- 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-24 11:24:38 +00:00
schmirl
518886b08b client_filter-data-handling.patch by Petri Hintukainen
- regonize PUSI flag in TS packets (bullet-proof section start+end indicator)
- Use own TS buffer to read directly from socket, no need for ring buffer anymore
- Re-activate all active filters after re-connection to server
- Simplify thread start/stop/running detection to current VDR style
- Update "filter closed by VDR" detection (datagram sockets
  return different errno's than pipes)
- Deliver data to first matching and active filter (do not drop data if first
  matching filter has been closed, there is quite likely new filter for it)
- Add disconnect detection to avoid 100% CPU usage in cTSBuffer::Action()
Modified Files:
	client/filter.c client/filter.h
2007-04-24 11:23:16 +00:00
schmirl
52bf110aa9 server_ts-pat-pmt-filter.patch by Petri Hintukainen
- Add PAT, PMT and PCR to HTTP TS streams
- Dynamically add and remove all related pids (of channel) to TS stream
 -> DVB/teletect subtitles work in clients
 -> VLC can be used as client
 -> HDTV (MPEG4 / H.264) streaming is possible
 -> Client can select audio and subtitle tracks on the fly without re-connection -> Client can display "real" track names / languages

 - Add new member function to set all pids in one shot
  -> Receiver is not deleted, created and re-attached separately for every pid
   (this causes discontinous start and is anyway unnecessarily)

Modified Files:
	server/livestreamer.c server/livestreamer.h
2007-04-24 11:13:05 +00:00
schmirl
2e7fe3c337 server_livefilter-add_ts_pusi_flag.patch by Petri Hintukainen
- Add MPEG TS PUSI (payload start indicator) to first
  packet of each section
2007-04-24 11:06:12 +00:00
schmirl
a0dfe7b20a server_connectionVTP-new-data.patch by Petri Hintukainen
- Add new data (LiveFilterStreamer and LiveFilterSocket)
- Misc cleanup
Modified Files:
	server/connectionVTP.c server/connectionVTP.h
2007-04-24 11:03:41 +00:00
schmirl
ac4c391c43 client_socket-close_data_connection.patch by Petri Hintukainen
- Add member function to close data connection
Modified Files:
	client/socket.c client/socket.h
2007-04-24 10:57:34 +00:00
schmirl
2a4370b6a0 Add live filter stream type 2007-04-24 10:50:13 +00:00
schmirl
0a59f04d60 client_device-disconnect_detection-fix.patch by Petri Hintukainen
- Try to detect data stream disconnections to
  avoid 100% CPU-usage in cTSBuffer::Action()
2007-04-24 10:46:21 +00:00
schmirl
d5a38b3213 client_device-vdr-1.5.1-fixes.patch by Petri Hintukainen (#219)
- 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-24 10:43:40 +00:00
schmirl
0553fce43c based on server_livefilter-streamer-type.patch by Petri Hintukainen
- Use cStreamer (base class) instead of cLiveStreamer
  (no need to know streamer type)
  * works with cLiveStreamer and cLiveFilterStreamer
  * avoid circular dependency
- visibility of cStreamdevLiveReceiver: Moved from livestreamer.h -> .c
Modified Files:
	server/livefilter.c server/livefilter.h server/livestreamer.c
	server/livestreamer.h
2007-04-23 15:44:55 +00:00
schmirl
6dd3cc412e client_section-pipe-carbage-collector.patch by Petri Hintukainen
- Run section filter carbage collector when adding new filter.
  Carbage collector closes all filters that have already been
  closed by local VDR section handler.
  (without this, closed section filters are removed only when
  they receive data from server. If they wont, ...).
- Add locking to list handling (list is accessed from separate threads)
Modified Files:
	client/filter.c client/filter.h
2007-04-23 12:52:28 +00:00
schmirl
5f54824d3d Fixed whitespaces. No functional changes 2007-04-23 12:01:33 +00:00
schmirl
0a7608faba client_invalid-section-data_and_pipe-overflow.patch by Petri Hintukainen
- Reset section data unpacker only after first non-full TS packet
  (last TS packet of section is typically not full
- Do not close filter if socket buffer is full (EAGAIN, EWOULDBLOCK)
  (closing results in 100% CPU usage in VDR section handler)
2007-04-23 12:00:27 +00:00
schmirl
e55981c9e1 client_device.patch by Petri Hintukainen
- Implement virtual IsTunedToTransponder()
- Return true from Provides... functions
Modified Files:
	client/device.c client/device.h
2007-04-23 11:42:16 +00:00
schmirl
35bfac507b client_filter-close-fix.patch by Petri Hintukainen
- Do not close receiving side of section pipe. Ownership of handle
  has been transferred to VDR section handler when filter was opened.
  Closing handle twice results closing random file handle. If this
  handle is laready used by another section filter pipe (very likely),
  VDR section handler CPU usage will rise to 100%.
2007-04-23 11:33:26 +00:00
schmirl
c515e82f04 Fixed typos 2007-04-23 11:30:55 +00:00
schmirl
130d7dcc08 client_section-filter-socket.patch by Petri Hintukainen
- Use datagram mode socket instead of pipe to feed
  section data to client VDR section handler
-> preserve section data block boundaries
2007-04-23 11:25:59 +00:00
schmirl
313da9682d client_filter-visibility.patch by Petri Hintukainen
- Move cStreamdevFilter definition from filter.h to filter.c
- Add IsClosed() and Reset() members to cStreamdevFilter:
  * IsClosed() returns true if filter was closed by VDR
  * Reset() discards (incomplete) queued section data

Modified Files:
	client/filter.c client/filter.h
2007-04-23 11:23:15 +00:00
schmirl
3ceb716ea9 Use compiler flag -Wall. Cleanup code as necessary.
(#171 Thanks to Rolf Ahrenberg)
Modified Files:
	Makefile streamdev-server.c server/connection.h
	server/connectionHTTP.c server/connectionVTP.c tools/source.c
2007-04-16 11:01:02 +00:00
schmirl
69b754bef9 Close pipe when externremux.sh is gone. Fixes high CPU load problem (#235) 2007-04-02 10:35:29 +00:00
schmirl
525574f9b0 Close connection when client is gone. Fixes high CPU load problem (#201)
Modified Files:
	server/connection.h server/connectionHTTP.h
	server/connectionVTP.h server/server.c server/streamer.c
	server/streamer.h tools/select.c tools/select.h tools/source.c
2007-04-02 10:32:34 +00:00
schmirl
cd7d4e3588 Silence warning about overloaded namespace (#244, thanks to rofafor) 2007-03-19 12:06:13 +00:00
schmirl
87e24499e3 Silence warnings caused by implicit casts between uint8_t and char.
In most places casting was easy to avoid as the variables have been
casted forth and back between both data types. Anyway - the affected
functions are never used by streamdev.
2007-03-19 12:05:25 +00:00
schmirl
1e9e200e8a Fixed null pointers 2007-03-02 15:27:07 +00:00
schmirl
59a4969b3f Fixed indenting - no code change 2007-02-19 12:09:30 +00:00
schmirl
e86d019878 Added commandline switch -r/--remux for specifying name of externremux script (thanks to Rolf Ahrenberg)
Modified Files:
	streamdev-server.c streamdev-server.h remux/extern.c
	remux/extern.h
2007-02-19 12:08:16 +00:00
schmirl
e3a4418453 Compatibility for vdr < 1.3.38 (#169) 2007-01-15 12:15:12 +00:00
schmirl
335660b62c API changes of VDR 1.5.0 (#219)
Modified Files:
	server/connection.c server/livestreamer.c
	server/livestreamer.h
2007-01-15 12:00:19 +00:00
schmirl
970bf59cc2 Indenting - no code changes 2007-01-15 11:45:48 +00:00
schmirl
56571d5879 Log throttle for connection failure messages (#183) 2007-01-15 11:41:46 +00:00
schmirl
ab342d37b3 Replace uint64 by uint64_t (#200) 2007-01-15 11:36:37 +00:00
schmirl
1f3a3c1291 Avoid loop/deadlock when two VDRs mutually share there DVB cards, i.e.
both are streamdev-server and streamdev-client (#198).

Bigpatch version by p_body@vdrportal
Added Files:
	patches/vdr-1.4.3-recursion_bigpatch.diff
	patches/vdr-1.4.3-recursion.diff
2007-01-11 11:48:23 +00:00
schmirl
7bec543960 - Updated for VDR 1.4
- Moved the changes a litte bit around so that it shouldn't be affected by VDR changes that easy.
- Changed menu item texts
2007-01-11 11:44:01 +00:00
schmirl
1c0f73a09b Devices are expected to honour the CA field. Without this patch there
is no way to tell a VDR that it may not use streamdev for a specific
channel.
2007-01-11 11:39:08 +00:00
schmirl
7c300e2a12 Cache translation in cPluginStreamdevServer::Active() as this method
may be called very often. Though tr() is not producing too much overhead
it is not neglectible either. If the actual translation is missing,
the resulting syslog messages will become annoying.

Note that the current OSD language is not monitored. Changes won't be
reflected until the next restart.

Thanks to Urig for the patch (#197).
2006-11-24 11:45:36 +00:00
schmirl
11f4a0c6e1 Use select with timeout and check if streamdev-server has to shutdown
(#135). Thanks to Urig@vdrportal
2006-11-10 11:52:41 +00:00
schmirl
83dd64f68a - collect terminated externremux.sh processes (#136)
- avoid fd leaks when we fail to spawn externremux.sh
2006-10-05 06:03:23 +00:00
schmirl
06265bab7b - detach all receivers before tuning to different transponder. Otherwise ABRT will be sent after tuning, which will destroy the LiveStreamer on the server. 2006-09-14 10:43:10 +00:00