blob: 66a6be355567c18189d104fd3261d208cbf89349 [file] [log] [blame]
/*
* JPEG XL Common Header Definitions
* Copyright (c) 2023 Leo Izen <leo.izen@gmail.com>
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVCODEC_JPEGXL_H
#define AVCODEC_JPEGXL_H
#define FF_JPEGXL_CODESTREAM_SIGNATURE_LE 0x0aff
#define FF_JPEGXL_CONTAINER_SIGNATURE_LE 0x204c584a0c000000
#define FF_JPEGXL_CODESTREAM_SIGNATURE_BE 0xff0a
#define FF_JPEGXL_CONTAINER_SIGNATURE_BE 0x0000000c4a584c20
typedef enum FFJXLFrameEncoding {
JPEGXL_ENC_VARDCT,
JPEGXL_ENC_MODULAR
} FFJXLFrameEncoding;
typedef enum FFJXLFrameType {
JPEGXL_FRAME_REGULAR,
JPEGXL_FRAME_LF,
JPEGXL_FRAME_REFERENCE_ONLY,
JPEGXL_FRAME_SKIP_PROGRESSIVE
} FFJXLFrameType;
typedef enum FFJXLBlendMode {
JPEGXL_BM_REPLACE,
JPEGXL_BM_ADD,
JPEGXL_BM_BLEND,
JPEGXL_BM_MULADD,
JPEGXL_BM_MUL
} FFJXLBlendMode;
typedef enum FFJXLExtraChannelType {
JPEGXL_CT_ALPHA = 0,
JPEGXL_CT_DEPTH,
JPEGXL_CT_SPOT_COLOR,
JPEGXL_CT_SELECTION_MASK,
JPEGXL_CT_BLACK,
JPEGXL_CT_CFA,
JPEGXL_CT_THERMAL,
JPEGXL_CT_NON_OPTIONAL = 15,
JPEGXL_CT_OPTIONAL
} FFJXLExtraChannelType;
typedef enum FFJXLColorSpace {
JPEGXL_CS_RGB = 0,
JPEGXL_CS_GRAY,
JPEGXL_CS_XYB,
JPEGXL_CS_UNKNOWN
} FFJXLColorSpace;
typedef enum FFJXLWhitePoint {
JPEGXL_WP_D65 = 1,
JPEGXL_WP_CUSTOM,
JPEGXL_WP_E = 10,
JPEGXL_WP_DCI = 11
} FFJXLWhitePoint;
typedef enum FFJXLPrimaries {
JPEGXL_PR_SRGB = 1,
JPEGXL_PR_CUSTOM,
JPEGXL_PR_2100 = 9,
JPEGXL_PR_P3 = 11,
} FFJXLPrimaries;
typedef enum FFJXLTransferCharacteristic {
JPEGXL_TR_BT709 = 1,
JPEGXL_TR_UNKNOWN,
JPEGXL_TR_LINEAR = 8,
JPEGXL_TR_SRGB = 13,
JPEGXL_TR_PQ = 16,
JPEGXL_TR_DCI,
JPEGXL_TR_HLG,
JPEGXL_TR_GAMMA = 1 << 24,
} FFJXLTransferCharacteristic;
#endif /* AVCODEC_JPEGXL_H */