77 using value_type = std::underlying_type_t<VC5Tag>;
78 return static_cast<VC5Tag>(
static_cast<value_type
>(LHS) &
79 static_cast<value_type
>(RHS));
87 return (LHS & RHS) == RHS;
90 using value_type = std::underlying_type_t<VC5Tag>;
92 return static_cast<VC5Tag>(-
static_cast<value_type
>(tag));
133 std::vector<int16_t, DefaultInitAllocatorAdaptor<int16_t>>
storage;
149 virtual void anchor()
const;
153 bool& exceptionThrown)
noexcept = 0;
163 bool finalWavelet_ =
false)
172 bool& exceptionThrown)
noexcept override;
181 bool& exceptionThrown)
noexcept final;
199 std::vector<std::unique_ptr<AbstractBand>>
bands;
213 bool finalWavelet )
noexcept;
219 std::array<Wavelet, numWaveletLevels + 1>
wavelets;
227 static inline std::pair<
int16_t ,
unsigned int >
238 void decodeThread(
bool& exceptionThrown) const noexcept;
245 void decode(
unsigned int offsetX,
unsigned int offsetY,
unsigned int width,
void setBandValid(int band)
uint32_t getValidBandMask() const
std::vector< std::unique_ptr< AbstractBand > > bands
bool isBandValid(int band) const
static BandData combineLowHighPass(Array2DRef< const int16_t > low, Array2DRef< const int16_t > high, int descaleShift, bool clampUint, bool finalWavelet) noexcept
bool allBandsValid() const
static constexpr uint16_t maxBands
uint32_t mDecodedBandMask
static BandData reconstructPass(Array2DRef< const int16_t > high, Array2DRef< const int16_t > low) noexcept
std::array< Channel, numChannels > channels
void combineFinalLowpassBandsImpl() const noexcept
static constexpr int numHighPassBands
SimpleLUT< unsigned, VC5_LOG_TABLE_BITWIDTH > mVC5LogTable
static constexpr int numLowPassBandsTotal
static constexpr auto VC5_LOG_TABLE_BITWIDTH
const uint16_t patternHeight
Optional< uint16_t > iSubband
static constexpr int numSubbandsTotal
static std::pair< int16_t, unsigned int > getRLV(const PrefixCodeDecoder &decoder, BitStreamerMSB &bits)
PrefixCodeLUTDecoder< VC5CodeTag, PrefixCodeVectorDecoder< VC5CodeTag > > PrefixCodeDecoder
const uint16_t patternWidth
void decodeThread(bool &exceptionThrown) const noexcept
static constexpr int numChannels
static constexpr int numLowPassBands
Optional< PrefixCodeDecoder > codeDecoder
void initPrefixCodeDecoder()
Optional< int16_t > quantization
void parseLargeCodeblock(ByteStream bs)
struct rawspeed::VC5Decompressor::@172102134063262333165153326146073302307047041007 mVC5
void createWaveletBandDecodingTasks(bool &exceptionThrown) const noexcept
Optional< uint16_t > lowpassPrecision
static constexpr int numWaveletLevels
void decode(unsigned int offsetX, unsigned int offsetY, unsigned int width, unsigned int height)
VC5Decompressor(ByteStream bs, const RawImage &img)
void combineFinalLowpassBands() const noexcept
static constexpr int numSubbands
bool matches(VC5Tag LHS, VC5Tag RHS)
VC5Tag operator&(VC5Tag LHS, VC5Tag RHS)
bool is(VC5Tag LHS, VC5Tag RHS)
const int MAX_NUM_PRESCALE
VC5Tag operator-(VC5Tag tag)
BandData(int width, int height)
Array2DRef< int16_t > description
std::vector< int16_t, DefaultInitAllocatorAdaptor< int16_t > > storage
std::array< Wavelet, numWaveletLevels+1 > wavelets
AbstractBand(Wavelet &wavelet_)
virtual void createDecodingTasks(ErrorLog &errLog, bool &exceptionThrown) noexcept=0
virtual void anchor() const
virtual ~AbstractBand()=default
Optional< BandData > data
AbstractDecodeableBand(Wavelet &wavelet_, Array1DRef< const uint8_t > input_)
Array1DRef< const uint8_t > input
void createDecodingTasks(ErrorLog &errLog, bool &exceptionThrown) noexcept final
virtual BandData decode() const =0
HighPassBand(Wavelet &wavelet_, Array1DRef< const uint8_t > input_, const Optional< PrefixCodeDecoder > &decoder_, int16_t quant_)
const Optional< PrefixCodeDecoder > & decoder
uint16_t lowpassPrecision
BandData decode() const noexcept override
LowPassBand(Wavelet &wavelet_, ByteStream bs, uint16_t lowpassPrecision_)
Optional< BandData > highpass
void createHighpassReconstructionTask(const bool &exceptionThrown) noexcept
void createLowHighPassCombiningTask(const bool &exceptionThrown) noexcept
struct rawspeed::VC5Decompressor::Wavelet::ReconstructableBand::@202240301251226100165006340307035260152240136207 intermediates
void createDecodingTasks(ErrorLog &errLog, bool &exceptionThrown) noexcept override
void createLowpassReconstructionTask(const bool &exceptionThrown) noexcept
Optional< BandData > lowpass
ReconstructableBand(Wavelet &wavelet_, bool clampUint_=false, bool finalWavelet_=false)