Browse Source

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 <michaelni@gmx.at>
Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
tags/n1.1
Michael Niedermayer Justin Ruggles 12 years ago
parent
commit
41540b36a1
2 changed files with 18 additions and 13 deletions
  1. +18
    -0
      libavcodec/get_bits.h
  2. +0
    -13
      libavformat/mpegts.c

+ 18
- 0
libavcodec/get_bits.h View File

@@ -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.
*/


+ 0
- 13
libavformat/mpegts.c View File

@@ -665,19 +665,6 @@ static void new_pes_packet(PESContext *pes, AVPacket *pkt)
pes->flags = 0;
}

static uint64_t get_bits64(GetBitContext *gb, int bits)
{
uint64_t ret = 0;
while (bits > 17) {
ret <<= 17;
ret |= get_bits(gb, 17);
bits -= 17;
}
ret <<= bits;
ret |= get_bits(gb, bits);
return ret;
}

static int read_sl_header(PESContext *pes, SLConfigDescr *sl, const uint8_t *buf, int buf_size)
{
GetBitContext gb;


Loading…
Cancel
Save