diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2013-02-10 10:51:12 +0100 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2013-02-10 10:51:12 +0100 |
commit | f02f231e05e09f31cebd18f4a3c2c29753dc4608 (patch) | |
tree | 995a1c7668ad95fd10e4fc4c72b0b036801ecc7c | |
parent | cf8d9b74f30679347357ca659b56bb41ce88f02d (diff) | |
download | ffmpeg-f02f231e05e09f31cebd18f4a3c2c29753dc4608.tar.gz |
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.
-rw-r--r-- | libavformat/matroskaenc.c | 13 |
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); |