[vlc-devel] [PATCH] fix mux functionality, avoid dumping all ES in first PMT

Marnik Vander Elst marnik at marnik.org
Thu Jul 24 14:04:20 CEST 2008


description:
Look for the ID specified in config in the PMT map, not for the
original incoming PID.

explanation:
The code specifies that ts-es-id-pid should be used, so that the PMT
mapping can be done by the ID's. I printed out the PMT maps, and the
correct settings are loaded as specified with muxpmt and program-pmt.
However, all the ES are dumped in the first PMT because vlc searches
for the incoming pids instead of the id's, so they are not found. The
patch seems to fix this, but I'm not too sure why, I got lost in all
the ID's and PID's and structs and whatnot.

Config used:

del all

new stream1 broadcast enabled
new stream2 broadcast enabled
new stream3 broadcast enabled

setup stream1 input "udp://10.10.105.201@224.1.105.201:2000"
setup stream2 input "udp://10.10.105.202@224.1.105.202:2000"
setup stream3 input "udp://10.10.105.203@224.1.105.203:2000"

setup stream1 output
#duplicate{dst=bridge-out{id=1000},select=video,dst=bridge-out{id=1100},select=audio}
setup stream2 output
#duplicate{dst=bridge-out{id=2000},select=video,dst=bridge-out{id=2100},select=audio}
setup stream3 output
#bridge-in:duplicate{dst=display,dst=std{access=udp{ttl=5},mux=ts,dst=225.1.1.211:1234}

setup stream3 option sout-ts-tsid=55
setup stream3 option sout-ts-netid=88
setup stream3 option sout-ts-program-pmt="4000,4100,4200"
setup stream3 option sout-ts-muxpmt="1000,1100,,2000,2100,,1331,1332"
setup stream3 option
sout-ts-sdtdesc="broadcaster1,service1,broadcaster2,service2,broadcaster3,service3"
setup stream3 option sout-ts-es-id-pid
setup stream3 option sout-ts-pcr=35

control stream1 play
control stream2 play
control stream3 play

Commandline:

vlc -I telnet --vlm-conf mux.conf

Result in DVB analyser:

http://img165.imageshack.us/img165/9535/01correctxp6.png

Some explanation with the screenshot:

PID 1000,1100,2000 and 2100 are correctly mapped in the right PMT's. I
do not find a way to set the id's for the third stream however, if i
use the same as the lines before than nothing happens:

setup stream1 output
#duplicate{dst=bridge-out{id=1000},select=video,dst=bridge-out{id=1100},select=audio}
setup stream2 output
#duplicate{dst=bridge-out{id=2000},select=video,dst=bridge-out{id=2100},select=audio}
setup stream3 output
#duplicate{dst=bridge-out{id=2000},select=video,dst=bridge-out{id=2100},select=audio}:bridge-in:duplicate{dst=display,dst=std{access=udp{ttl=5},mux=ts,dst=225.1.1.211:1234}

Does not work, if I use bridge-out and bridge-in on the same line vlc
simply does nothing. As you can see, pid 1331 and 1332 are also
correctly mapped to the third service, but 1331 and 1332 are the
_input_ pids of the UDP-stream.

I hope that was somehow understandable, otherwise I'd be happy to give
more information.

Kind regards,

Marnik



More information about the vlc-devel mailing list