On Mon, Aug 24, 2020 at 11:10:31PM +0530, gautamr...@gmail.com wrote: > From: Gautam Ramakrishnan <gautamr...@gmail.com> > > The implementation of tag tree encoding was incorrect. > However, this error was not visible as the current j2k > encoder encodes only 1 layer. > This patch fixes tag tree coding for JPEG2000 such tag > tree coding would work for multi layer encoding. > --- > libavcodec/j2kenc.c | 41 ++++++++++++++++++++++++----------------- > libavcodec/jpeg2000.c | 1 + > libavcodec/jpeg2000.h | 1 + > 3 files changed, 26 insertions(+), 17 deletions(-) > > diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c > index 16863f8e8c..d9777fe07f 100644 > --- a/libavcodec/j2kenc.c > +++ b/libavcodec/j2kenc.c > @@ -242,27 +242,34 @@ static void j2k_flush(Jpeg2000EncoderContext *s) > static void tag_tree_code(Jpeg2000EncoderContext *s, Jpeg2000TgtNode *node, > int threshold) > { > Jpeg2000TgtNode *stack[30]; > - int sp = 1, curval = 0; > - stack[0] = node; > + int sp = -1, curval = 0; > > - node = node->parent; > - while(node){ > - if (node->vis){ > - curval = node->val; > - break; > - } > - node->vis++; > - stack[sp++] = node; > + while(node->parent){ > + stack[++sp] = node; > node = node->parent; > } > - while(--sp >= 0){ > - if (stack[sp]->val >= threshold){ > - put_bits(s, 0, threshold - curval); > - break; > + > + while (1) { > + if (curval > node->temp_val) > + node->temp_val = curval; > + else { > + curval = node->temp_val; > } > - put_bits(s, 0, stack[sp]->val - curval); > - put_bits(s, 1, 1); > - curval = stack[sp]->val; > + while (curval < threshold) { > + if (curval >= node->val) { > + if (!node->vis) { > + node->vis = 1; > + put_bits(s, 1, 1); > + } > + break; > + } > + put_bits(s, 0, 1); > + curval++; > + }
why is the put_bits(s, 0, stack[sp]->val - curval); changed into 1 bit at a time calls ? a single call should still work with the modified loop a single call may be faster ... thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Dictatorship naturally arises out of democracy, and the most aggravated form of tyranny and slavery out of the most extreme liberty. -- 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".