|
|
@@ -162,8 +162,18 @@ static int bmp_decode_frame(AVCodecContext *avctx, |
|
|
|
case 16: |
|
|
|
if(comp == BMP_RGB) |
|
|
|
avctx->pix_fmt = PIX_FMT_RGB555; |
|
|
|
if(comp == BMP_BITFIELDS) |
|
|
|
avctx->pix_fmt = rgb[1] == 0x07E0 ? PIX_FMT_RGB565 : PIX_FMT_RGB555; |
|
|
|
else if (comp == BMP_BITFIELDS) { |
|
|
|
if (rgb[0] == 0xF800 && rgb[1] == 0x07E0 && rgb[2] == 0x001F) |
|
|
|
avctx->pix_fmt = PIX_FMT_RGB565; |
|
|
|
else if (rgb[0] == 0x7C00 && rgb[1] == 0x03E0 && rgb[2] == 0x001F) |
|
|
|
avctx->pix_fmt = PIX_FMT_RGB555; |
|
|
|
else if (rgb[0] == 0x0F00 && rgb[1] == 0x00F0 && rgb[2] == 0x000F) |
|
|
|
avctx->pix_fmt = PIX_FMT_RGB444; |
|
|
|
else { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Unknown bitfields %0X %0X %0X\n", rgb[0], rgb[1], rgb[2]); |
|
|
|
return AVERROR(EINVAL); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
case 8: |
|
|
|
if(hsize - ihsize - 14 > 0) |
|
|
|