summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-09-08 23:05:18 +0200
committerwm4 <wm4@nowhere>2013-09-08 23:05:18 +0200
commitf5195cc4e715a141a4b74848e93a7921db713bff (patch)
treeda39140dcd7325fdac0f4f38a62a3f1e56c665c2
parent3992e5dfcacbb43461dd594f3ebf4b429956c311 (diff)
downloadmpv-f5195cc4e715a141a4b74848e93a7921db713bff.tar.bz2
mpv-f5195cc4e715a141a4b74848e93a7921db713bff.tar.xz
demux_mkv: support V_PRORES
Why not... Code for demangling Matroska-style prores video packets inspired by libavformat's Matroska demuxer.
-rw-r--r--demux/codec_tags.c1
-rw-r--r--demux/demux_mkv.c9
-rw-r--r--demux/matroska.h1
3 files changed, 11 insertions, 0 deletions
diff --git a/demux/codec_tags.c b/demux/codec_tags.c
index 63564e7c7d..ba3472dda3 100644
--- a/demux/codec_tags.c
+++ b/demux/codec_tags.c
@@ -312,6 +312,7 @@ static const struct mp_codec_tag mp_video_codec_tags[] = {
{MKTAG('V', 'Q', 'A', 'V'), "ws_vqa"},
{MKTAG('C', '9', '3', 'V'), "c93"},
{MKTAG('V', 'P', '9', '0'), "vp9"},
+ {MKTAG('p', 'r', '0', '0'), "prores"},
{0},
};
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index 120bbbb93a..9fcadf6dfa 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -1167,6 +1167,7 @@ static const videocodec_info_t vinfo[] = {
{MKV_V_VP8, mmioFOURCC('V', 'P', '8', '0'), 0},
{MKV_V_VP9, mmioFOURCC('V', 'P', '9', '0'), 0},
{MKV_V_DIRAC, mmioFOURCC('d', 'r', 'a', 'c'), 0},
+ {MKV_V_PRORES, mmioFOURCC('p', 'r', '0', '0'), 0},
{NULL, 0, 0}
};
@@ -2173,6 +2174,14 @@ static void mkv_parse_packet(mkv_track_t *track, bstr *buffer)
buffer->len = size;
}
#endif
+ } else if (track->codec_id && strcmp(track->codec_id, MKV_V_PRORES) == 0) {
+ size_t newlen = buffer->len + 8;
+ char *data = talloc_size(NULL, newlen);
+ AV_WB32(data + 0, newlen);
+ AV_WB32(data + 4, MKBETAG('i', 'c', 'p', 'f'));
+ memcpy(data + 8, buffer->start, buffer->len);
+ buffer->start = data;
+ buffer->len = newlen;
}
}
diff --git a/demux/matroska.h b/demux/matroska.h
index baadc84a97..262686dcd5 100644
--- a/demux/matroska.h
+++ b/demux/matroska.h
@@ -79,6 +79,7 @@
#define MKV_V_MJPEG "V_MJPEG"
#define MKV_V_UNCOMPRESSED "V_UNCOMPRESSED"
#define MKV_V_DIRAC "V_DIRAC"
+#define MKV_V_PRORES "V_PRORES"
#define MKV_S_TEXTASCII "S_TEXT/ASCII"
#define MKV_S_TEXTUTF8 "S_TEXT/UTF8"