title: program exit at the end of the video or after calling libvlc_media_player_stop
body: <p>I'm using vlc-3.0.0 for reading video frames into memory. The problem is the program exits when I call libvlc_media_player_stop function or it reaches to the end of the video. I'm on windows 7 and using Visual Studio 2012. Also using nightly build <a href="http://nightlies.videolan.org/build/win32/vlc-3.0.0-20151221-0002/" rel="nofollow">vlc-3.0.0-git-20151221-0002-win32-debug.zip</a> to test.</p>
  
  <p>Here is my source:</p>
  
  <pre><code>#include &lt;vlc/vlc.h&gt;
  #include &lt;string&gt;
  #include &lt;iostream&gt;
  
  static unsigned char* buffer = new unsigned char[1024*1024*3];
  
  static void cbVideoPrerenderDispatcher(void *p_video_data, unsigned char **pp_pixel_buffer, int size)
  {
      *pp_pixel_buffer = buffer;
  }
  
  static void cbVideoPostrenderDispatcher(void *p_video_data, unsigned char *p_pixel_buffer, int width, int height, int pixel_pitch, int size, long long pts)
  {
  
  }
  
  int main()
  {
      libvlc_media_player_t *mMedia_player;
      libvlc_media_t *media;
      libvlc_instance_t *vlcInstance;
      void *pUserData = 0;
  
      char *mVideoSource = "xylophone.mp4"; // size is 320x240
      char *vcodecStr = "I420";
  
      // VLC options
      char smem_options[1000];
      char* timeSyncStr = "time-sync";
  
  
      sprintf(smem_options
          , "#transcode{vcodec=%s,acodec=s16l}:smem{"
          "video-prerender-callback=%lld,"
          "video-postrender-callback=%lld,"
          "audio-prerender-callback=%lld,"
          "audio-postrender-callback=%lld,"
          "audio-data=%lld,"
          "video-data=%lld,"
          "%s},"
          , vcodecStr
          , (long long int)(intptr_t)(void*)&amp;cbVideoPrerenderDispatcher
          , (long long int)(intptr_t)(void*)&amp;cbVideoPostrenderDispatcher
          , (long long int)(intptr_t)(void*)0
          , (long long int)(intptr_t)(void*)0
          , (long long int)(intptr_t)0 //This would normally be useful data, 100 is just test data
          , (long long int)(intptr_t)0 //Test data
          , timeSyncStr); 
  
      const char * const vlc_args[] = {
          "-I", "dummy", // Don't use any interface
          "--ignore-config", // Don't use VLC's config
          //"--extraintf=logger", // Log anything
          "--verbose=0", // Be verbose
          "--sout", smem_options // Stream to memory
      };
  
      // We launch VLC
      vlcInstance = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);
  
      mMedia_player = libvlc_media_player_new(vlcInstance);
  
      media = libvlc_media_new_path(vlcInstance, mVideoSource);
  
      libvlc_media_player_set_media(mMedia_player, media);
      libvlc_media_release(media);
      libvlc_release(vlcInstance);
      libvlc_media_player_play(mMedia_player);
  
     int counter = 0;
     while(true)
     {
        if(++counter == 10)
           libvlc_media_player_stop(mMedia_player);
        _sleep(40);
     }
  }
  </code></pre>
  
  <p>And this is the output of the program if it helps:</p>
  
  <pre><code>core libvlc debug: VLC media player - 3.0.0-git-20151221-0002 Vetinari
  core libvlc debug: Copyright © 1996-2015 the VideoLAN team
  core libvlc debug: revision 2.2.0-git-5758-g0358127
  core libvlc debug: configured with ../extras/package/win32/../../../configure  '--enable-update-check' '--enable-lua' '--enable-faad' '--enable-flac' '--enable-theora' '--enable-twolame' '--enable-quicktime' '--enable-avcodec' '--enable-merge-ffmpeg' '--enable-dca' '--enable-mpc' '--enable-libass' '--enable-x264' '--enable-schroedinger' '--enable-realrtsp' '--enable-live555' '--enable-dvdread' '--enable-shout' '--enable-goom' '--enable-caca' '--disable-sdl' '--enable-qt' '--enable-skins2' '--enable-sse' '--enable-mmx' '--enable-libcddb' '--enable-zvbi' '--disable-telx' '--enable-nls' '--host=i686-w64-mingw32' '--enable-debug' 'host_alias=i686-w64-mingw32'
  core libvlc debug: using multimedia timers as clock source
  core libvlc debug:  min period: 1 ms, max period: 1000000 ms
  core libvlc debug: searching plug-in modules
  core libvlc debug: loading plugins cache file D:\apps\VLC\vlc-3.0.0\plugins\plugins.dat
  core libvlc warning: cannot read D:\apps\VLC\vlc-3.0.0\plugins\plugins.dat: No such file or directory
  core libvlc debug: recursively browsing `D:\apps\VLC\vlc-3.0.0\plugins'
  core libvlc debug: plug-ins loaded: 436 modules
  core logger debug: looking for logger module matching "any": 2 candidates
  core logger debug: using logger module "console"
  core libvlc debug: translation test: code is "C"
  core libvlc debug: CPU has capabilities MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 FPU 
  core generic debug: creating audio output
  core audio output debug: looking for audio output module matching "any": 6 candidates
  mmdevice audio output debug: using default device
  mmdevice audio output debug: version 2 session control unavailable
  mmdevice audio output debug: display name changed: VLC media player (LibVLC 3.0.0-git-20151221-0002)
  mmdevice audio output debug: volume from -65.250000 dB to +0.000000 dB with 0.031250 dB increments
  core audio output debug: using audio output module "mmdevice"
  core generic debug: keeping audio output
  core input debug: Creating an input for 'xylophone.mp4'
  core stream output debug: using sout chain=`transcode{vcodec=I420,acodec=s16l}:smem{video-prerender-callback=18236016,video-postrender-callback=18235968,audio-prerender-callback=0,audio-postrender-callback=0,audio-data=0,video-data=0,time-sync},'
  core stream output debug: stream=`smem'
  core stream out debug: looking for sout stream module matching "smem": 22 candidates
  core stream out debug: set config option: sout-smem-video-prerender-callback to 18236016
  core stream out debug: set config option: sout-smem-video-postrender-callback to 18235968
  core stream out debug: set config option: sout-smem-audio-prerender-callback to 0
  core stream out debug: set config option: sout-smem-audio-postrender-callback to 0
  core stream out debug: set config option: sout-smem-audio-data to 0
  core stream out debug: set config option: sout-smem-video-data to 0
  core stream out debug: set config option: sout-smem-time-sync to (null)
  core stream out debug: using sout stream module "smem"
  core stream output debug: stream=`transcode'
  core stream out debug: looking for sout stream module matching "transcode": 22 candidates
  core stream out debug: set config option: sout-transcode-vcodec to I420
  core stream out debug: set config option: sout-transcode-acodec to s16l
  stream_out_transcode stream out debug: Checking codec mapping for s16l got s16l 
  stream_out_transcode stream out debug: codec audio=s16l 0Hz 0 channels 96Kb/s
  stream_out_transcode stream out debug: Checking video codec mapping for I420 got I420 
  stream_out_transcode stream out debug: codec video=I420 0x0 scaling: 0.000000 0kb/s
  core stream out debug: using sout stream module "stream_out_transcode"
  core input debug: using timeshift granularity of 50 MiB
  core input debug: using timeshift path: C:\Users\GTANIS~1.MST\AppData\Local\Temp
  core input debug: `file:///D:/projeler/denemeler/libvlctest/ConsoleApplication1/xylophone.mp4' gives access `file' demux `' path `/D:/projeler/denemeler/libvlctest/ConsoleApplication1/xylophone.mp4'
  core input source debug: specified demux: any
  core input source debug: creating demux: access='file' demux='any' location='/D:/projeler/denemeler/libvlctest/ConsoleApplication1/xylophone.mp4' file='D:\projeler\denemeler\libvlctest\ConsoleApplication1\xylophone.mp4'
  core demux debug: looking for access_demux module matching "file": 13 candidates
  core demux debug: no access_demux modules matched
  core access debug: creating access: file:///D:/projeler/denemeler/libvlctest/ConsoleApplication1/xylophone.mp4
  core access debug:  (path: D:\projeler\denemeler\libvlctest\ConsoleApplication1\xylophone.mp4)
  core access debug: looking for access module matching "file": 25 candidates
  core access debug: using access module "filesystem"
  core stream debug: looking for stream_filter module matching "prefetch,cache_read": 7 candidates
  cache_read stream debug: Using stream method for AStream*
  cache_read stream debug: starting pre-buffering
  cache_read stream debug: received first data after 1 ms
  cache_read stream debug: pre-buffering done 1024 bytes in 0s - 999 KiB/s
  core stream debug: using stream_filter module "cache_read"
  core stream debug: looking for stream_filter module matching "any": 7 candidates
  core stream debug: no stream_filter modules matched
  core stream debug: looking for stream_filter module matching "record": 7 candidates
  core stream debug: using stream_filter module "record"
  core input source debug: creating demux: access='file' demux='any' location='/D:/projeler/denemeler/libvlctest/ConsoleApplication1/xylophone.mp4' file='D:\projeler\denemeler\libvlctest\ConsoleApplication1\xylophone.mp4'
  core demux debug: looking for demux module matching "mp4": 68 candidates
  mp4 stream debug: read box: "mvhd" creation 694977d-48h:00m:00s modification 694977d-48h:00m:00s time scale 30000 duration 0d-00h:00m:04s rate 1.000000 volume 1.000000 next track id 2
  mp4 stream debug: read box: "tkhd" creation 694977d-48h:00m:00s modification 694977d-48h:00m:00s duration 1d-39h:10m:00s track ID 1 layer 0 volume 0.000000 rotation 0.000000 scaleX 1.000000 scaleY 1.000000 translateX 0.000000 translateY 0.000000 width 320.000000 height 240.000000. Matrix: 65536 0 0 0 65536 0 0 0 1073741824
  mp4 stream debug: read box: "mdhd" creation 694977d-48h:00m:00s modification 694977d-48h:00m:00s time scale 30000 duration 1d-39h:10m:00s language    
  mp4 stream debug: read box: "hdlr" handler type: "vide" name: "VideoHandler"
  mp4 stream debug: read box: "vmhd" graphics-mode 0 opcolor (0, 0, 0)
  mp4 stream debug: read box: "url" url: (null)
  mp4 stream debug: read box: "dref" entry-count 1
  mp4 stream debug: read box: "avcC" version=1 profile=0x4d level=0xd length size=4 sps=1 pps=1
  mp4 stream debug:          - sps[0] length=11
  mp4 stream debug:          - pps[0] length=4
  mp4 stream debug: read box: "vide" in stsd 320x240 depth 24 (AVC Coding)
  mp4 stream debug: read box: "stsd" entry-count 1
  mp4 stream debug: read box: "stts" entry-count 1
  mp4 stream debug: read box: "stsc" entry-count 1
  mp4 stream debug: read box: "stsz" sample-size 0 sample-count 141
  mp4 stream debug: read box: "co64" entry-count 1
  mp4 stream debug: read box: "stss" entry-count 2
  mp4 stream debug: read box: "hdlr" handler type: "mdir" name: "(null)"
  mp4 demux debug: unrecognized major media specification (mp42).
  mp4 demux debug: added fragment moov
  mp4 stream debug: dumping root Box "root"
  mp4 stream debug: |   + ftyp size 24 offset 0
  mp4 stream debug: |   + mdat size 473925 offset 24
  mp4 stream debug: |   + moov size 1256 offset 473949
  mp4 stream debug: |   |   + mvhd size 108 offset 473957
  mp4 stream debug: |   |   + trak size 1072 offset 474065
  mp4 stream debug: |   |   |   + tkhd size 92 offset 474073
  mp4 stream debug: |   |   |   + mdia size 972 offset 474165
  mp4 stream debug: |   |   |   |   + mdhd size 32 offset 474173
  mp4 stream debug: |   |   |   |   + hdlr size 44 offset 474205
  mp4 stream debug: |   |   |   |   + minf size 888 offset 474249
  mp4 stream debug: |   |   |   |   |   + vmhd size 20 offset 474257
  mp4 stream debug: |   |   |   |   |   + dinf size 36 offset 474277
  mp4 stream debug: |   |   |   |   |   |   + dref size 28 offset 474285
  mp4 stream debug: |   |   |   |   |   |   |   + url  size 12 offset 474301
  mp4 stream debug: |   |   |   |   |   + stbl size 824 offset 474313
  mp4 stream debug: |   |   |   |   |   |   + stsd size 136 offset 474321
  mp4 stream debug: |   |   |   |   |   |   |   + avc1 size 120 offset 474337
  mp4 stream debug: |   |   |   |   |   |   |   |   + avcC size 34 offset 474423
  mp4 stream debug: |   |   |   |   |   |   + stts size 24 offset 474457
  mp4 stream debug: |   |   |   |   |   |   + stsc size 28 offset 474481
  mp4 stream debug: |   |   |   |   |   |   + stsz size 584 offset 474509
  mp4 stream debug: |   |   |   |   |   |   + stco size 20 offset 475093
  mp4 stream debug: |   |   |   |   |   |   + stss size 24 offset 475113
  mp4 stream debug: |   |   + udta size 68 offset 475137
  mp4 stream debug: |   |   |   + meta size 52 offset 475145
  mp4 stream debug: |   |   |   |   + hdlr size 32 offset 475157
  mp4 demux debug: found 1 tracks
  mp4 demux debug: track[Id 0x1] read 1 chunk
  mp4 demux warning: STTS table of 1 entries
  mp4 demux debug: track[Id 0x1] read 141 samples length:4s
  core input debug: selecting program id=0
  mp4 demux debug: adding track[Id 0x1] video (enable) language undef
  fragments demux debug: fragment offset 473949, data 32&lt;-&gt;473949 @0, durations (null)
  core demux debug: using demux module "mp4"
  mp4 demux warning: control query 3 unimplemented
  mp4 demux warning: control query 2 unimplemented
  core input debug: looking for a subtitle file in D:\projeler\denemeler\libvlctest\ConsoleApplication1\
  core decoder debug: looking for packetizer module matching "any": 23 candidates
  h264 decoder debug: found NAL_SPS (sps_id=0)
  h264 decoder debug: found NAL_PPS (pps_id=0 sps_id=0)
  h264 decoder debug: Packetizer fed with AVC, nal length size=4
  core decoder debug: using packetizer module "h264"
  core input debug: starting in async mode
  core demux meta debug: looking for meta reader module matching "any": 2 candidates
  lua demux meta debug: Trying Lua scripts in C:\Users\gtanisik.MSTNET\AppData\Roaming\vlc\lua\meta\reader
  lua demux meta debug: Trying Lua scripts in D:\apps\VLC\vlc-3.0.0\lua\meta\reader
  lua demux meta debug: Trying Lua playlist script D:\apps\VLC\vlc-3.0.0\lua\meta\reader\filename.luac
  lua demux meta warning: Error loading script D:\apps\VLC\vlc-3.0.0\lua\meta\reader\filename.luac: D:\apps\VLC\vlc-3.0.0\lua\meta\reader\filename.luac: bad header in precompiled chunk
  core demux meta debug: no meta reader modules matched
  core input debug: `file:///D:/projeler/denemeler/libvlctest/ConsoleApplication1/xylophone.mp4' successfully opened
  mp4 demux debug: track[Id 0x1] using Sync Sample Box (stss)
  mp4 demux debug: stss gives 0 --&gt; 0 (sample number)
  core input debug: Buffering 0%
  core input debug: switching to sync mode
  core input debug: Buffering 11%
  core input debug: Buffering 22%
  core stream output debug: adding a new sout input (sout_input: 02c54d48)
  stream_out_transcode stream out debug: creating video transcoding from fcc=`h264' to fcc=`I420'
  core generic debug: looking for decoder module matching "any": 44 candidates
  core input debug: Buffering 33%
  core input debug: Buffering 44%
  core input debug: Buffering 55%
  core input debug: Buffering 66%
  core input debug: Buffering 77%
  core input debug: Buffering 88%
  core input debug: Buffering 100%
  core input debug: Stream buffering done (333 ms in 2 ms)
  avcodec generic debug: CPU flags: 0x010053db
  avcodec generic debug: allowing 4 thread(s) for decoding
  avcodec generic debug: codec (h264) started
  avcodec generic debug: using frame thread mode with 4 threads
  core generic debug: using decoder module "avcodec"
  core encoder debug: looking for encoder module matching "any": 22 candidates
  avcodec encoder debug: CPU flags: 0x010053db
  avcodec encoder debug: Time base for probing setted to 1/1000000
  avcodec encoder debug: Time base set to 1/1000000
  avcodec encoder debug: found encoder Raw video
  core encoder debug: using encoder module "avcodec"
  core encoder debug: removing module "avcodec"
  core input debug: Decoder wait done in 14 ms
  avcodec generic debug: available hardware decoder output format 61 (dxva2_vld)
  avcodec generic debug: available hardware decoder output format 128 (d3d11va_vld)
  avcodec generic debug: available software decoder output format 0 (yuv420p)
  core generic debug: looking for hw decoder module matching "any": 2 candidates
  core generic debug: no hw decoder modules matched
  core generic debug: looking for hw decoder module matching "any": 2 candidates
  core generic debug: no hw decoder modules matched
  avcodec generic warning: plane 0 not aligned: disabling direct rendering
  stream_out_transcode stream out debug: decoder aspect is 1.240310:1
  stream_out_transcode stream out debug: source pixel aspect is 0.930233:1
  stream_out_transcode stream out debug: scaled pixel aspect is 0.930233:1
  stream_out_transcode stream out debug: source 320x240, destination 320x240
  stream_out_transcode stream out debug: source fps 30/1, destination 30/1
  stream_out_transcode stream out debug: encoder aspect is 320:258
  stream_out_transcode stream out debug: destination (after video filters) 320x258
  core encoder debug: looking for encoder module matching "any": 22 candidates
  avcodec encoder debug: CPU flags: 0x010053db
  avcodec encoder debug: Time base for probing setted to 1/30
  avcodec encoder debug: Time base set to 1/30
  avcodec encoder debug: found encoder Raw video
  core encoder debug: using encoder module "avcodec"
  The thread 0x21b8 has exited with code 0 (0x0).
  core decoder debug: killing decoder fourcc `h264', 0 PES in FIFO
  core decoder debug: removing module "h264"
  core stream output debug: removing a sout input (sout_input: 02c54d48)
  The thread 0x157c has exited with code 3 (0x3).
  The thread 0x17f4 has exited with code 3 (0x3).
  The thread 0xef0 has exited with code 3 (0x3).
  The thread 0x15b4 has exited with code 3 (0x3).
  The thread 0x1008 has exited with code 3 (0x3).
  The thread 0x1ff8 has exited with code 3 (0x3).
  The thread 0x16b8 has exited with code 3 (0x3).
  The thread 0x1664 has exited with code 3 (0x3).
  The thread 0x1474 has exited with code 3 (0x3).
  The thread 0x1f94 has exited with code 3 (0x3).
  The thread 0x1ddc has exited with code 3 (0x3).
  The program '[6332] ConsoleApplication1.exe' has exited with code 3 (0x3).
  </code></pre>
  
  <p>What am I missing? <br/></p>