summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2018-02-05 22:26:26 -0300
committerJames Almer <jamrial@gmail.com>2018-02-06 23:08:42 -0300
commitf7aacf4ab7654a57408d5c0f871fd3b39930c6d7 (patch)
treeba63a983d4572d6837c655f1abb189b0efc10d7f /libavformat
parent8885a29e5dc832622c6a4c07f51e93a082811b09 (diff)
avformat/mov: add VP8 codec support
Demuxing only. Muxing is disabled as altref frame handling is not defined in the spec, and there's no way to know the presence of such frames during stream initialization. Based on a patch by Steven Liu. Fixes ticket #7000 Reviewed-by: Carl Eugen Hoyos <ceffmpeg@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/isom.c1
-rw-r--r--libavformat/mov.c1
-rw-r--r--libavformat/movenc.c5
3 files changed, 7 insertions, 0 deletions
diff --git a/libavformat/isom.c b/libavformat/isom.c
index 9d9f85885b..59502a8b3f 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -186,6 +186,7 @@ const AVCodecTag ff_codec_movvideo_tags[] = {
{ AV_CODEC_ID_H264, MKTAG('x', 'a', 'l', 'g') }, /* XAVC-L HD422 produced by FCP */
{ AV_CODEC_ID_H264, MKTAG('a', 'v', 'l', 'g') }, /* Panasonic P2 AVC-LongG */
+ { AV_CODEC_ID_VP8, MKTAG('v', 'p', '0', '8') }, /* VP8 */
{ AV_CODEC_ID_VP9, MKTAG('v', 'p', '0', '9') }, /* VP9 */
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', ' ') },
diff --git a/libavformat/mov.c b/libavformat/mov.c
index d16b431e03..acfbfc5324 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -2397,6 +2397,7 @@ static int mov_finalize_stsd_codec(MOVContext *c, AVIOContext *pb,
case AV_CODEC_ID_EAC3:
case AV_CODEC_ID_MPEG1VIDEO:
case AV_CODEC_ID_VC1:
+ case AV_CODEC_ID_VP8:
case AV_CODEC_ID_VP9:
st->need_parsing = AVSTREAM_PARSE_FULL;
break;
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index f7079f3df7..f43349932b 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -6079,6 +6079,11 @@ static int mov_init(AVFormatContext *s)
av_log(s, AV_LOG_ERROR, "VP9 only supported in MP4.\n");
return AVERROR(EINVAL);
}
+ } else if (track->par->codec_id == AV_CODEC_ID_VP8) {
+ /* altref frames handling is not defined in the spec as of version v1.0,
+ * so just forbid muxing VP8 streams altogether until a new version does */
+ av_log(s, AV_LOG_ERROR, "VP8 muxing is currently not supported.\n");
+ return AVERROR_PATCHWELCOME;
}
} else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
track->timescale = st->codecpar->sample_rate;