[vlc-devel] [RFC] Moving services discovery out of the playlist

Rémi Denis-Courmont remi at remlab.net
Sun Jun 10 13:59:54 CEST 2018

Le sunnuntaina 10. kesäkuuta 2018, 14.28.59 EEST Romain Vimont a écrit :
> Hi Rémi,
> Thank you for your feedbacks.
> On Fri, Jun 08, 2018 at 07:33:32PM +0300, Rémi Denis-Courmont wrote:
> > Le perjantaina 8. kesäkuuta 2018, 18.05.58 EEST Romain Vimont a écrit :
> > > Hi,
> > > 
> > > We would like to move services discovery out of the playlist, I explain
> > > why and detail a proposal in this RFC:
> > > <https://github.com/rom1v/vlc/blob/sd/rfc.md>
> > > 
> > > I would appreciate feedbacks ;-)
> > 
> > playlist_IsServicesDiscoveryLoaded() is deprecated because it's broken by
> > design, and nobody proposed a sane alternative. Anything that tries to
> > imitate is thus presumed broken by design too. And that seems to include
> > media_browser_GetMediaSource().
> AFAIU, playlist_IsServicesDiscoveryLoaded() is broken because it's
> inherently racy.

The race is unavoidable if you want to show what SD are active. That's not 
necessarily a problem.

> I think that media_browser_GetMediaSource() is more equivalent to
> playlist_ServicesDiscoveryAdd(), except that it creates/loads the SD
> only if it was not already loaded, without race conditions (unless
> there is a bug). Is something wrong with this?

There are no ways to identify an SD uniquely. A string is definitely no such 

That function worked before SD had a config chain, and before Lua SD was 
added. It has never stopped working properly since then, and mostly probably 
never will work properly again.

> > Also I don't see the point in reference counting. SD instances are not
> > reentrant, so I don't see what you can do with a reference to one.
> Several concurrent clients (interfaces) may request a SD, in that case
> GetMediaSource() returns the same media_source_t instance (containing
> the same media tree).

> Reference counting is used to release the instance (and close the SD)
> when no more clients use it (in C++, a shared_ptr could have been used
> instead).

So how does that work with stateless interfaces such as HTTP that have nowhere 
to keep the references?


More information about the vlc-devel mailing list