[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 @@
[](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