diff options
author | Clément Bœsch <ubitux@gmail.com> | 2013-04-18 14:19:33 +0400 |
---|---|---|
committer | Clément Bœsch <ubitux@gmail.com> | 2013-04-18 15:40:45 +0400 |
commit | 28f9858c91ffe43609abf5cb6ee91dafae3517fe (patch) | |
tree | 25a3b0ef1bbe498bb44b3f765f13978aecc0304e /libavformat | |
parent | 978e373499e214649bda86133a58c062d242dd24 (diff) |
lavf/gif: simplify streams type checking.
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/gif.c | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/libavformat/gif.c b/libavformat/gif.c index b4a61f5814..7a68d318c3 100644 --- a/libavformat/gif.c +++ b/libavformat/gif.c @@ -104,32 +104,23 @@ static int gif_write_header(AVFormatContext *s) { GIFContext *gif = s->priv_data; AVIOContext *pb = s->pb; - AVCodecContext *enc, *video_enc; - int i, width, height /*, rate*/; + AVCodecContext *video_enc; + int width, height; uint32_t palette[AVPALETTE_COUNT]; -/* XXX: do we reject audio streams or just ignore them ? - * if (s->nb_streams > 1) - * return -1; - */ + if (s->nb_streams != 1 || !s->streams[0]->codec || + s->streams[0]->codec->codec_type != AVMEDIA_TYPE_VIDEO) { + av_log(s, AV_LOG_ERROR, + "GIF supports only a single video stream.\n"); + return AVERROR(EINVAL); + } + gif->time = 0; gif->file_time = 0; - video_enc = NULL; - for (i = 0; i < s->nb_streams; i++) { - enc = s->streams[i]->codec; - if (enc->codec_type != AVMEDIA_TYPE_AUDIO) - video_enc = enc; - } - - if (!video_enc) { - av_free(gif); - return -1; - } else { - width = video_enc->width; - height = video_enc->height; -// rate = video_enc->time_base.den; - } + video_enc = s->streams[0]->codec; + width = video_enc->width; + height = video_enc->height; if (avpriv_set_systematic_pal2(palette, video_enc->pix_fmt) < 0) { av_assert0(video_enc->pix_fmt == AV_PIX_FMT_PAL8); @@ -174,10 +165,7 @@ static int gif_write_video(AVFormatContext *s, AVCodecContext *enc, static int gif_write_packet(AVFormatContext *s, AVPacket *pkt) { AVCodecContext *codec = s->streams[pkt->stream_index]->codec; - if (codec->codec_type == AVMEDIA_TYPE_AUDIO) - return 0; /* just ignore audio */ - else - return gif_write_video(s, codec, pkt->data, pkt->size); + return gif_write_video(s, codec, pkt->data, pkt->size); } static int gif_write_trailer(AVFormatContext *s) |