From 41540b36a19d326e778268e910aff4217b20eb97 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 30 Sep 2012 02:39:55 +0200 Subject: bitstream: add get_bits64() to support reading more than 32 bits at once Also remove a duplicate function in the MPEG-TS demuxer. Signed-off-by: Michael Niedermayer Signed-off-by: Justin Ruggles --- libavcodec/get_bits.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'libavcodec/get_bits.h') diff --git a/libavcodec/get_bits.h b/libavcodec/get_bits.h index f91441c120..c56a2c2d10 100644 --- a/libavcodec/get_bits.h +++ b/libavcodec/get_bits.h @@ -313,6 +313,24 @@ static inline unsigned int get_bits_long(GetBitContext *s, int n) } } +/* + * Read 0-64 bits. + */ +static inline uint64_t get_bits64(GetBitContext *s, int n) +{ + if (n <= 32) { + return get_bits_long(s, n); + } else { +#ifdef BITSTREAM_READER_LE + uint64_t ret = get_bits_long(s, 32); + return ret | (uint64_t)get_bits_long(s, n - 32) << 32; +#else + uint64_t ret = (uint64_t)get_bits_long(s, n - 32) << 32; + return ret | get_bits_long(s, 32); +#endif + } +} + /** * Read 0-32 bits as a signed integer. */ -- cgit v1.2.3