medialibrary issueshttps://code.videolan.org/videolan/medialibrary/-/issues2024-02-13T11:01:15Zhttps://code.videolan.org/videolan/medialibrary/-/issues/4810.13 needs a transitive database model2024-02-13T11:01:15ZAlaric Senat0.13 needs a transitive database modelIt has gone unnoticed that the `3.5.x` version of VLC Android uses the `0.13.0-rc.2` tag. Without any db model bump since this tag, the DB migration will be skipped between VLC Android `3.5.6` (which uses `0.13.0-rc.2`) and VLC Android `...It has gone unnoticed that the `3.5.x` version of VLC Android uses the `0.13.0-rc.2` tag. Without any db model bump since this tag, the DB migration will be skipped between VLC Android `3.5.6` (which uses `0.13.0-rc.2`) and VLC Android `4.0` (which will use the stable `0.13.0`).
This is problematic since the model changed since `0.13.0-rc.2`. The model needs to be bumped and the changes since the last tag needs to be reverted and ported to the new model version.0.13.0Alaric SenatAlaric Senathttps://code.videolan.org/videolan/medialibrary/-/issues/480Searching a partition also indexes files from recycle bin2024-01-16T11:52:24ZPrince GuptaSearching a partition also indexes files from recycle binos: win 11
![image](/uploads/22347abe027c0ff4a266925942011318/image.png)os: win 11
![image](/uploads/22347abe027c0ff4a266925942011318/image.png)https://code.videolan.org/videolan/medialibrary/-/issues/479Expose external cdg subtitles of mp3 files2023-12-17T13:54:51ZFelix Paul Kühnefkuehne@videolan.orgExpose external cdg subtitles of mp3 filesWhile regularly, VLC does not support subtitles for audio files without a video track (also seldom requested feature..), there is an important exception and that is .cdg+.mp3 file combinations for karaoke playback. At present, medialibra...While regularly, VLC does not support subtitles for audio files without a video track (also seldom requested feature..), there is an important exception and that is .cdg+.mp3 file combinations for karaoke playback. At present, medialibrary does only expose the mp3 file without acknowledging the .cdg file next to it, so the client application will not show the video player but just an audio playback UI. As a result, the karaoke appearance cannot work.
Sample files available!https://code.videolan.org/videolan/medialibrary/-/issues/478Media: allow storing the last playback speed2023-09-06T17:29:36ZFelix Paul Kühnefkuehne@videolan.orgMedia: allow storing the last playback speedWhen storing and recovering the last playback state, it would be nice to also have the option to recover the last used playback speed. So far, the data model lacks the needed property.When storing and recovering the last playback state, it would be nice to also have the option to recover the last used playback speed. So far, the data model lacks the needed property.https://code.videolan.org/videolan/medialibrary/-/issues/477IMediaLibrary::searchPlaylists should have a PlaylistType parametter2023-10-24T09:48:20ZPierre LamotIMediaLibrary::searchPlaylists should have a PlaylistType parametterFiltering a on Video or Audio only view yields unrelated results without thisFiltering a on Video or Audio only view yields unrelated results without thishttps://code.videolan.org/videolan/medialibrary/-/issues/476Allow clearing a specific type of media in the history2023-12-20T13:30:56ZAlaric SenatAllow clearing a specific type of media in the historyVLC desktop will require clearing certains kind of media in the history. Since we expose:
- History of internal media
- History of streams
It would make sense to allow:
- Clearing internal media from the history
- Clearing streams from ...VLC desktop will require clearing certains kind of media in the history. Since we expose:
- History of internal media
- History of streams
It would make sense to allow:
- Clearing internal media from the history
- Clearing streams from the history
- Clearing all the history0.13.0Alaric SenatAlaric Senathttps://code.videolan.org/videolan/medialibrary/-/issues/470Album can be 0 on some artists if requesting all2023-12-20T14:33:14ZNicolas PomepuyAlbum can be 0 on some artists if requesting allWhen using `IMediaLibrary::artists()` with all set to true, all the artists are returned. However, calling `artistPtr->nbAlbums()` will return 0 on some of these artists.
See https://code.videolan.org/videolan/vlc-android/-/issues/2910When using `IMediaLibrary::artists()` with all set to true, all the artists are returned. However, calling `artistPtr->nbAlbums()` will return 0 on some of these artists.
See https://code.videolan.org/videolan/vlc-android/-/issues/29100.14.0https://code.videolan.org/videolan/medialibrary/-/issues/469medialibrary: VLC crashes when it fails to change the presence of a device2023-12-20T13:30:54ZLeon Vitanosmedialibrary: VLC crashes when it fails to change the presence of a deviceI am on dualboot (Windows/Ubuntu). After formatting Windows (where some of it's folders where included in the medialibrary on vlc on Ubuntu), i was getting this error:
`vlc: ../src/Device.cpp:95: void medialibrary::Device::setPresent(bo...I am on dualboot (Windows/Ubuntu). After formatting Windows (where some of it's folders where included in the medialibrary on vlc on Ubuntu), i was getting this error:
`vlc: ../src/Device.cpp:95: void medialibrary::Device::setPresent(bool): Assertion !"Can't change the presence of a non-removable device" failed.`
Only way to fix it was by deleting the mllibrary from the .local/shared/vlc folder
@chub @asenat
Attatched is the [ml.db](/uploads/b4f118c1e2736081eeaa278f75f5b4b6/ml.db) that was problematichttps://code.videolan.org/videolan/medialibrary/-/issues/468New API: delete all video thumbnails2023-12-20T14:33:53ZNicolas PomepuyNew API: delete all video thumbnailsWould be useful for https://code.videolan.org/videolan/vlc-android/-/issues/2720Would be useful for https://code.videolan.org/videolan/vlc-android/-/issues/27200.14.0https://code.videolan.org/videolan/medialibrary/-/issues/467API wording inconsistency2024-02-13T11:01:15ZNicolas PomepuyAPI wording inconsistencyOn the api cache methods, the wording differs on the cache(d) word.
See:
- https://code.videolan.org/videolan/medialibrary/-/blob/master/include/medialibrary/IMediaLibrary.h#L1159
- https://code.videolan.org/videolan/medialibrary/-/blob...On the api cache methods, the wording differs on the cache(d) word.
See:
- https://code.videolan.org/videolan/medialibrary/-/blob/master/include/medialibrary/IMediaLibrary.h#L1159
- https://code.videolan.org/videolan/medialibrary/-/blob/master/include/medialibrary/ISubscription.h#L88
It should be all renamed to cache (without"d")0.13.0Alaric SenatAlaric Senathttps://code.videolan.org/videolan/medialibrary/-/issues/466Calling pause for the discovery should cancel the current folder discover2023-01-24T12:42:54ZNicolas PomepuyCalling pause for the discovery should cancel the current folder discoverWhen the medialibrary is discovering, parsing a folder (especially a large folder on a slow SMB share) can take some time.
As the media parsing is locking further calls to it, it locks VLC Android's app browsing if the user is trying t...When the medialibrary is discovering, parsing a folder (especially a large folder on a slow SMB share) can take some time.
As the media parsing is locking further calls to it, it locks VLC Android's app browsing if the user is trying to browse a local folder while the ML is stuck on a large folder.
The solution would be to pause the discover when the user starts browsing but we have to make sure that the current operation done by the Ml is canceled at this time to let the app be able to start browsing.https://code.videolan.org/videolan/medialibrary/-/issues/465Expose caching of single Media2023-12-20T14:19:44ZAlaric SenatExpose caching of single MediaSome users will naturally want to select which media goes into the cache manually.
This is quite important for roaming devices.Some users will naturally want to select which media goes into the cache manually.
This is quite important for roaming devices.0.14.0Alaric SenatAlaric Senathttps://code.videolan.org/videolan/medialibrary/-/issues/464Add a global search method for Media in Subcriptions2023-03-13T12:39:53ZAlaric SenatAdd a global search method for Media in SubcriptionsAs there is now a way to list all `Media` linked to `Subcription`s. We need a proper way to text search too.
```cpp
virtual Query<IMedia> searchSubscriptionMedia( const std::string&, const QueryParameters* ) const = 0;
```As there is now a way to list all `Media` linked to `Subcription`s. We need a proper way to text search too.
```cpp
virtual Query<IMedia> searchSubscriptionMedia( const std::string&, const QueryParameters* ) const = 0;
```0.13.0Alaric SenatAlaric Senathttps://code.videolan.org/videolan/medialibrary/-/issues/463support multiple genres from mp3 tag2023-12-20T14:41:45Zczosnkowy666support multiple genres from mp3 tag<!---
/!\ Read this first!/!\
This default template purpose is to be used to report a bug you found in VLC for Android.
To use a different template, follow the instructions here: https://code.videolan.org/videolan/vlc-android/-/wiki...<!---
/!\ Read this first!/!\
This default template purpose is to be used to report a bug you found in VLC for Android.
To use a different template, follow the instructions here: https://code.videolan.org/videolan/vlc-android/-/wikis/Create-an-issue-and-use-a-template
If you want to ask for a new feature, please use the "VLC for Android - Feature Request.md" template above.
If you're a libvlc java developer, please use the "libvlc - Bug" template.
If you just want to ask questions on how to use VLC for Android, please use our forum at https://forum.videolan.org/viewforum.php?f=35
Please note that any ticket not using a template may be closed without notice as it won't provide the necessary information.
-->
VLC Android doesn't recognize multiple genres set in mo3 genre tag
<!--- Provide a general summary of the issue in the Title above -->
## Description
Song tagged with plutiple genres in mo3 tag with separator null (\x00) is only listed on first genre insted of each of them. It looks like null is treated as terminator of tag insted of separator of values
For example song with values in genre tags `rock\x00indie\x00alternative\x00` is only visible on Rock genre in VLC Android
<!--- Describe your bug in detail -->
#### Expected behavior
I would expect to see song with multiple genres set in this mp3 tag to be listed under each of genres
For example song with values in genre tags `rock\x00indie\x00alternative\x00` should be visible on Rock, Indie and Alternative genres in VLC Android
#### Actual behavior
For example song with values in genre tags `rock\x00indie\x00alternative\x00` is only visible on Rock genre in VLC Android
#### Steps to reproduce
1. Set multiple genres in mp3
2. Upload song to phone
3. Scan audio library in VLC Android
4. Go to Audio > Genres
5. Song is listed under only first genre
#### Screenshot / video
## Context
#### App version
3.5.5
#### Android version
11
#### Device model
#### App mode
**Smartphone**https://code.videolan.org/videolan/medialibrary/-/issues/462Can't build.2022-12-02T13:59:43ZjohnCan't build.This is what happened when I tried to build:
```
The Meson build system
Version: 0.49.2
Source dir: ~/src/medialibrary
Build dir: ~/src/medialibrary/build
Build type: native build
meson_options.txt:6:0: ERROR: Arguments may only be str...This is what happened when I tried to build:
```
The Meson build system
Version: 0.49.2
Source dir: ~/src/medialibrary
Build dir: ~/src/medialibrary/build
Build type: native build
meson_options.txt:6:0: ERROR: Arguments may only be string, int, bool, or array of those.
A full log can be found at ~/src/medialibrary/build/meson-logs/meson-log.txt
```
I have no idea why. I looked at meson_options.txt, but it looks like some custom programming language that I'm not going to try and figure out. I don't plan on ever adopting Meson for any of my projects. None of the options make any sense to me.
I was attempting to follow the build instructions for VLMC, which claimed that medialibrary would have a script called 'bootstrap'.
The meson-log.txt contains the same text as above, except without the line about where to find the full log.https://code.videolan.org/videolan/medialibrary/-/issues/461Missing search methods in Subscription and Service2023-03-13T12:39:49ZNicolas PomepuyMissing search methods in Subscription and ServiceThe same way as for [Album](https://code.videolan.org/videolan/medialibrary/-/blob/master/include/medialibrary/IAlbum.h#L102), we need a search API as it:
1. IService
```cpp
virtual Query<ISubscription> searchSubscription( const std::st...The same way as for [Album](https://code.videolan.org/videolan/medialibrary/-/blob/master/include/medialibrary/IAlbum.h#L102), we need a search API as it:
1. IService
```cpp
virtual Query<ISubscription> searchSubscription( const std::string& pattern, const QueryParameters* params = nullptr )
virtual Query<IMedia> searchMedia( const std::string& pattern, const QueryParameters* params = nullptr )
```
2. ISubscription
```cpp
virtual Query<IMedia> searchMedia( const std::string& pattern, const QueryParameters* params = nullptr )
```0.13.0Alaric SenatAlaric Senathttps://code.videolan.org/videolan/medialibrary/-/issues/460Cascade Media deletion on Subscription removal2023-12-20T14:16:26ZAlaric SenatCascade Media deletion on Subscription removalCurrently, a call on `MediaLibrary::RemoveSubscription()` does not remove media linked to the deleted Subscription.
Media should probably be removed if the media isn't linked to any other element after the removal.Currently, a call on `MediaLibrary::RemoveSubscription()` does not remove media linked to the deleted Subscription.
Media should probably be removed if the media isn't linked to any other element after the removal.0.14.0Alaric SenatAlaric Senathttps://code.videolan.org/videolan/medialibrary/-/issues/459Signal invalid subscriptions via the API2023-12-20T14:17:02ZAlaric SenatSignal invalid subscriptions via the APICurrently invalid subscriptions fails silently and a parsing `Task` is kept in the database without any Subscription attached to it. There's no simple way for the ML user to know if a subscription parsing `Task` has failed.
One soluti...Currently invalid subscriptions fails silently and a parsing `Task` is kept in the database without any Subscription attached to it. There's no simple way for the ML user to know if a subscription parsing `Task` has failed.
One solution for that might be to:
- Create a specific callback for failed subscription update **and** creation.
- Either delete `Tasks` when creation failed and try count is at `0` or provide the user a way to clear the task.
One other way could be to create a `Subscription` in any cases and add a field `Status` that reflects parse or refresh failures to the ML user. The ML user can then decide to remove the Subscription via the API which would lead to the `Task` removal.0.14.0Alaric SenatAlaric Senathttps://code.videolan.org/videolan/medialibrary/-/issues/458Subscriptions have no image2023-03-13T12:39:50ZNicolas PomepuySubscriptions have no imagePodcast RSS provide images for the subscriptions. The medialibrary should store and expose this to the client in an URL form.Podcast RSS provide images for the subscriptions. The medialibrary should store and expose this to the client in an URL form.0.13.0https://code.videolan.org/videolan/medialibrary/-/issues/457Allow to access the subscriptions linked to media2023-03-13T12:39:49ZAlaric SenatAllow to access the subscriptions linked to mediaAs it is currently possible with other containers:
```cpp
virtual ArtistPtr artist() const = 0;
virtual GenrePtr genre() const = 0;
virtual AlbumPtr album() const = 0;
```
We'd want to introduce a new `Media::subscription()` accessor.As it is currently possible with other containers:
```cpp
virtual ArtistPtr artist() const = 0;
virtual GenrePtr genre() const = 0;
virtual AlbumPtr album() const = 0;
```
We'd want to introduce a new `Media::subscription()` accessor.0.13.0Alaric SenatAlaric Senat