From: Michael Niedermayer <[email protected]>
---
libavcodec/jpeg2kdec.c | 50 +++++++++++++++++++-----------------------------
1 file changed, 20 insertions(+), 30 deletions(-)
diff --git a/libavcodec/jpeg2kdec.c b/libavcodec/jpeg2kdec.c
index 83ebe52..5820630 100644
--- a/libavcodec/jpeg2kdec.c
+++ b/libavcodec/jpeg2kdec.c
@@ -235,37 +235,35 @@ static int get_siz(Jpeg2KDecoderContext *s)
s->avctx->height = ff_jpeg2k_ceildivpow2(s->height - s->image_offset_y,
s->reduction_factor);
- switch (s->avctx->profile) {
- case FF_PROFILE_JPEG2K_DCINEMA_2K:
- case FF_PROFILE_JPEG2K_DCINEMA_4K:
- /* XYZ color-space for digital cinema profiles */
- s->avctx->pix_fmt = AV_PIX_FMT_XYZ12;
+ switch(s->ncomponents) {
+ case 1:
+ if (s->precision > 8)
+ s->avctx->pix_fmt = AV_PIX_FMT_GRAY16;
+ else
+ s->avctx->pix_fmt = AV_PIX_FMT_GRAY8;
break;
- default:
- /* For other profiles selects color-space according number of
- * components and bit depth precision. */
- switch (s->ncomponents) {
- case 1:
- if (s->precision > 8)
- s->avctx->pix_fmt = AV_PIX_FMT_GRAY16;
- else
- s->avctx->pix_fmt = AV_PIX_FMT_GRAY8;
+ case 3:
+ switch (s->avctx->profile) {
+ case FF_PROFILE_JPEG2K_DCINEMA_2K:
+ case FF_PROFILE_JPEG2K_DCINEMA_4K:
+ /* XYZ color-space for digital cinema profiles */
+ s->avctx->pix_fmt = AV_PIX_FMT_XYZ12;
break;
- case 3:
+ default:
if (s->precision > 8)
s->avctx->pix_fmt = AV_PIX_FMT_RGB48;
else
s->avctx->pix_fmt = AV_PIX_FMT_RGB24;
break;
- case 4:
- s->avctx->pix_fmt = AV_PIX_FMT_BGRA;
- break;
- default:
- /* pixel format can not be identified */
- s->avctx->pix_fmt = AV_PIX_FMT_NONE;
- break;
}
break;
+ case 4:
+ s->avctx->pix_fmt = AV_PIX_FMT_RGBA;
+ break;
+ default:
+ /* pixel format can not be identified */
+ s->avctx->pix_fmt = AV_PIX_FMT_NONE;
+ break;
}
return 0;
}
@@ -1135,11 +1133,6 @@ static int jpeg2k_decode_tile(Jpeg2KDecoderContext *s,
Jpeg2KTile *tile,
if (tile->codsty[0].mct)
mct_decode(s, tile);
- if (s->avctx->pix_fmt == AV_PIX_FMT_BGRA) { // RGBA -> BGRA
- FFSWAP(float *, tile->comp[0].f_data, tile->comp[2].f_data);
- FFSWAP(int *, tile->comp[0].i_data, tile->comp[2].i_data);
- }
-
if (s->precision <= 8) {
for (compno = 0; compno < s->ncomponents; compno++) {
Jpeg2KComponent *comp = tile->comp + compno;
@@ -1440,8 +1433,5 @@ AVCodec ff_jpeg2k_decoder = {
.init_static_data = jpeg2k_init_static_data,
.decode = jpeg2k_decode_frame,
.priv_class = &class,
- .pix_fmts = (enum AVPixelFormat[]) { AV_PIX_FMT_XYZ12,
- AV_PIX_FMT_GRAY8,
- -1 },
.profiles = NULL_IF_CONFIG_SMALL(profiles)
};
--
1.7.9.5
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel