)]]
This info is here for developers only. If you don't understand it, it's not for you.
[[html(
)]]
[[TOC(heading= ,inline)]]
[[BR]]
[[BR]]
== IRC discussion about Live-TV support via RTSP ==
{{{
#!irc
Nov 10 17:43:23 ok, it is about using rtsp/rtp for the DVB-D to send out live-tv
Nov 10 17:44:19 I already looked at the rtsp spec and gst-rtsp-server
Nov 10 17:44:40 I think I understand how it basically works
Nov 10 17:44:50 as it is the optional, and maybe soon a mandatory transport protocol in DLNA, my opinion is, when sebp now starts with live-tv at the DVB-D, we should go for something that will of some use for a broader device base
Nov 10 17:44:51 dev: don't call it DVB-D, it made me wonder if its another spec out there alongside DVB-C, DVB-T and DVB-S :)
Nov 10 17:45:00 hehe, ok
Nov 10 17:45:58 mabye a stupid question, but what's DLNA?
Nov 10 17:46:34 sebp: you should read my documents - Digital Living Network Alliance
Nov 10 17:46:38 sebp: http://www.dlna.org/home
Nov 10 17:46:53 on top of UPnP
Nov 10 17:47:43 so the basic question is - how should/could we integrate gst-rtsp-server with the DVB-Daemon
Nov 10 17:47:55 sup y'all :)
Nov 10 17:48:16 robtaylor: hey :)
Nov 10 17:48:43 hi robtaylor
Nov 10 17:48:52 dev, sebp: hey
Nov 10 17:49:25 wtay: gst-rtsp-server need a file as input?
Nov 10 17:49:27 dev: so, you're teh DLNA expert - is there any standard interfaces for a program guide?
Nov 10 17:49:41 robtaylor: yep, me is working on it
Nov 10 17:49:46 s/is/are/ even. I should start talking english ;)
Nov 10 17:50:00 dev, no, any gstreamer element will do. Check the live pipelines
Nov 10 17:50:27 dev: that's cool, i guess that's teh sort of thing a dvb controlpoint should export
Nov 10 17:50:45 robtaylor: http://upnp.org/specs/av/UPnP-av-ContentDirectory-v2-Service-20060531.pdf abd http://upnp.org/specs/av/UPnP-av-ScheduledRecording-v1-Service-20060531.pdf
Nov 10 17:50:57 robtaylor: no, the dvb MediaServer
Nov 10 17:51:05 I'm a little bit confused with streams in rtsp. Are those stream all the streams that belong to let's say a move (e.g. video, english audio, german audio) or can I also put multiple unrelated movies side by side?
Nov 10 17:51:12 dev: sorry, yes, MediaSever :)
Nov 10 17:51:49 sebp: think of it like mpegts..
Nov 10 17:52:22 robtaylor: ok, so the streams are related
Nov 10 17:52:35 sebp: well, they can be, but they don't need to be
Nov 10 17:52:56 sebp: the timestamp relationships are between the RTP streams
Nov 10 17:53:15 * zaheerm perks up at the discussion
Nov 10 17:53:31 what I have in mind is that the server might stream two different channels
Nov 10 17:54:40 dev, all dnla compliant devices have to handle those specs?
Nov 10 17:55:11 zaheerm: in a future, ideal world - yes
Nov 10 17:55:20 dev, so the answer is no :)
Nov 10 17:55:27 how many do support rtsp so far?
Nov 10 17:55:30 rtp is optional currently in dlna, if i followed correctly ;)
Nov 10 17:55:32 atm the moment no
Nov 10 17:55:51 but it will be pushed heavily
Nov 10 17:56:02 the ps3 supports ts over rtsp?
Nov 10 17:56:04 yep, rtsp/rtp is not mandatory yet
Nov 10 17:56:22 zaheerm: vlc doesn't :(
Nov 10 17:56:24 dev: know anything that supports it yet?
Nov 10 17:56:25 zaheerm: no, the only device I know of so far is the netgear eva-8000 something
Nov 10 17:56:26 does rtsp support "metadata" like epg? or would that go over the normal upnp-connections_
Nov 10 17:56:27 ?
Nov 10 17:57:03 let's first concentrate on the rtsp part pls
Nov 10 17:57:12 lightyear, some metadata is contained inside the ts, such as now/next data from the eit, channel name from the sdt etc.
Nov 10 17:57:15 hahhahaha. was only wondering
Nov 10 17:57:24 sebp: I would propose for each show/channel a stream
Nov 10 17:58:08 sebp: so we could say that one tunes in into live-tv, we provide that for some other client too
Nov 10 17:58:18 i'd do the same, don't think it would work having multiple tv/radio channels being sent in one rtsp stream...can easily split them at the server level
Nov 10 17:58:39 ok, sounds good
Nov 10 17:58:56 and if we get that ring-buffer thing, we have some data-in-time we could go back
Nov 10 17:59:46 that would be awesome
Nov 10 17:59:47 dev: that brings me to my next problem, what if A watches channel 1 and wants to watch channel 2, but there's only card available
Nov 10 18:00:04 ah, B wants to watch channel 2 :)
Nov 10 18:00:17 gst-rtsp-serverbut the question is - would this be possible with
Nov 10 18:00:23 argh
Nov 10 18:00:35 rtsp server reports busy to B unless it is in same transport stream in dvb?
Nov 10 18:00:53 in which case it serves both fine?
Nov 10 18:01:12 probably that's the job of the UPnP server
Nov 10 18:01:20 zaheerm: yes, if it would work as expected :) but that's another topic
Nov 10 18:02:06 my question is - if we have some ring-buffer for the dvb-data, and we have gst-rtsp-server serving that
Nov 10 18:02:37 sebp, implementation details :P
Nov 10 18:02:49 could one client have the actual one-time stream, and some other the same stream, but 5min behind?
Nov 10 18:02:58 so you want to have a ringbuffer on server level?
Nov 10 18:03:01 dev, i see no reason why not
Nov 10 18:03:05 lightyear: yep
Nov 10 18:03:13 that sounds awesome ...
Nov 10 18:03:15 lightyear, think of the possibilities, elisa will never need native dvb :P
Nov 10 18:03:27 if we want to provide seek and pause for the PS3, we have to
Nov 10 18:03:47 you want 5 min the buffer?
Nov 10 18:03:55 wtay: is that possible? or do we need a server for each client?
Nov 10 18:04:03 arg, in the buffer
Nov 10 18:04:19 sebp: why not? why not 15? it is only a question of disk space
Nov 10 18:04:32 sebp, the ring buffer would be a large enough size that users wouldn't know that there was a limit :)
Nov 10 18:04:51 ok, if it's on disk that's fine
Nov 10 18:05:22 dev, it's possible, you don't need a server for each client
Nov 10 18:05:23 i've rewinded over an hour on my sky set top box without issues
Nov 10 18:05:32 I must admit I'd always wanted to jump back in live tv
Nov 10 18:05:42 wtay: cool, so that is the way to go
Nov 10 18:06:31 more important: pause and ffw over the comercials!
Nov 10 18:06:42 sorry conf call now :(
Nov 10 18:06:51 will look over discussion
Nov 10 18:06:57 I do that with myth-tv since 2003 ;-)
Nov 10 18:07:13 hehe
Nov 10 18:07:17 anyway - first conclusions:
Nov 10 18:07:56 gst-rtsp-server can handle several clients and serving each another portion of the ring-buffered stream
Nov 10 18:08:14 we use for each channel one gst-rtsp-server
Nov 10 18:09:10 at least one rtsp url, it's still one server though, right?
Nov 10 18:09:16 I would say so...
Nov 10 18:10:41 one server/process? or several server instances in one process?
Nov 10 18:10:55 dev: you mean that we will stream one channel per url, no?
Nov 10 18:11:02 I would start and stop the servers as needed
Nov 10 18:11:13 on demand, sure
Nov 10 18:11:38 so that you have a pool, and maybe we can somehow modify the server to actually serve all the channels of one transponder
Nov 10 18:11:52 but as different streams
Nov 10 18:12:29 implementation detailsas zaheerm said -
Nov 10 18:12:34 sure
Nov 10 18:12:47 but that would be even more awesome ...
Nov 10 18:13:22 didn't twi_ already made some modifications like that in his branch?
Nov 10 18:13:31 lightyear: that's the goal. that you can watch all channels of one TS at the same time with only one adapter
Nov 10 18:15:21 any objections to follow that road? wtay?
Nov 10 18:16:40 you need one server with multiple sessions
Nov 10 18:17:26 but there is nothing technically speaking against this kind of setup?
Nov 10 18:17:31 meaning one instance listening on the RTSP port and setting up the pipelines for the clients
Nov 10 18:17:39 yep
Nov 10 18:18:46 I guess it could work with a separate process per client too
Nov 10 18:19:18 maybe that's better in terms of memory leaks,...
Nov 10 18:20:01 cool, I really love it to see all these little pieces fall into place
Nov 10 18:20:49 you'll need to pass file descriptors between processes and other nasty things
Nov 10 18:21:17 flumotion does this
Nov 10 18:21:28 so we'll document that somewhere, review that and start with some of the pieces
Nov 10 18:22:48 they should be all separated enough to work on its own
Nov 10 18:23:10 I don't want it to be too complicated in the beginning, otherwise it takes ages until the server is working
Nov 10 18:23:33 yep, that's why I propose that component approach
Nov 10 18:24:13 1) gst-rtsp-server and your dvb-* pipeline
Nov 10 18:24:17 2) ring-buffer
Nov 10 18:24:58 is there already a ring-buffer element for gst?
Nov 10 18:24:59 and in parallel the Coherence parts which should not interfere with yours
Nov 10 18:26:34 apart from maybe some dbus methods to query and maybe start/stop some things
Nov 10 18:26:56 ok back
Nov 10 18:27:16 1) should be handled by dvb-daemon i think
Nov 10 18:27:29 yep
Nov 10 18:27:34 right
Nov 10 18:27:40 there is no ring buffer element for gst tho there are some design notes wrt queue2Nov 10 18:31:11 yep, we've already tried that
Nov 10 18:27:44 as it has to work without Coherence too
Nov 10 18:28:52 wtay is the man to explain how to write a decent ring buffer element in gst
Nov 10 18:30:05 dev, ps3 does pause/rewind in http streams? (you said it doesn't handle rtsp for mpegts)
Nov 10 18:30:27 zaheerm: it does, with http byte-ranges
Nov 10 18:30:51 dev, ps3 supports mpegts over http?
Nov 10 18:31:11 zaheerm: i think twi already implemented that fd stuff
Nov 10 18:31:18 i was meant to test that on the weekend, with a flumotion plug to act as a media server
Nov 10 18:31:23 philn, what fd stuff?
Nov 10 18:31:58 philn, if you mean fd passing between processes, flumotion does it between porters and http-streamer and http-server components
Nov 10 18:33:03 zaheerm: twi has a branch of gst-rtsp-server and he told me he implemented fd-passing stuff, a bit like in flumotion
Nov 10 18:33:16 or maybe i just misunderstood :D
Nov 10 18:33:30 he has put multiple processes in gst-rtsp-server?
Nov 10 18:33:38 philn: where's that branch?
Nov 10 18:34:18 http://nnva.org/gst-rtsp-server.git
}}}