|
|
|
@ -1716,6 +1716,7 @@ static av_cold int j2kenc_init(AVCodecContext *avctx) |
|
|
|
|
Jpeg2000EncoderContext *s = avctx->priv_data; |
|
|
|
|
Jpeg2000CodingStyle *codsty = &s->codsty; |
|
|
|
|
Jpeg2000QuantStyle *qntsty = &s->qntsty; |
|
|
|
|
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); |
|
|
|
|
|
|
|
|
|
s->avctx = avctx; |
|
|
|
|
av_log(s->avctx, AV_LOG_DEBUG, "init\n"); |
|
|
|
@ -1758,20 +1759,13 @@ static av_cold int j2kenc_init(AVCodecContext *avctx) |
|
|
|
|
s->width = avctx->width; |
|
|
|
|
s->height = avctx->height; |
|
|
|
|
|
|
|
|
|
s->ncomponents = desc->nb_components; |
|
|
|
|
for (i = 0; i < 3; i++) { |
|
|
|
|
if (avctx->pix_fmt == AV_PIX_FMT_GRAY16 || avctx->pix_fmt == AV_PIX_FMT_RGB48) |
|
|
|
|
s->cbps[i] = 16; |
|
|
|
|
else |
|
|
|
|
s->cbps[i] = 8; |
|
|
|
|
s->cbps[i] = desc->comp[i].depth; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (avctx->pix_fmt == AV_PIX_FMT_RGB24 || avctx->pix_fmt == AV_PIX_FMT_RGB48){ |
|
|
|
|
s->ncomponents = 3; |
|
|
|
|
} else if (avctx->pix_fmt == AV_PIX_FMT_GRAY8 || avctx->pix_fmt == AV_PIX_FMT_PAL8 || avctx->pix_fmt == AV_PIX_FMT_GRAY16){ |
|
|
|
|
s->ncomponents = 1; |
|
|
|
|
} else{ // planar YUV
|
|
|
|
|
if ((desc->flags & AV_PIX_FMT_FLAG_PLANAR) && s->ncomponents > 1) { |
|
|
|
|
s->planar = 1; |
|
|
|
|
s->ncomponents = 3; |
|
|
|
|
ret = av_pix_fmt_get_chroma_sub_sample(avctx->pix_fmt, |
|
|
|
|
s->chroma_shift, s->chroma_shift + 1); |
|
|
|
|
if (ret) |
|
|
|
|