On Fri, Jul 07, 2017 at 08:48:46PM +0200, Paul B Mahol wrote: > Signed-off-by: Paul B Mahol <one...@gmail.com> > --- > libavcodec/get_bits.h | 205 > +++++++++++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 196 insertions(+), 9 deletions(-) > > diff --git a/libavcodec/get_bits.h b/libavcodec/get_bits.h > index c530015..8a9021a 100644 > --- a/libavcodec/get_bits.h > +++ b/libavcodec/get_bits.h > @@ -1,5 +1,6 @@ > /* > - * copyright (c) 2004 Michael Niedermayer <michae...@gmx.at> > + * Copyright (c) 2004 Michael Niedermayer <michae...@gmx.at> > + * Copyright (c) 2016 Alexandra Hájková > * > * This file is part of FFmpeg. > * > @@ -54,6 +55,10 @@ > > typedef struct GetBitContext { > const uint8_t *buffer, *buffer_end; > +#ifdef CACHED_BITSTREAM_READER > + uint64_t cache; > + unsigned bits_left; > +#endif > int index; > int size_in_bits; > int size_in_bits_plus8; > @@ -106,7 +111,9 @@ typedef struct GetBitContext { > * For examples see get_bits, show_bits, skip_bits, get_vlc. > */ > > -#ifdef LONG_BITSTREAM_READER > +#ifdef CACHED_BITSTREAM_READER > +# define MIN_CACHE_BITS 64 > +#elif defined LONG_BITSTREAM_READER > # define MIN_CACHE_BITS 32 > #else > # define MIN_CACHE_BITS 25 > @@ -198,7 +205,11 @@ typedef struct GetBitContext { > > static inline int get_bits_count(const GetBitContext *s) > { > +#ifdef CACHED_BITSTREAM_READER > + return s->index - s->bits_left; > +#else > return s->index; > +#endif > } > > static inline void skip_bits_long(GetBitContext *s, int n) > @@ -210,6 +221,68 @@ static inline void skip_bits_long(GetBitContext *s, int > n) > #endif > } > > +static inline void refill_32(GetBitContext *s) > +{ > +#ifdef CACHED_BITSTREAM_READER
> + if (s->buffer + (s->index >> 3) >= s->buffer_end) > + return; should be under !UNCHECKED_BITSTREAM_READER also this looks like it can result in intermediate invalid pointers this should avoid that: s->index >> 3 >= s->buffer_end - s->buffer same issue in refill_64() patch overall is nice thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Asymptotically faster algorithms should always be preferred if you have asymptotical amounts of data
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel