summaryrefslogtreecommitdiffstats
path: root/third_party/jpeg-xl/lib/jxl/jpeg/enc_jpeg_data_reader.h
blob: 4389b2ffe3bfe5de1ee3d13b310afce9b174acbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Copyright (c) the JPEG XL Project Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Functions for reading a jpeg byte stream into a JPEGData object.

#ifndef LIB_JXL_JPEG_ENC_JPEG_DATA_READER_H_
#define LIB_JXL_JPEG_ENC_JPEG_DATA_READER_H_

#include <stddef.h>
#include <stdint.h>

#include "lib/jxl/jpeg/jpeg_data.h"

namespace jxl {
namespace jpeg {

enum class JpegReadMode {
  kReadHeader,  // only basic headers
  kReadTables,  // headers and tables (quant, Huffman, ...)
  kReadAll,     // everything
};

// Parses the JPEG stream contained in data[*pos ... len) and fills in *jpg with
// the parsed information.
// If mode is kReadHeader, it fills in only the image dimensions in *jpg.
// Returns false if the data is not valid JPEG, or if it contains an unsupported
// JPEG feature.
bool ReadJpeg(const uint8_t* data, size_t len, JpegReadMode mode,
              JPEGData* jpg);

}  // namespace jpeg
}  // namespace jxl

#endif  // LIB_JXL_JPEG_ENC_JPEG_DATA_READER_H_