VLCKit issueshttps://code.videolan.org/videolan/VLCKit/-/issues2022-09-24T16:58:05Zhttps://code.videolan.org/videolan/VLCKit/-/issues/621How to get pixel data for each frame to carry out custom processing flow? (RT...2022-09-24T16:58:05ZBijiaboHow to get pixel data for each frame to carry out custom processing flow? (RTSP video stream)Hi, I am developing a video image processing program running on iOS. I want to use VLCKit to parse RTSP video stream, and do custom render on screen. The flow I want to be able to achieve is this:
```
RTSP video stream -> VLCKit -> each...Hi, I am developing a video image processing program running on iOS. I want to use VLCKit to parse RTSP video stream, and do custom render on screen. The flow I want to be able to achieve is this:
```
RTSP video stream -> VLCKit -> each frame pixel data -> my custom algorithmic processing -> custom render view
```
How can I get the video image of each frame in real time? Hope in rgb pixel format data.https://code.videolan.org/videolan/VLCKit/-/issues/620VLCMedia.parse(options: ) unable to parse metadata for smb linked resource2022-09-24T17:22:35Z龚杰洪VLCMedia.parse(options: ) unable to parse metadata for smb linked resource![阿杜_-_天蝎蝴蝶](/uploads/d2d2b7b826c8872304bfb5f3e707417e/阿杜_-_天蝎蝴蝶.mp3)
As shown in the attached music file, the metadata can be parsed if the file is placed locally, but it cannot be properly parsed if it is placed on the NAS for playbac...![阿杜_-_天蝎蝴蝶](/uploads/d2d2b7b826c8872304bfb5f3e707417e/阿杜_-_天蝎蝴蝶.mp3)
As shown in the attached music file, the metadata can be parsed if the file is placed locally, but it cannot be properly parsed if it is placed on the NAS for playback with an SMB link.https://code.videolan.org/videolan/VLCKit/-/issues/619VLCMediaPlayer.startRecording(atPath:) not working in Swift from RTSP streaming2022-07-04T10:45:26Zamit patelVLCMediaPlayer.startRecording(atPath:) not working in Swift from RTSP streaming****MobileVLCKit startRecording works but returns false and delegate returns nil for record path****
//-----------------------Coding---------------------------
import UIKit
import MobileVLCKit
class PlaybackViewController: UIViewCont...****MobileVLCKit startRecording works but returns false and delegate returns nil for record path****
//-----------------------Coding---------------------------
import UIKit
import MobileVLCKit
class PlaybackViewController: UIViewController {
let mediaURL = "https://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4"
@IBOutlet weak var movieView: UIView!
var mediaPlayer = VLCMediaPlayer()
var videoFilename = "rendersf"
var videoFilenameExt = "mkv"
var tempUrl = ""
override func viewDidLoad() {
super.viewDidLoad()
tempUrl = outputURL.absoluteString + "\(videoFilename).\(videoFilenameExt)"
setupMediaPLayer()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
mediaPlayer.play()
}
func setupMediaPLayer() {
let media = VLCMedia(url: URL(string: mediaURL)!)
mediaPlayer.delegate = self
mediaPlayer.drawable = movieView
mediaPlayer.media = media
mediaPlayer.libraryInstance.debugLogging = true
}
@IBAction func handlePlayPause(_ sender: UIButton) {
if mediaPlayer.isPlaying {
mediaPlayer.pause()
sender.isSelected = true
} else {
mediaPlayer.play()
sender.isSelected = false
}
}
@IBAction func recordStartStop(_ sender: UIButton) {
if sender.isSelected == false {
sender.isSelected = true
print("fileURL: \(tempUrl)")
let idd = self.mediaPlayer.startRecording(atPath: tempUrl)
if idd == true {
print("------------Mila---------------")
}else{
print("-------------Oooo---------------")
}
}else{
sender.isSelected = false
self.mediaPlayer.stopRecording()
}
}
var outputURL: URL {
let fileManager = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
return fileManager
}
}
extension PlaybackViewController: VLCMediaPlayerDelegate {
func mediaPlayerStartedRecording(_ player: VLCMediaPlayer) {
print("----mediaPlayerStartedRecording: \(player)-------------")
}
func mediaPlayer(_ player: VLCMediaPlayer, recordingStoppedAtPath path: String) {
print("----recordingStoppedAtPath: \(path)-------------")
}
func mediaPlayerStateChanged(_ aNotification: Notification) {
guard let videoPlayer = aNotification.object as? VLCMediaPlayer else {return}
switch videoPlayer.state{
case .playing:
print("VLCMediaPlayerDelegate: PLAYING")
case .opening:
print("VLCMediaPlayerDelegate: OPENING")
case .error:
print("VLCMediaPlayerDelegate: ERROR")
case .buffering:
print("VLCMediaPlayerDelegate: BUFFERING")
case .stopped:
print("VLCMediaPlayerDelegate: STOPPED")
case .paused:
print("VLCMediaPlayerDelegate: PAUSED")
case .ended:
print("VLCMediaPlayerDelegate: ENDED")
case .esAdded:
print("VLCMediaPlayerDelegate: ELEMENTARY STREAM ADDED")
default:
break
}
}
}
![Simulator_Screen_Shot_-_iPhone_12_-_2022-07-04_at_16.13.51](/uploads/17013b076a791d2ab681d2b2a77841a6/Simulator_Screen_Shot_-_iPhone_12_-_2022-07-04_at_16.13.51.png)
Note: Please help me if you have any ideas.https://code.videolan.org/videolan/VLCKit/-/issues/618RTSP Live stream is not playing in mobileVLCKit IOS2022-07-19T08:50:17ZBablu BhaiyaRTSP Live stream is not playing in mobileVLCKit IOSRTSP Live stream is not playing in mobileVLCKit IOS
Showing this message in console
try to open 'rtsp video URL'
connect to host '169.121.91.736'
net: connecting to 169.121.91.736 port 1024
connection succeeded (socket = 9)
net: opening...RTSP Live stream is not playing in mobileVLCKit IOS
Showing this message in console
try to open 'rtsp video URL'
connect to host '169.121.91.736'
net: connecting to 169.121.91.736 port 1024
connection succeeded (socket = 9)
net: opening 0.0.0.0 datagram port 9294
net: opening 0.0.0.0 datagram port 9295
Failed to setup RTSP session
no access modules matched
Your input can't be opened
VLC is unable to open the MRL'rtsp video URL'. Check the log for details.https://code.videolan.org/videolan/VLCKit/-/issues/617Can't play RTSP on mobile network (3g, 4g)2022-12-14T21:11:43ZLucas BortoliCan't play RTSP on mobile network (3g, 4g)RTSP links only play on Wifi. Could someone help me, please? I'm testing on an iPhone X iOS 15.5
```
player = VLCMediaPlayer()
player.drawable = self
player.delegate = self
backgroundColor = .black
let streamURL = URL(strin...RTSP links only play on Wifi. Could someone help me, please? I'm testing on an iPhone X iOS 15.5
```
player = VLCMediaPlayer()
player.drawable = self
player.delegate = self
backgroundColor = .black
let streamURL = URL(string: String(uri))
let media = VLCMedia(url: streamURL!)
media.addOptions([
"rtsp-tcp": true
])
player.libraryInstance.debugLogging = true
player.libraryInstance.debugLoggingLevel = 3
player.media = media
player.audio?.volume = 0
player.scaleFactor = 0
player.play()
```https://code.videolan.org/videolan/VLCKit/-/issues/616FTP: Can't play any video which file name contain Chinese characters2022-09-24T17:15:39ZsunweifengFTP: Can't play any video which file name contain Chinese charactersHello,
I can't play any video which file name contain Chinese characters, the mobile VLC app in AppStore also can't play it.
MobileVLCKit version:3.4.1b9
FTP environment:
I set my ftp server via QuickFTP on my Mac.
AppStore URL: http...Hello,
I can't play any video which file name contain Chinese characters, the mobile VLC app in AppStore also can't play it.
MobileVLCKit version:3.4.1b9
FTP environment:
I set my ftp server via QuickFTP on my Mac.
AppStore URL: https://apps.apple.com/cn/app/quickftp-server/id1451646819?mt=12
![image](/uploads/2d35e9d39a4aa884991bd556dad20cae/image.png)
Example:
You can change any video on your FTP Server file name to Chinese. for example, change file name to "彩虹.MP4"
please fix it, thanks.Felix Paul Kühnefkuehne@videolan.orgFelix Paul Kühnefkuehne@videolan.orghttps://code.videolan.org/videolan/VLCKit/-/issues/615Resume video playing from paused status gets mute for about 1 second at the b...2023-10-07T12:25:25ZRoenResume video playing from paused status gets mute for about 1 second at the beginningWhen we resume a paused video using `[VLCMediaPlayer play]`, there will be no audio output for about 1 seconds at the beginning.
Since my App which is integrated with MobileVLCKit is for language learning purpose, so the sound output is ...When we resume a paused video using `[VLCMediaPlayer play]`, there will be no audio output for about 1 seconds at the beginning.
Since my App which is integrated with MobileVLCKit is for language learning purpose, so the sound output is even more important than video image, so I hope this issue can be resolved.
thanks.Thomas GuillemThomas Guillemhttps://code.videolan.org/videolan/VLCKit/-/issues/614'VLCMediaPlayer' has no member 'audio' in MacOS2022-06-20T20:20:57ZSupport PrimeIPTV'VLCMediaPlayer' has no member 'audio' in MacOSvar mediaPlayer = VLCMediaPlayer()
mediaPlayer.audio?.isMuted = false. (Value of type 'VLCMediaPlayer' has no member 'audio') error not compile codevar mediaPlayer = VLCMediaPlayer()
mediaPlayer.audio?.isMuted = false. (Value of type 'VLCMediaPlayer' has no member 'audio') error not compile code4.0Felix Paul Kühnefkuehne@videolan.orgFelix Paul Kühnefkuehne@videolan.orghttps://code.videolan.org/videolan/VLCKit/-/issues/613multiple stream instance in ios2022-06-27T14:06:39Zhaileykwakmultiple stream instance in iosI want to play multiple rtsp url simultaneously in ios. But I cant find the method in vlckit documentation.
should I use tableview or collectionview?I want to play multiple rtsp url simultaneously in ios. But I cant find the method in vlckit documentation.
should I use tableview or collectionview?https://code.videolan.org/videolan/VLCKit/-/issues/612Rare crash of VLCMediaList in 3.4.1b92022-06-27T14:07:10ZHank AndersonRare crash of VLCMediaList in 3.4.1b9MobileVLCKit 3.4.1b9
There are two types of stack traces acquired on iPhone and iPad.
```
EXC_BAD_ACCESS KERN_INVALID_ADDRESS
Crashed: com.apple.main-thread
0 libobjc.A.dylib 0x6664 objc_loadWeakRetained + 152
1 Mobile...MobileVLCKit 3.4.1b9
There are two types of stack traces acquired on iPhone and iPad.
```
EXC_BAD_ACCESS KERN_INVALID_ADDRESS
Crashed: com.apple.main-thread
0 libobjc.A.dylib 0x6664 objc_loadWeakRetained + 152
1 MobileVLCKit 0x11c94 __52-[VLCMediaList(Private) mediaListItemAdded:atIndex:]_block_invoke.114 + 318 (VLCMediaList.m:318)
2 libdispatch.dylib 0x1e68 _dispatch_call_block_and_release + 32
3 libdispatch.dylib 0x3a2c _dispatch_client_callout + 20
4 libdispatch.dylib 0x11f48 _dispatch_main_queue_drain + 928
5 libdispatch.dylib 0x11b98 _dispatch_main_queue_callback_4CF + 44
6 CoreFoundation 0x522f0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16
7 CoreFoundation 0xc1f4 __CFRunLoopRun + 2532
8 CoreFoundation 0x1f6b8 CFRunLoopRunSpecific + 600
9 GraphicsServices 0x1374 GSEventRunModal + 164
10 UIKitCore 0x513e88 -[UIApplication _run] + 1100
11 UIKitCore 0x2955ec UIApplicationMain + 364
12 libswiftUIKit.dylib 0x30ecc UIApplicationMain(_:_:_:_:) + 104
```
```
EXC_BAD_ACCESS KERN_INVALID_ADDRESS
Crashed: com.apple.main-thread
0 libobjc.A.dylib 0x2840 objc_retain + 16
1 Foundation 0xbd454 -[NSConcreteNotification initWithName:object:userInfo:] + 72
2 Foundation 0x19c84 -[NSNotificationCenter postNotificationName:object:userInfo:] + 72
3 MobileVLCKit 0x11d8c __52-[VLCMediaList(Private) mediaListItemAdded:atIndex:]_block_invoke.114 + 320 (VLCMediaList.m:320)
4 libdispatch.dylib 0x632ec _dispatch_call_block_and_release + 24
5 libdispatch.dylib 0x642f0 _dispatch_client_callout + 16
6 libdispatch.dylib 0x109a0 _dispatch_main_queue_callback_4CF$VARIANT$mp + 936
7 CoreFoundation 0x4d7f8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
8 CoreFoundation 0xb0f8 __CFRunLoopRun + 2528
9 CoreFoundation 0x1dd8c CFRunLoopRunSpecific + 572
10 GraphicsServices 0x19a0 GSEventRunModal + 160
11 UIKitCore 0x4edfa8 -[UIApplication _run] + 1080
12 UIKitCore 0x28222c UIApplicationMain + 2060
13 libswiftUIKit.dylib 0x27e80 UIApplicationMain(_:_:_:_:) + 100
```
MobileVLCKit 3.4.1b9 or earlier did not have this problem.
best regards.3.5.0Felix Paul Kühnefkuehne@videolan.orgFelix Paul Kühnefkuehne@videolan.orghttps://code.videolan.org/videolan/VLCKit/-/issues/611OGG buffering time is too high2022-09-24T17:04:03ZmarfOGG buffering time is too highHello,
we are using the MobileVlcKit in our iOS app but have noticed that for OGG files the buffering time takes around 3/4 seconds
File sample: https://freetestdata.com/wp-content/uploads/2021/09/Free_Test_Data_500KB_OGG.ogg
For all ot...Hello,
we are using the MobileVlcKit in our iOS app but have noticed that for OGG files the buffering time takes around 3/4 seconds
File sample: https://freetestdata.com/wp-content/uploads/2021/09/Free_Test_Data_500KB_OGG.ogg
For all other formats, the file plays immediately. Also using other media players playing the OGG file or playing it though the browser using the same connection the file plays immediately as well.
Do you have any advice on how we should fix this issue?
Thanks!3.5.0François CartegnieFrançois Cartegniehttps://code.videolan.org/videolan/VLCKit/-/issues/610pause() does not work if called too quickly after play()2022-05-30T13:32:07ZGenepause() does not work if called too quickly after play()MobileVLCKit 3.4.1b9
```swift
var doPause = false
if !audioPlayer!.isPlaying {
audioPlayer!.play()
doPause = true
}
audioPlayer!.position = seekTo
if doPause {
self.audioPlayer!.pause() // this pause is u...MobileVLCKit 3.4.1b9
```swift
var doPause = false
if !audioPlayer!.isPlaying {
audioPlayer!.play()
doPause = true
}
audioPlayer!.position = seekTo
if doPause {
self.audioPlayer!.pause() // this pause is usually ignored.
}
```
This works:
```swift
DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) {
self.audioPlayer!.pause()
}
```
I suspect it's also due to #1294.0https://code.videolan.org/videolan/VLCKit/-/issues/609Incorrect .position/.time in audio playback.2022-09-24T17:09:44ZGeneIncorrect .position/.time in audio playback.MobileVLCKit 3.4.1b9
If I simply pause then resume audio playback, there is a ~1500 ms silence before audio is heard again. It seems like the audio actually silently plays for ~1500 ms then the sound comes at a correct time. Like 1.. 2....MobileVLCKit 3.4.1b9
If I simply pause then resume audio playback, there is a ~1500 ms silence before audio is heard again. It seems like the audio actually silently plays for ~1500 ms then the sound comes at a correct time. Like 1.. 2.. [pause-play] silence 4.. 5.. (seems to be the same as #549).
If I pause audio and read the current time or position, I get invalid values, much earlier in playback. Here is an example:
![Screenshot_2022-05-16_at_17.54.09](/uploads/5150078c8d4ec4e3d805569ded3296bc/Screenshot_2022-05-16_at_17.54.09.png)
I paused the 5.23 seconds recording about half-way in, at about 2500 ms, but I get these values for `.position` and `.time.intValue` respectively: `paused at 0.046502978, 250`. These values are consistent with each other and with the duration of the audio but inconsistent with the actual playback position, they should be about 10 times greater. The `.time` is always in 250 ms increments.
I can get around this issue by manually saving/assigning a correct playback position but it would be nice to fix the issue at the source.
Edited: I previously assumed it was due to WebM format, but it equally affects the AAC m4a too.4.0https://code.videolan.org/videolan/VLCKit/-/issues/608The short mp4 video current progress loss for iOS2022-09-24T17:13:26ZJim TianThe short mp4 video current progress loss for iOSI use `pod 'MobileVLCKit', '3.4.1b8'`, Where is the `00:09`?
The video URL is `https://file.dvr.fleetup.net/download/EVENT_862798050443973_00000000_2022_04_12_10_58_37_I_06.mp4`
```
VLCMediaPlayerStateChanged => 2, time: 2022-05-09 16:...I use `pod 'MobileVLCKit', '3.4.1b8'`, Where is the `00:09`?
The video URL is `https://file.dvr.fleetup.net/download/EVENT_862798050443973_00000000_2022_04_12_10_58_37_I_06.mp4`
```
VLCMediaPlayerStateChanged => 2, time: 2022-05-09 16:22:09 +0000, thread: <_NSMainThread: 0x60000354d300>{number = 1, name = main}
VLCMediaPlayerStateChanged => 7, time: 2022-05-09 16:22:11 +0000, thread: <_NSMainThread: 0x60000354d300>{number = 1, name = main}
VLCMediaPlayerStateChanged => 7, time: 2022-05-09 16:22:11 +0000, thread: <_NSMainThread: 0x60000354d300>{number = 1, name = main}
VLCMediaPlayerStateChanged => 2, time: 2022-05-09 16:22:11 +0000, thread: <_NSMainThread: 0x60000354d300>{number = 1, name = main}
VLCMediaPlayerStateChanged => 2, time: 2022-05-09 16:22:11 +0000, thread: <_NSMainThread: 0x60000354d300>{number = 1, name = main}
currentTime: 00:00, totalTime: 00:10
currentTime: 00:00, totalTime: 00:10
currentTime: 00:00, totalTime: 00:10
currentTime: 00:01, totalTime: 00:10
currentTime: 00:01, totalTime: 00:10
currentTime: 00:01, totalTime: 00:10
currentTime: 00:01, totalTime: 00:10
currentTime: 00:02, totalTime: 00:10
currentTime: 00:02, totalTime: 00:10
currentTime: 00:02, totalTime: 00:10
currentTime: 00:03, totalTime: 00:10
currentTime: 00:03, totalTime: 00:10
currentTime: 00:03, totalTime: 00:10
currentTime: 00:03, totalTime: 00:10
currentTime: 00:04, totalTime: 00:10
currentTime: 00:04, totalTime: 00:10
currentTime: 00:04, totalTime: 00:10
currentTime: 00:05, totalTime: 00:10
currentTime: 00:05, totalTime: 00:10
currentTime: 00:05, totalTime: 00:10
currentTime: 00:05, totalTime: 00:10
currentTime: 00:06, totalTime: 00:10
currentTime: 00:06, totalTime: 00:10
currentTime: 00:06, totalTime: 00:10
currentTime: 00:06, totalTime: 00:10
currentTime: 00:07, totalTime: 00:10
currentTime: 00:07, totalTime: 00:10
currentTime: 00:07, totalTime: 00:10
currentTime: 00:08, totalTime: 00:10
currentTime: 00:08, totalTime: 00:10
currentTime: 00:08, totalTime: 00:10
currentTime: 00:08, totalTime: 00:10
currentTime: 00:08, totalTime: 00:10
currentTime: 00:08, totalTime: 00:10
currentTime: 00:08, totalTime: 00:10
VLCMediaPlayerStateChanged => 3, time: 2022-05-09 16:22:21 +0000, thread: <_NSMainThread: 0x60000354d300>{number = 1, name = main}
```4.0https://code.videolan.org/videolan/VLCKit/-/issues/607Using 2 loggers leads to crashes with the new API2023-01-17T13:15:31ZFelix Paul Kühnefkuehne@videolan.orgUsing 2 loggers leads to crashes with the new APIWhen setting both a VLCFileLogger and a VLCConsoleLogger to a VLCLibrary instance, it will crash.
```
(lldb) bt all
MobileVLCKit was compiled with optimization - stepping may behave oddly; variables may not be available.
thread #1, qu...When setting both a VLCFileLogger and a VLCConsoleLogger to a VLCLibrary instance, it will crash.
```
(lldb) bt all
MobileVLCKit was compiled with optimization - stepping may behave oddly; variables may not be available.
thread #1, queue = 'com.apple.main-thread'
frame #0: 0x0000000107e687f4 dyld_sim`dyld3::MachOLoaded::findClosestSymbol(unsigned long long, char const**, unsigned long long*) const + 328
frame #1: 0x0000000107e5bd9b dyld_sim`dyld4::APIs::dladdr(void const*, dl_info*) + 223
frame #2: 0x000000011110f93d libsystem_c.dylib`backtrace_symbols + 109
frame #3: 0x0000000109cd52e3 Foundation`-[_NSCallStackArray descriptionWithLocale:indent:] + 129
frame #4: 0x0000000109c809a4 Foundation`_NS_os_log_callback + 273
frame #5: 0x0000000111340a31 libsystem_trace.dylib`_os_log_fmt_flatten_NSCF + 42
frame #6: 0x00000001113401e1 libsystem_trace.dylib`_os_log_fmt_flatten_object + 339
frame #7: 0x000000011134e263 libsystem_trace.dylib`_os_log_impl_flatten_and_send + 2128
frame #8: 0x000000011134d9ea libsystem_trace.dylib`_os_log + 136
frame #9: 0x0000000111350872 libsystem_trace.dylib`_os_log_impl + 21
frame #10: 0x000000013e336c12 MediaRemote`-[MRNowPlayingPlayerClient initWithPlayerPath:] + 787
frame #11: 0x000000013e3254fd MediaRemote`-[MRNowPlayingClient nowPlayingPlayerClientForPlayerPath:] + 479
frame #12: 0x000000013e356924 MediaRemote`-[MRNowPlayingOriginClientManager playerClientForPlayerPath:] + 92
frame #13: 0x000000013e20041d MediaRemote`MRMediaRemoteAddCommandHandlerForPlayer + 100
frame #14: 0x000000010bd269bc MediaPlayer`-[MPRemoteCommandCenter _startMediaRemoteSync] + 160
frame #15: 0x000000010bd241ed MediaPlayer`-[MPRemoteCommandCenter initWithPlayerPath:] + 429
frame #16: 0x000000010bd24018 MediaPlayer`-[MPRemoteCommandCenter initWithPlayerID:] + 246
frame #17: 0x000000010bd28441 MediaPlayer`__44+[MPRemoteCommandCenter sharedCommandCenter]_block_invoke + 34
frame #18: 0x0000000111244a5b libdispatch.dylib`_dispatch_client_callout + 8
frame #19: 0x0000000111245f24 libdispatch.dylib`_dispatch_once_callout + 66
frame #20: 0x000000010bd27f87 MediaPlayer`+[MPRemoteCommandCenter sharedCommandCenter] + 46
frame #21: 0x0000000105887d8b VLC for iOS`-[VLCRemoteControlService subscribeToRemoteCommands](self=0x0000600003e028e0, _cmd="subscribeToRemoteCommands") at VLCRemoteControlService.m:40:44
frame #22: 0x000000010582523b VLC for iOS`-[VLCPlaybackService _playNewMedia](self=0x000060000002bd00, _cmd="_playNewMedia") at VLCPlaybackService.m:351:5
frame #23: 0x0000000105824e9a VLC for iOS`-[VLCPlaybackService startPlayback](self=0x000060000002bd00, _cmd="startPlayback") at VLCPlaybackService.m:308:5
frame #24: 0x00000001058240ad VLC for iOS`-[VLCPlaybackService playMediaList:firstIndex:subtitlesFilePath:completion:](self=0x000060000002bd00, _cmd="playMediaList:firstIndex:subtitlesFilePath:completion:", mediaList=0x00006000032e1b00, index=0, subsFilePath=0x0000000000000000, completion=(null)) at VLCPlaybackService.m:178:44
frame #25: 0x0000000105823f73 VLC for iOS`-[VLCPlaybackService playMediaList:firstIndex:subtitlesFilePath:](self=0x000060000002bd00, _cmd="playMediaList:firstIndex:subtitlesFilePath:", mediaList=0x00006000032e1b00, index=0, subsFilePath=0x0000000000000000) at VLCPlaybackService.m:167:5
frame #26: 0x0000000105833c33 VLC for iOS`-[VLCPlaybackService(self=0x000060000002bd00, _cmd="configureMediaList:atIndex:", list=0x00006000032e1b00, index=0) configureMediaList:atIndex:] at VLCPlaybackService+MediaLibrary.m:117:5
frame #27: 0x0000000105833b85 VLC for iOS`-[VLCPlaybackService(self=0x000060000002bd00, _cmd="configureMediaListWithMLMedia:indexToPlay:", mlMedia=0x00006000032e1c20, index=0) configureMediaListWithMLMedia:indexToPlay:] at VLCPlaybackService+MediaLibrary.m:112:5
frame #28: 0x0000000105832beb VLC for iOS`-[VLCPlaybackService(self=0x000060000002bd00, _cmd="playMediaAtIndex:fromCollection:", index=0, collection=0x00006000032e1c20) playMediaAtIndex:fromCollection:] at VLCPlaybackService+MediaLibrary.m:23:5
frame #29: 0x00000001059c0ba5 VLC for iOS`MediaCategoryViewController.play(media=0x00006000012a5100, indexPath=2 indices, self=0x00007fb1fe829600) at MediaCategoryViewController.swift:1492:28
frame #30: 0x00000001059bf897 VLC for iOS`MediaCategoryViewController.selectedItem(indexPath=2 indices, self=0x00007fb1fe829600) at MediaCategoryViewController.swift:990:13
frame #31: 0x00000001059c0c3c VLC for iOS`MediaCategoryViewController.collectionView(collectionView=0x00007fb1fc05fe00, indexPath=2 indices, self=0x00007fb1fe829600) at MediaCategoryViewController.swift:1013:9
frame #32: 0x00000001059c0cd1 VLC for iOS`@objc MediaCategoryViewController.collectionView(_:didSelectItemAt:) at <compiler-generated>:0
frame #33: 0x000000012807e04e UIKitCore`-[UICollectionView _selectItemAtIndexPath:animated:scrollPosition:notifyDelegate:deselectPrevious:performCustomSelectionAction:] + 1113
frame #34: 0x00000001280b4861 UIKitCore`-[UICollectionView _userSelectItemAtIndexPath:] + 194
frame #35: 0x00000001280b4b0e UIKitCore`-[UICollectionView touchesEnded:withEvent:] + 670
frame #36: 0x0000000128a7d1e2 UIKitCore`forwardTouchMethod + 312
frame #37: 0x0000000128a7d1e2 UIKitCore`forwardTouchMethod + 312
frame #38: 0x0000000128a7d1e2 UIKitCore`forwardTouchMethod + 312
frame #39: 0x000000012850f905 UIKitCore`_UIGestureEnvironmentUpdate + 8951
frame #40: 0x000000012850d186 UIKitCore`-[UIGestureEnvironment _updateForEvent:window:] + 897
frame #41: 0x0000000128a90098 UIKitCore`-[UIWindow sendEvent:] + 5290
frame #42: 0x0000000128a66160 UIKitCore`-[UIApplication sendEvent:] + 820
frame #43: 0x0000000128afecfd UIKitCore`__dispatchPreprocessedEventFromEventQueue + 8713
frame #44: 0x0000000128b014a0 UIKitCore`__processEventQueue + 8635
frame #45: 0x0000000128af7ccd UIKitCore`__eventFetcherSourceCallback + 232
frame #46: 0x000000010ffb2833 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
frame #47: 0x000000010ffb272b CoreFoundation`__CFRunLoopDoSource0 + 180
frame #48: 0x000000010ffb1bf8 CoreFoundation`__CFRunLoopDoSources0 + 242
frame #49: 0x000000010ffac2f4 CoreFoundation`__CFRunLoopRun + 871
frame #50: 0x000000010ffaba90 CoreFoundation`CFRunLoopRunSpecific + 562
frame #51: 0x0000000115e60c8e GraphicsServices`GSEventRunModal + 139
frame #52: 0x0000000128a4690e UIKitCore`-[UIApplication _run] + 928
frame #53: 0x0000000128a4b569 UIKitCore`UIApplicationMain + 101
frame #54: 0x0000000105854e18 VLC for iOS`main(argc=1, argv=0x00007ff7ba6ffa98) at main.m:20:16
frame #55: 0x0000000107e43f21 dyld_sim`start_sim + 10
frame #56: 0x000000010a49851e dyld`start + 462
thread #2
frame #0: 0x00007fff6faac05a libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff6fb06034 libsystem_pthread.dylib`_pthread_wqthread + 426
frame #2: 0x00007fff6fb04f57 libsystem_pthread.dylib`start_wqthread + 15
thread #3, name = 'gputools.smt_poll.0x600003c1c0c0'
frame #0: 0x00007fff6faad2be libsystem_kernel.dylib`__semwait_signal + 10
frame #1: 0x00000001111884a4 libsystem_c.dylib`nanosleep + 206
frame #2: 0x0000000111188395 libsystem_c.dylib`usleep + 53
frame #3: 0x000000010849e21c libMTLCapture.dylib`___lldb_unnamed_symbol2563$$libMTLCapture.dylib + 104
frame #4: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #5: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
* thread #4, queue = 'com.apple.root.default-qos', stop reason = EXC_BAD_ACCESS (code=1, address=0x40)
frame #0: 0x00007fff6faf96b2 libsystem_platform.dylib`_platform_strlen + 18
frame #1: 0x00000001111523d7 libsystem_c.dylib`__vfprintf + 4890
frame #2: 0x0000000111150cb8 libsystem_c.dylib`_vasprintf + 352
* frame #3: 0x000000010cd8c297 MobileVLCKit`__HandleMessage_block_invoke_2(.block_descriptor=0x0000600002993ec0, logger=<unavailable>, idx=<unavailable>, stop=<unavailable>) at VLCLibrary.m:346:21 [opt]
frame #4: 0x000000010ffb582c CoreFoundation`__NSARRAY_IS_CALLING_OUT_TO_A_BLOCK__ + 7
frame #5: 0x00000001100677e9 CoreFoundation`__53-[__NSArrayI enumerateObjectsWithOptions:usingBlock:]_block_invoke + 102
frame #6: 0x0000000111244a8e libdispatch.dylib`_dispatch_client_callout2 + 8
frame #7: 0x0000000111259266 libdispatch.dylib`_dispatch_apply_invoke + 242
frame #8: 0x0000000111244a5b libdispatch.dylib`_dispatch_client_callout + 8
frame #9: 0x0000000111256d6f libdispatch.dylib`_dispatch_root_queue_drain + 880
frame #10: 0x000000011125764e libdispatch.dylib`_dispatch_worker_thread2 + 196
frame #11: 0x00007fff6fb05f8a libsystem_pthread.dylib`_pthread_wqthread + 256
frame #12: 0x00007fff6fb04f57 libsystem_pthread.dylib`start_wqthread + 15
thread #5
frame #0: 0x00007fff6faac05a libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff6fb06034 libsystem_pthread.dylib`_pthread_wqthread + 426
frame #2: 0x00007fff6fb04f57 libsystem_pthread.dylib`start_wqthread + 15
thread #6, name = 'com.apple.uikit.eventfetch-thread'
frame #0: 0x00007fff6faaa97a libsystem_kernel.dylib`mach_msg_trap + 10
frame #1: 0x00007fff6faaace8 libsystem_kernel.dylib`mach_msg + 56
frame #2: 0x000000010ffb1e58 CoreFoundation`__CFRunLoopServiceMachPort + 319
frame #3: 0x000000010ffac46e CoreFoundation`__CFRunLoopRun + 1249
frame #4: 0x000000010ffaba90 CoreFoundation`CFRunLoopRunSpecific + 562
frame #5: 0x0000000109cade31 Foundation`-[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 213
frame #6: 0x0000000109cae0aa Foundation`-[NSRunLoop(NSRunLoop) runUntilDate:] + 72
frame #7: 0x0000000128b09d1e UIKitCore`-[UIEventFetcher threadMain] + 491
frame #8: 0x0000000109cd6f89 Foundation`__NSThread__start__ + 1009
frame #9: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #10: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #7
frame #0: 0x00007fff6fb04f48 libsystem_pthread.dylib`start_wqthread
thread #8
frame #0: 0x00007fff6faac05a libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff6fb06034 libsystem_pthread.dylib`_pthread_wqthread + 426
frame #2: 0x00007fff6fb04f57 libsystem_pthread.dylib`start_wqthread + 15
thread #9
frame #0: 0x00007fff6faad3ea libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6fb09a6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
frame #2: 0x00000001082435e2 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 18
frame #3: 0x000000010b7c23dd VLCMediaLibraryKit`medialibrary::ModificationNotifier::run() [inlined] void std::__1::condition_variable::wait<medialibrary::ModificationNotifier::run()::$_1>(this=0x00007fb1fc837790, __lk=0x000070000d07e9e8, __pred=(unnamed class) @ r13)::$_1) at __mutex_base:404:9 [opt]
frame #4: 0x000000010b7c23b5 VLCMediaLibraryKit`medialibrary::ModificationNotifier::run(this=0x00007fb1fc837200) at ModificationsNotifier.cpp:252:28 [opt]
frame #5: 0x000000010b7c803e VLCMediaLibraryKit`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::ModificationNotifier::*)(), medialibrary::ModificationNotifier*> >(void*) [inlined] decltype(__a0=0x0000600003c76498)).*fp()) std::__1::__invoke<void (medialibrary::ModificationNotifier::*)(), medialibrary::ModificationNotifier*, void>(void (medialibrary::ModificationNotifier::*&&)(), medialibrary::ModificationNotifier*&&) at type_traits:3859:1 [opt]
frame #6: 0x000000010b7c8028 VLCMediaLibraryKit`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::ModificationNotifier::*)(), medialibrary::ModificationNotifier*> >(void*) [inlined] void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (medialibrary::ModificationNotifier::*)(), medialibrary::ModificationNotifier*, 2ul>(__t=size=3)(), medialibrary::ModificationNotifier*>&, std::__1::__tuple_indices<2ul>) at thread:287:5 [opt]
frame #7: 0x000000010b7c8024 VLCMediaLibraryKit`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::ModificationNotifier::*)(), medialibrary::ModificationNotifier*> >(__vp=0x0000600003c76480) at thread:298:5 [opt]
frame #8: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #9: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #10
frame #0: 0x00007fff6faad3ea libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6fb09a6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
frame #2: 0x00000001082435e2 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 18
frame #3: 0x000000010b7f927b VLCMediaLibraryKit`medialibrary::parser::VLCMetadataService::run(medialibrary::parser::IItem&) [inlined] void std::__1::condition_variable::wait<medialibrary::parser::VLCMetadataService::run(medialibrary::parser::IItem&)::$_2>(this=0x0000600000928c60, __lk=0x000070000d101d18, __pred=(unnamed class) @ scalar)::$_2) at __mutex_base:404:9 [opt]
frame #4: 0x000000010b7f9258 VLCMediaLibraryKit`medialibrary::parser::VLCMetadataService::run(this=<unavailable>, item=0x00007fb1faf15d48) at VLCMetadataService.cpp:139:16 [opt]
frame #5: 0x000000010b7ac2de VLCMediaLibraryKit`medialibrary::parser::Worker::mainloop(this=0x00006000003053b0) at ParserWorker.cpp:238:37 [opt]
frame #6: 0x000000010b7ad3ee VLCMediaLibraryKit`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*) [inlined] decltype(__a0=0x0000600003c4c198)).*fp()) std::__1::__invoke<void (medialibrary::parser::Worker::*)(), medialibrary::parser::Worker*, void>(void (medialibrary::parser::Worker::*&&)(), medialibrary::parser::Worker*&&) at type_traits:3859:1 [opt]
frame #7: 0x000000010b7ad3d8 VLCMediaLibraryKit`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*) [inlined] 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::Worker*, 2ul>(__t=size=3)(), medialibrary::parser::Worker*>&, std::__1::__tuple_indices<2ul>) at thread:287:5 [opt]
frame #8: 0x000000010b7ad3d4 VLCMediaLibraryKit`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*> >(__vp=0x0000600003c4c180) at thread:298:5 [opt]
frame #9: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #10: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #11
frame #0: 0x00007fff6faad3ea libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6fb09aa4 libsystem_pthread.dylib`_pthread_cond_wait + 1302
frame #2: 0x000000010ce267bd MobileVLCKit`vlc_cond_timedwait(p_condvar=0x00007fb1fbb14300, p_mutex=0x00007fb1fbb14288, deadline=<unavailable>) at thread.c:291:15 [opt]
frame #3: 0x000000010ce12f1a MobileVLCKit`Thread(data=0x00007fb1fbb14250) at background_worker.c:144:17 [opt]
frame #4: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #5: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #13
frame #0: 0x00007fff6faad3ea libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6fb09a6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
frame #2: 0x0000000108243673 libc++.1.dylib`std::__1::condition_variable::__do_timed_wait(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) + 93
frame #3: 0x000000010b800051 VLCMediaLibraryKit`medialibrary::fs::libvlc::Directory::read() const [inlined] std::__1::cv_status std::__1::condition_variable::wait_for<long long, std::__1::ratio<1l, 1000000000l> >(this=0x000070000d38a9f0, __lk=0x000070000d38a9d0) at __mutex_base:0 [opt]
frame #4: 0x000000010b800032 VLCMediaLibraryKit`medialibrary::fs::libvlc::Directory::read() const [inlined] void std::__1::condition_variable::__do_timed_wait<std::__1::chrono::steady_clock>(this=0x000070000d38a9f0, __lk=0x000070000d38a9d0, __tp=time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1, 1000000000> > > @ r15) at __mutex_base:518:5 [opt]
frame #5: 0x000000010b800032 VLCMediaLibraryKit`medialibrary::fs::libvlc::Directory::read() const [inlined] std::__1::cv_status std::__1::condition_variable::wait_until<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >(this=0x000070000d38a9f0, __lk=0x000070000d38a9d0) at __mutex_base:421:5 [opt]
frame #6: 0x000000010b800032 VLCMediaLibraryKit`medialibrary::fs::libvlc::Directory::read() const [inlined] bool std::__1::condition_variable::wait_until<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >, medialibrary::fs::libvlc::Directory::read() const::$_1>(this=0x000070000d38a9f0, __lk=0x000070000d38a9d0, __pred=(unnamed class) @ scalar) const::$_1) at __mutex_base:433:13 [opt]
frame #7: 0x000000010b800032 VLCMediaLibraryKit`medialibrary::fs::libvlc::Directory::read() const [inlined] bool std::__1::condition_variable::wait_for<long long, std::__1::ratio<1l, 1l>, medialibrary::fs::libvlc::Directory::read() const::$_1>(this=0x000070000d38a9f0, __lk=0x000070000d38a9d0, __pred=(unnamed class) @ scalar) const::$_1) at __mutex_base:477:12 [opt]
frame #8: 0x000000010b800005 VLCMediaLibraryKit`medialibrary::fs::libvlc::Directory::read(this=0x0000600001264018) const at Directory.cpp:97:24 [opt]
frame #9: 0x000000010b78b0f6 VLCMediaLibraryKit`medialibrary::fs::CommonDirectory::files(this=0x0000600001264018) const at CommonDirectory.cpp:47:9 [opt]
frame #10: 0x000000010b78b51a VLCMediaLibraryKit`medialibrary::fs::CommonDirectory::contains(this=<unavailable>, fileName=".nomedia") const at CommonDirectory.cpp:82:15 [opt]
frame #11: 0x000000010b77e3ef VLCMediaLibraryKit`medialibrary::FsDiscoverer::checkFolder(this=<unavailable>, folderFs=nullptr, folder=nullptr, fsFactory=0x0000600000305698) const at FsDiscoverer.cpp:338:40 [opt]
frame #12: 0x000000010b77daac VLCMediaLibraryKit`medialibrary::FsDiscoverer::reloadFolder(this=0x0000600000d2cb40, f=nullptr, fsFactory=0x0000600000305698) at FsDiscoverer.cpp:90:9 [opt]
frame #13: 0x000000010b780234 VLCMediaLibraryKit`medialibrary::FsDiscoverer::reload(this=0x0000600000d2cb40, entryPoint="file:///Users/fkuehne/Library/Developer/CoreSimulator/Devices/9ACBFCEA-5820-4C4D-AA4C-3FC62FD04EC4/data/Containers/Data/Application/5B80109B-8944-4C21-B0B8-7F95199A63D0/Documents/") at FsDiscoverer.cpp:248:5 [opt]
frame #14: 0x000000010b779541 VLCMediaLibraryKit`medialibrary::DiscovererWorker::runReload(this=0x00007fb1fbb0f9e0, entryPoint="file:///Users/fkuehne/Library/Developer/CoreSimulator/Devices/9ACBFCEA-5820-4C4D-AA4C-3FC62FD04EC4/data/Containers/Data/Application/5B80109B-8944-4C21-B0B8-7F95199A63D0/Documents/") at DiscovererWorker.cpp:537:38 [opt]
frame #15: 0x000000010b779122 VLCMediaLibraryKit`medialibrary::DiscovererWorker::run(this=0x00007fb1fbb0f9e0) at DiscovererWorker.cpp:490:17 [opt]
frame #16: 0x000000010b77ad8e VLCMediaLibraryKit`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::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> >(void*) [inlined] decltype(__a0=0x0000600003c1d7f8)).*fp()) std::__1::__invoke<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*, void>(void (medialibrary::DiscovererWorker::*&&)(), medialibrary::DiscovererWorker*&&) at type_traits:3859:1 [opt]
frame #17: 0x000000010b77ad78 VLCMediaLibraryKit`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::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> >(void*) [inlined] void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*, 2ul>(__t=size=3)(), medialibrary::DiscovererWorker*>&, std::__1::__tuple_indices<2ul>) at thread:287:5 [opt]
frame #18: 0x000000010b77ad74 VLCMediaLibraryKit`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::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> >(__vp=0x0000600003c1d7e0) at thread:298:5 [opt]
frame #19: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #20: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #14, name = 'AVAudioSession Notify Thread'
frame #0: 0x00007fff6faaa97a libsystem_kernel.dylib`mach_msg_trap + 10
frame #1: 0x00007fff6faaace8 libsystem_kernel.dylib`mach_msg + 56
frame #2: 0x000000010ffb1e58 CoreFoundation`__CFRunLoopServiceMachPort + 319
frame #3: 0x000000010ffac46e CoreFoundation`__CFRunLoopRun + 1249
frame #4: 0x000000010ffaba90 CoreFoundation`CFRunLoopRunSpecific + 562
frame #5: 0x00000001113fb16d AudioSession`CADeprecated::GenericRunLoopThread::Entry(void*) + 157
frame #6: 0x000000011140d20b AudioSession`CADeprecated::CAPThread::Entry(CADeprecated::CAPThread*) + 77
frame #7: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #8: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #15, name = 'AMCP Logging Spool'
frame #0: 0x00007fff6faaa9b6 libsystem_kernel.dylib`semaphore_wait_trap + 10
frame #1: 0x000000011334cbd8 caulk`caulk::mach::semaphore::wait_or_error() + 16
frame #2: 0x000000011334805e caulk`caulk::concurrent::details::worker_thread::run() + 36
frame #3: 0x00000001133480b2 caulk`void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*) + 41
frame #4: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #5: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #16
frame #0: 0x0000000111152f30 libsystem_c.dylib`__vfprintf + 7795
frame #1: 0x000000011115edb5 libsystem_c.dylib`_vsnprintf + 316
frame #2: 0x000000011115ee75 libsystem_c.dylib`vsnprintf + 95
frame #3: 0x000000010ce0df8b MobileVLCKit`vlc_memstream_printf [inlined] vlc_memstream_vprintf(fmt="%%%02hhX", args=<unavailable>) at memstream.c:174:5 [opt]
frame #4: 0x000000010ce0df0d MobileVLCKit`vlc_memstream_printf(ms=0x000070000d696da8, fmt="%%%02hhX") at memstream.c:191:11 [opt]
frame #5: 0x000000010ce111d6 MobileVLCKit`vlc_uri_fixup_inner(str=<unavailable>, extras=":/?#[]@") at url.c:856:13 [opt]
frame #6: 0x000000010e783f25 MobileVLCKit`ProcessMRL(str="\U00000004\U00000090!9sº\U0000000e3Ú»µu\U00000018e\U00000084ÿ\U0000009c\U00000004c6\U00000099úSþq\U00000081Y\f}¶sä(\U00000017X¶sÙs?Ç®O¬\U00000006\U0000008fZq\U00000006¾\U00000014´ªùµAñ\U00000088\U00000094\U0000008cu]¼|\U00000005ÿ2ºJíy~Ê\U0000001bÒϳ¥ \U00000099\U00000083ÁÁ²\U00000006=ô\U00000087-\U00000082\U0000009e\U00000018x0î\U00000006PfH:\U0000009b'Ä\U00000095n\U0000008f\U0000009a×\U000000967\"\U00000014\vs]üSc\U0000008aè\U0000008e2Ä%¦Ô%ûQã\U0000000e?ñÛí%XT\U00000005æ6°¦Ä\U00000099\t", base="file:///Users/fkuehne/Library/Developer/CoreSimulator/Devices/9ACBFCEA-5820-4C4D-AA4C-3FC62FD04EC4/data/Containers/Data/Application/5B80109B-8944-4C21-B0B8-7F95199A63D0/Documents/X-MEN%20-%20DAYS%20OF%20FUTURE%20PAST%20-%202.vlc") at playlist.c:176:17 [opt]
frame #7: 0x000000010e77c28c MobileVLCKit`ReadDir(p_demux=0x00007fb1fba19ff0, p_subitems=0x0000600003c54000) at m3u.c:304:23 [opt]
frame #8: 0x000000010e893e1a MobileVLCKit`Demux(p_demux=0x00007fb1fba1a370) at directory.c:38:9 [opt]
frame #9: 0x000000010cde2c93 MobileVLCKit`MainLoop [inlined] demux_Demux(p_demux=0x00007fb1fba1a370) at vlc_demux.h:358:12 [opt]
frame #10: 0x000000010cde2c85 MobileVLCKit`MainLoop [inlined] MainLoopDemux(p_input=0x00007fb1fc904ef0) at input.c:575:17 [opt]
frame #11: 0x000000010cde2c46 MobileVLCKit`MainLoop(p_input=0x00007fb1fc904ef0, b_interactive=<unavailable>) at input.c:721:17 [opt]
frame #12: 0x000000010cde427c MobileVLCKit`Preparse(data=0x00007fb1fc904ef0) at input.c:530:13 [opt]
frame #13: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #14: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #17
frame #0: 0x00007fff6faad3ea libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6fb09a6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
frame #2: 0x000000010cda3a83 MobileVLCKit`worker_thread(data=0x00007fb1fbb259b0) at media_player.c:1212:9 [opt]
frame #3: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #4: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #18
frame #0: 0x00007fff6faac0ea libsystem_kernel.dylib`__ulock_wait + 10
frame #1: 0x000000011124534f libdispatch.dylib`_dlock_wait + 45
frame #2: 0x00000001112451b1 libdispatch.dylib`_dispatch_thread_event_wait_slow + 40
frame #3: 0x000000011125450e libdispatch.dylib`__DISPATCH_WAIT_FOR_QUEUE__ + 341
frame #4: 0x0000000111253f3a libdispatch.dylib`_dispatch_sync_f_slow + 230
frame #5: 0x000000010cd89358 MobileVLCKit`-[VLCEventManager startEventLoop](self=0x0000600000d2c500, _cmd=<unavailable>) at VLCEventManager.m:217:17 [opt]
frame #6: 0x000000010cd88cde MobileVLCKit`EventDispatcherMainLoop(user_data=<unavailable>) at VLCEventManager.m:94:5 [opt]
frame #7: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #8: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #19, name = 'com.apple.CFSocket.private'
frame #0: 0x00007fff6fab2d5a libsystem_kernel.dylib`__select + 10
frame #1: 0x000000010ffc6eb9 CoreFoundation`__CFSocketManager + 647
frame #2: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #3: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #20
frame #0: 0x00007fff6faac05a libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff6fb06034 libsystem_pthread.dylib`_pthread_wqthread + 426
frame #2: 0x00007fff6fb04f57 libsystem_pthread.dylib`start_wqthread + 15
thread #21
frame #0: 0x00007fff6faac05a libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff6fb06034 libsystem_pthread.dylib`_pthread_wqthread + 426
frame #2: 0x00007fff6fb04f57 libsystem_pthread.dylib`start_wqthread + 15
thread #22
frame #0: 0x00007fff6faac05a libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff6fb06034 libsystem_pthread.dylib`_pthread_wqthread + 426
frame #2: 0x00007fff6fb04f57 libsystem_pthread.dylib`start_wqthread + 15
thread #23
frame #0: 0x00007fff6faac05a libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff6fb06034 libsystem_pthread.dylib`_pthread_wqthread + 426
frame #2: 0x00007fff6fb04f57 libsystem_pthread.dylib`start_wqthread + 15
thread #24
frame #0: 0x00007fff6faad3ea libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6fb09a6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
frame #2: 0x000000010cda3a83 MobileVLCKit`worker_thread(data=0x00007fb203d38d30) at media_player.c:1212:9 [opt]
frame #3: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #4: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #25
frame #0: 0x00007fff6faad3ea libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6fb09a6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
frame #2: 0x000000010cda804b MobileVLCKit`playlist_thread(data=0x00007fb203d38b00) at media_list_player.c:341:13 [opt]
frame #3: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #4: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #26
frame #0: 0x00007fff6faad3ea libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6fb09aa4 libsystem_pthread.dylib`_pthread_cond_wait + 1302
frame #2: 0x000000010ce267bd MobileVLCKit`vlc_cond_timedwait(p_condvar=0x00007fb1faf16450, p_mutex=0x00007fb1faf163d8, deadline=<unavailable>) at thread.c:291:15 [opt]
frame #3: 0x000000010ce12f1a MobileVLCKit`Thread(data=0x00007fb1faf163a0) at background_worker.c:144:17 [opt]
frame #4: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #5: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #27
frame #0: 0x000000010e819fff MobileVLCKit`vlc_stream_Control(s=0x00007fb2035fbe20, query=0) at vlc_stream.h:292:5 [opt]
frame #1: 0x000000010e819708 MobileVLCKit`matroska_segment_c::ParseSeekHead(this=0x00007fb2038818a0, seekhead=0x0000600000b7c0b0) at matroska_segment_parse.cpp:94:5 [opt]
frame #2: 0x000000010e8149e5 MobileVLCKit`matroska_segment_c::Preload(this=0x00007fb2038818a0) at matroska_segment.cpp:602:17 [opt]
frame #3: 0x000000010e82ac23 MobileVLCKit`demux_sys_t::AnalyseAllSegmentsFound(this=0x00007fb1ff150fe0, p_demux=<unavailable>, p_stream1=<unavailable>, b_initial=<unavailable>) at demux.cpp:509:25 [opt]
frame #4: 0x000000010e8314e7 MobileVLCKit`Open(p_this=0x00007fb2035fbfe0) at mkv.cpp:127:17 [opt]
frame #5: 0x000000010cdbf032 MobileVLCKit`vlc_module_load at modules.c:183:15 [opt]
frame #6: 0x000000010cdbefdd MobileVLCKit`vlc_module_load(obj=<unavailable>, capability="demux", name=<unavailable>, strict=<unavailable>, probe=(MobileVLCKit`demux_Probe at demux.c:179)) at modules.c:279:23 [opt]
frame #7: 0x000000010cdd4dd0 MobileVLCKit`demux_NewAdvanced(p_obj=<unavailable>, p_parent_input=0x00007fb1fb112ef0, psz_access=<unavailable>, psz_demux=<unavailable>, psz_location="/Users/fkuehne/Library/Developer/CoreSimulator/Devices/9ACBFCEA-5820-4C4D-AA4C-3FC62FD04EC4/data/Containers/Data/Application/5B80109B-8944-4C21-B0B8-7F95199A63D0/Documents/FMA%20-%20MultiChapter.mkv", s=<unavailable>, out=0x00006000032a1170, b_preparsing=true) at demux.c:264:29 [opt]
frame #8: 0x000000010cde7bb5 MobileVLCKit`InputSourceNew [inlined] InputDemuxNew(p_input=0x00007fb1fb112ef0, p_source=0x00007fb1ff14f890, psz_access="file", psz_demux=<unavailable>, psz_path=<unavailable>, psz_anchor="") at input.c:2627:15 [opt]
frame #9: 0x000000010cde796f MobileVLCKit`InputSourceNew(p_input=0x00007fb1fb112ef0, psz_mrl=<unavailable>, psz_forced_demux=<unavailable>, b_in_can_fail=<unavailable>) at input.c:2737:19 [opt]
frame #10: 0x000000010cde12e1 MobileVLCKit`Init(p_input=0x00007fb1fb112ef0) at input.c:1375:14 [opt]
frame #11: 0x000000010cde422b MobileVLCKit`Preparse(data=0x00007fb1fb112ef0) at input.c:520:10 [opt]
frame #12: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #13: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
thread #28, queue = 'com.apple.root.default-qos'
frame #0: 0x00007fff6fb09f5b libsystem_pthread.dylib`pthread_cpu_number_np
frame #1: 0x00000001111d1dca libsystem_malloc.dylib`nanov2_allocate + 98
frame #2: 0x00000001111d1d17 libsystem_malloc.dylib`nanov2_malloc + 56
frame #3: 0x00000001111d6d1d libsystem_malloc.dylib`_malloc_zone_malloc + 117
frame #4: 0x0000000111346ba6 libsystem_trace.dylib`os_trace_blob_grow + 103
frame #5: 0x0000000111347136 libsystem_trace.dylib`os_trace_blob_vaddf + 181
frame #6: 0x0000000111347233 libsystem_trace.dylib`os_trace_blob_addf + 132
frame #7: 0x000000011134a7e6 libsystem_trace.dylib`_os_log_fmt_compose_data + 386
frame #8: 0x00000001113497af libsystem_trace.dylib`os_log_fmt_compose + 1711
frame #9: 0x00000001113507b2 libsystem_trace.dylib`_os_log_impl_compose + 117
frame #10: 0x0000000111350440 libsystem_trace.dylib`_os_log_impl_mirror_to_stderr + 543
frame #11: 0x000000011134fb9f libsystem_trace.dylib`_os_log_impl_flatten_and_send + 8588
frame #12: 0x000000011135124e libsystem_trace.dylib`_os_log_with_args_impl + 466
frame #13: 0x00000001100231be CoreFoundation`_CFLogvEx3 + 198
frame #14: 0x0000000109c8321d Foundation`_NSLogv + 97
frame #15: 0x0000000109c832bb Foundation`NSLog + 138
frame #16: 0x000000010cd8c6c9 MobileVLCKit`-[VLCConsoleLogger handleMessage:logLevel:context:](self=<unavailable>, _cmd=<unavailable>, message=<unavailable>, level=<unavailable>, context=<unavailable>) at VLCConsoleLogger.m:53:5 [opt]
frame #17: 0x000000010cd8c4c6 MobileVLCKit`__HandleMessage_block_invoke_2(.block_descriptor=0x0000600002993ec0, logger=<unavailable>, idx=<unavailable>, stop=<unavailable>) at VLCLibrary.m:358:17 [opt]
frame #18: 0x000000010ffb582c CoreFoundation`__NSARRAY_IS_CALLING_OUT_TO_A_BLOCK__ + 7
frame #19: 0x00000001100677e9 CoreFoundation`__53-[__NSArrayI enumerateObjectsWithOptions:usingBlock:]_block_invoke + 102
frame #20: 0x0000000111244a8e libdispatch.dylib`_dispatch_client_callout2 + 8
frame #21: 0x000000011125a922 libdispatch.dylib`_dispatch_apply_invoke_and_wait + 242
frame #22: 0x0000000111259cc9 libdispatch.dylib`_dispatch_apply_with_attr_f + 1345
frame #23: 0x0000000111259ecf libdispatch.dylib`dispatch_apply + 45
frame #24: 0x00000001100676f5 CoreFoundation`-[__NSArrayI enumerateObjectsWithOptions:usingBlock:] + 343
frame #25: 0x000000010cd8c22a MobileVLCKit`__HandleMessage_block_invoke(.block_descriptor=0x000070000ddb4830) at VLCLibrary.m:337:9 [opt]
frame #26: 0x0000000111244a5b libdispatch.dylib`_dispatch_client_callout + 8
frame #27: 0x00000001112541b5 libdispatch.dylib`_dispatch_lane_barrier_sync_invoke_and_complete + 132
frame #28: 0x000000010cd8ba5f MobileVLCKit`HandleMessage(data=<unavailable>, level=0, ctx=<unavailable>, fmt=<unavailable>, args=<unavailable>) at VLCLibrary.m:335:5 [opt]
frame #29: 0x000000010ce1d93f MobileVLCKit`vlc_vaLog [inlined] vlc_vaLogCallback(vlc=<unavailable>, type=3, item=<unavailable>, format="using %s module \"%s\"", ap=0x000070000ddb4a30) at messages.c:65:5 [opt]
frame #30: 0x000000010ce1d90d MobileVLCKit`vlc_vaLog(obj=<unavailable>, type=<unavailable>, module=<unavailable>, file=<unavailable>, line=<unavailable>, func=<unavailable>, format="using %s module \"%s\"", args=0x000070000ddb4a30) at messages.c:140:9 [opt]
frame #31: 0x000000010ce1da1e MobileVLCKit`vlc_Log(obj=<unavailable>, type=<unavailable>, module=<unavailable>, file=<unavailable>, line=<unavailable>, func=<unavailable>, format="using %s module \"%s\"") at messages.c:161:5 [opt]
frame #32: 0x000000010cdbf373 MobileVLCKit`vlc_module_load(obj=<unavailable>, capability=<unavailable>, name=<unavailable>, strict=<unavailable>, probe=(MobileVLCKit`generic_start at modules.c:352)) at modules.c:320:9 [opt]
frame #33: 0x000000010cdcd879 MobileVLCKit`access_New(parent=<unavailable>, input=<unavailable>, preparsing=<unavailable>, mrl=<unavailable>) at access.c:106:28 [opt]
frame #34: 0x000000010cdcdb45 MobileVLCKit`stream_AccessNew(parent=<unavailable>, input=0x00007fb1fcab04f0, preparsing=<unavailable>, url="file:///Users/fkuehne/Library/Developer/CoreSimulator/Devices/9ACBFCEA-5820-4C4D-AA4C-3FC62FD04EC4/data/Containers/Data/Application/5B80109B-8944-4C21-B0B8-7F95199A63D0/Documents/FMA%20-%20MultiChapter.mkv") at access.c:279:24 [opt]
frame #35: 0x000000010cde7266 MobileVLCKit`InputSourceNew [inlined] InputDemuxNew(p_input=0x00007fb1fcab04f0, p_source=0x00007fb1ff150a30, psz_access="file", psz_demux=<unavailable>, psz_path="/Users/fkuehne/Library/Developer/CoreSimulator/Devices/9ACBFCEA-5820-4C4D-AA4C-3FC62FD04EC4/data/Containers/Data/Application/5B80109B-8944-4C21-B0B8-7F95199A63D0/Documents/FMA%20-%20MultiChapter.mkv", psz_anchor="") at input.c:2604:26 [opt]
frame #36: 0x000000010cde718f MobileVLCKit`InputSourceNew(p_input=0x00007fb1fcab04f0, psz_mrl=<unavailable>, psz_forced_demux=<unavailable>, b_in_can_fail=<unavailable>) at input.c:2737:19 [opt]
frame #37: 0x000000010cde12e1 MobileVLCKit`Init(p_input=0x00007fb1fcab04f0) at input.c:1375:14 [opt]
frame #38: 0x000000010cde41b8 MobileVLCKit`Run(data=0x00007fb1fcab04f0) at input.c:494:10 [opt]
frame #39: 0x00007fff6fb094e1 libsystem_pthread.dylib`_pthread_start + 125
frame #40: 0x00007fff6fb04f6b libsystem_pthread.dylib`thread_start + 15
```3.5.0Maxime ChapeletMaxime Chapelethttps://code.videolan.org/videolan/VLCKit/-/issues/606Question: About the VLCEventManager class2022-05-09T13:53:06ZHank AndersonQuestion: About the VLCEventManager classIs it possible to implement the process without using VLCEventManager?
for example
https://code.videolan.org/videolan/VLCKit/-/blob/master/Sources/VLCMedia.m#L161
```objc
static void HandleMediaMetaChanged(const libvlc_event_t * event,...Is it possible to implement the process without using VLCEventManager?
for example
https://code.videolan.org/videolan/VLCKit/-/blob/master/Sources/VLCMedia.m#L161
```objc
static void HandleMediaMetaChanged(const libvlc_event_t * event, void * self)
{
@autoreleasepool {
[[VLCEventManager sharedManager] callOnMainThreadObject:(__bridge id)(self)
withMethod:@selector(metaChanged:)
withArgumentAsObject:[VLCMedia metaTypeToString:event->u.media_meta_changed.meta_type]];
}
}
```
↓
```objc
static void HandleMediaMetaChanged(const libvlc_event_t * event, void * self)
{
__block libvlc_meta_t meta_type = event->u.media_meta_changed.meta_type;
VLCMedia *media = (__bridge VLCMedia *)self;
__weak typeof(media) weakMedia = media;
dispatch_async(dispatch_get_main_queue(), ^{
__strong typeof(weakMedia) strongMedia = weakMedia;
if (!strongMedia) return;
[strongMedia metaChanged: meta_type];
});
}
```
Is it possible to implement it like this?
I also want to know what happens if I don't use VLCEventManager.
best regards.https://code.videolan.org/videolan/VLCKit/-/issues/605VLCMedia(stream:) keeps a weak reference to the stream AND calls close() on t...2022-05-13T19:51:42ZGeneVLCMedia(stream:) keeps a weak reference to the stream AND calls close() on the streamMobileVLCKit 3.3.17
What's the reason for `VLCMedia` to keep only a weak reference to the stream **and** call hard `close()` when playback is finished? This combination seems to create a lot of grief for zero benefit. Here is a use case...MobileVLCKit 3.3.17
What's the reason for `VLCMedia` to keep only a weak reference to the stream **and** call hard `close()` when playback is finished? This combination seems to create a lot of grief for zero benefit. Here is a use case.
The UIViewController plays the stream. The user clicks [back] without stopping the playback. The controller calls `player.stop()` which is asynchronous and takes time. Meanwhile iOS destroys the controller and kills the hard reference to the stream, the stream is gone. Then the player calls `close()` on already destroyed stream without checking if it's already nil.
Anything other than this combination of weak ref & `close` would make more sense:
* Want a weak reference? Then don't manage the stream for me, let me call `close()` in delegate or elsewhere.
* Want to manage the stream? Keep a hard reference.
* If you really really really want a weak reference and want to call `close()`, then check for `nil` before calling.
Your decision of weak ref & `close` forces me to maintain the app-level cache of streams.3.5.0Felix Paul Kühnefkuehne@videolan.orgFelix Paul Kühnefkuehne@videolan.orghttps://code.videolan.org/videolan/VLCKit/-/issues/604Crash when finishing audio-only playback from VLCMedia(stream: InputStream(da...2022-04-27T20:59:22ZGeneCrash when finishing audio-only playback from VLCMedia(stream: InputStream(data:data))MobileVLCKit 3.3.17, simulator.
Swift code:
```swift
self.audioPlayer = VLCMediaPlayer()
self.audioPlayer!.media = VLCMedia(stream: InputStream(data: data))
self.audioPlayer!.delegate = self
self.audioPlayer!.play()
```
The `data` is a ...MobileVLCKit 3.3.17, simulator.
Swift code:
```swift
self.audioPlayer = VLCMediaPlayer()
self.audioPlayer!.media = VLCMedia(stream: InputStream(data: data))
self.audioPlayer!.delegate = self
self.audioPlayer!.play()
```
The `data` is a Data object with WebM audio generated from Chrome (such audio has no valid duration). The audio plays correctly to the end, then it loops the last ~300 ms 3-4 times and crashes with `Thread 19: EXC_BAD_ACCESS (code=1, address=0xd1905c83c50)`:
```
MobileVLCKit`close_cb:
0x107058498 <+0>: stp x20, x19, [sp, #-0x20]!
0x10705849c <+4>: stp x29, x30, [sp, #0x10]
0x1070584a0 <+8>: add x29, sp, #0x10
0x1070584a4 <+12>: bl 0x10850e2f4 ; symbol stub for: objc_retain
-> 0x1070584a8 <+16>: mov x19, x0
0x1070584ac <+20>: cbz x0, 0x1070584ec ; <+84> at VLCMedia.m:115:1
```
Stacktrace:
```
#0 0x0000000102037f30 in objc_retain ()
#1 0x00000001070584a8 in close_cb at /Users/fkuehne/videolan/gits/VLCKit/Sources/VLCMedia.m:110
#2 0x0000000107088af8 in generic_stop ()
#3 0x0000000107088994 in vlc_module_unload ()
#4 0x0000000107088ab0 in module_unneed ()
#5 0x0000000107095bd0 in vlc_access_Destroy ()
#6 0x00000001070ae34c in vlc_stream_Delete ()
#7 0x00000001070ae34c in vlc_stream_Delete ()
#8 0x00000001070ae34c in vlc_stream_Delete ()
#9 0x00000001070ae34c in vlc_stream_Delete ()
#10 0x000000010709b8f4 in demux_Delete ()
#11 0x00000001070a81f4 in End ()
#12 0x00000001070a8614 in Run ()
#13 0x000000010a77f6c8 in _pthread_start ()
```https://code.videolan.org/videolan/VLCKit/-/issues/603QQ: will subtitle customization be ever available? (aka when version 4.0 will...2022-04-28T05:52:30ZmiosgitQQ: will subtitle customization be ever available? (aka when version 4.0 will be released?)Hello,
thank you for your work on VLCKit.
Version 4.0 was originally planned to be released for end 2019, but actually never landed.
When will you be releasing it? In that version, we'll have subtitle customization API (they are way too...Hello,
thank you for your work on VLCKit.
Version 4.0 was originally planned to be released for end 2019, but actually never landed.
When will you be releasing it? In that version, we'll have subtitle customization API (they are way too big).
Alternatively, can you just decrease the size of the subtitle by 40%?
Thank you.https://code.videolan.org/videolan/VLCKit/-/issues/602DVB subtitles aren't supported in mkv files on 3.02023-01-17T13:15:31ZMaxime ChapeletDVB subtitles aren't supported in mkv files on 3.0The MR for libvlc 3.0 is already open here https://code.videolan.org/videolan/vlc/-/merge_requests/1791 to fix it, but I open this issue just to keep track of the progress and its integration in next VLCKit releaseThe MR for libvlc 3.0 is already open here https://code.videolan.org/videolan/vlc/-/merge_requests/1791 to fix it, but I open this issue just to keep track of the progress and its integration in next VLCKit release3.5.0Maxime ChapeletMaxime Chapelet