[mythtv] devel/rtp: multiple IPTV streams, same port-no

Niels Ole Kirkeby nok at kirkeby.nu
Sun Apr 29 11:46:24 UTC 2012


2012/4/28 Niels Ole Kirkeby <nok at kirkeby.nu>

> Hi
>
> I was trying to figure out why devel/rtp didn't work for me and found a
> major (if you're struck by it) flaw in the multicast handling in MythTV.
> The problem is that my provider delivers streams like
> udp://222.111.222.xx:2000. That is for all streams the port-no is the same.
> In Linux, basically only the port-no differentiates the various
> udp-streams. Thus I noticed a strange phenomena in MythTV: two iptv-tuners
> recording two different streams but all data goes to the first stream !
>
> I made a small test-program: Open two sockets, join two different
> multicast streams (udp://222.111.222.123:2000 and udp://
> 222.111.222.124:2000). I noticed the bind() for the second socket failed.
> When I read from the sockets, only the first socket has any data but the
> data was a merge from both streams ! After some digging I found out that
> apparently you can only have one common socket for all streams and should
> use sockopt IP_PKTINFO to find the multicast group the data is for.
>
> I'm not quite into the class-relations in MythTV yet but are trying to
> figure out how to handle this. Could anybody responsible for the devel/rtp
> branch please comment on this ? Whether this is "just" a patch or a major
> rewrite ?
>
> What's strikes me is that appearently I only had minor problems whether
> the "old" IPTV code and that code didn't use IP_PKTINFO either.
>

I just discovered another "hidden" feature of Linux: You can bind to a
multicast address. Thus if the bind() call in iptvstreamhandler.cpp, line
211 includes the multicast adress instead in ANY_HOST it actually works.
Just tested. However as far as I can understand, using IP_PKTINFO is the
"portable" way to do, for those OS who understands this option. But since
mythtv currently is only Linux, does it matter ?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mythtv.org/pipermail/mythtv-dev/attachments/20120429/da1a15ae/attachment.html>


More information about the mythtv-dev mailing list