24#include "rawspeedconfig.h"
31template <
typename CodeTag>
43 template <
typename BIT_STREAM,
bool FULL_DECODE>
45 typename Traits::CodeValueTy codeValue)
const {
47 symbol.code_len <= Traits::MaxCodeLenghtBits);
50 if constexpr (!FULL_DECODE)
55 int diff_l = codeValue;
60 bs.skipBitsNoFill(16);
64 invariant(symbol.code_len + diff_l <= 32);
65 return diff_l ?
extend(bs.getBitsNoFill(diff_l), diff_l) : 0;
72 auto ret =
static_cast<int32_t>(diff);
73 if ((diff & (1 << (len - 1))) == 0)
74 ret -= (1 << len) - 1;
int processSymbol(BIT_STREAM &bs, CodeSymbol symbol, typename Traits::CodeValueTy codeValue) const
typename Base::Traits Traits
typename Base::Parent Parent
static int RAWSPEED_READNONE extend(uint32_t diff, uint32_t len)
AbstractPrefixCodeTranscoder< CodeTag > Base
typename Base::CodeSymbol CodeSymbol
typename AbstractPrefixCode< CodeTag >::Traits Traits
bool RAWSPEED_READONLY handleDNGBug16() const
typename AbstractPrefixCode< CodeTag >::CodeSymbol CodeSymbol
AbstractPrefixCodeTranscoder(PrefixCode< CodeTag > code_)
AbstractPrefixCode< CodeTag > Parent