RawSpeed
fast raw decoding library
Loading...
Searching...
No Matches
rawspeed::PrefixCodeVectorEncoder< CodeTag > Class Template Reference

#include "codes/PrefixCodeVectorEncoder.h"

Inheritance diagram for rawspeed::PrefixCodeVectorEncoder< CodeTag >:
[legend]
Collaboration diagram for rawspeed::PrefixCodeVectorEncoder< CodeTag >:
[legend]

Public Types

using Tag = CodeTag
using Base = AbstractPrefixCodeEncoder<CodeTag>
using Traits = typename Base::Traits
using Parent = typename Base::Parent
using CodeSymbol = typename Base::CodeSymbol

Public Member Functions

void setup (bool fullDecode_, bool fixDNGBug16_)
template<typename BIT_VACUUMER>
void encodeCodeValue (BIT_VACUUMER &bv, typename Traits::CodeValueTy codeValue) const
template<typename BIT_VACUUMER>
void encodeDifference (BIT_VACUUMER &bv, int value) const
template<typename BIT_VACUUMER, bool FULL_DECODE>
void encode (BIT_VACUUMER &bv, int value) const
void verifyCodeValuesAsDiffLengths () const
bool RAWSPEED_READONLY isFullDecode () const
bool RAWSPEED_READONLY handleDNGBug16 () const
bool operator== (const AbstractPrefixCodeTranscoder &other) const

Static Public Member Functions

static std::pair< uint32_t, uint8_t > RAWSPEED_READNONE reduce (int32_t extendedDiff)

Public Attributes

PrefixCode< CodeTag > code

Protected Member Functions

size_t RAWSPEED_READONLY maxCodeLength () const
size_t RAWSPEED_READONLY __attribute__ ((pure)) maxCodePlusDiffLength() const

Private Member Functions

template<typename BIT_VACUUMER>
void encodeCodeValueImpl (BIT_VACUUMER &bv, int codeIndex) const
int getCodeIndexOfCodeValue (const typename Traits::CodeValueTy value) const

Private Attributes

bool fullDecode = true
bool fixDNGBug16 = false

Detailed Description

template<typename CodeTag>
class rawspeed::PrefixCodeVectorEncoder< CodeTag >

Definition at line 30 of file PrefixCodeVectorEncoder.h.

Member Typedef Documentation

◆ Base

template<typename CodeTag>
using rawspeed::PrefixCodeVectorEncoder< CodeTag >::Base = AbstractPrefixCodeEncoder<CodeTag>

Definition at line 33 of file PrefixCodeVectorEncoder.h.

◆ CodeSymbol

template<typename CodeTag>
using rawspeed::AbstractPrefixCodeEncoder< CodeTag >::CodeSymbol = typename Base::CodeSymbol
inherited

Definition at line 38 of file AbstractPrefixCodeEncoder.h.

◆ Parent

template<typename CodeTag>
using rawspeed::AbstractPrefixCodeEncoder< CodeTag >::Parent = typename Base::Parent
inherited

Definition at line 37 of file AbstractPrefixCodeEncoder.h.

◆ Tag

template<typename CodeTag>
using rawspeed::PrefixCodeVectorEncoder< CodeTag >::Tag = CodeTag

Definition at line 32 of file PrefixCodeVectorEncoder.h.

◆ Traits

template<typename CodeTag>
using rawspeed::PrefixCodeVectorEncoder< CodeTag >::Traits = typename Base::Traits

Definition at line 34 of file PrefixCodeVectorEncoder.h.

Member Function Documentation

◆ __attribute__()

template<typename CodeTag>
size_t RAWSPEED_READONLY rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::__attribute__ ( (pure) ) const
inlinenodiscardprotectedinherited

Definition at line 65 of file AbstractPrefixCodeTranscoder.h.

References code, and maxCodeLength().

Here is the call graph for this function:

◆ encode()

template<typename CodeTag>
template<typename BIT_VACUUMER, bool FULL_DECODE>
void rawspeed::PrefixCodeVectorEncoder< CodeTag >::encode ( BIT_VACUUMER & bv,
int value ) const
inline

Definition at line 93 of file PrefixCodeVectorEncoder.h.

References encodeCodeValue(), encodeDifference(), rawspeed::implicit_cast(), invariant, and rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::isFullDecode().

Here is the call graph for this function:

◆ encodeCodeValue()

template<typename CodeTag>
template<typename BIT_VACUUMER>
void rawspeed::PrefixCodeVectorEncoder< CodeTag >::encodeCodeValue ( BIT_VACUUMER & bv,
typename Traits::CodeValueTy codeValue ) const
inline

Definition at line 69 of file PrefixCodeVectorEncoder.h.

References encodeCodeValueImpl(), getCodeIndexOfCodeValue(), invariant, and rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::isFullDecode().

Referenced by encode().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ encodeCodeValueImpl()

