comparison bmp.c @ 8202:5af44bd71254 libavcodec

Add known BMP header sizes. Now 11B*.bmp from samples repository can be decoded.
author kostya
date Mon, 24 Nov 2008 10:53:13 +0000
parents a7b88e5846f6
children 3b90f93d97a6
comparison
equal deleted inserted replaced
8201:c6e2ffef3797 8202:5af44bd71254
83 if(ihsize + 14 > hsize){ 83 if(ihsize + 14 > hsize){
84 av_log(avctx, AV_LOG_ERROR, "invalid header size %d\n", hsize); 84 av_log(avctx, AV_LOG_ERROR, "invalid header size %d\n", hsize);
85 return -1; 85 return -1;
86 } 86 }
87 87
88 if (ihsize == 40) { 88 switch(ihsize){
89 case 40: // windib v3
90 case 64: // OS/2 v2
91 case 108: // windib v4
92 case 124: // windib v5
89 width = bytestream_get_le32(&buf); 93 width = bytestream_get_le32(&buf);
90 height = bytestream_get_le32(&buf); 94 height = bytestream_get_le32(&buf);
91 } else if (ihsize == 12) { 95 break;
96 case 12: // OS/2 v1
92 width = bytestream_get_le16(&buf); 97 width = bytestream_get_le16(&buf);
93 height = bytestream_get_le16(&buf); 98 height = bytestream_get_le16(&buf);
94 } else { 99 break;
100 default:
95 av_log(avctx, AV_LOG_ERROR, "unsupported BMP file, patch welcome\n"); 101 av_log(avctx, AV_LOG_ERROR, "unsupported BMP file, patch welcome\n");
96 return -1; 102 return -1;
97 } 103 }
98 104
99 if(bytestream_get_le16(&buf) != 1){ /* planes */ 105 if(bytestream_get_le16(&buf) != 1){ /* planes */