]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/bmp.c
dvbsubdec: Fix function return type
[ffmpeg] / libavcodec / bmp.c
index 5ca73baa4f0fbdb70f3c392674aaf66707bb28a9..f545e784b8f50e678ccf700d75d0c5b34a6e8ebe 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include <inttypes.h>
+
 #include "avcodec.h"
 #include "bytestream.h"
 #include "bmp.h"
 #include "internal.h"
 #include "msrledec.h"
 
-static av_cold int bmp_decode_init(AVCodecContext *avctx)
-{
-    BMPContext *s = avctx->priv_data;
-
-    avcodec_get_frame_defaults(&s->picture);
-    avctx->coded_frame = &s->picture;
-
-    return 0;
-}
-
 static int bmp_decode_frame(AVCodecContext *avctx,
                             void *data, int *got_frame,
                             AVPacket *avpkt)
 {
     const uint8_t *buf = avpkt->data;
     int buf_size       = avpkt->size;
-    BMPContext *s      = avctx->priv_data;
-    AVFrame *picture   = data;
-    AVFrame *p         = &s->picture;
+    AVFrame *p         = data;
     unsigned int fsize, hsize;
     int width, height;
     unsigned int depth;
@@ -69,7 +59,7 @@ static int bmp_decode_frame(AVCodecContext *avctx,
 
     fsize = bytestream_get_le32(&buf);
     if (buf_size < fsize) {
-        av_log(avctx, AV_LOG_ERROR, "not enough data (%d < %d), trying to decode anyway\n",
+        av_log(avctx, AV_LOG_ERROR, "not enough data (%d < %u), trying to decode anyway\n",
                buf_size, fsize);
         fsize = buf_size;
     }
@@ -80,7 +70,7 @@ static int bmp_decode_frame(AVCodecContext *avctx,
     hsize  = bytestream_get_le32(&buf); /* header size */
     ihsize = bytestream_get_le32(&buf); /* more header size */
     if (ihsize + 14 > hsize) {
-        av_log(avctx, AV_LOG_ERROR, "invalid header size %d\n", hsize);
+        av_log(avctx, AV_LOG_ERROR, "invalid header size %u\n", hsize);
         return AVERROR_INVALIDDATA;
     }
 
@@ -89,7 +79,8 @@ static int bmp_decode_frame(AVCodecContext *avctx,
         fsize = buf_size - 2;
 
     if (fsize <= hsize) {
-        av_log(avctx, AV_LOG_ERROR, "declared file size is less than header size (%d < %d)\n",
+        av_log(avctx, AV_LOG_ERROR,
+               "Declared file size is less than header size (%u < %u)\n",
                fsize, hsize);
         return AVERROR_INVALIDDATA;
     }
@@ -175,7 +166,9 @@ static int bmp_decode_frame(AVCodecContext *avctx,
             else if (rgb[0] == 0x0F00 && rgb[1] == 0x00F0 && rgb[2] == 0x000F)
                avctx->pix_fmt = AV_PIX_FMT_RGB444;
             else {
-               av_log(avctx, AV_LOG_ERROR, "Unknown bitfields %0X %0X %0X\n", rgb[0], rgb[1], rgb[2]);
+               av_log(avctx, AV_LOG_ERROR,
+                      "Unknown bitfields %0"PRIX32" %0"PRIX32" %0"PRIX32"\n",
+                      rgb[0], rgb[1], rgb[2]);
                return AVERROR(EINVAL);
             }
         }
@@ -191,12 +184,13 @@ static int bmp_decode_frame(AVCodecContext *avctx,
         if (hsize - ihsize - 14 > 0) {
             avctx->pix_fmt = AV_PIX_FMT_PAL8;
         } else {
-            av_log(avctx, AV_LOG_ERROR, "Unknown palette for %d-colour BMP\n", 1<<depth);
+            av_log(avctx, AV_LOG_ERROR, "Unknown palette for %u-colour BMP\n",
+                   1 << depth);
             return AVERROR_INVALIDDATA;
         }
         break;
     default:
-        av_log(avctx, AV_LOG_ERROR, "depth %d not supported\n", depth);
+        av_log(avctx, AV_LOG_ERROR, "depth %u not supported\n", depth);
         return AVERROR_INVALIDDATA;
     }
 
@@ -205,11 +199,7 @@ static int bmp_decode_frame(AVCodecContext *avctx,
         return AVERROR_INVALIDDATA;
     }
 
-    if (p->data[0])
-        avctx->release_buffer(avctx, p);
-
-    p->reference = 0;
-    if ((ret = ff_get_buffer(avctx, p)) < 0) {
+    if ((ret = ff_get_buffer(avctx, p, 0)) < 0) {
         av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
         return ret;
     }
@@ -250,7 +240,9 @@ static int bmp_decode_frame(AVCodecContext *avctx,
             buf = buf0 + 46;
             t   = bytestream_get_le32(&buf);
             if (t < 0 || t > (1 << depth)) {
-                av_log(avctx, AV_LOG_ERROR, "Incorrect number of colors - %X for bitdepth %d\n", t, depth);
+                av_log(avctx, AV_LOG_ERROR,
+                       "Incorrect number of colors - %X for bitdepth %u\n",
+                       t, depth);
             } else if (t) {
                 colors = t;
             }
@@ -350,30 +342,16 @@ static int bmp_decode_frame(AVCodecContext *avctx,
         }
     }
 
-    *picture = s->picture;
     *got_frame = 1;
 
     return buf_size;
 }
 
-static av_cold int bmp_decode_end(AVCodecContext *avctx)
-{
-    BMPContext* c = avctx->priv_data;
-
-    if (c->picture.data[0])
-        avctx->release_buffer(avctx, &c->picture);
-
-    return 0;
-}
-
 AVCodec ff_bmp_decoder = {
     .name           = "bmp",
+    .long_name      = NULL_IF_CONFIG_SMALL("BMP (Windows and OS/2 bitmap)"),
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_BMP,
-    .priv_data_size = sizeof(BMPContext),
-    .init           = bmp_decode_init,
-    .close          = bmp_decode_end,
     .decode         = bmp_decode_frame,
-    .capabilities   = CODEC_CAP_DR1,
-    .long_name      = NULL_IF_CONFIG_SMALL("BMP (Windows and OS/2 bitmap)"),
+    .capabilities   = AV_CODEC_CAP_DR1,
 };