[vlc-devel] LibVLC vmem vout and Elementary Stream ID

Rémi Denis-Courmont remi at remlab.net
Wed Feb 26 18:40:25 CET 2014

Le mercredi 26 février 2014, 18:27:05 Jérôme Forissier a écrit :
> Now, with libvlc_video_set_callbacks()/libvlc_video_set_format_callbacks(),
> one vmem output is instantiated from the decoder thread whenever a new
> video stream is found in the input medium. In this case, we *do* have an ES
> ID which may be passed to the setup() callback.

No, this is no different from the general case. The video output cores tries to 
reuse the video output as far as possible. There are no warranties that 
changing video track, or changing input file will destroy the current output 
and create a new one. It might happen if the core determines that it is 
unavoidable, but otherwise not. Conversely, the video output could be created 
later than the video ES started proper, or could be a visualization for an 
audio track, or could be the result of a video splitter.

> So I am proposing to add a
> new parameter to setup(): int es_id, "the ID of the elementary stream that
> caused the decoder to instantiate the video output".

You cannot add *any* new parameter. That would break binary compatibility. You 
need to either add a new callback, or a new function.

> If this sounds acceptable I will send a patch to the list.

Rémi Denis-Courmont

More information about the vlc-devel mailing list