medialibrary issueshttps://code.videolan.org/videolan/medialibrary/-/issues2021-11-17T14:07:00Zhttps://code.videolan.org/videolan/medialibrary/-/issues/254Please add old school *.S3M, *.XM, *.FAR, *.669, *.MTM, & *.IT music file for...2021-11-17T14:07:00ZAnt DudePlease add old school *.S3M, *.XM, *.FAR, *.669, *.MTM, & *.IT music file formats to VLC's iOS app.Old school *.S3M, *.XM, *.FAR, *.669, *.MTM, & *.IT music file formats don't play in VLC's iOS app. *.MOD work. Windows' VLC port had no problems with all of those formats. I'm trying to play them in my old iPhone 6+ (iOS v12.4.7). You c...Old school *.S3M, *.XM, *.FAR, *.669, *.MTM, & *.IT music file formats don't play in VLC's iOS app. *.MOD work. Windows' VLC port had no problems with all of those formats. I'm trying to play them in my old iPhone 6+ (iOS v12.4.7). You can get my favorites from my old school http://zimage.com/~ant/antfarm/files/music/music.html web page.
Thank you for reading and hopefully adding them. :)
Note: Felix paul kuehne told me to make this issue from my http://forum.videolan.org/viewtopic.php?f=36&t=153618 thread.0.10.1Mehdi SabwatMehdi Sabwathttps://code.videolan.org/videolan/medialibrary/-/issues/387Emit modification callbacks when modifying an entity thumbnail2021-11-16T20:05:19ZHugo Beauzée-LuyssenEmit modification callbacks when modifying an entity thumbnailSince modification callbacks are based on SQLite hooks, we don't emit those when a thumbnail gets modified, which is counter intuitive for medialib users.
We could emit those callbacks manually.Since modification callbacks are based on SQLite hooks, we don't emit those when a thumbnail gets modified, which is counter intuitive for medialib users.
We could emit those callbacks manually.0.11.xMehdi SabwatMehdi Sabwathttps://code.videolan.org/videolan/medialibrary/-/issues/391Remove now unused IAlbumTrack.h header2021-11-16T13:56:33ZHugo Beauzée-LuyssenRemove now unused IAlbumTrack.h headerFollowing #379 we do not have any usage of the `IAlbumTrack` interface, but we still expose the associated header (and the `AlbumTrackPtr` helper type)
Those are now useless and need to be removedFollowing #379 we do not have any usage of the `IAlbumTrack` interface, but we still expose the associated header (and the `AlbumTrackPtr` helper type)
Those are now useless and need to be removed0.11.xMehdi SabwatMehdi Sabwathttps://code.videolan.org/videolan/medialibrary/-/issues/390RTSP stream with question mark fails on VLC Mobile2021-11-15T16:46:13ZMark BiesmaRTSP stream with question mark fails on VLC MobileUsing the following RTSP stream on a Windows computer with VLC v3.0.14 works fine:
`rtsp://admin:password@192.168.1.112:554/cam/realmonitor?channel=1&subtype=0`
But when using the same RTSP stream on VLC Mobile (VLC for iOS v3.2.13) it...Using the following RTSP stream on a Windows computer with VLC v3.0.14 works fine:
`rtsp://admin:password@192.168.1.112:554/cam/realmonitor?channel=1&subtype=0`
But when using the same RTSP stream on VLC Mobile (VLC for iOS v3.2.13) it fails to start the stream.
I think it has something to do with the question mark in the RTSP stream URL.Felix Paul Kühnefkuehne@videolan.orgFelix Paul Kühnefkuehne@videolan.orghttps://code.videolan.org/videolan/medialibrary/-/issues/379Merge AlbumTrack and Media2021-11-15T14:43:47ZHugo Beauzée-LuyssenMerge AlbumTrack and MediaIn order to solve #372 we'll need to merge the AlbumTrack & Media tables.
This means:
- [ ] Adding the artist_id, genre_id, track_number, album_id, disc_number fields to the media table
- [ ] Triple checking uses of media.duration, sinc...In order to solve #372 we'll need to merge the AlbumTrack & Media tables.
This means:
- [ ] Adding the artist_id, genre_id, track_number, album_id, disc_number fields to the media table
- [ ] Triple checking uses of media.duration, since the album track field was guaranteed to be >= 0 while the media one is not
- [ ] Dropping the AlbumTrack class0.11.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/377iOS beta crash: std::__1::lock_guard<std::__1::mutex>::lock_guard(std::__1::m...2021-11-09T15:36:34ZSoomin LeeiOS beta crash: std::__1::lock_guard<std::__1::mutex>::lock_guard(std::__1::mutex&)An archive has been added with all the differents logs with the same/similar stack.
```Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001b79516cc __psynch_mutexwait + 8
1 libsystem_pthread.dylib 0x00...An archive has been added with all the differents logs with the same/similar stack.
```Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001b79516cc __psynch_mutexwait + 8
1 libsystem_pthread.dylib 0x00000001f0ecf3cc _pthread_mutex_firstfit_lock_wait + 84 (pthread_mutex.c:1414)
2 libsystem_pthread.dylib 0x00000001f0ed650c _pthread_mutex_firstfit_lock_slow + 240 (pthread_mutex.c:1490)
3 libc++.1.dylib 0x0000000199d11ca4 std::__1::mutex::lock() + 16 (__threading_support:406)
[Logs.zip](/uploads/f427a6b48ceb8dd60e6076d3f35db9e0/Logs.zip)
5 VLCMediaLibraryKit 0x0000000101a79db4 std::__1::lock_guard<std::__1::mutex>::lock_guard(std::__1::mutex&) + 8 (__mutex_base:91)
6 VLCMediaLibraryKit 0x0000000101a79db4 medialibrary::FsHolder::fsFactoryForMrl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const + 44 (FsHolder.cpp:216)
7 VLCMediaLibraryKit 0x00000001019a68c8 medialibrary::Folder::mrl() const + 124 (Folder.cpp:767)
8 VLCMediaLibraryKit 0x0000000101993cbc medialibrary::File::mrl() const + 112 (File.cpp:120)
9 VLCMediaLibraryKit 0x000000010195a0c4 -[VLCMLFile mrl] + 68 (VLCMLFile.m:44)
10 VLC for iOS 0x000000010040cd9c 0x1003d8000 + 216476
11 VLC for iOS 0x00000001004b1e44 MediaCategoryViewController.play(media:at:) + 2164 (MediaCategoryViewController.swift:1167)
12 VLC for iOS 0x00000001004b11ec MediaCategoryViewController.selectedItem(at:) + 668 (MediaCategoryViewController.swift:816)
13 VLC for iOS 0x00000001004b3e04 MediaCategoryViewController.mediaCollectionViewCellMediaTapped(in:) + 308 (MediaCategoryViewController.swift:1191)
14 VLC for iOS 0x0000000100495160 MediaCollectionViewCell.mediaTapped() + 16 (MediaCollectionViewCell.swift:126)
15 VLC for iOS 0x0000000100495160 @objc MediaCollectionViewCell.mediaTapped() + 96 (<compiler-generated>:125)
16 UIKitCore 0x00000001835f3460 -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 56 (UIGestureRecognizer.m:136)
17 UIKitCore 0x00000001835bc5b4 _UIGestureRecognizerSendTargetActions + 116 (UIGestureRecognizer.m:1481)
18 UIKitCore 0x00000001835852b4 _UIGestureRecognizerSendActions + 284 (UIGestureRecognizer.m:1520)
19 UIKitCore 0x00000001835be964 -[UIGestureRecognizer _updateGestureForActiveEvents] + 636 (UIGestureRecognizer.m:0)
20 UIKitCore 0x0000000183576b24 _UIGestureEnvironmentUpdate + 1988 (UIGestureEnvironment.m:206)
21 UIKitCore 0x00000001835aa91c -[UIGestureEnvironment _updateForEvent:window:] + 784 (UIGestureEnvironment.m:1332)
22 UIKitCore 0x00000001835b7abc -[UIWindow sendEvent:] + 4428 (UIWindow.m:3265)
23 UIKitCore 0x00000001837673f4 -[UIApplication sendEvent:] + 828 (UIApplication.m:11869)
24 UIKit 0x00000001f112bd2c -[UIApplicationAccessibility sendEvent:] + 100 (UIApplicationAccessibility.m:3115)
25 UIKitCore 0x000000018358ac84 __dispatchPreprocessedEventFromEventQueue + 7904 (UIEventDispatcher.m:2290)
26 UIKitCore 0x000000018357fa70 __processEventQueue + 6760 (UIEventDispatcher.m:2597)
27 UIKitCore 0x0000000183584f1c __eventFetcherSourceCallback + 172 (UIEventDispatcher.m:2669)
28 CoreFoundation 0x0000000181028020 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28 (CFRunLoop.c:1972)
29 CoreFoundation 0x0000000181038ce0 __CFRunLoopDoSource0 + 208 (CFRunLoop.c:2016)
30 CoreFoundation 0x0000000180f72fe8 __CFRunLoopDoSources0 + 268 (CFRunLoop.c:2053)
31 CoreFoundation 0x0000000180f787f4 __CFRunLoopRun + 820 (CFRunLoop.c:2951)
32 CoreFoundation 0x0000000180f8c3b8 CFRunLoopRunSpecific + 600 (CFRunLoop.c:3268)
33 GraphicsServices 0x000000019cfbc38c GSEventRunModal + 164 (GSEvent.c:2200)
34 UIKitCore 0x000000018392cb60 -[UIApplication _run] + 1100 (UIApplication.m:3494)
35 UIKitCore 0x00000001836ab8b8 UIApplicationMain + 2124 (UIApplication.m:5051)
36 VLC for iOS 0x0000000100428500 main + 88 (main.m:20)
37 dyld 0x0000000101441a24 start + 520 (dyldMain.cpp:876)
```
medialibrary hash: 5c74aacc
[Logs.zip](/uploads/b77a1a2e38e5a73ff46afc08535939f9/Logs.zip)0.10.xhttps://code.videolan.org/videolan/medialibrary/-/issues/385Performance issue when ordering Media2021-11-09T15:35:48ZHugo Beauzée-LuyssenPerformance issue when ordering MediaIt seems some Media table indexes are not used when ordering the results, which is likely to cause noticeable slowdowns when fetching large amount of media, such as all the album tracks.
This is likely related to https://forum.videolan....It seems some Media table indexes are not used when ordering the results, which is likely to cause noticeable slowdowns when fetching large amount of media, such as all the album tracks.
This is likely related to https://forum.videolan.org/viewtopic.php?f=35&t=158486&p=522057#p522057
All these orderings are causing a temporary B-tree to be created (`SCAN TABLE Media` then `USE TEMP B-TREE FOR ORDER BY`) instead of a scan table based on index (`SCAN TABLE Media USING INDEX media_***_idx` when using `EXPLAIN QUERY PLAN`):
- [x] duration
- [x] insertion_date
- [x] release_date
- [x] play_count
- [x] filename
- [x] title0.11.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/378iOS beta crash: medialibrary::FsHolder::registerCallback(medialibrary::IFsHol...2021-11-09T15:32:23ZSoomin LeeiOS beta crash: medialibrary::FsHolder::registerCallback(medialibrary::IFsHolderCb*)An archive has been added with all the differents logs with the same/similar stack.
```
Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001b8a696cc __psynch_mutexwait + 8
1 libsystem_pthread.dylib 0x0...An archive has been added with all the differents logs with the same/similar stack.
```
Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001b8a696cc __psynch_mutexwait + 8
1 libsystem_pthread.dylib 0x00000001f1df73cc _pthread_mutex_firstfit_lock_wait + 84 (pthread_mutex.c:1414)
2 libsystem_pthread.dylib 0x00000001f1dfe50c _pthread_mutex_firstfit_lock_slow + 240 (pthread_mutex.c:1490)
3 libc++.1.dylib 0x000000019a328ca4 std::__1::mutex::lock() + 16 (__threading_support:406)
4 VLCMediaLibraryKit 0x0000000101ed1ed8 medialibrary::FsHolder::registerCallback(medialibrary::IFsHolderCb*) + 1236696 (FsHolder.cpp:266)
5 VLCMediaLibraryKit 0x0000000101e4c72c medialibrary::MediaLibrary::startDiscovererLocked() + 689964 (MediaLibrary.cpp:1127)
6 VLCMediaLibraryKit 0x0000000101e4c7b8 medialibrary::MediaLibrary::startDiscoverer() + 690104 (MediaLibrary.cpp:1133)
7 VLCMediaLibraryKit 0x0000000101e6ddf4 medialibrary::MediaLibrary::reload() + 28 (MediaLibrary.cpp:2288)
8 VLC for iOS 0x00000001008e2a40 0x100818000 + 830016 (MediaLibraryService.swift:196)
9 VLC for iOS 0x00000001008e24a4 0x100818000 + 828580 (MediaLibraryService.swift:0)
10 VLC for iOS 0x00000001008e1ef8 0x100818000 + 827128 (MediaLibraryService.swift:162)
11 VLC for iOS 0x00000001008e2520 @objc MediaLibraryService.init() + 20 (<compiler-generated>:0)
12 VLC for iOS 0x0000000100896790 0x100818000 + 518032 (AppCoordinator.swift:17)
13 VLC for iOS 0x0000000100896888 @objc Services.init() + 20 (<compiler-generated>:0)
14 VLC for iOS 0x0000000100897274 0x100818000 + 520820 (AppCoordinator.swift:22)
15 VLC for iOS 0x00000001008969e8 AppCoordinator.init(tabBarController:) + 4 (<compiler-generated>:0)
16 VLC for iOS 0x00000001008969e8 @objc AppCoordinator.init(tabBarController:) + 32
17 VLC for iOS 0x0000000100857bdc __45-[VLCAppDelegate setupApplicationCoordinator]_block_invoke + 56 (VLCAppDelegate.m:97)
18 VLC for iOS 0x0000000100858998 -[VLCAppDelegate validatePasscodeIfNeededWithCompletion:] + 120 (VLCAppDelegate.m:244)
19 VLC for iOS 0x0000000100857b8c -[VLCAppDelegate setupApplicationCoordinator] + 100 (VLCAppDelegate.m:100)
20 VLC for iOS 0x00000001008582a0 -[VLCAppDelegate application:didFinishLaunchingWithOptions:] + 564 (VLCAppDelegate.m:142)
21 UIKitCore 0x0000000183d53120 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 356 (UIApplication.m:2329)
22 UIKitCore 0x0000000183f3aff0 -[UIApplication _callInitializationDelegatesWithActions:forCanvas:payload:fromOriginatingProcess:] + 3524 (UIApplication.m:2741)
23 UIKitCore 0x0000000183f2395c -[UIApplication _runWithMainScene:transitionContext:completion:] + 1208 (UIApplication.m:4475)
24 UIKitCore 0x0000000183d80f20 -[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:] + 152 (_UISceneLifecycleMultiplexer.m:452)
25 UIKitCore 0x0000000183bd9680 _UIScenePerformActionsWithLifecycleActionMask + 104 (_UISceneLifecycleState.m:109)
26 UIKitCore 0x0000000183d04ca4 __101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke + 224 (_UISceneLifecycleMultiplexer.m:565)
27 UIKitCore 0x0000000183e257e8 -[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 248 (_UISceneLifecycleMultiplexer.m:514)
28 UIKitCore 0x00000001840662e4 -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 760 (_UISceneLifecycleMultiplexer.m:564)
29 UIKitCore 0x0000000183ff1b54 -[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] + 340 (_UISceneLifecycleMultiplexer.m:470)
30 UIKitCore 0x0000000183bda484 __186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block... + 196 (_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction.m:73)
31 UIKitCore 0x0000000183c9a3f4 +[BSAnimationSettings(UIKit) tryAnimatingWithSettings:actions:completion:] + 892 (BSAnimationSettings+UIKit.m:50)
32 UIKitCore 0x0000000183bdc394 _UISceneSettingsDiffActionPerformChangesWithTransitionContext + 276 (_UISceneSettingsDiffAction.m:23)
33 UIKitCore 0x0000000183cc6eb8 -[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] + 384 (_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction.m:58)
34 UIKitCore 0x000000018414e5b0 __64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke.608 + 776 (UIScene.m:1807)
35 UIKitCore 0x0000000183c0ac94 -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 256 (UIScene.m:1508)
36 UIKitCore 0x0000000183c4e5d0 -[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 288 (UIScene.m:1774)
37 UIKitCore 0x0000000183d85e4c -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 572 (UIApplication.m:3938)
38 UIKitCore 0x0000000183cc5178 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 388 (UIApplicationSceneClientAgent.m:45)
39 FrontBoardServices 0x00000001936c5e20 -[FBSScene _callOutQueue_agent_didCreateWithTransitionContext:completion:] + 440 (FBSScene.m:439)
40 FrontBoardServices 0x00000001936ebcdc __94-[FBSWorkspaceScenesClient createWithSceneID:groupID:parameters:transitionContext:completion:]_block_invoke.215 + 128 (FBSWorkspaceScenesClient.m:384)
41 FrontBoardServices 0x00000001936a66b4 -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 240 (FBSWorkspace.m:352)
42 FrontBoardServices 0x00000001936a7cf4 __94-[FBSWorkspaceScenesClient createWithSceneID:groupID:parameters:transitionContext:completion:]_block_invoke + 372 (FBSWorkspaceScenesClient.m:383)
43 libdispatch.dylib 0x000000018128f62c _dispatch_client_callout + 20 (object.m:560)
44 libdispatch.dylib 0x00000001812930e4 _dispatch_block_invoke_direct + 264 (queue.c:489)
45 FrontBoardServices 0x00000001936a7f94 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 48 (FBSSerialQueue.m:157)
46 FrontBoardServices 0x00000001936a73d4 -[FBSSerialQueue _targetQueue_performNextIfPossible] + 220 (FBSSerialQueue.m:181)
47 FrontBoardServices 0x00000001936ab9e4 -[FBSSerialQueue _performNextFromRunLoopSource] + 28 (FBSSerialQueue.m:194)
48 CoreFoundation 0x000000018163f020 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28 (CFRunLoop.c:1972)
49 CoreFoundation 0x000000018164fce0 __CFRunLoopDoSource0 + 208 (CFRunLoop.c:2016)
50 CoreFoundation 0x0000000181589fe8 __CFRunLoopDoSources0 + 268 (CFRunLoop.c:2053)
51 CoreFoundation 0x000000018158f7f4 __CFRunLoopRun + 820 (CFRunLoop.c:2951)
52 CoreFoundation 0x00000001815a33b8 CFRunLoopRunSpecific + 600 (CFRunLoop.c:3268)
53 GraphicsServices 0x000000019d5d338c GSEventRunModal + 164 (GSEvent.c:2200)
54 UIKitCore 0x0000000183f43b60 -[UIApplication _run] + 1100 (UIApplication.m:3494)
55 UIKitCore 0x0000000183cc28b8 UIApplicationMain + 2124 (UIApplication.m:5051)
56 VLC for iOS 0x0000000100868500 main + 88 (main.m:20)
57 dyld 0x0000000101799a24 start + 520 (dyldMain.cpp:876)
```
medialibrary hash: 5c74aacc
[Logs.zip](/uploads/0ff9353ed2c6dd8fbb1fe60b61198cc9/Logs.zip)0.10.xhttps://code.videolan.org/videolan/medialibrary/-/issues/374iOS beta crash: medialibrary::FsHolder::fsFactoryForMrl2021-11-09T15:31:48ZSoomin LeeiOS beta crash: medialibrary::FsHolder::fsFactoryForMrlThis is currently our top crash during the last public beta on iOS.
An archive has been added with all the differents logs with the same/similar stack.
```
Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001b...This is currently our top crash during the last public beta on iOS.
An archive has been added with all the differents logs with the same/similar stack.
```
Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001baf81bbc __psynch_mutexwait + 8
1 libsystem_pthread.dylib 0x00000001db3c1940 _pthread_mutex_firstfit_lock_wait + 80 (pthread_mutex.c:1414)
2 libsystem_pthread.dylib 0x00000001db3b8668 _pthread_mutex_firstfit_lock_slow$VARIANT$armv81 + 236 (pthread_mutex.c:1490)
3 libc++.1.dylib 0x0000000198b2ce98 std::__1::mutex::lock() + 12 (__threading_support:406)
4 VLCMediaLibraryKit 0x00000001060b9db4 medialibrary::FsHolder::fsFactoryForMrl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const + 1236404 (FsHolder.cpp:218)
5 VLCMediaLibraryKit 0x0000000105fe3a9c medialibrary::Folder::fromMrl(medialibrary::MediaLibrary const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, medialibrary::Folder::BannedType) + 359068 (Folder.cpp:489)
6 VLCMediaLibraryKit 0x0000000105fd6274 medialibrary::File::fromMrl(medialibrary::MediaLibrary const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 303732 (File.cpp:442)
7 VLCMediaLibraryKit 0x0000000106030900 medialibrary::MediaLibrary::media(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const + 674048 (MediaLibrary.cpp:658)
8 VLCMediaLibraryKit 0x0000000105f9c644 -[VLCMediaLibrary mediaWithMrl:] + 136 (VLCMediaLibrary.m:151)
9 VLC for iOS 0x0000000104a0f174 MediaLibraryService.fetchMedia(with:) + 220 (MediaLibraryService.swift:389)
10 VLC for iOS 0x0000000104a0f288 @objc MediaLibraryService.fetchMedia(with:) + 204 (<compiler-generated>:0)
11 VLC for iOS 0x0000000104a2e21c 0x104944000 + 959004 (QueueViewController.swift:576)
12 VLC for iOS 0x0000000104a2e410 @objc QueueViewController.collectionView(_:cellForItemAt:) + 140 (<compiler-generated>:0)
13 UIKitCore 0x0000000184010648 -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:] + 1132 (UICollectionView.m:2938)
14 UIKitCore 0x0000000183f11774 -[UICollectionView _updateVisibleCellsNow:] + 4168 (UICollectionView.m:4506)
15 UIKitCore 0x0000000183e68b34 -[UICollectionView layoutSubviews] + 316 (UICollectionView.m:5217)
16 UIKitCore 0x0000000183e7ab98 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2584 (UIView.m:18320)
17 QuartzCore 0x00000001854e4c4c CA::Layer::layout_if_needed(CA::Transaction*) + 532 (CALayer.mm:10036)
18 UIKitCore 0x0000000183edd15c -[UIView(Hierarchy) layoutBelowIfNeeded] + 524 (UIView.m:12809)
19 VLC for iOS 0x0000000104a2ab84 0x104944000 + 945028 (QueueViewController.swift:183)
20 VLC for iOS 0x0000000104a2ad44 @objc QueueViewController.didMove(toParent:) + 52 (<compiler-generated>:0)
21 VLC for iOS 0x00000001049ba368 -[VLCPlayerDisplayController _showHideMiniPlaybackView] + 1904 (VLCPlayerDisplayController.m:349)
22 VLC for iOS 0x00000001049b95ac -[VLCPlayerDisplayController playbackDidStart:] + 244 (VLCPlayerDisplayController.m:0)
23 CoreFoundation 0x00000001819c0c5c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20 (CFNotificationCenter.c:652)
24 CoreFoundation 0x0000000181a55564 ___CFXRegistrationPost_block_invoke + 48 (CFNotificationCenter.c:173)
25 CoreFoundation 0x0000000181a2ab44 _CFXRegistrationPost + 416 (CFNotificationCenter.c:199)
26 CoreFoundation 0x00000001819d5764 _CFXNotificationPost + 696 (CFNotificationCenter.c:1147)
27 Foundation 0x00000001830f6c98 -[NSNotificationCenter postNotificationName:object:userInfo:] + 92 (NSNotification.m:560)
28 VLC for iOS 0x0000000104962984 -[VLCPlaybackService _playNewMedia] + 900 (VLCPlaybackService.m:301)
29 VLC for iOS 0x00000001049625c0 -[VLCPlaybackService startPlayback] + 1464 (VLCPlaybackService.m:250)
30 VLC for iOS 0x0000000104961fe0 -[VLCPlaybackService playMediaList:firstIndex:subtitlesFilePath:completion:] + 188 (VLCPlaybackService.m:0)
31 VLC for iOS 0x00000001049a01c8 -[VLCOpenNetworkStreamViewController _openURLStringAndDismiss:] + 552 (VLCOpenNetworkStreamViewController.m:413)
32 VLC for iOS 0x000000010499ef24 -[VLCOpenNetworkStreamViewController openButtonAction:] + 968 (VLCOpenNetworkStreamViewController.m:251)
33 UIKitCore 0x000000018419c4d0 -[UIApplication sendAction:to:from:forEvent:] + 96 (UIApplication.m:5327)
34 UIKitCore 0x00000001842be174 -[UIControl sendAction:to:forEvent:] + 124 (UIControl.m:871)
35 UIKitCore 0x0000000184050234 -[UIControl _sendActionsForEvents:withEvent:] + 348 (UIControl.m:942)
36 UIKitCore 0x00000001840e6d98 -[UIButton _sendActionsForEvents:withEvent:] + 156 (UIButton.m:4128)
37 UIKitCore 0x0000000184362964 -[UIControl touchesEnded:withEvent:] + 532 (UIControl.m:637)
38 UIKitCore 0x0000000183e608dc -[UIWindow _sendTouchesForEvent:] + 1228 (UIWindow.m:2988)
39 UIKitCore 0x0000000183e9079c -[UIWindow sendEvent:] + 4392 (UIWindow.m:3288)
40 UIKitCore 0x00000001840351d0 -[UIApplication sendEvent:] + 896 (UIApplication.m:11831)
41 UIKit 0x00000001db61874c -[UIApplicationAccessibility sendEvent:] + 96 (UIApplicationAccessibility.m:3111)
42 UIKitCore 0x0000000183e653f0 __dispatchPreprocessedEventFromEventQueue + 8124 (UIEventDispatcher.m:2290)
43 UIKitCore 0x0000000183e5a1a0 __processEventQueue + 6748 (UIEventDispatcher.m:2597)
44 UIKitCore 0x0000000183e5f6cc __eventFetcherSourceCallback + 168 (UIEventDispatcher.m:2669)
45 CoreFoundation 0x0000000181a4a220 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 (CFRunLoop.c:1972)
46 CoreFoundation 0x0000000181a5a248 __CFRunLoopDoSource0 + 204 (CFRunLoop.c:2016)
47 CoreFoundation 0x000000018199d5e8 __CFRunLoopDoSources0 + 256 (CFRunLoop.c:2053)
48 CoreFoundation 0x00000001819a2a18 __CFRunLoopRun + 768 (CFRunLoop.c:2951)
49 CoreFoundation 0x00000001819b5d8c CFRunLoopRunSpecific + 572 (CFRunLoop.c:3268)
50 GraphicsServices 0x000000019bac29a0 GSEventRunModal + 160 (GSEvent.c:2200)
51 UIKitCore 0x00000001841eb018 -[UIApplication _run] + 1080 (UIApplication.m:3457)
52 UIKitCore 0x0000000183f7f29c UIApplicationMain + 2060 (UIApplication.m:5013)
53 VLC for iOS 0x0000000104994500 main + 88 (main.m:20)
54 dyld 0x0000000105a84190 start + 444 (dyldMain.cpp:876)
```
medialibrary hash: 5c74aacc
[Logs.zip](/uploads/f2c35c6bff4ec1c7cc0308241542f7c5/Logs.zip)0.10.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/383Add missing indexes to the Album table2021-11-09T15:30:48ZHugo Beauzée-LuyssenAdd missing indexes to the Album tableThe number of tracks (at least) is not indexed, yet we can use it to sort.
A local benchmark shows that indexing that field leads to a valuable gain when fetching albums sorted by their number of tracks, but ideally I'd like this to be ...The number of tracks (at least) is not indexed, yet we can use it to sort.
A local benchmark shows that indexing that field leads to a valuable gain when fetching albums sorted by their number of tracks, but ideally I'd like this to be confirmed by some automated benchmarking in the CI... That might be tight for 0.11 but it not, just indexing will be enough0.11.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/332When upgrading from 5b4c2180 to f624aad5 an assert is reached2021-11-09T14:40:54ZFelix Paul Kühnefkuehne@videolan.orgWhen upgrading from 5b4c2180 to f624aad5 an assert is reachedError logs and back trace:
https://wtf.roflcopter.fr/paste/?498035b0f4a9265c#9BipkMnwbwoufPTf8gqoMdnsRx62P2yMwqW9gaYyHetJ
https://wtf.roflcopter.fr/paste/?1e831d98878b5da0#7jPsVwfoMKD5ehTdrm6GeuefdifTiXo6ZwuU8oJL3jZC
https://wtf.roflco...Error logs and back trace:
https://wtf.roflcopter.fr/paste/?498035b0f4a9265c#9BipkMnwbwoufPTf8gqoMdnsRx62P2yMwqW9gaYyHetJ
https://wtf.roflcopter.fr/paste/?1e831d98878b5da0#7jPsVwfoMKD5ehTdrm6GeuefdifTiXo6ZwuU8oJL3jZC
https://wtf.roflcopter.fr/paste/?9901684ff73327f4#GoDM1ezajuTguY7oyU8LHNMZ1QWRi87uFBjH8N5W8xLy
This appears to be a change with the media library. I also switched the underlying SQLite backend, but reverting to the previous stack does mitigate the issue.https://code.videolan.org/videolan/medialibrary/-/issues/386Missing foreign key indexes2021-11-09T13:33:47ZHugo Beauzée-LuyssenMissing foreign key indexesReported by sqlite `.lint fkey-indexes` tool:
- [x] `CREATE INDEX 'AudioTrack_attached_file_id' ON 'AudioTrack'('attached_file_id'); --> File(id_file)`
- [x] `CREATE INDEX 'Bookmark_media_id' ON 'Bookmark'('media_id'); --> Media(id_medi...Reported by sqlite `.lint fkey-indexes` tool:
- [x] `CREATE INDEX 'AudioTrack_attached_file_id' ON 'AudioTrack'('attached_file_id'); --> File(id_file)`
- [x] `CREATE INDEX 'Bookmark_media_id' ON 'Bookmark'('media_id'); --> Media(id_media)`
- [x] `CREATE INDEX 'Chapter_media_id' ON 'Chapter'('media_id'); --> Media(id_media)`
- [x] `CREATE INDEX 'File_playlist_id' ON 'File'('playlist_id'); --> Playlist(id_playlist)`
- [x] `CREATE INDEX 'LabelFileRelation_media_id' ON 'LabelFileRelation'('media_id'); --> Media(id_media)`
- [x] `CREATE INDEX 'Media_genre_id' ON 'Media'('genre_id'); --> Genre(id_genre)`
- [x] `CREATE INDEX 'Media_artist_id' ON 'Media'('artist_id'); --> Artist(id_artist)`
- [x] `CREATE INDEX 'MediaArtistRelation_artist_id' ON 'MediaArtistRelation'('artist_id'); --> Artist(id_artist)`
- [x] `CREATE INDEX 'PlaylistMediaRelation_media_id' ON 'PlaylistMediaRelation'('media_id'); --> Media(id_media)`
- [x] `CREATE INDEX 'ShowEpisode_show_id' ON 'ShowEpisode'('show_id'); --> Show(id_show)`
- [x] `CREATE INDEX 'SubtitleTrack_attached_file_id' ON 'SubtitleTrack'('attached_file_id'); --> File(id_file)`
- [ ] `CREATE INDEX 'Task_file_id' ON 'Task'('file_id'); --> File(id_file)`0.11.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/382Mesure the performance impact of precalculated counters2021-11-03T13:44:06ZHugo Beauzée-LuyssenMesure the performance impact of precalculated countersIn order to chose a solution for #373 we need to know if precalculating most counters makes a real performance difference.
My intuition would be that it makes the insertion a bit more costly (maybe even quite a bit given the number of t...In order to chose a solution for #373 we need to know if precalculating most counters makes a real performance difference.
My intuition would be that it makes the insertion a bit more costly (maybe even quite a bit given the number of triggers), but this is amortized once the initial scan is complete.
AFAICS we need to:
- [ ] Select a trigger to evaluate (in order to avoid writing the equivalent requests for all counters)
- [ ] Mesure the impact at insertion
- [ ] Mesure the impact when reading0.11.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/372Potential invalid decrement in Album::Triggers::DeleteTrack2021-10-19T16:01:20ZHugo Beauzée-LuyssenPotential invalid decrement in Album::Triggers::DeleteTrackThe `is_present` field might be decremented while it shouldn't, if the removed media was missing. This can happen when purging old removable devicesThe `is_present` field might be decremented while it shouldn't, if the removed media was missing. This can happen when purging old removable devices0.11.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/381Remove Media::save() member function2021-10-19T16:01:18ZHugo Beauzée-LuyssenRemove Media::save() member functionThis was introduced as an attempt to avoid multiple requests when updating multiple fields of a media, however all the valuable call sites (ie. not in tests) are enclosed in a transaction.
Having to manually invoke save() is incovenient...This was introduced as an attempt to avoid multiple requests when updating multiple fields of a media, however all the valuable call sites (ie. not in tests) are enclosed in a transaction.
Having to manually invoke save() is incovenient, and also mean that we might update some fields explicitly from the code, but have the database not updated, causing potential triggers or later calls to rely on an inconsistent state.0.11.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/380Rename triggers to follow the <table>_name convention2021-10-19T16:01:16ZHugo Beauzée-LuyssenRename triggers to follow the <table>_name conventionAs part of #379 we will modify a lot of triggers, so let's leverage the occasion to rename those to follow the (implicit) convention of prefixing the trigger name with the table it relates to.
This could be done as part of #379 directly...As part of #379 we will modify a lot of triggers, so let's leverage the occasion to rename those to follow the (implicit) convention of prefixing the trigger name with the table it relates to.
This could be done as part of #379 directly but the changeset will be big enough as if, might as well keep it simple for a renaming.0.11.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/369API change request: have a time return value for setLastTime2021-10-19T15:19:04ZNicolas PomepuyAPI change request: have a time return value for setLastTimeFollowing #354, we removed all the processing done in the Android app regarding the media time update. See https://code.videolan.org/videolan/vlc-android/-/commit/0a84d7f0e401621ab0fd3b796f9bf21f4dcc13ce#520b1c3c06d7ac7efd500fc4dd8e920ff...Following #354, we removed all the processing done in the Android app regarding the media time update. See https://code.videolan.org/videolan/vlc-android/-/commit/0a84d7f0e401621ab0fd3b796f9bf21f4dcc13ce#520b1c3c06d7ac7efd500fc4dd8e920ffbbbd491_472_474
Issue:
When saving a media time using `IMedia::setLastTime`, there is no way to get the new (medialibrary processed) time without re-querying this media just after that. Even if it works, it's far from being optimized.
Request:
Get a new `IMedia::setAndGetLastTime` returning the actual value saved in the DB. This way we can locally store the new time without having to do a new query to the ML.0.10.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/376iOS beta crash: medialibrary::parser::Parser::updateStats() (.cold.1)2021-10-06T12:25:57ZSoomin LeeiOS beta crash: medialibrary::parser::Parser::updateStats() (.cold.1)An archive has been added with all the differents logs with the same/similar stack.
```Thread 43 Crashed:
0 libsystem_kernel.dylib 0x00000001b7bd99c4 __pthread_kill + 8
1 libsystem_pthread.dylib 0x00000001f0e27434 pt...An archive has been added with all the differents logs with the same/similar stack.
```Thread 43 Crashed:
0 libsystem_kernel.dylib 0x00000001b7bd99c4 __pthread_kill + 8
1 libsystem_pthread.dylib 0x00000001f0e27434 pthread_kill + 268 (pthread.c:1609)
2 libsystem_c.dylib 0x000000018c0e6f64 abort + 164 (abort.c:118)
3 libsystem_c.dylib 0x000000018c13d96c __assert_rtn + 300 (assert.c:96)
4 VLCMediaLibraryKit 0x00000001088428ac medialibrary::parser::Parser::updateStats() (.cold.1) + 40 (Parser.cpp:181)
5 VLCMediaLibraryKit 0x00000001086a030c medialibrary::parser::Parser::updateStats() + 1360652 (Parser.cpp:0)
6 VLCMediaLibraryKit 0x00000001086a0970 medialibrary::parser::Parser::done(std::__1::shared_ptr<medialibrary::parser::Task>, medialibrary::parser::Status) + 1362288 (Parser.cpp:207)
7 VLCMediaLibraryKit 0x00000001086a3268 medialibrary::parser::Worker::mainloop() + 1372776 (ParserWorker.cpp:262)
8 VLCMediaLibraryKit 0x00000001086a3db0 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (medialibrary::parser::Worker::*)(), medialibrary::parser::Worker*> >(void*) + 1375664 (thread:293)
9 libsystem_pthread.dylib 0x00000001f0e21a60 _pthread_start + 148 (pthread.c:890)
10 libsystem_pthread.dylib 0x00000001f0e20f5c thread_start + 8
```
medialibrary hash: 5c74aacc
[Logs.zip](/uploads/5c86f44c175edc855684cf76a4d1abb2/Logs.zip)0.10.xhttps://code.videolan.org/videolan/medialibrary/-/issues/375iOS beta crash: Parser::updateStats2021-10-06T12:25:46ZSoomin LeeiOS beta crash: Parser::updateStatsAn archive has been added with all the differents logs with the same/similar stack.
```
Thread 31 Crashed:
0 libsystem_kernel.dylib 0x00000001b8e489c4 __pthread_kill + 8
1 libsystem_pthread.dylib 0x00000001f283b434 pt...An archive has been added with all the differents logs with the same/similar stack.
```
Thread 31 Crashed:
0 libsystem_kernel.dylib 0x00000001b8e489c4 __pthread_kill + 8
1 libsystem_pthread.dylib 0x00000001f283b434 pthread_kill + 268 (pthread.c:1609)
2 libsystem_c.dylib 0x000000018d1f3f64 abort + 164 (abort.c:118)
3 libsystem_c.dylib 0x000000018d24a96c __assert_rtn + 300 (assert.c:96)
4 VLCMediaLibraryKit 0x00000001062228ac medialibrary::parser::Parser::start() (.cold.1) + 3074220 (Parser.cpp:0)
5 VLCMediaLibraryKit 0x000000010608030c medialibrary::parser::Parser::updateStats() + 292 (Parser.cpp:181)
6 VLCMediaLibraryKit 0x0000000106080970 medialibrary::parser::Parser::done(std::__1::shared_ptr<medialibrary::parser::Task>, medialibrary::parser::Status) + 100 (Parser.cpp:201)
7 VLCMediaLibraryKit 0x0000000106083268 medialibrary::parser::Worker::mainloop() + 3800 (ParserWorker.cpp:262)
8 VLCMediaLibraryKit 0x0000000106083db0 decltype(*(std::__1::forward<medialibrary::parser::Worker*>(fp0)).*fp()) std::__1::__invoke<void (medialibrary::parser::Worker::*)(), medialibrary::parser::Worker*, void>(void (medialibrary::parser... + 24 (type_traits:3688)
9 VLCMediaLibraryKit 0x0000000106083db0 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (medialibrary::parser::Worker::*)(), medialibrary::parser... + 28 (thread:280)
10 VLCMediaLibraryKit 0x0000000106083db0 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (medialibrary::parser::Worker::*)(), media... + 64 (thread:291)
11 libsystem_pthread.dylib 0x00000001f2835a60 _pthread_start + 148 (pthread.c:890)
12 libsystem_pthread.dylib 0x00000001f2834f5c thread_start + 8
```
medialibrary hash: 5c74aacc
[Logs.zip](/uploads/62191c2d922c3baee1ea504401319da5/Logs.zip)0.10.xHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/217Remove old version migrations2021-10-06T08:48:29ZHugo Beauzée-LuyssenRemove old version migrationsDrop all migrations & associated workarounds from versions older than VLC-android 3.1.0Drop all migrations & associated workarounds from versions older than VLC-android 3.1.00.10.xHugo Beauzée-LuyssenHugo Beauzée-Luyssen