typedef struct GIFDemuxContext {
const AVClass *class;
- uint32_t width;
- uint32_t height;
/**
* Time span in hundredths of second before
* the next frame should be drawn on screen.
GIFDemuxContext *gdc = s->priv_data;
AVIOContext *pb = s->pb;
AVStream *st;
- int ret;
+ int width, height, ret;
/* skip 6-byte magick */
if ((ret = avio_skip(pb, 6)) < 0)
return ret;
gdc->delay = gdc->default_delay;
- gdc->width = avio_rl16(pb);
- gdc->height = avio_rl16(pb);
+ width = avio_rl16(pb);
+ height = avio_rl16(pb);
- if (gdc->width == 0 || gdc->height == 0)
+ if (width == 0 || height == 0)
return AVERROR_INVALIDDATA;
st = avformat_new_stream(s, NULL);
avpriv_set_pts_info(st, 64, 1, 100);
st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
st->codec->codec_id = AV_CODEC_ID_GIF;
- st->codec->width = gdc->width;
- st->codec->height = gdc->height;
+ st->codec->width = width;
+ st->codec->height = height;
/* jump to start because gif decoder needs header data too */
if (avio_seek(pb, 0, SEEK_SET) != 0)
.read_probe = gif_probe,
.read_header = gif_read_header,
.read_packet = gif_read_packet,
+ .flags = AVFMT_GENERIC_INDEX,
.priv_class = &demuxer_class,
};