Index: libmpdemux/matroska.h =================================================================== --- libmpdemux/matroska.h (revision 19150) +++ libmpdemux/matroska.h (working copy) @@ -48,6 +48,9 @@ #define MKV_V_QUICKTIME "V_QUICKTIME" #define MKV_V_MPEG1 "V_MPEG1" #define MKV_V_MPEG2 "V_MPEG2" +#define MKV_V_MPEG4_SP "V_MPEG4/ISO/SP" +#define MKV_V_MPEG4_ASP "V_MPEG4/ISO/ASP" +#define MKV_V_MPEG4_AP "V_MPEG4/ISO/AP" #define MKV_V_MPEG4_AVC "V_MPEG4/ISO/AVC" #define MKV_S_TEXTASCII "S_TEXT/ASCII" Index: libmpdemux/demux_mkv.c =================================================================== --- libmpdemux/demux_mkv.c (revision 19150) +++ libmpdemux/demux_mkv.c (working copy) @@ -1825,6 +1825,19 @@ bih->biCompression = mmioFOURCC('m', 'p', 'g', '2'); track->reorder_timecodes = !correct_pts; } + else if (!strcmp(track->codec_id, MKV_V_MPEG4_SP) || + !strcmp(track->codec_id, MKV_V_MPEG4_ASP) || + !strcmp(track->codec_id, MKV_V_MPEG4_AP)) + { + bih->biCompression = mmioFOURCC('m', 'p', '4', 'v'); + if (track->private_data && (track->private_size > 0)) + { + bih->biSize += track->private_size; + bih = (BITMAPINFOHEADER *) realloc (bih, bih->biSize); + memcpy (bih + 1, track->private_data, track->private_size); + } + track->reorder_timecodes = !correct_pts; + } else if (!strcmp(track->codec_id, MKV_V_MPEG4_AVC)) { bih->biCompression = mmioFOURCC('a', 'v', 'c', '1');