[linux-dvb] splice() for DVB dvr device?

Trent Piepho xyzzy at speakeasy.org
Thu Feb 15 22:39:03 CET 2007

On Thu, 15 Feb 2007, Johann Hanne wrote:
> As you can see, there is no need to specify PIDs or something like that.
> Moreover, an old version (without the CLI and XML style files) of my project
> runs fine on a Pentium III Xeon 800 MHz with 4 DVB boards multicasting a
> total of >100 MBit/s. This old version has been running stable for years, but
> it's also a bit of an hack, so I'm doing a complete rewrite now, which is
> aimed to still be more efficient (maybe 4 PCI DVB boards und 4 USB DVB boards
> are possible on recent hardware?). I'm already using epoll() instead of
> poll(), and maybe using splice() is possible, this is why I'm asking...

The problem I see with splice() is that all you can do is pass a stream
unchanged from the device to the socket.  If you want to send two channels
on the same transponder to different sockets, you'd have to edit
the stream to split it.

If you want to send /dev/dvb/adapter0/dvr0 to a socket without changing it,
that might be doable.

It won't work yet, as you would have to implement the splice fops for the
dvr device.  I'm not sure how hard that would be, since I don't know what
->splice_read() is really supposed to do.  Does it just copy data from one
buffer to another, or is it more complex than that?

More information about the linux-dvb mailing list