LIBJXL
codestream_header.h
Go to the documentation of this file.
1 /* Copyright (c) the JPEG XL Project Authors. All rights reserved.
2  *
3  * Use of this source code is governed by a BSD-style
4  * license that can be found in the LICENSE file.
5  */
6 
13 #ifndef JXL_CODESTREAM_HEADER_H_
14 #define JXL_CODESTREAM_HEADER_H_
15 
16 #include <stddef.h>
17 #include <stdint.h>
18 
19 #include "jxl/color_encoding.h"
20 #include "jxl/types.h"
21 
22 #if defined(__cplusplus) || defined(c_plusplus)
23 extern "C" {
24 #endif
25 
31 typedef enum {
32  JXL_ORIENT_IDENTITY = 1,
33  JXL_ORIENT_FLIP_HORIZONTAL = 2,
34  JXL_ORIENT_ROTATE_180 = 3,
35  JXL_ORIENT_FLIP_VERTICAL = 4,
36  JXL_ORIENT_TRANSPOSE = 5,
37  JXL_ORIENT_ROTATE_90_CW = 6,
38  JXL_ORIENT_ANTI_TRANSPOSE = 7,
39  JXL_ORIENT_ROTATE_90_CCW = 8,
41 
44 typedef enum {
45  JXL_CHANNEL_ALPHA,
46  JXL_CHANNEL_DEPTH,
47  JXL_CHANNEL_SPOT_COLOR,
48  JXL_CHANNEL_SELECTION_MASK,
49  JXL_CHANNEL_BLACK,
50  JXL_CHANNEL_CFA,
51  JXL_CHANNEL_THERMAL,
52  JXL_CHANNEL_RESERVED0,
53  JXL_CHANNEL_RESERVED1,
54  JXL_CHANNEL_RESERVED2,
55  JXL_CHANNEL_RESERVED3,
56  JXL_CHANNEL_RESERVED4,
57  JXL_CHANNEL_RESERVED5,
58  JXL_CHANNEL_RESERVED6,
59  JXL_CHANNEL_RESERVED7,
60  JXL_CHANNEL_UNKNOWN,
61  JXL_CHANNEL_OPTIONAL
63 
65 typedef struct {
67  uint32_t xsize;
68 
70  uint32_t ysize;
72 
77 typedef struct {
79  uint32_t tps_numerator;
80 
82  uint32_t tps_denominator;
83 
85  uint32_t num_loops;
86 
91 
95 typedef struct JxlBasicInfo {
96  /* TODO(lode): need additional fields for (transcoded) JPEG? For reusable
97  * fields orientation must be read from Exif APP1. For has_icc_profile: must
98  * look up where ICC profile is guaranteed to be in a JPEG file to be able to
99  * indicate this. */
100 
101  /* TODO(lode): make struct packed, and/or make this opaque struct with getter
102  * functions (still separate struct from opaque decoder) */
103 
109 
112  uint32_t xsize;
113 
116  uint32_t ysize;
117 
120  uint32_t bits_per_sample;
121 
129 
137 
142  float min_nits;
143 
147 
154 
171 
176 
181 
186 
195 
204 
207  uint32_t alpha_bits;
208 
213 
217 
222 
228 
231 typedef struct {
235 
238  uint32_t bits_per_sample;
239 
244 
250  uint32_t dim_shift;
251 
255  uint32_t name_length;
256 
261 
265  float spot_color[4];
266 
270  uint32_t cfa_channel;
272 
273 /* TODO(lode): add API to get the codestream header extensions. */
275 typedef struct {
277  uint64_t extensions;
279 
281 typedef struct {
285  uint32_t duration;
286 
295  uint32_t timecode;
296 
300  uint32_t name_length;
301 
306 
307 #if defined(__cplusplus) || defined(c_plusplus)
308 }
309 #endif
310 
311 #endif /* JXL_CODESTREAM_HEADER_H_ */
JxlExtraChannelInfo::cfa_channel
uint32_t cfa_channel
Definition: codestream_header.h:270
JxlExtraChannelInfo::dim_shift
uint32_t dim_shift
Definition: codestream_header.h:250
JxlBasicInfo
struct JxlBasicInfo JxlBasicInfo
JxlBasicInfo::alpha_premultiplied
JXL_BOOL alpha_premultiplied
Definition: codestream_header.h:216
JxlBasicInfo::bits_per_sample
uint32_t bits_per_sample
Definition: codestream_header.h:120
JXL_BOOL
#define JXL_BOOL
Definition: types.h:27
JxlBasicInfo::xsize
uint32_t xsize
Definition: codestream_header.h:112
types.h
Data types for the JPEG XL API, for both encoding and decoding.
JxlBasicInfo::ysize
uint32_t ysize
Definition: codestream_header.h:116
JxlExtraChannelInfo::name_length
uint32_t name_length
Definition: codestream_header.h:255
JxlBasicInfo::num_color_channels
uint32_t num_color_channels
Definition: codestream_header.h:194
JxlHeaderExtensions::extensions
uint64_t extensions
Definition: codestream_header.h:277
JxlBasicInfo::alpha_exponent_bits
uint32_t alpha_exponent_bits
Definition: codestream_header.h:212
JxlBasicInfo::linear_below
float linear_below
Definition: codestream_header.h:153
JxlPreviewHeader::ysize
uint32_t ysize
Definition: codestream_header.h:70
JxlBasicInfo::have_preview
JXL_BOOL have_preview
Definition: codestream_header.h:175
JxlAnimationHeader::num_loops
uint32_t num_loops
Definition: codestream_header.h:85
JxlBasicInfo::relative_to_max_display
JXL_BOOL relative_to_max_display
Definition: codestream_header.h:146
JxlFrameHeader::duration
uint32_t duration
Definition: codestream_header.h:285
JxlFrameHeader::name_length
uint32_t name_length
Definition: codestream_header.h:300
JxlPreviewHeader
Definition: codestream_header.h:65
JxlBasicInfo::animation
JxlAnimationHeader animation
Definition: codestream_header.h:226
JxlBasicInfo::intensity_target
float intensity_target
Definition: codestream_header.h:136
JxlExtraChannelInfo
Definition: codestream_header.h:231
JxlBasicInfo::have_animation
JXL_BOOL have_animation
Definition: codestream_header.h:180
JxlBasicInfo::orientation
JxlOrientation orientation
Definition: codestream_header.h:185
JxlFrameHeader
Definition: codestream_header.h:281
JxlOrientation
JxlOrientation
Definition: codestream_header.h:31
JxlExtraChannelInfo::type
JxlExtraChannelType type
Definition: codestream_header.h:234
JxlBasicInfo::preview
JxlPreviewHeader preview
Definition: codestream_header.h:221
JxlAnimationHeader::tps_denominator
uint32_t tps_denominator
Definition: codestream_header.h:82
JxlExtraChannelInfo::alpha_associated
JXL_BOOL alpha_associated
Definition: codestream_header.h:260
JxlBasicInfo::alpha_bits
uint32_t alpha_bits
Definition: codestream_header.h:207
JxlBasicInfo::num_extra_channels
uint32_t num_extra_channels
Definition: codestream_header.h:203
JxlAnimationHeader::tps_numerator
uint32_t tps_numerator
Definition: codestream_header.h:79
JxlHeaderExtensions
Definition: codestream_header.h:275
JxlBasicInfo::exponent_bits_per_sample
uint32_t exponent_bits_per_sample
Definition: codestream_header.h:128
color_encoding.h
Color Encoding definitions used by JPEG XL. All CIE units are for the standard 1931 2 degree observer...
JxlBasicInfo
Definition: codestream_header.h:95
JxlPreviewHeader::xsize
uint32_t xsize
Definition: codestream_header.h:67
JxlBasicInfo::min_nits
float min_nits
Definition: codestream_header.h:142
JxlBasicInfo::uses_original_profile
JXL_BOOL uses_original_profile
Definition: codestream_header.h:170
JxlExtraChannelInfo::exponent_bits_per_sample
uint32_t exponent_bits_per_sample
Definition: codestream_header.h:243
JxlAnimationHeader::have_timecodes
JXL_BOOL have_timecodes
Definition: codestream_header.h:89
JxlAnimationHeader
Definition: codestream_header.h:77
JxlFrameHeader::timecode
uint32_t timecode
Definition: codestream_header.h:295
JxlFrameHeader::is_last
JXL_BOOL is_last
Definition: codestream_header.h:304
JxlBasicInfo::have_container
JXL_BOOL have_container
Definition: codestream_header.h:108
JxlExtraChannelInfo::bits_per_sample
uint32_t bits_per_sample
Definition: codestream_header.h:238
JxlExtraChannelType
JxlExtraChannelType
Definition: codestream_header.h:44