Merge commit 'e8c0defe1322f0ff281d9bc5eee91fa1b712b6aa'

* commit 'e8c0defe1322f0ff281d9bc5eee91fa1b712b6aa':
  8bps: decode 24bit files correctly as rgb32 on bigendian

Conflicts:
	libavcodec/8bps.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
pull/37/head
Michael Niedermayer 11 years ago
commit 15677e7239
  1. 18
      libavcodec/8bps.c

@ -159,17 +159,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
case 32: case 32:
avctx->pix_fmt = AV_PIX_FMT_RGB32; avctx->pix_fmt = AV_PIX_FMT_RGB32;
c->planes = 4; c->planes = 4;
#if HAVE_BIGENDIAN /* handle planemap setup later for decoding rgb24 data as rbg32 */
c->planemap[0] = 1; // 1st plane is red
c->planemap[1] = 2; // 2nd plane is green
c->planemap[2] = 3; // 3rd plane is blue
c->planemap[3] = 0; // 4th plane is alpha
#else
c->planemap[0] = 2; // 1st plane is red
c->planemap[1] = 1; // 2nd plane is green
c->planemap[2] = 0; // 3rd plane is blue
c->planemap[3] = 3; // 4th plane is alpha
#endif
break; break;
default: default:
av_log(avctx, AV_LOG_ERROR, "Error: Unsupported color depth: %u.\n", av_log(avctx, AV_LOG_ERROR, "Error: Unsupported color depth: %u.\n",
@ -177,6 +167,12 @@ static av_cold int decode_init(AVCodecContext *avctx)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
if (avctx->pix_fmt == AV_PIX_FMT_RGB32) {
c->planemap[0] = HAVE_BIGENDIAN ? 1 : 2; // 1st plane is red
c->planemap[1] = HAVE_BIGENDIAN ? 2 : 1; // 2nd plane is green
c->planemap[2] = HAVE_BIGENDIAN ? 3 : 0; // 3rd plane is blue
c->planemap[3] = HAVE_BIGENDIAN ? 0 : 3; // 4th plane is alpha
}
return 0; return 0;
} }

Loading…
Cancel
Save