Mercurial > libavcodec.hg
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 */ |