summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <cehoyos@ag.or.at>2013-02-10 10:51:12 +0100
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2013-02-10 10:51:12 +0100
commitf02f231e05e09f31cebd18f4a3c2c29753dc4608 (patch)
tree995a1c7668ad95fd10e4fc4c72b0b036801ecc7c /libavformat
parentcf8d9b74f30679347357ca659b56bb41ce88f02d (diff)
Do not write invalid matroska files.
Some real codecs are supported by the matroska specification (and FFmpeg's matroska demuxer) but not the FFmpeg muxer.
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/matroskaenc.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 204d1b2394..3606a99722 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -936,6 +936,19 @@ static int mkv_write_header(AVFormatContext *s)
if (s->avoid_negative_ts < 0)
s->avoid_negative_ts = 1;
+ for (i = 0; i < s->nb_streams; i++)
+ if (s->streams[i]->codec->codec_id == AV_CODEC_ID_ATRAC3 ||
+ s->streams[i]->codec->codec_id == AV_CODEC_ID_COOK ||
+ s->streams[i]->codec->codec_id == AV_CODEC_ID_RA_288 ||
+ s->streams[i]->codec->codec_id == AV_CODEC_ID_SIPR ||
+ s->streams[i]->codec->codec_id == AV_CODEC_ID_RV10 ||
+ s->streams[i]->codec->codec_id == AV_CODEC_ID_RV20) {
+ av_log(s, AV_LOG_ERROR,
+ "The Matroska muxer does not yet support muxing %s\n",
+ avcodec_get_name(s->streams[i]->codec->codec_id));
+ return AVERROR_PATCHWELCOME;
+ }
+
mkv->tracks = av_mallocz(s->nb_streams * sizeof(*mkv->tracks));
if (!mkv->tracks)
return AVERROR(ENOMEM);