16#ifndef RANS_INTERNAL_COMMON_TYPETRAITS_H_
17#define RANS_INTERNAL_COMMON_TYPETRAITS_H_
40template <
size_t lowerBound_V>
44#ifdef RANS_SINGLE_STREAM
45template <
size_t lowerBound_V>
46struct getCoderTag<SingleStreamEncoderImpl<lowerBound_V>> :
public std::integral_constant<CoderTag, CoderTag::SingleStream> {
51template <
size_t lowerBound_V>
52struct getCoderTag<SSEEncoderImpl<lowerBound_V>> :
public std::integral_constant<CoderTag, CoderTag::SSE> {
57template <
size_t lowerBound_V>
58struct getCoderTag<AVXEncoderImpl<lowerBound_V>> :
public std::integral_constant<CoderTag, CoderTag::AVX2> {
62template <
class encoderImpl_T,
class symbolTable_T,
size_t nStreams_V>
69template <CoderTag tag_V>
82template <
size_t lowerBound_V>
86#ifdef RANS_SINGLE_STREAM
87template <
size_t lowerBound_V>
88struct getStreamingLowerBound<SingleStreamEncoderImpl<lowerBound_V>> :
public std::integral_constant<size_t, lowerBound_V> {
93template <
size_t lowerBound_V>
94struct getStreamingLowerBound<SSEEncoderImpl<lowerBound_V>> :
public std::integral_constant<size_t, lowerBound_V> {
99template <
size_t lowerBound_V>
100struct getStreamingLowerBound<AVXEncoderImpl<lowerBound_V>> :
public std::integral_constant<size_t, lowerBound_V> {
104template <
size_t lowerBound_V>
Operations to decode a rANS stream.
rANS encoding operations that encode multiple symbols simultaniously using SIMD. Unified implementati...
rANS encoding operations based on ryg's fast algorithm and a naive rANS implementation for all 64Bit ...
Contains statistical information for one source symbol, required for encoding/decoding.
Decoder - User facing class to decode a rANS encoded stream back into the source data based on the sa...
Encoder - User facing class to perform rANS entropy coding of source symbols onto a rANS state based ...
constexpr CoderTag getCoderTag_v
constexpr size_t getStreamingLowerBound_v
Common utility functions.