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>
This commit is contained in:
parent
b57c1da81e
commit
41540b36a1
@ -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.
|
* Read 0-32 bits as a signed integer.
|
||||||
*/
|
*/
|
||||||
|
@ -665,19 +665,6 @@ static void new_pes_packet(PESContext *pes, AVPacket *pkt)
|
|||||||
pes->flags = 0;
|
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)
|
static int read_sl_header(PESContext *pes, SLConfigDescr *sl, const uint8_t *buf, int buf_size)
|
||||||
{
|
{
|
||||||
GetBitContext gb;
|
GetBitContext gb;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user