Matroska file (.MKV) with microDVD subtitles (.SUB) has sub sync issues
As pointed in here: http://forum.videolan.org/viewtopic.php?f=14&t=49887
MKV files with microDVD subtitles do have some sync issues, VLC log also gives some error messages (main error: option sub-original-fps does not exist). Subrip subtitles work OK. Same issue on 0.8.6 , 0.9.2 and on vlc-1.0.0-git-20080908-0006 (tested on Windows only).
Sample files: http://www.raiska.com/vlc/subtest.mkv (Matroska video file which shows numbers) http://www.raiska.com/vlc/subtest.sub (microDVD subtitle file which shows the issue) http://www.raiska.com/vlc/subtest2.srt (Subrip subtitle which shows the correct timing) http://www.raiska.com/vlc/subtest.avi (AVI file that that works OK with both subtitles)
VLC messages output with verbose 2 (vlc-1.0.0-git-20080908-0006):
main debug: adding item `subtest.mkv' ( C:\subtest.mkv )
main debug: control type=0
main debug: control: stopping input
main debug: rebuilding array of current - root Playlist
main debug: rebuild done - 6 items, index 4
main debug: dying input
main debug: dying input
main debug: dying input
qt4 debug: Updating the stream status: 8
main debug: dying input
main debug: thread ended
main debug: thread times: real 6m33.343750s, kernel 0m0.468750s, user 0m0.093750s
mkv debug: Stopping the UI Hook
main debug: removing module "access_file"
main debug: removing module "mkv"
main debug: removing module "access_file"
main debug: removing module "subtitle"
main debug: removing module "access_file"
main debug: removing module "subtitle"
main debug: removing module "access_file"
main debug: removing module "subtitle"
main debug: removing module "access_file"
avcodec debug: ffmpeg codec (MPEG-4 Video) stopped
main debug: removing module "avcodec"
main debug: thread ended
main debug: thread times: real 6m33.312500s, kernel 0m0.062500s, user 0m0.328125s
main debug: killing decoder fourcc `XVID', 0 PES in FIFO
main debug: dying input
main debug: removing module "swscale"
main debug: removing module "blend"
main debug: thread times: real 0m0.000000s, kernel 0m0.000000s, user 0m0.000000s
main debug: removing module "freetype"
main debug: thread ended
main debug: thread times: real 6m33.265625s, kernel 0m3.390625s, user 0m20.140625s
glwin32 debug: closing video
glwin32 debug: DirectXEventThread terminating
glwin32 debug: DirectXCloseWindow
glwin32 debug: WinProc WM_DESTROY
main debug: removing module "qt4"
main debug: thread ended
qt4 debug: Video is not needed anymore
qt4 debug: Updating the geometry
main debug: thread times: real 6m33.312500s, kernel 0m0.015625s, user 0m0.015625s
main debug: removing module "glwin32"
main debug: removing module "opengl"
main debug: removing module "subsdec"
main debug: thread ended
main debug: thread times: real 6m33.203125s, kernel 0m0.000000s, user 0m0.000000s
main debug: killing decoder fourcc `subt', 0 PES in FIFO
main debug: thread ended
main debug: dead input
main debug: thread times: real 6m33.453125s, kernel 0m0.718750s, user 0m0.468750s
main debug: TIMER input launching for 'subtest.mkv' : 52.150 ms - Total 52.150 ms / 1 intvls (Avg 52.150 ms)
main debug: starting new item
main debug: processing request item subtest.mkv node null skip 0
main debug: resyncing on subtest.mkv
main debug: subtest.mkv is at 5
main debug: creating new input thread
main debug: Creating an input for 'subtest.mkv'
main debug: thread started
main debug: waiting for thread initialization
main debug: `C:\subtest.mkv' gives access `' demux `' path `C:\subtest.mkv'
main debug: creating demux: access='' demux='' path='C:\subtest.mkv'
main debug: looking for access_demux module: 1 candidate
main debug: TIMER module_Need() : 0.777 ms - Total 0.777 ms / 1 intvls (Avg 0.777 ms)
main debug: creating access '' path='C:\subtest.mkv'
main debug: looking for access module: 5 candidates
vcd debug: trying .cue file: C:\subtest.cue
vcd debug: could not find .cue file
access_file debug: opening file `C:\subtest.mkv'
main debug: using access module "access_file"
main debug: TIMER module_Need() : 1.622 ms - Total 1.622 ms / 1 intvls (Avg 1.622 ms)
main debug: Using AStream*Stream
main debug: pre-buffering...
main debug: received first data for our buffer
main debug: creating demux: access='' demux='' path='C:\subtest.mkv'
main debug: looking for demux module: 59 candidates
mkv debug: | + Information
mkv debug: | | + Muxing Application=libebml-0.7.5 & libmatroska-0.7.7
mkv debug: | | + Writing Application=VirtualDubMod 1.5.10.2 (build 2540/release)
mkv debug: | | + UID=-1774900119
mkv debug: | | + Duration=12512
mkv debug: | | + Unknown (N11libmatroska10KaxDateUTCE)
mkv debug: | + Seek head
mkv debug: | | + ParseSeekHead Unknown (N7libebml9EbmlCrc32E)
mkv debug: | | + Seek
mkv debug: | - info at 36
mkv debug: | + Information
mkv debug: | | + Seek
mkv debug: | - tracks at 521
mkv debug: | + Tracks
mkv debug: | | + Track Entry
mkv debug: | | | + Track Number=1
mkv debug: | | | + Track UID=2520067177
mkv debug: | | | + Track Type=video
mkv debug: | | | + Track Lacing=0
mkv debug: | | | + Track MinCache=1
mkv debug: | | | + Track CodecId=V_MS/VFW/FOURCC
mkv debug: | | | + Track CodecPrivate size=40
mkv debug: | | | + Track Default Duration=41708000
mkv debug: | | | + Track Video
mkv debug: | | | | + width=320
mkv debug: | | | | + height=240
mkv debug: | | | | + display width=320
mkv debug: | | | | + display height=240
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 640
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 3218
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 4207
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 6872
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 7916
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 10649
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 11802
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 12884
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 15119
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 16140
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 18569
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 22075
mkv debug: | | + Seek
mkv debug: | - unknown seekhead reference at 23152
mkv debug: | | + Seek
mkv debug: | - cues at 23690
mkv debug: | + Cues
mkv debug: * Unknown (N7libebml9EbmlCrc32E)
mkv debug: | - loading cues done.
mkv debug: | | + Seek
mkv debug: | | + Unknown (N7libebml8EbmlVoidE)
mkv debug: | - tags at 0
mkv debug: | + LoadSeekHeadItem Unknown (N7libebml9EbmlDummyE)
mkv debug: | + Preload Unknown (N7libebml8EbmlVoidE)
mkv debug: | + Tracks
mkv debug: | + Cluster
main debug: creating access '' path='C:\sample.mkv'
main debug: looking for access module: 5 candidates
vcd debug: trying .cue file: C:\sample.cue
vcd debug: could not find .cue file
access_file debug: opening file `C:\sample.mkv'
main debug: using access module "access_file"
main debug: TIMER module_Need() : 1.129 ms - Total 1.129 ms / 1 intvls (Avg 1.129 ms)
main debug: Using AStream*Stream
main debug: pre-buffering...
main debug: received first data for our buffer
main debug: pre-buffering done 65534 bytes in 0s - 207113 kbytes/s
mkv debug: found 1 es
main debug: selecting program id=0
mkv debug: Starting the UI Hook
main debug: thread 228797192 (mkv event thread handler) created at priority 0 (mkv.cpp:2709)
main debug: using demux module "mkv"
main debug: TIMER module_Need() : 10.802 ms - Total 10.802 ms / 1 intvls (Avg 10.802 ms)
main debug: forced subtitle: C:/Documents and Settings/raiska/Desktop/subtest.sub
main debug: `C:/Documents and Settings/raiska/Desktop/subtest.sub' gives access `' demux `' path `C:/Documents and Settings/raiska/Desktop/subtest.sub'
main debug: creating access '' path='C:/Documents and Settings/raiska/Desktop/subtest.sub'
main debug: looking for access module: 5 candidates
vcd debug: trying .cue file: C:/Documents and Settings/raiska/Desktop/subtest.cue
vcd debug: could not find .cue file
access_file debug: opening file `C:/Documents and Settings/raiska/Desktop/subtest.sub'
main debug: using access module "access_file"
main debug: TIMER module_Need() : 3.074 ms - Total 3.074 ms / 1 intvls (Avg 3.074 ms)
main debug: Using AStream*Stream
main debug: pre-buffering...
main debug: received first data for our buffer
main debug: creating demux: access='' demux='subtitle' path='C:/Documents and Settings/raiska/Desktop/subtest.sub'
main debug: looking for demux module: 3 candidates
vobsub debug: this doesn't seem to be a vobsub file
main error: option sub-original-fps does not exist
subtitle debug: Movie fps: -1.000000
subtitle debug: autodetecting subtitle format
subtitle debug: detected MicroDVD format
subtitle debug: loading all subtitles...
subtitle debug: loaded 5 subtitles
main debug: using demux module "subtitle"
main debug: TIMER module_Need() : 2.861 ms - Total 2.861 ms / 1 intvls (Avg 2.861 ms)
main debug: looking for a subtitle file in C:\
main debug: autodetected subtitle: C:\subtest.sub with priority 4
main debug: autodetected subtitle: C:\subtest2.srt with priority 3
main debug: `C:\subtest.sub' gives access `' demux `' path `C:\subtest.sub'
main debug: creating access '' path='C:\subtest.sub'
main debug: looking for access module: 5 candidates
vcd debug: trying .cue file: C:\subtest.cue
vcd debug: could not find .cue file
access_file debug: opening file `C:\subtest.sub'
main debug: using access module "access_file"
main debug: TIMER module_Need() : 1.885 ms - Total 1.885 ms / 1 intvls (Avg 1.885 ms)
main debug: Using AStream*Stream
main debug: pre-buffering...
main debug: received first data for our buffer
main debug: creating demux: access='' demux='subtitle' path='C:\subtest.sub'
main debug: looking for demux module: 3 candidates
vobsub debug: this doesn't seem to be a vobsub file
main error: option sub-original-fps does not exist
subtitle debug: Movie fps: -1.000000
subtitle debug: autodetecting subtitle format
subtitle debug: detected MicroDVD format
subtitle debug: loading all subtitles...
subtitle debug: loaded 5 subtitles
main debug: using demux module "subtitle"
main debug: TIMER module_Need() : 3.524 ms - Total 3.524 ms / 1 intvls (Avg 3.524 ms)
main debug: `C:\subtest2.srt' gives access `' demux `' path `C:\subtest2.srt'
main debug: creating access '' path='C:\subtest2.srt'
main debug: looking for access module: 5 candidates
vcd debug: trying .cue file: C:\subtest2.cue
vcd debug: could not find .cue file
access_file debug: opening file `C:\subtest2.srt'
main debug: using access module "access_file"
main debug: TIMER module_Need() : 1.141 ms - Total 1.141 ms / 1 intvls (Avg 1.141 ms)
main debug: Using AStream*Stream
main debug: pre-buffering...
main debug: received first data for our buffer
main debug: creating demux: access='' demux='subtitle' path='C:\subtest2.srt'
main debug: looking for demux module: 3 candidates
vobsub debug: this doesn't seem to be a vobsub file
main error: option sub-original-fps does not exist
subtitle debug: Movie fps: -1.000000
subtitle debug: autodetecting subtitle format
subtitle debug: detected SubRIP format
subtitle debug: loading all subtitles...
subtitle debug: loaded 5 subtitles
main debug: using demux module "subtitle"
main debug: TIMER module_Need() : 2.330 ms - Total 2.330 ms / 1 intvls (Avg 2.330 ms)
main debug: looking for decoder module: 34 candidates
avcodec debug: libavcodec already initialized
avcodec debug: using direct rendering
avcodec debug: ffmpeg codec (MPEG-4 Video) started
main debug: using decoder module "avcodec"
main debug: TIMER module_Need() : 4.668 ms - Total 4.668 ms / 1 intvls (Avg 4.668 ms)
main debug: thread 228019656 (decoder) created at priority 0 (input/decoder.c:216)
main debug: `C:\subtest.mkv' successfully opened
main debug: thread 227252504 (input) created at priority 1 (input/input.c:373)
qt4 debug: Updating the stream status: 3
main debug: thread started
main debug: thread started
main debug: no usable vout present, spawning one
main debug: window size: 320x240
main debug: looking for video output module: 10 candidates
opengl debug: Texture size: 512x256
opengl debug: requesting "default" opengl provider
main debug: looking for opengl provider module: 1 candidate
glwin32 debug: creating Vout EventThread
main debug: waiting for thread initialization
main debug: thread started
glwin32 debug: DirectXCreateWindow
main debug: window size: 320x240
main debug: looking for vout window module: 2 candidates
qt4 debug: waiting for interface...
qt4 debug: requesting window...
qt4 debug: Video was requested -1, -1
main debug: control type=17
main debug: looking for decoder module: 34 candidates
kate debug: kate: OpenDecoder
subsdec debug: trying configured character encoding: not specified
subsdec debug: trying default character encoding: CP1252
subsdec debug: using automatic UTF-8 detection
main debug: using decoder module "subsdec"
main debug: TIMER module_Need() : 0.630 ms - Total 0.630 ms / 1 intvls (Avg 0.630 ms)
main debug: thread 37437128 (decoder) created at priority 0 (input/decoder.c:216)
main debug: control type=1
main debug: thread started
qt4 debug: Video is resizing to: 320 240
main debug: using vout window module "qt4"
main debug: TIMER module_Need() : 149.042 ms - Total 149.042 ms / 1 intvls (Avg 149.042 ms)
glwin32 debug: created video sub-window
main debug: thread 227621656 (Vout Events Thread) created at priority 0 (glwin32.c:138)
glwin32 debug: Vout EventThread running
main debug: using opengl provider module "glwin32"
main debug: TIMER module_Need() : 237.669 ms - Total 237.669 ms / 1 intvls (Avg 237.669 ms)
main debug: using video output module "opengl"
main debug: TIMER module_Need() : 238.876 ms - Total 238.876 ms / 1 intvls (Avg 238.876 ms)
main debug: waiting for thread initialization
main debug: thread started
main debug: got 1 direct buffer(s)
main debug: picture in 320x240 (0,0,320x240), chroma I420, ar 4:3, sar 1:1
main debug: picture user 320x240 (0,0,320x240), chroma I420, ar 4:3, sar 1:1
main debug: picture out 320x240 (0,0,320x240), chroma RV32, ar 4:3, sar 1:1
main debug: looking for video filter2 module: 16 candidates
swscale debug: 320x240 chroma: I420 -> 320x240 chroma: RV32 with scaling using Bicubic (good quality)
main debug: using video filter2 module "swscale"
main debug: TIMER module_Need() : 0.592 ms - Total 0.592 ms / 1 intvls (Avg 0.592 ms)
main debug: indirect render, mapping render pictures 0-7 to system pictures 1-8
main debug: thread 228883000 (video output) created at priority 1 (video_output/video_output.c:445)
main warning: late picture skipped (19098)
main debug: looking for text renderer module: 2 candidates
main debug: thread 227620472 (fontlist builder) created at priority 0 (freetype.c:477)
freetype debug: using fontsize: 15
main debug: using text renderer module "freetype"
main debug: TIMER module_Need() : 1.279 ms - Total 1.279 ms / 1 intvls (Avg 1.279 ms)
freetype debug: using fontsize: 15
main debug: looking for video blending module: 1 candidate
blend debug: chroma: YUVA -> RV32
main debug: using video blending module "blend"
main debug: TIMER module_Need() : 0.130 ms - Total 0.130 ms / 1 intvls (Avg 0.130 ms)
main debug: thread started
freetype debug: Building font database...
freetype debug: Finished building font database.
freetype debug: Took 0 seconds
main debug: thread ended
qt4 debug: Updating the geometry
qt4 debug: New Event: type 1109
main debug: looking for xml module: 2 candidates
main debug: using xml module "xml"
main debug: TIMER module_Need() : 0.344 ms - Total 0.344 ms / 1 intvls (Avg 0.344 ms)
main debug: removing module "xml"
main debug: looking for xml module: 2 candidates
main debug: using xml module "xml"
main debug: TIMER module_Need() : 0.869 ms - Total 0.869 ms / 1 intvls (Avg 0.869 ms)
main debug: removing module "xml"
main debug: looking for xml module: 2 candidates
main debug: using xml module "xml"
main debug: TIMER module_Need() : 0.398 ms - Total 0.398 ms / 1 intvls (Avg 0.398 ms)
main debug: removing module "xml"
main debug: looking for xml module: 2 candidates
main debug: using xml module "xml"
main debug: TIMER module_Need() : 0.348 ms - Total 0.348 ms / 1 intvls (Avg 0.348 ms)
main debug: removing module "xml"
main debug: slave 0 EOF
main debug: slave 1 EOF
main debug: slave 2 EOF
qt4 debug: Updating the stream status: 4
qt4 debug: New Event: type 1103
qt4 debug: Updating the stream status: 4
main debug: control type=1
subsdec warning: subtitle without a date