[vlc-commits] [Git][videolan/vlc][master] 24 commits: sout: dlna: publicly expose protocol info function

Felix Paul Kühne (@fkuehne) gitlab at videolan.org
Sat Apr 18 12:36:39 UTC 2026



Felix Paul Kühne pushed to branch master at VideoLAN / VLC


Commits:
9b4d379e by Alaric Senat at 2026-04-18T12:53:34+02:00
sout: dlna: publicly expose protocol info function

This will allow for other dlna compliant modules (for instance a server)
to use the same code as formatting the Protocol Info is a pretty common
operation.

- - - - -
6711c31e by Alaric Senat at 2026-04-18T12:53:34+02:00
sout: dlna: constify the profile list

- - - - -
69860c1c by Alaric Senat at 2026-04-18T12:53:34+02:00
sout: dlna: add a default image profile

This will be needed to share thumbnails in the upnp server.

- - - - -
873ae491 by Alaric Senat at 2026-04-18T12:53:34+02:00
contrib: upnp: Bump minimum requirements to 1.8.5

This minor version bump weirdly includes a new features to manipulate
HTTP headers from requests. It's required for the UPNP server.

Refs: https://github.com/pupnp/pupnp/commit/b862e0dec78ccb4f37d3458836970accf11b54b7

- - - - -
1738b7b2 by Alaric Senat at 2026-04-18T12:53:34+02:00
meson: upnp: depend on `contrib_dep`

The new UPNP server is referring to upnp includes with the `upnp/`
prefix for clarity (eg. `upnp/list.h`). This requires including the
whole `include/` contrib directory.

- - - - -
51a244ce by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: add a modern C++ wrapper for ixml

- - - - -
3f4e75a6 by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: add a C++ medialibrary wrapper

These structures will be useful to take as a generic argument to make
various queries to the ml in an opaque way.

- - - - -
b31e96fb by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: implement a basic upnp server module

First building block for the UPNP server. The actual features will be
implemented in the subsequent commits.

Co-Authored-By: Hamza Parnica <hparnica at gmail.com>

- - - - -
2693d534 by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: implement media fetching

Browsing the UPNP server hierarchy will lead to the client fetching the
media/thumbnails via GET requests on the libupnp webserver. This patch
exposes a way to retreive the medialibrary indexed files via URLS
poiting to their internal IDS. Theses URL will then be exposed by the
directory browsing service in the next commit.

Co-Authored-By: Hamza Parnica <hparnica at gmail.com>

- - - - -
62cab516 by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: implement the CDS

The "Content Directory Service", represents and implements the server
file and folder hierarchy. It exposes the indexed medialibrary
collections and media.

- - - - -
455816ec by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: implement browsing

Link the libupnp internals with the Content Directory Service.

Co-Authored-By: Hamza Parnica <hparnica at gmail.com>

- - - - -
0c6e776d by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: implement thumbnails support

- - - - -
4ff98c2c by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: implement subtitles support

- - - - -
47f511e6 by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: add support for microsoft devices

Add minimal support for a microsoft specific service required by some
devices (ie. windows media player or the xbox 360 client...). The
clients won't recognise the server if theses services fail to respond.

- - - - -
fe6dcd6a by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: expose the VLC logo as the server icon

- - - - -
b14f5501 by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: add an extra verbose log level

To display the complete xml UPNP requests.

- - - - -
99ea2a10 by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: ml: restrict to public only

To protect the user's privacy, only the media and collections of media
explicitly marked as public by the user will be exposed by the UPNP
server.

- - - - -
14eb75e9 by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: ml: add a volatile option to share private media

- - - - -
c200860f by Alaric Senat at 2026-04-18T12:53:34+02:00
upnp: server: add upnp server to intf creation callback

- - - - -
3c164b2e by Felix Paul Kühne at 2026-04-18T12:53:34+02:00
upnp: server: fix crash when clients request private or missing media

The C callbacks getinfo_cb and open_cb call parse_url which may throw
C++ exceptions (ForbiddenAccess, UnknownObject) from ml::Object::get().
These exceptions cannot unwind through libupnp's C stack frames, causing
std::terminate and a crash.

- - - - -
66be88f7 by Felix Paul Kühne at 2026-04-18T12:53:34+02:00
build system: add option to enable UPnP server (default enabled)

- - - - -
1e834a8d by Felix Paul Kühne at 2026-04-18T12:53:34+02:00
src/interface: add compile time check for UPnP server

- - - - -
6d063a79 by Felix Paul Kühne at 2026-04-18T12:53:34+02:00
package/macosx: distribute UPnP server resources

- - - - -
a2635612 by Felix Paul Kühne at 2026-04-18T12:53:34+02:00
package/apple: disable UPnP server on iOS, tvOS, xrOS, watchOS

- - - - -


37 changed files:

- configure.ac
- contrib/src/upnp/rules.mak
- extras/package/apple/build.conf
- extras/package/macosx/package.mak
- meson.build
- meson_options.txt
- + modules/control/upnp_server/FileHandler.cpp
- + modules/control/upnp_server/FileHandler.hpp
- + modules/control/upnp_server/cds/Container.hpp
- + modules/control/upnp_server/cds/FixedContainer.cpp
- + modules/control/upnp_server/cds/FixedContainer.hpp
- + modules/control/upnp_server/cds/Item.cpp
- + modules/control/upnp_server/cds/Item.hpp
- + modules/control/upnp_server/cds/MLContainer.hpp
- + modules/control/upnp_server/cds/MLFolderContainer.hpp
- + modules/control/upnp_server/cds/Object.hpp
- + modules/control/upnp_server/cds/cds.cpp
- + modules/control/upnp_server/cds/cds.hpp
- + modules/control/upnp_server/ml.hpp
- + modules/control/upnp_server/upnp_server.cpp
- + modules/control/upnp_server/upnp_server.hpp
- + modules/control/upnp_server/utils.cpp
- + modules/control/upnp_server/utils.hpp
- + modules/control/upnp_server/xml_wrapper.hpp
- modules/services_discovery/Makefile.am
- modules/services_discovery/meson.build
- modules/services_discovery/upnp.cpp
- modules/services_discovery/upnp.hpp
- modules/stream_out/dlna/dlna.cpp
- modules/stream_out/dlna/dlna.hpp
- modules/stream_out/dlna/profile_names.hpp
- + share/upnp_server/ConnectionManager.xml
- + share/upnp_server/ContentDirectory.xml
- + share/upnp_server/X_MS_MediaReceiverRegistrar.xml
- + share/upnp_server/vlc.png
- + share/upnp_server/vlc512x512.png
- src/interface/interface.c


The diff was not included because it is too large.


View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/436a18f2dbb604feeaffe6a46fc822d1abf7a2fd...a2635612a85dd6941835dfa10a505dfb96dd12ce

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/436a18f2dbb604feeaffe6a46fc822d1abf7a2fd...a2635612a85dd6941835dfa10a505dfb96dd12ce
You're receiving this email because of your account on code.videolan.org.




More information about the vlc-commits mailing list