]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/bfi.c
hwcontext_vulkan: dynamically load functions
[ffmpeg] / libavformat / bfi.c
index 6c98e33ab4a4812e4245dcef6ccd44bc6d3e27be..bff6f0154ecb305d078a8fcf628198a46b4ce4d1 100644 (file)
@@ -39,7 +39,7 @@ typedef struct BFIContext {
     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'))
@@ -54,7 +54,7 @@ static int bfi_read_header(AVFormatContext * s)
     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);
@@ -69,6 +69,9 @@ static int bfi_read_header(AVFormatContext * s)
     /* 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);
@@ -80,12 +83,9 @@ static int bfi_read_header(AVFormatContext * s)
 
     /*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) {
@@ -174,7 +174,7 @@ static int bfi_read_packet(AVFormatContext * s, AVPacket * pkt)
     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),