template<typename CodeTag>
template<typename BIT_VACUUMER>
void rawspeed::PrefixCodeVectorEncoder< CodeTag >::encodeCodeValueImpl ( BIT_VACUUMER & bv,
int codeIndex ) const
inlineprivate

Definition at line 40 of file PrefixCodeVectorEncoder.h.

References rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::code, rawspeed::implicit_cast(), and invariant.

Referenced by encodeCodeValue(), and encodeDifference().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ encodeDifference()

template<typename CodeTag>
template<typename BIT_VACUUMER>
void rawspeed::PrefixCodeVectorEncoder< CodeTag >::encodeDifference ( BIT_VACUUMER & bv,
int value ) const
inline

Definition at line 80 of file PrefixCodeVectorEncoder.h.

References encodeCodeValueImpl(), getCodeIndexOfCodeValue(), rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::handleDNGBug16(), invariant, rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::isFullDecode(), and rawspeed::AbstractPrefixCodeEncoder< CodeTag >::reduce().

Referenced by encode().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getCodeIndexOfCodeValue()

template<typename CodeTag>
int rawspeed::PrefixCodeVectorEncoder< CodeTag >::getCodeIndexOfCodeValue ( const typename Traits::CodeValueTy value) const
inlinenodiscardprivate

Definition at line 52 of file PrefixCodeVectorEncoder.h.

References rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::code, and rawspeed::implicit_cast().

Referenced by encodeCodeValue(), and encodeDifference().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handleDNGBug16()

template<typename CodeTag>
bool RAWSPEED_READONLY rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::handleDNGBug16 ( ) const
inlinenodiscardinherited

Definition at line 90 of file AbstractPrefixCodeTranscoder.h.

References fixDNGBug16.

Referenced by rawspeed::PrefixCodeVectorEncoder< CodeTag >::encodeDifference(), rawspeed::AbstractPrefixCodeDecoder< CodeTag >::processSymbol(), and rawspeed::PrefixCodeLUTDecoder< CodeTag, PrefixCodeLookupDecoder< CodeTag > >::setup().

Here is the caller graph for this function:

◆ isFullDecode()

template<typename CodeTag>
bool RAWSPEED_READONLY rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::isFullDecode ( ) const
inlinenodiscardinherited

◆ maxCodeLength()

template<typename CodeTag>
size_t RAWSPEED_READONLY rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::maxCodeLength ( ) const
inlinenodiscardprotectedinherited

Definition at line 61 of file AbstractPrefixCodeTranscoder.h.

References code.

Referenced by __attribute__(), rawspeed::PrefixCodeLookupDecoder< CodeTag >::finishReadingPartialSymbol(), rawspeed::PrefixCodeVectorDecoder< CodeTag >::finishReadingPartialSymbol(), and rawspeed::PrefixCodeLookupDecoder< CodeTag >::setup().

Here is the caller graph for this function:

◆ operator==()

template<typename CodeTag>
bool rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::operator== ( const AbstractPrefixCodeTranscoder< CodeTag > & other) const
inlineinherited

Definition at line 94 of file AbstractPrefixCodeTranscoder.h.

References AbstractPrefixCodeTranscoder(), and code.

Here is the call graph for this function:

◆ reduce()

template<typename CodeTag>
std::pair< uint32_t, uint8_t > RAWSPEED_READNONE rawspeed::AbstractPrefixCodeEncoder< CodeTag >::reduce ( int32_t extendedDiff)
inlinestaticinherited

Definition at line 48 of file AbstractPrefixCodeEncoder.h.

References rawspeed::extractLowBitsSafe(), rawspeed::numActiveBits(), and rawspeed::numSignificantBits().

Referenced by rawspeed::PrefixCodeVectorEncoder< CodeTag >::encodeDifference().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setup()

template<typename CodeTag>
void rawspeed::PrefixCodeVectorEncoder< CodeTag >::setup ( bool fullDecode_,
bool fixDNGBug16_ )
inline

Definition at line 64 of file PrefixCodeVectorEncoder.h.

References rawspeed::AbstractPrefixCodeEncoder< CodeTag >::setup().

Referenced by rawspeed::anonymous_namespace{PrefixCodeEncoder.cpp}::workloop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ verifyCodeValuesAsDiffLengths()

template<typename CodeTag>
void rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::verifyCodeValuesAsDiffLengths ( ) const
inlineinherited

Definition at line 50 of file AbstractPrefixCodeTranscoder.h.

References assert(), code, and ThrowRDE.

Referenced by setup().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ code

◆ fixDNGBug16

template<typename CodeTag>
bool rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::fixDNGBug16 = false
privateinherited

Definition at line 37 of file AbstractPrefixCodeTranscoder.h.

Referenced by handleDNGBug16().

◆ fullDecode

template<typename CodeTag>
bool rawspeed::AbstractPrefixCodeTranscoder< CodeTag >::fullDecode = true
privateinherited

Definition at line 36 of file AbstractPrefixCodeTranscoder.h.

Referenced by isFullDecode(), and setup().


The documentation for this class was generated from the following file: