[vlc-commits] [Git][videolan/libvlcpp][master] 3 commits: misc: Update readme

Alaric Senat (@asenat) gitlab at videolan.org
Wed Jul 1 08:05:40 UTC 2026



Alaric Senat pushed to branch master at VideoLAN / libvlcpp


Commits:
37633d3c by Alaric Senat at 2026-06-29T12:39:58+02:00
misc: Update readme

- - - - -
8b3d8e3c by Alaric Senat at 2026-06-29T12:39:58+02:00
meson: Set version to 4.0.0

libvlcpp now follows the major version of the minimum libvlc required
version.

- - - - -
adc59633 by Alaric Senat at 2026-06-29T12:39:58+02:00
ci: Only build for 4.0

This branch support will be switched to 4.0 only, the 3.0 ci has been
moved to the 3.0.x support branch.

- - - - -


3 changed files:

- .gitlab-ci.yml
- README.md
- meson.build


Changes:

=====================================
.gitlab-ci.yml
=====================================
@@ -1,11 +1,11 @@
 variables:
-  VLC30_IMAGE: registry.videolan.org/medialibrary-3.0:20231017192545
   VLC40_IMAGE: registry.videolan.org/vlc-debian-unstable:20230705133021
 
-.common_build:
+build:
+  image: $VLC40_IMAGE
   rules:
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
-    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "$CI_DEFAULT_BRANCH at videolan/libvlcpp"'
+    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_PROJECT_PATH == "videolan/libvlcpp" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
   tags:
     - docker
     - amd64
@@ -21,13 +21,3 @@ variables:
     paths:
       - ${CI_PROJECT_DIR}/build/meson-logs/testlog.txt
     when: always
-
-
-continuous_build_4.0:
-  extends: .common_build
-  image: $VLC40_IMAGE
-
-continuous_build_3.0:
-  extends: .common_build
-  image: $VLC30_IMAGE
-


=====================================
README.md
=====================================
@@ -2,26 +2,105 @@
 
 [![Join the chat at https://discord.gg/3h3K3JF](https://img.shields.io/discord/716939396464508958?label=discord)](https://discord.gg/3h3K3JF)
 
-[libvlcpp](https://code.videolan.org/videolan/libvlcpp) is a header-only, C++ bindings for the libvlc crossplatform multimedia API. It is an official binding over the VideoLAN libvlc library and can be used on many platforms.
+**libvlcpp** is a header-only, modern C++ wrapper around
+[libvlc](https://www.videolan.org/vlc/libvlc.html), the cross-platform
+multimedia API powering [VLC media player](https://www.videolan.org/vlc/). It
+is the official VideoLAN C++ binding and runs everywhere libvlc does.
 
-## Documentation
+The wrapper is intentionally thin: it adds RAII lifetime management, type
+safety and C++ interfaces on top of libvlc, while mapping closely to the
+underlying C API.
+
+## Features
+
+- **Header-only**: just needs to be added to your include path.
+- **RAII**: handles are reference-counted and released automatically.
+- **C++11**: works with any reasonably modern compiler and standard library.
+- **Cross-platform**: across all libvlc supported platforms.
+
+## Requirements
+
+- A C++11-capable compiler.
+- libvlc development files (`libvlc-dev` or equivalent), version 3.0 or later.
+
+## Versioning
+
+libvlcpp was originally designed to be retro-compatible across libvlc versions.
+However, libvlc 4 introduced a large number of fundamental breaking changes to
+the API, so support is now split across two branches:
+
+| Branch    | libvlc version | Status                       |
+| --------- | -------------- | ---------------------------- |
+| `3.0.x`   | libvlc 3       | Stable                       |
+| `master`  | libvlc 4       | In development               |
+
+Pick the branch matching the libvlc you build against.
+
+## Getting started
+
+Since libvlcpp is header-only, the simplest integration is to add the repository
+to your include path and include the main header:
+
+```cpp
+#include <vlcpp/vlc.hpp>
+#include <thread>
 
-Since libvlcpp is a close wrapper over libvlc, your documentation needs will be best served by either checking the libvlcpp source code, or the [libvlc documentation](https://videolan.videolan.me/vlc/master/index.html).
+int main(int argc, char** argv)
+{
+    auto instance = VLC::Instance(0, nullptr);
+    auto media    = VLC::Media(argv[1], VLC::Media::FromPath);
+    auto player   = VLC::MediaPlayer(instance, media);
 
-## Issues
+    player.play();
+    std::this_thread::sleep_for(std::chrono::seconds(10));
+    player.stopAsync();
 
-libvlcpp tickets are located on our [GitLab](https://code.videolan.org/videolan/libvlcpp/-/issues).
+    return 0;
+}
+```
 
-## Contribution
+Link the resulting program against libvlc (for example `pkg-config --libs libvlc`).
 
-Contribution are always welcome!
+### Using Meson
 
-Feel free to open a merge request on our [GitLab](https://code.videolan.org/videolan/libvlcpp/-/merge_requests).
+libvlcpp ships with Meson and can be consumed as a subproject. Drop a
+wrap file in `subprojects/` and pull in the dependency:
+
+```meson
+libvlcpp_dep = dependency('libvlcpp')
+
+executable('myplayer', 'main.cpp', dependencies: libvlcpp_dep)
+```
+
+The dependency transitively provides libvlc, so no further wiring is needed.
 
 ## Examples
 
-For usage examples, head over to the examples folder where you will find several code samples, such as [helloworld](examples/helloworld/main.cpp) and more.
+More complete samples live in the [`examples`](examples) folder, including
+[helloworld](examples/helloworld/main.cpp), in-memory input and renderer
+discovery.
+
+## Documentation
+
+libvlcpp closely mirrors libvlc, so its documentation is your primary reference
+alongside the wrapper headers themselves. See the
+[libvlc documentation](https://videolan.videolan.me/vlc/master/index.html).
+
+## Issues and contributing
+
+Contributions are always welcome! Tickets and merge requests are handled on our
+[GitLab](https://code.videolan.org/videolan/libvlcpp):
+
+- [Report an issue](https://code.videolan.org/videolan/libvlcpp/-/issues)
+- [Open a merge request](https://code.videolan.org/videolan/libvlcpp/-/merge_requests)
 
 ## Used by
 
-libvlcpp is being used and tested extensively in various projects, such as the VideoLAN [medialibrary](https://code.videolan.org/videolan/medialibrary), the previous [VLC for UWP](https://code.videolan.org/videolan/vlc-winrt) app and more.
\ No newline at end of file
+libvlcpp is used and tested extensively across VideoLAN projects, such as the
+[medialibrary](https://code.videolan.org/videolan/medialibrary) and the former
+[VLC for UWP](https://code.videolan.org/videolan/vlc-winrt) app, among others.
+
+## License
+
+libvlcpp is released under the LGPL-2.1-or-later license. See [COPYING](COPYING)
+for details.


=====================================
meson.build
=====================================
@@ -5,7 +5,7 @@ project(
     ['cpp'],
     license: 'LGPL-2.1-or-later',
     license_files: ['COPYING'],
-    version: '0.1.0',
+    version: '4.0.0+vlc.933ecc78a1',
     meson_version: '>=1.1.0',
     default_options: ['cpp_std=c++11'],
 )
@@ -17,7 +17,7 @@ install_headers(
     subdir: 'vlcpp',
 )
 
-libvlc_dep = dependency('libvlc', version: '>=3.0')
+libvlc_dep = dependency('libvlc', version: '>=4.0')
 
 libvlcpp_dep = declare_dependency(
     include_directories: include_directories('.'),
@@ -29,7 +29,7 @@ meson.override_dependency('libvlcpp', libvlcpp_dep)
 pkg = import('pkgconfig')
 pkg.generate(
     version: meson.project_version(),
-    requires: ['libvlc>=3.0'],
+    requires: ['libvlc>=4.0'],
     name: 'libvlcpp',
     description: 'libvlc C++ bindings',
 )



View it on GitLab: https://code.videolan.org/videolan/libvlcpp/-/compare/33214afee13df36dc46309ef5416d681b56db5b9...adc596337d47f3c794ea709f6237fb88b3a20500

-- 
View it on GitLab: https://code.videolan.org/videolan/libvlcpp/-/compare/33214afee13df36dc46309ef5416d681b56db5b9...adc596337d47f3c794ea709f6237fb88b3a20500
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list