]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/bmp.c
WMV8 is fully supported now.
[ffmpeg] / libavcodec / bmp.c
index 52de3be2148569f24f8858eec7a19a27954a10c5..16a5e928256f295667083f87ab850b5da6afd92f 100644 (file)
@@ -84,8 +84,16 @@ static int bmp_decode_frame(AVCodecContext *avctx,
         return -1;
     }
 
-    width = bytestream_get_le32(&buf);
-    height = bytestream_get_le32(&buf);
+    if (ihsize == 40) {
+        width = bytestream_get_le32(&buf);
+        height = bytestream_get_le32(&buf);
+    } else if (ihsize == 12) {
+        width  = bytestream_get_le16(&buf);
+        height = bytestream_get_le16(&buf);
+    } else {
+        av_log(avctx, AV_LOG_ERROR, "unsupported BMP file, patch welcome");
+        return -1;
+    }
 
     if(bytestream_get_le16(&buf) != 1){ /* planes */
         av_log(avctx, AV_LOG_ERROR, "invalid BMP header\n");
@@ -94,7 +102,7 @@ static int bmp_decode_frame(AVCodecContext *avctx,
 
     depth = bytestream_get_le16(&buf);
 
-    if(ihsize > 16)
+    if(ihsize == 40)
         comp = bytestream_get_le32(&buf);
     else
         comp = BMP_RGB;
@@ -249,5 +257,6 @@ AVCodec bmp_decoder = {
     bmp_decode_init,
     NULL,
     bmp_decode_end,
-    bmp_decode_frame
+    bmp_decode_frame,
+    .long_name = NULL_IF_CONFIG_SMALL("BMP image"),
 };