[streaming] Possible Memory leak & problems with UDP playback

videolanforums videolanforums at vitalit.co.uk
Wed May 28 03:48:14 CEST 2008


Hi All,

Posting as suggested by Jean-Baptiste Kempf : 
http://forum.videolan.org/viewtopic.php?f=13&t=46959

Here's my scenario :-

Ubuntu Hardy Heron 64Bit with standard apt-get of vlc version 0.8.6e 
Janus - Compiler: gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7).

I have three DVB-T tuners :

1 x PCI "Tiger"
1 x USB MSI Mega sky 580 - Zarlink MT352
1 x USB Grand Tech - DiBcom 3000MC/P

Each USB tuner has it's own EHCI controller (on onboard & 1 add in PCI).

I select a transponder and stream each of the available channels to a 
port on localhost with something like :

Code:
     vlc --ts-es-id-pid --programs=8258,8325,8294,8353,8384 dvb: 
--dvb-adapter=2 --dvb-frequency=665833330 --dvb-srate=27500000 
--sout-standard-access=udp --sout-standard-mux=ts --sout 
'#duplicate{dst=std{dst=127.255.255.255:8000},select="program=8258",dst=std{dst=127.255.255.255:8001},select="program=8325",dst=std{dst=127.255.255.255:8002},select="program=8294",dst=std{dst=127.255.255.255:8003},select="program=8353",dst=std{dst=127.255.255.255:8004},select="program=8384"}' 
&

     vlc --ts-es-id-pid --programs=12866,12992 dvb: --dvb-adapter=0 
--dvb-frequency=650166670 --dvb-srate=27500000 
--sout-standard-access=udp --sout-standard-mux=ts --sout 
'#duplicate{dst=std{dst=127.255.255.255:9000},select="program=12866",dst=std{dst=127.255.255.255:9001},select="program=12992"}' 
&

     vlc --ts-es-id-pid --programs=4173,4237,4351,4415,4671 dvb: 
--dvb-adapter=1 --dvb-frequency=641833330 --dvb-srate=27500000 
--sout-standard-access=udp --sout-standard-mux=ts --sout 
'#duplicate{dst=std{dst=127.255.255.255:7000},select="program=4173",dst=std{dst=127.255.255.255:7001},select="program=4237",dst=std{dst=127.255.255.255:7002},select="program=4351",dst=std{dst=127.255.255.255:7003},select="program=4415",dst=std{dst=127.255.255.255:7004},select="program=4671"}' 
&


I then have a program that wraps libvlc to "restream" to my intended 
clients - the cli version would like like this :

Code:
     vlc udp://@:8000 --sout 
'#duplicate{dst=std{access=udp,mux=ts,dst=10.250.250.69:7000}}'



With a client that wraps libvlc to display content and a means of 
channel selection - a static client looks like :

Code:
     vlc udp://@:7000



Problems

1) The main vlc instances that talk to the tuners seem to be leaking 
memory like a sieve (Seems worse on transponders with moving channels - 
see 3).
2) When a badly corrupted stream is read the client freezes displaying 
the that data it could decode and will NOT always restart of it's own 
accord.
3) Some of the dvb-t channels on my local multiplexes "swap" depending 
on time of day - that is to say during the day you may see one channel 
(kids tv for example) in a slot, but at night the channel changes to 
more mature content. Vlc does not seem to notice this change in the 
streams apart from losing the departing channel.
4) I have yet to discover the root cause, but vlc also seems at times to 
incorrectly identify the audio pid as some channels start without audio 
on the main channel - a restart or two of the backend vlc usually gets 
it to pick the correct audio.

I have no C or C++ skills but will be glad to follow up and try to help 
diagnosing these further.

Thoughts / advice ?

Thanks in advance

Matt


More information about the streaming mailing list