|
|
|
|
@@ -53,42 +53,47 @@ extern "C"
|
|
|
|
|
WINPR_ASSERT(_bs);
|
|
|
|
|
|
|
|
|
|
(_bs->prefetch) = 0;
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 4) < (_bs->capacity))
|
|
|
|
|
(_bs->prefetch) |= ((UINT32) * (_bs->pointer + 4) << 24);
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 5) < (_bs->capacity))
|
|
|
|
|
(_bs->prefetch) |= ((UINT32) * (_bs->pointer + 5) << 16);
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 6) < (_bs->capacity))
|
|
|
|
|
(_bs->prefetch) |= ((UINT32) * (_bs->pointer + 6) << 8);
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 7) < (_bs->capacity))
|
|
|
|
|
(_bs->prefetch) |= ((UINT32) * (_bs->pointer + 7) << 0);
|
|
|
|
|
|
|
|
|
|
const intptr_t diff = _bs->pointer - _bs->buffer;
|
|
|
|
|
if ((diff + 4) < _bs->capacity)
|
|
|
|
|
(_bs->prefetch) |= ((UINT32)_bs->pointer[4] << 24);
|
|
|
|
|
if ((diff + 5) < _bs->capacity)
|
|
|
|
|
(_bs->prefetch) |= ((UINT32)_bs->pointer[5] << 16);
|
|
|
|
|
if ((diff + 6) < _bs->capacity)
|
|
|
|
|
(_bs->prefetch) |= ((UINT32)_bs->pointer[6] << 8);
|
|
|
|
|
if ((diff + 7) < _bs->capacity)
|
|
|
|
|
(_bs->prefetch) |= ((UINT32)_bs->pointer[7] << 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static INLINE void BitStream_Fetch(wBitStream* _bs)
|
|
|
|
|
{
|
|
|
|
|
WINPR_ASSERT(_bs);
|
|
|
|
|
(_bs->accumulator) = 0;
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 0) < (_bs->capacity))
|
|
|
|
|
(_bs->accumulator) |= ((UINT32) * (_bs->pointer + 0) << 24);
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 1) < (_bs->capacity))
|
|
|
|
|
(_bs->accumulator) |= ((UINT32) * (_bs->pointer + 1) << 16);
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 2) < (_bs->capacity))
|
|
|
|
|
(_bs->accumulator) |= ((UINT32) * (_bs->pointer + 2) << 8);
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 3) < (_bs->capacity))
|
|
|
|
|
(_bs->accumulator) |= ((UINT32) * (_bs->pointer + 3) << 0);
|
|
|
|
|
|
|
|
|
|
const intptr_t diff = _bs->pointer - _bs->buffer;
|
|
|
|
|
if ((diff + 0) < _bs->capacity)
|
|
|
|
|
(_bs->accumulator) |= ((UINT32)_bs->pointer[0] << 24);
|
|
|
|
|
if ((diff + 1) < _bs->capacity)
|
|
|
|
|
(_bs->accumulator) |= ((UINT32)_bs->pointer[1] << 16);
|
|
|
|
|
if ((diff + 2) < _bs->capacity)
|
|
|
|
|
(_bs->accumulator) |= ((UINT32)_bs->pointer[2] << 8);
|
|
|
|
|
if ((diff + 3) < _bs->capacity)
|
|
|
|
|
(_bs->accumulator) |= ((UINT32)_bs->pointer[3] << 0);
|
|
|
|
|
BitStream_Prefetch(_bs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static INLINE void BitStream_Flush(wBitStream* _bs)
|
|
|
|
|
{
|
|
|
|
|
WINPR_ASSERT(_bs);
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 0) < (_bs->capacity))
|
|
|
|
|
*(_bs->pointer + 0) = (BYTE)((UINT32)_bs->accumulator >> 24);
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 1) < (_bs->capacity))
|
|
|
|
|
*(_bs->pointer + 1) = (BYTE)((UINT32)_bs->accumulator >> 16);
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 2) < (_bs->capacity))
|
|
|
|
|
*(_bs->pointer + 2) = (BYTE)((UINT32)_bs->accumulator >> 8);
|
|
|
|
|
if (((UINT32)(_bs->pointer - _bs->buffer) + 3) < (_bs->capacity))
|
|
|
|
|
*(_bs->pointer + 3) = (BYTE)((UINT32)_bs->accumulator >> 0);
|
|
|
|
|
const intptr_t diff = _bs->pointer - _bs->buffer;
|
|
|
|
|
if ((diff + 0) < _bs->capacity)
|
|
|
|
|
_bs->pointer[0] = (BYTE)((UINT32)_bs->accumulator >> 24);
|
|
|
|
|
if ((diff + 1) < _bs->capacity)
|
|
|
|
|
_bs->pointer[1] = (BYTE)((UINT32)_bs->accumulator >> 16);
|
|
|
|
|
if ((diff + 2) < _bs->capacity)
|
|
|
|
|
_bs->pointer[2] = (BYTE)((UINT32)_bs->accumulator >> 8);
|
|
|
|
|
if ((diff + 3) < _bs->capacity)
|
|
|
|
|
_bs->pointer[3] = (BYTE)((UINT32)_bs->accumulator >> 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static INLINE void BitStream_Shift(wBitStream* _bs, UINT32 _nbits)
|
|
|
|
|
|