static void gxf_read_index(AVFormatContext *s, int pkt_len) {
AVIOContext *pb = s->pb;
AVStream *st;
- uint32_t fields_per_map = avio_rl32(pb);
- uint32_t map_cnt = avio_rl32(pb);
+ uint32_t fields_per_map, map_cnt;
int i;
+ if (pkt_len < 8)
+ return;
+ fields_per_map = avio_rl32(pb);
+ map_cnt = avio_rl32(pb);
pkt_len -= 8;
if ((s->flags & AVFMT_FLAG_IGNIDX) || !s->streams) {
avio_skip(pb, pkt_len);
AVSEEK_FLAG_ANY | AVSEEK_FLAG_BACKWARD);
if (idx < 0)
return -1;
- pos = st->index_entries[idx].pos;
- if (idx < st->nb_index_entries - 2)
- maxlen = st->index_entries[idx + 2].pos - pos;
+ pos = st->internal->index_entries[idx].pos;
+ if (idx < st->internal->nb_index_entries - 2)
+ maxlen = st->internal->index_entries[idx + 2].pos - pos;
maxlen = FFMAX(maxlen, 200 * 1024);
res = avio_seek(s->pb, pos, SEEK_SET);
if (res < 0)
return res;
}
-AVInputFormat ff_gxf_demuxer = {
+const AVInputFormat ff_gxf_demuxer = {
.name = "gxf",
.long_name = NULL_IF_CONFIG_SMALL("GXF (General eXchange Format)"),
.priv_data_size = sizeof(struct gxf_stream_info),