summaryrefslogtreecommitdiff
path: root/libavcodec/j2kenc.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2023-03-30 18:40:31 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2023-04-02 23:54:49 +0200
commit644d15716d5cfb28e4ea0c0ada163f70807e9a5c (patch)
tree8868647ef2b494c9f994330e1fbe5a5787a00e0e /libavcodec/j2kenc.c
parentb7418f768cd79a2a3d1fed273f8f199baa4f0f3f (diff)
downloadffmpeg-644d15716d5cfb28e4ea0c0ada163f70807e9a5c.tar.gz
avcodec/j2kenc: simplify pixel format setup
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/j2kenc.c')
-rw-r--r--libavcodec/j2kenc.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c
index 75bac3c2d8..c3a7a264dc 100644
--- a/libavcodec/j2kenc.c
+++ b/libavcodec/j2kenc.c
@@ -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)