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

Johann Hanne jhml at gmx.net
Thu Feb 15 03:09:47 CET 2007


On Sunday 11 February 2007 12:46, Nico Sabbi wrote:
> already done: dvbstream from cvs can already stream to multiple
> unicast/multicast/file streams
> repeating pids to each of them, and it's very lightweight (although I
> have to admit it's a bit untidy).
> http://sourceforge.net/projects/dvbtools

Hi Nico,

I know about your tools. But judging from what I saw the last time I used it 
(which is 2-3 years ago), our projects have different scopes. Mine is 
expected to work like this:

frontend.conf:
--
FRONTEND /dev/dvb/adapter0/frontend0
  FREQUENCY 12421000
  POLARIZATION H
  SYMBOL_RATE 27500000
--
(Will be switched to XML later...)

devices.xml:
--
<?xml version="1.0" encoding="iso-8859-1"?>
<device-list>
  <device>
    <demux>/dev/dvb/adapter0/demux0</demux>
    <dvr>/dev/dvb/adapter0/dvr0</dvr>
    <frontend>/dev/dvb/adapter0/frontend0</frontend>
  </device>
...
--

programs.xml:
--
<?xml version="1.0" encoding="iso-8859-1"?>
<program-list>
  <program>
    <program-name>Das Erste</program-name>
    <destination><ip>239.192.1.1</ip></destination>
  </program>
...
--

TCP CLI:
--
jonny at dh3mb ~/projects/dvbstreamd $ telnet localhost 3333
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
dvbstreamd> DUMPSDT
Last SDT received at ...:
transport_stream_id: 1201
version_number: 0
current_next_indicator: 1
original network id: 1
services:
+- service_id: 28308
|  EIT schedule flag: 1
|  EIT present/following flag: 1
|  Running status: 4
|  Free CA mode flag: 0
|  Descriptors loop length: 60270
|  Descriptors:
|  +- descriptor_tag: 72
|     descriptor_length: 21
|     provider name length: 3
|     service name length: 15
|     provider name: "ARD"
|     service name: "[0x05]WDR D[0xfc]sseldorf"
|     provider name (UTF-8): "ARD"
|     service name (UTF-8): "WDR Düsseldorf"
+- service_id: 28309
|  EIT schedule flag: 1
...
--

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...

Cheers, Johann



More information about the linux-dvb mailing list