1 /* 2 RawSpeed - RAW file decoder. 3 4 Copyright (C) 2017 Roman Lebedev 5 6 This library is free software; you can redistribute it and/or 7 modify it under the terms of the GNU Lesser General Public 8 License as published by the Free Software Foundation; either 9 version 2 of the License, or (at your option) any later version. 10 11 This library is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 Lesser General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public 17 License along with this library; if not, write to the Free Software 18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 21 #pragma once 22 23 #include "decompressors/AbstractSamsungDecompressor.h" // for AbstractSamsu... 24 #include "io/BitPumpMSB32.h" // for BitPumpMSB32 25 #include "io/ByteStream.h" // for ByteStream 26 #include <cstdint> // for int32_t 27 #include <vector> // for vector 28 29 namespace rawspeed { 30 31 class RawImage; 32 33 // Decoder for compressed srw files (NX300 and later) 34 class SamsungV0Decompressor final : public AbstractSamsungDecompressor { 35 std::vector<ByteStream> stripes; 36 37 void computeStripes(ByteStream bso, ByteStream bsr); 38 39 void decompressStrip(int row, const ByteStream& bs) const; 40 41 static int32_t calcAdj(BitPumpMSB32& bits, int b); 42 43 public: 44 SamsungV0Decompressor(const RawImage& image, const ByteStream& bso, 45 const ByteStream& bsr); 46 47 void decompress() const; 48 }; 49 50 } // namespace rawspeed 51