21#include "rawspeedconfig.h"
54struct BitstreamFlavorLSB;
55struct BitstreamFlavorMSB;
56struct BitstreamFlavorMSB16;
57struct BitstreamFlavorMSB32;
58struct BitstreamFlavorJPEG;
65 template <
typename OutputIterator>
72 template <
typename OutputIterator>
79 template <
typename OutputIterator>
86 template <
typename OutputIterator>
93 template <
typename OutputIterator>
114 [[nodiscard]]
int size() const RAWSPEED_READNONE {
119 [[nodiscard]] std::pair<uint32_t, int>
131template <
typename flavor>
133 std::vector<uint8_t> bitstream;
138 flavor>::template vacuumer<
decltype(bsInserter)>;
141 for (
int i = 0; i != w.
size(); ++i) {
142 const auto [
val, len] = w[i];
149 bitstream.size() < MinSize)
150 bitstream.resize(MinSize, uint8_t(0));
155template <
typename flavor>
159 for (
int i = 0; i != w.
size(); ++i) {
160 const auto [expectedVal, len] = w[i];
162 const auto actualVal = len != 0 ? bs.getBitsNoFill(len) : 0;
178 assert(
false &&
"Unexpected exception in `checkFlavourImpl()`.");
190 const auto flavor = bs.
getByte();
192 const auto numValues = bs.
getU32();
193 const auto bitLengths = bs.
getStream(numValues,
sizeof(uint8_t));
221 __builtin_unreachable();
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
assert(dim.area() >=area)
ByteStream getStream(size_type size_)
void checkFlavour(const InputWrapper &w)
std::vector< uint8_t > produceBitstream(const InputWrapper &w)
void checkFlavourImpl(const InputWrapper &w)
void reparseBitstream(Array1DRef< const uint8_t > input, const InputWrapper &w)
constexpr RAWSPEED_READNONE Ttgt implicit_cast(Tsrc value)
constexpr RAWSPEED_READNONE T extractLowBitsSafe(T value, unsigned nBits)
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
Array1DRef(T *data_, int numElts_) -> Array1DRef< T >
PartitioningOutputIterator(T) -> PartitioningOutputIterator< T >
constexpr RAWSPEED_READNONE Ttgt implicit_cast(Tsrc value)
BitVacuumerJPEG< OutputIterator > vacuumer
BitVacuumerMSB32< OutputIterator > vacuumer
BitStreamerMSB32 streamer
BitVacuumerLSB< OutputIterator > vacuumer
BitStreamerMSB16 streamer
BitVacuumerMSB16< OutputIterator > vacuumer
BitVacuumerMSB< OutputIterator > vacuumer