77 std::vector<std::unique_ptr<const HuffmanCode<BaselineCodeTag>>>
79 std::vector<std::unique_ptr<const PrefixCodeDecoder<>>>
83 std::array<const PrefixCodeDecoder<>*, 4>
huff{
86 virtual void anchor()
const;
112 [[nodiscard]] std::vector<const PrefixCodeDecoder<>*>
114 std::vector<const PrefixCodeDecoder<>*> ht(N_COMP);
115 for (
int i = 0; i < N_COMP; ++i) {
116 const unsigned dcTblNo =
frame.compInfo[i].dcTblNo;
119 ThrowRDE(
"Decoding table %u for comp %i does not exist (tables = %u)",
122 ht[i] =
huff[dcTblNo];
129 std::vector<uint16_t> pred(N_COMP);
131 ThrowRDE(
"Invalid precision (%u) and point transform (%u) combination!",
134 std::fill(pred.begin(), pred.end(), 1 << (
frame.prec -
Pt - 1));
uint16_t numMCUsPerRestartInterval
virtual ByteStream::size_type decodeScan()=0
virtual ~AbstractLJpegDecoder()=default
void parseSOS(ByteStream data)
void parseSOF(ByteStream data, SOFInfo *i)
std::vector< std::unique_ptr< const PrefixCodeDecoder<> > > PrefixCodeDecoderStore
virtual bool erratumImplicitEOIMarkerAfterScan() const
JpegMarker getNextMarker(bool allowskip)
AbstractLJpegDecoder(ByteStream bs, RawImage img)
void parseDRI(ByteStream dri)
std::vector< std::unique_ptr< const HuffmanCode< BaselineCodeTag > > > huffmanCodeStore
void parseDHT(ByteStream data)
int getSamplePrecision() const
std::array< const PrefixCodeDecoder<> *, 4 > huff
std::vector< uint16_t > getInitialPredictors(int N_COMP) const
virtual void anchor() const
std::vector< const PrefixCodeDecoder<> * > getPrefixCodeDecoders(int N_COMP) const
std::array< JpegComponentInfo, 4 > compInfo
constexpr RAWSPEED_READNONE Ttgt implicit_cast(Tsrc value)