macOS: vlcClose [NSView layer] must be used from main thread only
Hello,
Environment:
- VLCKit 3/4 up to date
- macOS 12.6
- XCode 14.0.1
- Swift 5.7
Code:
let vlcView = NSView(frame: self.view.bounds)
self.view.addSubview(vlcView)
mediaPlayer.drawable = vlcView
mediaPlayer.media = VLCMedia(url: URL(fileURLWithPath: lmediaURL))
mediaPlayer.play()
Issue:
When stopping the playback the Main Thread Checker throws errors:
at libvlc/vlc/modules/video_output/caopengllayer.m
---
/**
* Invalidates VLC objects (notably _vlc_vd)
* This method must be called in VLCs module Close (or indirectly by the View)
* to ensure all critical VLC resources that might be gone when the module is
* closed are properly NULLed. This is necessary as dealloc is only called later
* as it has to be done async on the main thread, because NSView must be
* dealloc'ed on the main thread and the view own the layer, so the layer
* will stay valid until the view is gone, and might still use _vlc_vd
* even after the VLC module is gone and the resources would be invalid.
*/
- (void)vlcClose
{
@synchronized (self) {
[(VLCCAOpenGLLayer *)self.layer vlcClose]; // <<<< -[NSView layer] must be used from main thread only
}
}
---
Additional logs:
2022-10-24 19:39:40.759112+0400 vlcmedia[94100:2062179] creating player instance using shared library
[0000600000944140] libvlc libvlc debug: VLC media player - 4.0.0-dev Otto Chriek
[0000600000944140] libvlc libvlc debug: Copyright © 1996-2022 the VideoLAN team
[0000600000944140] libvlc libvlc debug: revision 4.0.0-dev-20569-g7c6186cab0
[0000600000944140] libvlc libvlc debug: configured with ../../configure '--with-contrib=/Users/seiv/Projects/XCodeProjects/apps/packages/VLCKit3/libvlc/vlc/build-macosx-arm64/contrib/arm64-macosx12.3' '--host=aarch64-apple-darwin' '--build=aarch64-apple-darwin21.6.0' '--prefix=/Users/seiv/Projects/XCodeProjects/apps/packages/VLCKit3/libvlc/vlc/build-macosx-arm64/vlc-macosx12.3-arm64' '--disable-sse' '--disable-mmx' '--disable-a52' '--disable-vcd' '--disable-libcddb' '--disable-macosx' '--disable-macosx-avfoundation' '--disable-lua' '--disable-qt' '--disable-skins2' '--disable-vlc' '--disable-vlm' '--disable-nls' '--disable-notify' '--disable-projectm' '--disable-goom' '--disable-dvdread' '--disable-dvdnav' '--disable-bluray' '--disable-linsys' '--disable-libva' '--disable-gme' '--disable-tremor' '--disable-fluidsynth' '--disable-jack' '--disable-pulse' '--disable-mtp' '--disable-screen' '--disable-sparkle' '--disable-addonmanagermodules' '--disable-mad' '--disable-shared' '--enable-static' 'ac_cv_func_basename_r=no' 'ac_cv_func_clock_getres=no' 'ac_cv_func_clock_gettime=no' 'ac_cv_func_clock_settime=no' 'ac_cv_func_dirname_r=no' 'ac_cv_func_getentropy=no' 'ac_cv_func_mkostemp=no' 'ac_cv_func_mkostemps=no' 'ac_cv_func_timingsafe_bcmp=no' 'ac_cv_func_open_wmemstream=no' 'ac_cv_func_fmemopen=no' 'ac_cv_func_open_memstream=no' 'ac_cv_func_futimens=no' 'ac_cv_func_utimensat=no' 'ac_cv_func_thread_get_register_pointer_values=no' 'ac_cv_func_aligned_alloc=no' 'ac_cv_func_timespec_get=no' 'build_alias=aarch64-apple-darwin21.6.0' 'host_alias=aarch64-apple-darwin' 'CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang' 'CFLAGS=-mmacosx-version-min=10.11 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -g' 'LDFLAGS=-Wl,-macosx_version_min,10.11 -mmacosx-version-min=10.11 -arch arm64 ' 'CPPFLAGS=-arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk' 'CPP=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -E' 'CXX=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++' 'CXXFLAGS=-mmacosx-version-min=10.11 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -g' 'OBJC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang' 'OBJCFLAGS=-mmacosx-version-min=10.11 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -g' 'PKG_CONFIG_LIBDIR='
[0000600000944140] libvlc libvlc debug: plug-ins loaded: 385 modules
[000000016f9c9b10] libvlc generic debug: looking for logger module matching "any": 3 candidates
[000000016f9c9b10] libvlc generic debug: using logger module "console"
[000000016f9c9af0] libvlc generic debug: looking for tracer module matching "none": 0 candidates
[000000016f9c9af0] libvlc generic debug: no tracer modules matched with name none
[0000600000944140] libvlc libvlc debug: translation test: code is "C"
[000000016f9c9ac0] libvlc generic debug: looking for keystore module matching "memory": 1 candidates
[000000016f9c9ac0] libvlc generic debug: using keystore module "memory"
[0000600000944140] libvlc libvlc debug: CPU has capabilities FPU
[0000600000944140] libvlc libvlc warning: Key "Command+0" bound to multiple actions
[000000016f9c99e0] libvlc generic debug: looking for interface module matching "macosx_dialog_provider": 0 candidates
[000000016f9c99e0] libvlc generic debug: no interface modules matched with name macosx_dialog_provider
[0000600002d73200] libvlc interface error: no suitable interface module
[0000600000944140] libvlc libvlc error: interface "macosx_dialog_provider" initialization failed
[000000014c70a120] libvlc player debug: creating audio output
[000000016f9c9bc0] libvlc generic debug: looking for audio output module matching "any": 1 candidates
[000000014e064e00] libvlc input debug: Creating an input for 'example.webm'
[000000014e064e00] libvlc input debug: using timeshift granularity of 50 MiB
[000000014e064e00] libvlc input debug: using default timeshift path
[000000014e064e00] libvlc input debug: `file:///u/seiv/example.webm' gives access `file' demux `any' path `/u/seiv/example.webm'
[000060000035c000] libvlc access debug: creating access: file:///u/seiv/example.webm
[000060000035c000] libvlc access debug: (path: /u/seiv/example.webm)
[0000000170686b90] libvlc generic debug: looking for access module matching "file": 2 candidates
[0000000170686b90] libvlc generic debug: using access module "filesystem"
[0000000170686bc0] libvlc generic debug: looking for stream_filter module matching "prefetch,cache": 3 candidates
[000060000035c1a0] libvlc stream filter debug: Using stream method for AStream*
[000060000035c1a0] libvlc stream filter debug: starting pre-buffering
[000060000035c1a0] libvlc stream filter debug: received first data after 0 ms
[000060000035c1a0] libvlc stream filter debug: pre-buffering done 1024 bytes in 0s - 1022 KiB/s
[0000000170686bc0] libvlc generic debug: using stream_filter module "cache_read"
[0000000170686c50] libvlc generic debug: looking for stream_filter module matching "any": 7 candidates
[0000000170686c50] libvlc generic debug: no stream_filter modules matched with name any
[0000000170686bf0] libvlc generic debug: looking for stream_directory module matching "any": 1 candidates
[0000000170686bf0] libvlc generic debug: no stream_directory modules matched with name any
[000000014e064e00] libvlc input debug: attachment of directory-extractor failed for file:///u/seiv/example.webm
[0000000170686c20] libvlc generic debug: looking for stream_filter module matching "record": 1 candidates
[0000000170686c20] libvlc generic debug: using stream_filter module "record"
[000000014e064e00] libvlc input debug: creating demux "any", URL: file:///u/seiv/example.webm, path: /u/seiv/example.webm
[0000000170686c50] libvlc generic debug: looking for demux module matching "ext-webm": 58 candidates
[0000600000346ff0] libvlc demux debug: | + Seek head
[0000600000346ff0] libvlc demux debug: | - info at 278
[0000600000346ff0] libvlc demux debug: | + Information
[0000600000346ff0] libvlc demux debug: | | + TimecodeScale=1000000
[0000600000346ff0] libvlc demux debug: | | + Muxing Application=Lavf56.40.101
[0000600000346ff0] libvlc demux debug: | | + Writing Application=Lavf56.40.101
[0000600000346ff0] libvlc demux debug: | | + UID=d9708a78e3e136f4
[0000600000346ff0] libvlc demux debug: | | + Duration=9400
[0000600000346ff0] libvlc demux debug: | - tracks at 359
[0000600000346ff0] libvlc demux debug: | + Tracks
[0000600000346ff0] libvlc demux debug: | | + Track Entry
[0000600000346ff0] libvlc demux debug: | | | + Track Number=1
[0000600000346ff0] libvlc demux debug: | | | + Track UID=1
[0000600000346ff0] libvlc demux debug: | | | + Track Lacing=0
[0000600000346ff0] libvlc demux debug: | | | + Track Language=`und'
[0000600000346ff0] libvlc demux debug: | | | + Track CodecId=V_VP8
[0000600000346ff0] libvlc demux debug: | | | + Track Type=video
[0000600000346ff0] libvlc demux debug: | | | + Track Default Duration=40000
[0000600000346ff0] libvlc demux debug: | | | + Track Video
[0000600000346ff0] libvlc demux debug: | | | | + width=282
[0000600000346ff0] libvlc demux debug: | | | | + height=500
[0000600000346ff0] libvlc demux debug: | - cues at 813423
[0000600000346ff0] libvlc demux debug: | + Cues
[0000600000346ff0] libvlc demux debug: MKV/Ebml Parser: m_el[mi_level] == NULL
[0000600000346ff0] libvlc demux debug: | - loading cues done.
[0000600000346ff0] libvlc demux debug: | + Information
[0000600000346ff0] libvlc demux debug: | + Tracks
[0000600000346ff0] libvlc demux debug: | + Cluster
[0000600000346ff0] libvlc demux debug: NEW START CHAPTER uid=0
[0000600000346ff0] libvlc demux debug: found 1 es
[000000014e064e00] libvlc input debug: selecting program id=0
[000000014e064e00] libvlc input debug: ES track added: 'video/1' (fourcc: 'VP80')
[0000600000346ff0] libvlc demux debug: seek: preroll{ track: 1, pts: 0, fpos: 447 skip: 447}
[0000600000346ff0] libvlc demux debug: seek: preroll{ req: 1, start-pts: 1, start-fpos: 447}
[0000000170686c50] libvlc generic debug: using demux module "mkv"
[000000014e064e00] libvlc input debug: looking for a subtitle file in /u/seiv/
[0000000170686430] libvlc generic debug: looking for video decoder module matching "any": 11 candidates
[000000011c80e000] libvlc decoder error: 'VP80' is not supported
[000000011c80e000] libvlc decoder debug: vout: none found
[000000011c80e000] libvlc decoder debug: vout change: decoder size
[000000011c80e000] libvlc decoder debug: vout change: visible size
[0000000170685e90] libvlc generic debug: looking for text renderer module matching "freetype": 2 candidates
[0000000170685e90] libvlc generic debug: using text renderer module "freetype"
[0000000170685ee0] libvlc generic debug: looking for video converter module matching "any": 17 candidates
[000000011c706190] libvlc scale debug: 32x32 (32x32) chroma: YUVA colorspace: Undefined -> 16x16 (16x16) chroma: RGBA colorspace: Undefined with scaling using Bicubic (good quality)
[0000000170685ee0] libvlc generic debug: using video converter module "swscale"
[0000000170685ee0] libvlc generic debug: looking for video converter module matching "any": 17 candidates
[000000011c70db70] libvlc scale debug: YUVP to YUVA converter
[0000000170685ee0] libvlc generic debug: using video converter module "yuvp"
[000000011c808c00] libvlc video output debug: Deinterlacing available
[000000011c808c00] libvlc video output debug: deinterlace -1, mode auto, is_needed 0
[0000000170685f60] libvlc generic debug: looking for vout window module matching "any": 3 candidates
[0000000170685f60] libvlc generic debug: using vout window module "window_macosx"
[0000000170685ee0] libvlc generic debug: looking for inhibit module matching "any": 1 candidates
[0000000170685ee0] libvlc generic debug: using inhibit module "iokit_inhibit"
[0000000170686190] libvlc generic debug: looking for decoder device module matching "any": 1 candidates
[0000000170686190] libvlc generic debug: using decoder device module "videotoolbox"
[000000011c80e000] libvlc decoder warning: vt session error: 'kVTCouldNotFindVideoDecoderErr'
[000000011c80e000] libvlc decoder debug: using ffmpeg Lavc58.134.100
[000000011c80e000] libvlc decoder debug: CPU flags: 0x00000068
[000000011c80e000] libvlc decoder debug: allowing 6 thread(s) for decoding
[000000011c80e000] libvlc decoder debug: codec (vp8) started
[000000011c80e000] libvlc decoder debug: using frame thread mode with 6 threads
[0000000170686430] libvlc generic debug: using video decoder module "avcodec"
[000000014e064e00] libvlc input debug: ES track selected: 'video/1' (fourcc: 'VP80')
[0000000170686e20] libvlc generic debug: looking for meta reader module matching "any": 1 candidates
[0000600000351860] libvlc access debug: creating access: file:///u/seiv/example.webm
[0000600000351860] libvlc access debug: (path: /u/seiv/example.webm)
[0000000170686710] libvlc generic debug: looking for access module matching "file": 2 candidates
[0000000170686710] libvlc generic debug: using access module "filesystem"
[00000001706867c0] libvlc generic debug: looking for stream_filter module matching "prefetch,cache": 3 candidates
[0000600000341fb0] libvlc stream filter debug: Using stream method for AStream*
[0000600000341fb0] libvlc stream filter debug: starting pre-buffering
[0000600000341fb0] libvlc stream filter debug: received first data after 0 ms
[0000600000341fb0] libvlc stream filter debug: pre-buffering done 1024 bytes in 0s - 19230 KiB/s
[00000001706867c0] libvlc generic debug: using stream_filter module "cache_read"
[0000600000341fb0] libvlc stream filter debug: removing "stream_filter" module "cache_read"
[0000600000351860] libvlc access debug: removing "access" module "filesystem"
[0000000170686e20] libvlc generic debug: no meta reader modules matched with name any
[000000014e064e00] libvlc input debug: `file:///u/seiv/example.webm' successfully opened
[000000014e064e00] libvlc input debug: program(0): using clock source: 'audio'
[000000011c80e000] libvlc decoder debug: available software decoder output format 0 (yuv420p)
[vp8 @ 0x14c82d200] Format yuv420p chosen by get_format().
[000000011c80e000] libvlc decoder debug: vout change: decoder size
[000000011c80e000] libvlc decoder debug: vout change: chroma
[000060000095c140] libvlc window debug: requested window size: 282x500
[00006000036c1770] libvlc inhibit debug: Inhibiting display sleep
[000000014e064e00] libvlc input debug: Stream buffering done (1040 ms in 1 ms)
[000000011c808c00] libvlc video output debug: deinterlace -1, mode auto, is_needed 0
[000000011c808c00] libvlc video output debug: Opening vout display wrapper
[000000011c808c00] libvlc video output warning: window size missing
[000000014c62cea0] libvlc vout display debug: looking for vout display module matching "any": 3 candidates
[000000017081e400] libvlc generic debug: looking for opengl filter module matching "renderer": 3 candidates
[0000600001c75560] libvlc generic: Initialized libplacebo 4.0.0-dev-20569-g7c6186cab0 (API v192)
[000000014c62e680] libvlc generic debug:
=== Vertex shader for fourcc: I420 ===
[000000014c62e680] libvlc generic debug: [0] #version 120
[000000014c62e680] libvlc generic debug: [1] attribute vec2 PicCoordsIn;
varying vec2 PicCoords;
attribute vec3 VertexPosition;
uniform mat3 StereoMatrix;
uniform mat4 ProjectionMatrix;
uniform mat4 ZoomMatrix;
uniform mat4 ViewMatrix;
void main() {
PicCoords = (StereoMatrix * vec3(PicCoordsIn, 1.0)).st;
gl_Position = ProjectionMatrix * ZoomMatrix * ViewMatrix
* vec4(VertexPosition, 1.0);
}
[000000014c62e680] libvlc generic debug:
=== Fragment shader for fourcc: I420, colorspace: 1 ===
[000000014c62e680] libvlc generic debug: [0] #version 120
[000000014c62e680] libvlc generic debug: [1]
[000000014c62e680] libvlc generic debug: [2]
[000000014c62e680] libvlc generic debug: [3] uniform sampler2D Textures[3];
vec4 _main_0_0(vec4 color) {
return color;
}
uniform mat4 ConvMatrix;
vec4 vlc_texture(vec2 tex_coords) {
vec4 pixel = vec4(
texture2D(Textures[0], tex_coords).r,
texture2D(Textures[1], tex_coords).r,
texture2D(Textures[2], tex_coords).r,
1.0);
vec4 result = ConvMatrix * pixel;
result = _main_0_0(result);
return result;
}
[000000014c62e680] libvlc generic debug: [4] varying vec2 PicCoords;
void main() {
gl_FragColor = vlc_texture(PicCoords);
}
[000000017081e400] libvlc generic debug: using opengl filter module "vout_macosx"
[000000014c62cea0] libvlc vout display debug: using vout display module "caopengllayer"
[000000011c808c00] libvlc video output debug: original format sz 288x512, of (0,0), vsz 282x500, 4cc I420, sar 1:1, orient: normal, msk r0x0 g0x0 b0x0
[000000011c705970] libvlc spu text debug: removing "text renderer" module "freetype"
[000000017081e8f0] libvlc generic debug: looking for text renderer module matching "freetype": 2 candidates
[000000017081e8f0] libvlc generic debug: using text renderer module "freetype"
[000060000095c140] libvlc window debug: requested window size: 282x500
[000000011c80e000] libvlc decoder debug: Received first picture
[000000014e064e00] libvlc input debug: Decoder wait done in 47 ms
[000000014e064e00] libvlc input debug: control type=27
[000000011c808c00] libvlc video output warning: picture is too late to be displayed (missing 40 ms)
[000000014c62cea0] libvlc vout display debug: picture displayed late (missing 0 ms)
[0000600000346ff0] libvlc demux warning: find KaxCues FIXME
[0000600000346ff0] libvlc demux debug: MKV/Ebml Parser: m_el[mi_level] == NULL
[0000600000346ff0] libvlc demux warning: EOF
[0000600000346ff0] libvlc demux warning: cannot get block EOF?
[000000014e064e00] libvlc input debug: EOF reached
[000000011c80e000] libvlc decoder debug: killing decoder fourcc `VP80'
[000000011c80e000] libvlc decoder debug: removing "video decoder" module "avcodec"
=================================================================
Main Thread Checker: UI API called on a background thread: -[NSView layer]
PID: 94100, TID: 2062673, Thread name: (none), Queue name: com.apple.root.default-qos.overcommit, QoS: 0
Backtrace:
4 VLCKit 0x0000000106fde6c4 -[VLCVideoLayerView vlcClose] + 44
5 VLCKit 0x0000000106fe04a4 Close + 60
6 VLCKit 0x00000001070b9784 vout_display_Delete + 176
7 VLCKit 0x00000001070d0f74 vout_CloseWrapper + 156
8 VLCKit 0x00000001070bd80c vout_ReleaseDisplay + 200
9 VLCKit 0x00000001070bd738 vout_StopDisplay + 92
10 VLCKit 0x00000001070a2ab8 input_resource_PutVoutLocked + 236
11 VLCKit 0x00000001070a29b4 input_resource_PutVout + 60
12 VLCKit 0x0000000107063280 DeleteDecoder + 512
13 VLCKit 0x0000000107062d20 vlc_input_decoder_Delete + 408
14 VLCKit 0x000000010707281c EsOutDestroyDecoder + 120
15 VLCKit 0x00000001070722ec EsOutUnselectEs + 288
16 VLCKit 0x0000000107079384 EsOutVaPrivControlLocked + 908
17 VLCKit 0x000000010706ea94 EsOutPrivControl + 72
18 VLCKit 0x0000000107080f54 es_out_vaPrivControl + 124
19 VLCKit 0x0000000107080fa8 es_out_PrivControl + 72
20 VLCKit 0x000000010708096c CmdExecutePrivControl + 140
21 VLCKit 0x0000000107080408 PrivControlLocked + 212
22 VLCKit 0x000000010707d914 PrivControl + 80
23 VLCKit 0x00000001070895f8 es_out_vaPrivControl + 124
24 VLCKit 0x0000000107089540 es_out_PrivControl + 72
25 VLCKit 0x0000000107087018 es_out_SetMode + 56
26 VLCKit 0x0000000107084770 End + 68
27 VLCKit 0x0000000107081de8 Run + 104
28 libsystem_pthread.dylib 0x0000000100561890 _pthread_start + 148
29 libsystem_pthread.dylib 0x000000010056baa8 thread_start + 8
2022-10-24 19:39:51.786638+0400 vlcmedia[94100:2062673] [reports] Main Thread Checker: UI API called on a background thread: -[NSView layer]
PID: 94100, TID: 2062673, Thread name: (none), Queue name: com.apple.root.default-qos.overcommit, QoS: 0
Backtrace:
4 VLCKit 0x0000000106fde6c4 -[VLCVideoLayerView vlcClose] + 44
5 VLCKit 0x0000000106fe04a4 Close + 60
6 VLCKit 0x00000001070b9784 vout_display_Delete + 176
7 VLCKit 0x00000001070d0f74 vout_CloseWrapper + 156
8 VLCKit 0x00000001070bd80c vout_ReleaseDisplay + 200
9 VLCKit 0x00000001070bd738 vout_StopDisplay + 92
10 VLCKit 0x00000001070a2ab8 input_resource_PutVoutLocked + 236
11 VLCKit 0x00000001070a29b4 input_resource_PutVout + 60
12 VLCKit 0x0000000107063280 DeleteDecoder + 512
13 VLCKit 0x0000000107062d20 vlc_input_decoder_Delete + 408
14 VLCKit 0x000000010707281c EsOutDestroyDecoder + 120
15 VLCKit 0x00000001070722ec EsOutUnselectEs + 288
16 VLCKit 0x0000000107079384 EsOutVaPrivControlLocked + 908
17 VLCKit 0x000000010706ea94 EsOutPrivControl + 72
18 VLCKit 0x0000000107080f54 es_out_vaPrivControl + 124
19 VLCKit 0x0000000107080fa8 es_out_PrivControl + 72
20 VLCKit 0x000000010708096c CmdExecutePrivControl + 140
21 VLCKit 0x0000000107080408 PrivControlLocked + 212
22 VLCKit 0x000000010707d914 PrivControl + 80
23 VLCKit 0x00000001070895f8 es_out_vaPrivControl + 124
24 VLCKit 0x0000000107089540 es_out_PrivControl + 72
25 VLCKit 0x0000000107087018 es_out_SetMode + 56
26 VLCKit 0x0000000107084770 End + 68
27 VLCKit 0x0000000107081de8 Run + 104
28 libsystem_pthread.dylib 0x0000000100561890 _pthread_start + 148
29 libsystem_pthread.dylib 0x000000010056baa8 thread_start + 8
[000000014c62e680] libvlc generic debug: removing "opengl filter" module "vout_macosx"
[000000014c62e680] libvlc generic debug: attempt to destroy nonexistent variable "module-name"
[000000014c70a120] libvlc player debug: saving a free vout
[000000014e064e00] libvlc input debug: ES track unselected: 'video/1' (fourcc: 'VP80')
[0000600000346ff0] libvlc demux debug: removing "demux" module "mkv"
[0000600000346ff0] libvlc demux debug: attempt to destroy nonexistent variable "module-name"
[000000014e064e00] libvlc input debug: ES track deleted: 'video/1' (fourcc: 'VP80')
[000000014e064e00] libvlc input debug: Program doesn't contain anymore ES
[00006000003448f0] libvlc stream filter debug: removing "stream_filter" module "record"
[000060000035c1a0] libvlc stream filter debug: removing "stream_filter" module "cache_read"
[000060000035c000] libvlc access debug: removing "access" module "filesystem"
[000000014e064e00] libvlc input debug: destroying input for 'example.webm'
[000000011c808c00] libvlc video output debug: stop free vout
[00006000036c1770] libvlc inhibit debug: Releasing previous IOPMAssertion
[00006000036c1770] libvlc inhibit debug: Removed previous inhibition
button "Stop" pressed - Stopped
Edited by Serge Ivamov