diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-05-30 16:45:30 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-05-30 16:45:30 +0200 |
commit | 310f9dd6988c286ab98b44796105440892f329de (patch) | |
tree | 70abecfcfaf7aa11a77f347a598b3d6a3be2a368 | |
parent | 6f7de3d5c8a5bafb3bb8a311c1251ac7cc43de67 (diff) | |
download | ffmpeg-310f9dd6988c286ab98b44796105440892f329de.tar.gz |
j2k/jpeg2000: merge pix_fmt setting code
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/j2kdec.c | 25 | ||||
-rw-r--r-- | libavcodec/jpeg2000dec.c | 42 |
2 files changed, 38 insertions, 29 deletions
diff --git a/libavcodec/j2kdec.c b/libavcodec/j2kdec.c index f2635730fe..1ade0c7fc9 100644 --- a/libavcodec/j2kdec.c +++ b/libavcodec/j2kdec.c @@ -215,22 +215,33 @@ static int get_siz(Jpeg2000DecoderContext *s) s->reduction_factor); switch(s->ncomponents) { case 1: - if (s->precision > 8) { + if (s->precision > 8) s->avctx->pix_fmt = AV_PIX_FMT_GRAY16; - } else { + else s->avctx->pix_fmt = AV_PIX_FMT_GRAY8; - } break; case 3: - if (s->precision > 8) { - s->avctx->pix_fmt = AV_PIX_FMT_RGB48; - } else { - s->avctx->pix_fmt = AV_PIX_FMT_RGB24; + switch (s->avctx->profile) { + case FF_PROFILE_JPEG2000_DCINEMA_2K: + case FF_PROFILE_JPEG2000_DCINEMA_4K: + /* XYZ color-space for digital cinema profiles */ + s->avctx->pix_fmt = AV_PIX_FMT_XYZ12; + break; + default: + if (s->precision > 8) + s->avctx->pix_fmt = AV_PIX_FMT_RGB48; + else + s->avctx->pix_fmt = AV_PIX_FMT_RGB24; + 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; } diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c index 4e8104c0c3..08ac3dcdd4 100644 --- a/libavcodec/jpeg2000dec.c +++ b/libavcodec/jpeg2000dec.c @@ -213,37 +213,35 @@ static int get_siz(Jpeg2000DecoderContext *s) s->avctx->height = ff_jpeg2000_ceildivpow2(s->height - s->image_offset_y, s->reduction_factor); - switch (s->avctx->profile) { - case FF_PROFILE_JPEG2000_DCINEMA_2K: - case FF_PROFILE_JPEG2000_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_JPEG2000_DCINEMA_2K: + case FF_PROFILE_JPEG2000_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; } |