libopenjpegenc: use pix_fmt descriptor to get bpp

This will also simplify adding support for RGB565 and similar.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Michael Bradshaw <mbradshaw@sorensonmedia.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
pull/4/head
Paul B Mahol 13 years ago committed by Michael Niedermayer
parent 06b0c6a655
commit 8e45005a84
  1. 11
      libavcodec/libopenjpegenc.c

@ -54,7 +54,6 @@ static opj_image_t *mj2_create_image(AVCodecContext *avctx, opj_cparameters_t *p
opj_image_cmptparm_t *cmptparm; opj_image_cmptparm_t *cmptparm;
opj_image_t *img; opj_image_t *img;
int i; int i;
int bpp = 8;
int sub_dx[4]; int sub_dx[4];
int sub_dy[4]; int sub_dy[4];
int numcomps; int numcomps;
@ -76,7 +75,6 @@ static opj_image_t *mj2_create_image(AVCodecContext *avctx, opj_cparameters_t *p
break; break;
case PIX_FMT_GRAY16: case PIX_FMT_GRAY16:
color_space = CLRSPC_GRAY; color_space = CLRSPC_GRAY;
bpp = 16;
break; break;
case PIX_FMT_RGB24: case PIX_FMT_RGB24:
color_space = CLRSPC_SRGB; color_space = CLRSPC_SRGB;
@ -86,11 +84,9 @@ static opj_image_t *mj2_create_image(AVCodecContext *avctx, opj_cparameters_t *p
break; break;
case PIX_FMT_RGB48: case PIX_FMT_RGB48:
color_space = CLRSPC_SRGB; color_space = CLRSPC_SRGB;
bpp = 16;
break; break;
case PIX_FMT_RGBA64: case PIX_FMT_RGBA64:
color_space = CLRSPC_SRGB; color_space = CLRSPC_SRGB;
bpp = 16;
break; break;
case PIX_FMT_YUV420P: case PIX_FMT_YUV420P:
color_space = CLRSPC_SYCC; color_space = CLRSPC_SYCC;
@ -111,19 +107,16 @@ static opj_image_t *mj2_create_image(AVCodecContext *avctx, opj_cparameters_t *p
case PIX_FMT_YUV422P9: case PIX_FMT_YUV422P9:
case PIX_FMT_YUV444P9: case PIX_FMT_YUV444P9:
color_space = CLRSPC_SYCC; color_space = CLRSPC_SYCC;
bpp = 9;
break; break;
case PIX_FMT_YUV420P10: case PIX_FMT_YUV420P10:
case PIX_FMT_YUV422P10: case PIX_FMT_YUV422P10:
case PIX_FMT_YUV444P10: case PIX_FMT_YUV444P10:
color_space = CLRSPC_SYCC; color_space = CLRSPC_SYCC;
bpp = 10;
break; break;
case PIX_FMT_YUV420P16: case PIX_FMT_YUV420P16:
case PIX_FMT_YUV422P16: case PIX_FMT_YUV422P16:
case PIX_FMT_YUV444P16: case PIX_FMT_YUV444P16:
color_space = CLRSPC_SYCC; color_space = CLRSPC_SYCC;
bpp = 16;
break; break;
default: default:
av_log(avctx, AV_LOG_ERROR, "The requested pixel format '%s' is not supported\n", av_get_pix_fmt_name(avctx->pix_fmt)); av_log(avctx, AV_LOG_ERROR, "The requested pixel format '%s' is not supported\n", av_get_pix_fmt_name(avctx->pix_fmt));
@ -136,8 +129,8 @@ static opj_image_t *mj2_create_image(AVCodecContext *avctx, opj_cparameters_t *p
return NULL; return NULL;
} }
for (i = 0; i < numcomps; i++) { for (i = 0; i < numcomps; i++) {
cmptparm[i].prec = bpp; cmptparm[i].prec = av_pix_fmt_descriptors[avctx->pix_fmt].comp[i].depth_minus1 + 1;
cmptparm[i].bpp = bpp; cmptparm[i].bpp = av_pix_fmt_descriptors[avctx->pix_fmt].comp[i].depth_minus1 + 1;
cmptparm[i].sgnd = 0; cmptparm[i].sgnd = 0;
cmptparm[i].dx = sub_dx[i]; cmptparm[i].dx = sub_dx[i];
cmptparm[i].dy = sub_dy[i]; cmptparm[i].dy = sub_dy[i];

Loading…
Cancel
Save