medialibrary issueshttps://code.videolan.org/videolan/medialibrary/-/issues2024-01-16T11:52:24Zhttps://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/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/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/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/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/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/446Sorting artist that start with The2022-08-29T05:40:36Zjawz86Sorting artist that start with The<!--- Provide a general summary of the request in the Title above -->
## Description
<!--- Describe your request in detail --> When sorting the artists by name, artists which has 'The' (e.g The bloodhound gang) in it's name are added t...<!--- Provide a general summary of the request in the Title above -->
## Description
<!--- Describe your request in detail --> When sorting the artists by name, artists which has 'The' (e.g The bloodhound gang) in it's name are added to the 'T'
#### Expected behavior
For the artist to be sorted in the letter after 'The' so The bloodhound gang to be in B instead of T
#### Screenshot / video
<!--Add a screenshot or screencast when applicable-->![Screenshot_20220822-205835_VLC](/uploads/908de1396fd4279fff4d2b0d571a37e2/Screenshot_20220822-205835_VLC.jpg)
<!--To take a screenshot, see https://support.google.com/android/answer/9075928?hl=en-->
#### App mode
<!--Remove the useless modes-->
**Smartphone**
**Auto**https://code.videolan.org/videolan/medialibrary/-/issues/445Benchmark is_public accesses2022-09-28T11:53:13ZHugo Beauzée-LuyssenBenchmark is_public accessesThe `is_public` field isn't indexed in the Folder nor Media tables, while they are heavily relied on when querying public entities.
It's probably worth benchmarking and most likely adding an index for those columnsThe `is_public` field isn't indexed in the Folder nor Media tables, while they are heavily relied on when querying public entities.
It's probably worth benchmarking and most likely adding an index for those columnsAlaric SenatAlaric Senathttps://code.videolan.org/videolan/medialibrary/-/issues/441[Feature Request] Add support for the rating metadata2022-06-13T11:57:03ZNicolas Pomepuy[Feature Request] Add support for the rating metadataIt was asked on IRC. It would be great if the medialibrary could add a field for the user rating and allow sorting tracks with that.It was asked on IRC. It would be great if the medialibrary could add a field for the user rating and allow sorting tracks with that.https://code.videolan.org/videolan/medialibrary/-/issues/440Add support for .opml playlists2023-05-19T07:57:53ZMehdi SabwatAdd support for .opml playlistsTo add in https://code.videolan.org/videolan/medialibrary/-/blob/master/src/MediaLibrary.cpp#L261
https://code.videolan.org/videolan/vlc/-/issues/27044To add in https://code.videolan.org/videolan/medialibrary/-/blob/master/src/MediaLibrary.cpp#L261
https://code.videolan.org/videolan/vlc/-/issues/27044https://code.videolan.org/videolan/medialibrary/-/issues/437Specifically crafted .mp4 file named .vlc is not recognized by the media library2022-05-13T06:24:20ZFelix Paul Kühnefkuehne@videolan.orgSpecifically crafted .mp4 file named .vlc is not recognized by the media libraryVLC-iOS downloads media with no file extension as .vlc and saves them in the designated Documents folder indexed by medialibrary. When doing so with .mp4 media that is not a playlist, the medialibrary will silently ignore the file and no...VLC-iOS downloads media with no file extension as .vlc and saves them in the designated Documents folder indexed by medialibrary. When doing so with .mp4 media that is not a playlist, the medialibrary will silently ignore the file and not index it.
Sample file shared privately.Hugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/436Allow bookmarks to be saved and restored2022-05-04T06:18:33ZHugo Beauzée-LuyssenAllow bookmarks to be saved and restoredSome users want to save their bookmark for safe keeping, so we should add a way to save/restore those.Some users want to save their bookmark for safe keeping, so we should add a way to save/restore those.https://code.videolan.org/videolan/medialibrary/-/issues/433Sigabrt at startup when changing the presence of a non-removable device2022-04-11T14:40:59ZDevin HeitmuellerSigabrt at startup when changing the presence of a non-removable deviceI downloaded the VLC nightly today for MacOS, and I'm getting an Assertion in medialibrary whenever trying to start VLC.
It would appear that it's trying to change the state of a non-removable device object, which points to a file that ...I downloaded the VLC nightly today for MacOS, and I'm getting an Assertion in medialibrary whenever trying to start VLC.
It would appear that it's trying to change the state of a non-removable device object, which points to a file that is no longer present.
```
(lldb) print device
warning: `this' is not accessible (substituting 0)
(medialibrary::Device) $0 = {
m_ml = 0x00000001005484b0
m_id = 1
m_uuid = "4756020D-8841-44C4-AD9B-23CAD2305F6D"
m_scheme = "file://"
m_isRemovable = false
m_isPresent = true
m_isNetwork = false
}
```
The nightly build appears to be including tag medialibrary-0.11.1.
Here's the thread dump:
```
'/Users/dheitmueller/vlc-osx/build/bin/vlc-osx-static' (x86_64)
VLC media player 4.0.0-dev Otto Chriek (revision 4333661cdf)
2022-04-01 11:56:51.606244-0400 vlc-osx-static[43873:16208704] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x10054a980> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2022-04-01 11:56:51.653473-0400 vlc-osx-static[43873:16208704] HALC_ShellDriverPlugIn::Open: Can't get a pointer to the Open routine
[000000010041f990] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
Assertion failed: (!"Can't change the presence of a non-removable device"), function setPresent, file ../src/Device.cpp, line 95.
Process 43873 stopped
* thread #13, queue = 'com.apple.root.user-interactive-qos', stop reason = signal SIGABRT
frame #0: 0x00007fff725c433a libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill:
-> 0x7fff725c433a <+10>: jae 0x7fff725c4344 ; <+20>
0x7fff725c433c <+12>: movq %rax, %rdi
0x7fff725c433f <+15>: jmp 0x7fff725be629 ; cerror_nocancel
0x7fff725c4344 <+20>: retq
Target 0: (vlc-osx-static) stopped.
(lldb) bt
* thread #13, queue = 'com.apple.root.user-interactive-qos', stop reason = signal SIGABRT
* frame #0: 0x00007fff725c433a libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x00007fff72680e60 libsystem_pthread.dylib`pthread_kill + 430
frame #2: 0x00007fff7254b808 libsystem_c.dylib`abort + 120
frame #3: 0x00007fff7254aac6 libsystem_c.dylib`__assert_rtn + 314
frame #4: 0x00000001095d9191 libmedialibrary_plugin.dylib`medialibrary::Device::setPresent(bool) (.cold.1) + 33
frame #5: 0x0000000109311b21 libmedialibrary_plugin.dylib`medialibrary::Device::setPresent(this=0x0000000000000000, value=<unavailable>) at Device.cpp:95:9 [opt]
frame #6: 0x00000001093fefdc libmedialibrary_plugin.dylib`medialibrary::FsHolder::refreshDevice(this=<unavailable>, device=0x000000010395dc98, fsFactory=<unavailable>) at FsHolder.cpp:254:16 [opt]
frame #7: 0x00000001093ff266 libmedialibrary_plugin.dylib`medialibrary::FsHolder::startFsFactoriesAndRefresh(this=0x00000001005485c0) at FsHolder.cpp:200:9 [opt]
frame #8: 0x000000010941b158 libmedialibrary_plugin.dylib`medialibrary::parser::Parser::start(this=0x00000001005486c0) at Parser.cpp:86:17 [opt]
frame #9: 0x0000000109377759 libmedialibrary_plugin.dylib`medialibrary::MediaLibrary::initialize(this=0x00000001005484b0, mlCallback=<unavailable>) at MediaLibrary.cpp:735:17 [opt]
frame #10: 0x0000000109294146 libmedialibrary_plugin.dylib`MediaLibrary::Init(this=0x0000000100548410) at medialibrary.cpp:444:29
frame #11: 0x00000001092982ba libmedialibrary_plugin.dylib`MediaLibrary::List(this=0x0000000100548410, listQuery=1, params=0x000000010f1a5d50, args=0x0000700004908e40) at medialibrary.cpp:728:10
frame #12: 0x00000001092a8e47 libmedialibrary_plugin.dylib`List(module=0x0000000100547ef0, query=1, params=0x000000010f1a5d50, args=0x0000700004908e40) at medialibrary.cpp:2080:16
frame #13: 0x00000001002444a4 libvlccore.dylib`vlc_ml_list(p_ml=0x0000000100547ef0, i_query=1, p_params=0x000000010f1a5d50) at medialibrary.c:436:17
frame #14: 0x000000010f02cba8 libmacosx_plugin.dylib`vlc_ml_count_video_media(p_ml=0x0000000100547ef0, params=0x000000010f1a5d50) at vlc_media_library.h:1435:10
frame #15: 0x000000010f02cb4e libmacosx_plugin.dylib`__35-[VLCLibraryModel initWithLibrary:]_block_invoke(.block_descriptor=0x0000000100462c20) at VLCLibraryModel.m:114:40
frame #16: 0x00007fff724226c4 libdispatch.dylib`_dispatch_call_block_and_release + 12
frame #17: 0x00007fff72423658 libdispatch.dylib`_dispatch_client_callout + 8
frame #18: 0x00007fff72431aa8 libdispatch.dylib`_dispatch_root_queue_drain + 663
frame #19: 0x00007fff72432097 libdispatch.dylib`_dispatch_worker_thread2 + 92
frame #20: 0x00007fff7267d9f7 libsystem_pthread.dylib`_pthread_wqthread + 220
frame #21: 0x00007fff7267cb77 libsystem_pthread.dylib`start_wqthread + 15
```
I'm happy to provide more info if needed; I don't really have much familiarity with medialibrary and thus am not really in a great position to debug this myself.https://code.videolan.org/videolan/medialibrary/-/issues/430Overly large binary size2022-03-28T08:36:05ZHugo Beauzée-LuyssenOverly large binary sizeThe resulting binary seems much larger than it needs to be, mostly due to variadic templates AFAICS.
```
FILE SIZE VM SIZE
-------------- --------------
65.1% 2.37Mi 63.3% 1.99Mi [2029 Others]
4.7% 174Ki ...The resulting binary seems much larger than it needs to be, mostly due to variadic templates AFAICS.
```
FILE SIZE VM SIZE
-------------- --------------
65.1% 2.37Mi 63.3% 1.99Mi [2029 Others]
4.7% 174Ki 5.4% 173Ki medialibrary::sqlite::errors::mapToException()
3.8% 143Ki 4.4% 143Ki [section .gcc_except_table]
3.3% 121Ki 3.4% 110Ki medialibrary::sqlite::Tools::fetchAll<>()
2.7% 100Ki 3.0% 95.6Ki medialibrary::SqliteQuery<>::all()
2.4% 88.5Ki 2.6% 83.0Ki medialibrary::SqliteQuery<>::items()
1.9% 72.0Ki 2.1% 66.6Ki medialibrary::SqliteQuery<>::count()
1.9% 70.0Ki 2.0% 63.8Ki medialibrary::Log::createMsg<>()
1.5% 56.8Ki 1.5% 48.7Ki std::vector<>::_M_realloc_insert<>()
1.5% 55.4Ki 1.6% 51.8Ki medialibrary::sqlite::Tools::executeInsert<>()
1.4% 54.0Ki 1.3% 43.2Ki medialibrary::make_query<>()
1.4% 51.8Ki 1.1% 36.0Ki medialibrary::SqliteQuery<>::~SqliteQuery()
1.3% 49.3Ki 1.0% 33.6Ki medialibrary::SqliteQuery<>
1.0% 38.0Ki 0.8% 24.6Ki medialibrary::SqliteQueryBase<>
1.0% 36.6Ki 1.0% 33.7Ki medialibrary::SqliteQueryBase<>::executeCount()
1.0% 35.6Ki 1.0% 32.9Ki medialibrary::sqlite::Tools::executeDelete<>()
0.9% 35.2Ki 1.0% 32.5Ki medialibrary::sqlite::Tools::fetchOne<>()
0.9% 34.5Ki 1.1% 34.4Ki _GLOBAL__sub_I_Logger.cpp
0.9% 32.0Ki 1.0% 31.9Ki _ZN12medialibrary10MediaGroup7triggerB5cxx11ENS0_8TriggersEj
0.7% 27.4Ki 0.6% 18.3Ki std::_Sp_counted_ptr_inplace<>
0.6% 22.8Ki 0.7% 22.8Ki [section .plt]
100.0% 3.64Mi 100.0% 3.14Mi TOTAL
```
One easy lead would be to refactor the logging functions to be used like std::ostream, a quick test disabling logging entirely shows a ≃500KB reduction in the binary size (≃15%)
Removing variadic templates for sqlite interactions would cause a major rewrite of the sqlite wrappers though I'm afraid :/https://code.videolan.org/videolan/medialibrary/-/issues/426Feature: Expose supportedMediaExtensions for audio2022-07-26T12:34:02ZFelix Paul Kühnefkuehne@videolan.orgFeature: Expose supportedMediaExtensions for audioAt present, the list of all supported media extensions can be requested and there is a check for subtitles extensions. However, there is no way to fetch the audio specific extensions, which would be nice to remove the duplicated work fro...At present, the list of all supported media extensions can be requested and there is a check for subtitles extensions. However, there is no way to fetch the audio specific extensions, which would be nice to remove the duplicated work from videolan/vlc-ios.https://code.videolan.org/videolan/medialibrary/-/issues/427Feature Request: Sort feature to skip articles in alphabetical sort orders2022-03-21T13:02:13ZjimmodoFeature Request: Sort feature to skip articles in alphabetical sort ordersCurrently when viewing a list of media files, the file shows up in a different sort order than the media file would show up in the Movies, Music or TV apps in iOS and TVOS. Most media apps skip the article at the beginning of the title (...Currently when viewing a list of media files, the file shows up in a different sort order than the media file would show up in the Movies, Music or TV apps in iOS and TVOS. Most media apps skip the article at the beginning of the title (Skip articles in titles beginning with A, An, The). An example would be the movie _The_Chronicles_of_Riddick_ appearing alphabetically under T in VLC, yet the movie is under C in the AppleTV app. Having an option for modifying the sort order would be helpful.
I am unaware if this is popular in other languages other than English to sort items such as movies this way, however ideally this could be an option within the localization settings for each supported language to define the languages articles where skipping these words for sorting purposes is applicable.
I would recommend the UI default is disabled, so that users are not caught off guard when migrating to a new version (if this feature is added) and seeing their files and folders sorted differently unless usability tests or beta feedback shows otherwise.
You can refer to the following wikipedia entry for more information on articles: https://en.wikipedia.org/wiki/Article_(grammar)