mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-26 17:32:06 +00:00
cabac: Ensure 2-byte cabac loads are on 2-byte boundry
Ensure that cabac init sets the bitstream pointer to an even value. It is often faster to load from an aligned boundry Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
17399f6a9f
commit
48f80831ba
@ -183,10 +183,19 @@ int ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size){
|
||||
#if CABAC_BITS == 16
|
||||
c->low = (*c->bytestream++)<<18;
|
||||
c->low+= (*c->bytestream++)<<10;
|
||||
// Keep our fetches on a 2-byte boundry as this should avoid ever having to
|
||||
// do unaligned loads if the compiler (or asm) optimises the double byte
|
||||
// load into a single instruction
|
||||
if(((uintptr_t)c->bytestream & 1) == 0) {
|
||||
c->low += (1 << 9);
|
||||
}
|
||||
else {
|
||||
c->low += ((*c->bytestream++) << 2) + 2;
|
||||
}
|
||||
#else
|
||||
c->low = (*c->bytestream++)<<10;
|
||||
#endif
|
||||
c->low+= ((*c->bytestream++)<<2) + 2;
|
||||
#endif
|
||||
c->range= 0x1FE;
|
||||
if ((c->range<<(CABAC_BITS+1)) < c->low)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
Loading…
Reference in New Issue
Block a user