int avflag;
} BFIContext;
-static int bfi_probe(AVProbeData * p)
+static int bfi_probe(const AVProbeData * p)
{
/* Check file header */
if (AV_RL32(p->buf) == MKTAG('B', 'F', '&', 'I'))
AVIOContext *pb = s->pb;
AVStream *vstream;
AVStream *astream;
- int fps, chunk_header;
+ int ret, fps, chunk_header;
/* Initialize the video codec... */
vstream = avformat_new_stream(s, NULL);
/* Set the total number of frames. */
avio_skip(pb, 8);
chunk_header = avio_rl32(pb);
+ if (chunk_header < 3)
+ return AVERROR_INVALIDDATA;
+
bfi->nframes = avio_rl32(pb);
avio_rl32(pb);
avio_rl32(pb);
/*Load the palette to extradata */
avio_skip(pb, 8);
- vstream->codecpar->extradata = av_malloc(768);
- if (!vstream->codecpar->extradata)
- return AVERROR(ENOMEM);
- vstream->codecpar->extradata_size = 768;
- avio_read(pb, vstream->codecpar->extradata,
- vstream->codecpar->extradata_size);
+ ret = ff_get_extradata(s, vstream->codecpar, pb, 768);
+ if (ret < 0)
+ return ret;
astream->codecpar->sample_rate = avio_rl32(pb);
if (astream->codecpar->sample_rate <= 0) {
return ret;
}
-AVInputFormat ff_bfi_demuxer = {
+const AVInputFormat ff_bfi_demuxer = {
.name = "bfi",
.long_name = NULL_IF_CONFIG_SMALL("Brute Force & Ignorance"),
.priv_data_size = sizeof(BFIContext),