Message ID | 20221106123430.1668-2-michael@niedermayer.cc |
---|---|
State | Accepted |
Commit | 9f00286c4c133e1709bfd009b76e91e09ec40843 |
Headers | show |
Series | [FFmpeg-devel,1/7] avcodec/bonk: Use unsigned in predictor_calc_error() to avoid undefined overflows | expand |
Context | Check | Description |
---|---|---|
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
On 11/6/22, Michael Niedermayer <michael@niedermayer.cc> wrote: > The max == 0 case can be removed too but i left it as 50% of the cases use > it > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > --- > libavcodec/bonk.c | 11 ++--------- > 1 file changed, 2 insertions(+), 9 deletions(-) > > diff --git a/libavcodec/bonk.c b/libavcodec/bonk.c > index 9e8892e4db..04ea4def2f 100644 > --- a/libavcodec/bonk.c > +++ b/libavcodec/bonk.c > @@ -132,7 +132,6 @@ static av_cold int bonk_init(AVCodecContext *avctx) > static unsigned read_uint_max(BonkContext *s, uint32_t max) > { > unsigned value = 0; > - int i, bits; > > if (max == 0) > return 0; > @@ -140,15 +139,9 @@ static unsigned read_uint_max(BonkContext *s, uint32_t > max) > if (max >> 31) > return 32; > > - bits = 32 - ff_clz(max); > - > - for (i = 0; i < bits - 1; i++) > - if (get_bits1(&s->gb)) > - value += 1 << i; > - > - if ((value | (1 << (bits - 1))) <= max) > + for (unsigned i = 1; i <= max - value; i+=i) > if (get_bits1(&s->gb)) > - value += 1 << (bits - 1); > + value += i; > > return value; > } > -- > 2.17.1 > probably ok. > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >
On Sun, Nov 06, 2022 at 07:30:24PM +0100, Paul B Mahol wrote: > On 11/6/22, Michael Niedermayer <michael@niedermayer.cc> wrote: > > The max == 0 case can be removed too but i left it as 50% of the cases use > > it > > > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > --- > > libavcodec/bonk.c | 11 ++--------- > > 1 file changed, 2 insertions(+), 9 deletions(-) > > > > diff --git a/libavcodec/bonk.c b/libavcodec/bonk.c > > index 9e8892e4db..04ea4def2f 100644 > > --- a/libavcodec/bonk.c > > +++ b/libavcodec/bonk.c > > @@ -132,7 +132,6 @@ static av_cold int bonk_init(AVCodecContext *avctx) > > static unsigned read_uint_max(BonkContext *s, uint32_t max) > > { > > unsigned value = 0; > > - int i, bits; > > > > if (max == 0) > > return 0; > > @@ -140,15 +139,9 @@ static unsigned read_uint_max(BonkContext *s, uint32_t > > max) > > if (max >> 31) > > return 32; > > > > - bits = 32 - ff_clz(max); > > - > > - for (i = 0; i < bits - 1; i++) > > - if (get_bits1(&s->gb)) > > - value += 1 << i; > > - > > - if ((value | (1 << (bits - 1))) <= max) > > + for (unsigned i = 1; i <= max - value; i+=i) > > if (get_bits1(&s->gb)) > > - value += 1 << (bits - 1); > > + value += i; > > > > return value; > > } > > -- > > 2.17.1 > > > > probably ok. will apply thx [...]
diff --git a/libavcodec/bonk.c b/libavcodec/bonk.c index 9e8892e4db..04ea4def2f 100644 --- a/libavcodec/bonk.c +++ b/libavcodec/bonk.c @@ -132,7 +132,6 @@ static av_cold int bonk_init(AVCodecContext *avctx) static unsigned read_uint_max(BonkContext *s, uint32_t max) { unsigned value = 0; - int i, bits; if (max == 0) return 0; @@ -140,15 +139,9 @@ static unsigned read_uint_max(BonkContext *s, uint32_t max) if (max >> 31) return 32; - bits = 32 - ff_clz(max); - - for (i = 0; i < bits - 1; i++) - if (get_bits1(&s->gb)) - value += 1 << i; - - if ((value | (1 << (bits - 1))) <= max) + for (unsigned i = 1; i <= max - value; i+=i) if (get_bits1(&s->gb)) - value += 1 << (bits - 1); + value += i; return value; }
The max == 0 case can be removed too but i left it as 50% of the cases use it Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavcodec/bonk.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-)