Quoting Diego Biurrun (2016-06-09 17:11:44) > From: Alexandra Hájková <alexan...@khirnov.net> > > The new bit reader features a simpler API and an implementation without > stacks of nested macros. Performance is the same or better, especially > for mezzanine formats and 64-bit platforms. > --- > Changelog | 1 + > libavcodec/bitstream.h | 380 > +++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 381 insertions(+) > create mode 100644 libavcodec/bitstream.h > > diff --git a/Changelog b/Changelog > index a2a9d46..6977397 100644 > --- a/Changelog > +++ b/Changelog > @@ -57,6 +57,7 @@ version <next>: > - Generic OpenMAX IL encoder with support for Raspberry Pi > - MMAL-accelerated MPEG-2 and VC-1 decoding > - G.729 raw demuxer > +- new bitstream reading framework > > > version 11: > diff --git a/libavcodec/bitstream.h b/libavcodec/bitstream.h > new file mode 100644 > index 0000000..539b721 > --- /dev/null > +++ b/libavcodec/bitstream.h > +static inline void refill_64(BitstreamContext *bc) > +{ > + if (av_unlikely(bc->ptr >= bc->buffer_end || !bc->buffer))
Why should the second condition ever be true? > +/* Read MPEG-1 dc-style VLC (sign bit + mantissa with no MSB). > + * If MSB not set it is negative. */ > +static inline int bitstream_read_xbits(BitstreamContext *bc, unsigned length) > +{ > + int32_t cache = bitstream_peek(bc, 32); > + int sign = ~cache >> 31; > + skip_remaining(bc, length); This used to be bitstream_skip() in the previous versions of the patch. It is not immediately obvious to me why the change is correct. Same for read_vlc(). -- Anton Khirnov _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel