On Mon, Jun 22, 2020 at 11:33:38PM +0200, Carl Eugen Hoyos wrote: > Am Mo., 22. Juni 2020 um 23:32 Uhr schrieb Michael Niedermayer > <mich...@niedermayer.cc>: > > > > On Mon, Jun 22, 2020 at 12:12:05AM +0530, gautamr...@gmail.com wrote: > > > From: Gautam Ramakrishnan <gautamr...@gmail.com> > > > > > > Reduce image size of the image if all components have > > > a non zero sample separation. This is to replicate the > > > output of opj_decompress. > > > --- > > > libavcodec/jpeg2000dec.c | 19 ++++++++++++++----- > > > 1 file changed, 14 insertions(+), 5 deletions(-) > > > > > > diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c > > > index ab36009a2d..05e85f4317 100644 > > > --- a/libavcodec/jpeg2000dec.c > > > +++ b/libavcodec/jpeg2000dec.c > > > @@ -269,6 +269,8 @@ static int get_siz(Jpeg2000DecoderContext *s) > > > const enum AVPixelFormat *possible_fmts = NULL; > > > int possible_fmts_nb = 0; > > > int ret; > > > + int o_dimx, o_dimy; //original image dimensions. > > > + int dimx, dimy; > > > > > > if (bytestream2_get_bytes_left(&s->g) < 36) { > > > av_log(s->avctx, AV_LOG_ERROR, "Insufficient space for SIZ\n"); > > > @@ -371,11 +373,18 @@ static int get_siz(Jpeg2000DecoderContext *s) > > > } > > > > > > /* compute image size with reduction factor */ > > > - ret = ff_set_dimensions(s->avctx, > > > - ff_jpeg2000_ceildivpow2(s->width - s->image_offset_x, > > > - s->reduction_factor), > > > - ff_jpeg2000_ceildivpow2(s->height - s->image_offset_y, > > > - s->reduction_factor)); > > > + o_dimx = ff_jpeg2000_ceildivpow2(s->width - s->image_offset_x, > > > + s->reduction_factor); > > > + o_dimy = ff_jpeg2000_ceildivpow2(s->height - s->image_offset_y, > > > + s->reduction_factor); > > > + dimx = ff_jpeg2000_ceildiv(o_dimx, s->cdx[0]); > > > + dimy = ff_jpeg2000_ceildiv(o_dimy, s->cdy[0]); > > > + for (i = 1; i < s->ncomponents; i++) { > > > + dimx = FFMAX(dimx, ff_jpeg2000_ceildiv(o_dimx, s->cdx[i])); > > > + dimy = FFMAX(dimy, ff_jpeg2000_ceildiv(o_dimy, s->cdy[i])); > > > + } > > > + > > > + ret = ff_set_dimensions(s->avctx, dimx, dimy); > > > if (ret < 0) > > > return ret; > > > > I think the resolution, the pixel format and any odd-format-handling > > code probably need to be adjusted together. > > Changing just the dimension code to select a higher resolution when > > chroma or alpha planes are of higher resolution then luma. Will > > probably not work if there is neither a pixel format selected that > > represents that nor code to compensate for this (as mjpeg does) > > but i might be missing something > > > > is there some testcase this fixes or improves ? > > At least p1_01.j2k which has one component.
Ok, will apply ive also tested the patchset over night with afl Thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws. -- Plato
signature.asc
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".