[FFmpeg-devel] [PATCH 1/2] libavcodec/jpeg2000dec: Enhance pix fmt selection

Michael Niedermayer michael at niedermayer.cc
Sat Jul 4 21:30:27 EEST 2020


On Sat, Jul 04, 2020 at 11:01:14PM +0530, Gautam Ramakrishnan wrote:
> On Sat, Jul 4, 2020 at 12:02 AM Michael Niedermayer
> <michael at niedermayer.cc> wrote:
> >
> > On Fri, Jul 03, 2020 at 01:05:12AM +0530, Gautam Ramakrishnan wrote:
> > > On Thu, Jul 2, 2020 at 8:30 PM Michael Niedermayer
> > > <michael at niedermayer.cc> wrote:
> > > >
> > > > On Thu, Jul 02, 2020 at 12:04:22AM +0530, gautamramk at gmail.com wrote:
> > > > > From: Gautam Ramakrishnan <gautamramk at gmail.com>
> > > > >
> > > > > This patch assigns default pix format values when
> > > > > a match does not take place.
> > > > > ---
> > > > >  libavcodec/jpeg2000dec.c | 9 +++++++++
> > > > >  1 file changed, 9 insertions(+)
> > > > >
> > > > > diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
> > > > > index 3f4a9ef96c..86f9170723 100644
> > > > > --- a/libavcodec/jpeg2000dec.c
> > > > > +++ b/libavcodec/jpeg2000dec.c
> > > > > @@ -436,6 +436,15 @@ static int get_siz(Jpeg2000DecoderContext *s)
> > > > >                  s->cdef[3] = 3;
> > > > >                  i = 0;
> > > > >              }
> > > > > +        } else if (ncomponents == 3 && s->precision == 8) {
> > > > > +            s->avctx->pix_fmt = AV_PIX_FMT_RGB24;
> > > > > +            i = 0;
> > > > > +        } else if (ncomponents == 2 && s->precision == 8) {
> > > > > +            s->avctx->pix_fmt = AV_PIX_FMT_YA8;
> > > > > +            i = 0;
> > > >
> > > > I dont think 2 and 3 component formats can ignore the subsampling
> > > > of the planes.
> > > > They have to match even if they are not 1
> > > > if they mismatch the differing plane would need to be rescaled
> > > >
> > > > Thats unless iam missing something, which is possible
> > > I do not have a very good understanding of colour formats. But,
> > > I checked out p1_07.j2k, which is a 2 component image. The subsampling
> > > of the 2 layers are different. As a result, both components have different
> > > dimensions. As a reference, I decoded the pgx files and saw the output.
> > > It does match with what would happen with this patch applied. However,
> > > that is probably because the samples are designed just to test the working
> > > of the decoder and not to actually account for intricacies of the pixel formats.
> > > As a compromise, do you think if would make sense if this patch can be applied
> > > if the subsampling of all the planes are the same, but not the same as
> > > that of rgb24
> > > or ya8. Atleast, in that case, we will not have differing planes.
> > > In case of YCC formats, it makes sense that every subsampling rate must match.
> > > However, for rgb, from my understanding, it could also mean that the
> > > final image is
> > > just scaled according to the sample separation rate?
> >
> > for RGB the image leaving the decoder each of the R, G and B planes must
> > have the same size.
> > for YA the luma and alpha planes similarly must have the same size.
> >
> > if all planes are considered not subsampled or they are all considered
> > subsampled by the same amount is the same from the point of view of
> > the pixel format.
> It is clear. I shall add a check that ensures that the subsampling of all the
> planes are the same.

> > Also the decoder could rescale a single subsampled plane if its needed.
> > Our jpeg decoder does that for some of these bizare cases
> I did not understand which cases are referred here. This is important because
> this is very relevant to the p1_07.j2k reference image.

I refered to something ive seen in plain jpeg
files which contain some YCbCr format but the Cb and Cr planes use each
different subsampling, to support this one plane is rescaled in the decoder.

Iam suspecting something similar could be occuring in jpeg2000 but i did not
check

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Let us carefully observe those good qualities wherein our enemies excel us
and endeavor to excel them, by avoiding what is faulty, and imitating what
is excellent in them. -- Plutarch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20200704/52151251/attachment.sig>


More information about the ffmpeg-devel mailing list