1
- /* The Khronos Data Format Specification (version 1.3 ) */
1
+ /* The Khronos Data Format Specification (version 1.4.0 ) */
2
2
/*
3
- ** Copyright 2015-2020 The Khronos Group Inc.
3
+ ** Copyright 2015-2025 The Khronos Group Inc.
4
4
** SPDX-License-Identifier: Apache-2.0
5
5
*/
6
6
@@ -101,7 +101,7 @@ typedef enum _khr_df_mask_e {
101
101
((BDB)[KHR_DF_WORD_ ## X] = \
102
102
((BDB)[KHR_DF_WORD_ ## X] & \
103
103
~((KHR_DF_MASK_ ## X) << (KHR_DF_SHIFT_ ## X))) | \
104
- (((val) & (KHR_DF_MASK_ ## X)) << (KHR_DF_SHIFT_ ## X)))
104
+ (((uint32_t)( val) & (KHR_DF_MASK_ ## X)) << (KHR_DF_SHIFT_ ## X)))
105
105
106
106
/* Offsets relative to the start of a sample */
107
107
typedef enum _khr_df_sampleword_e {
@@ -135,14 +135,14 @@ typedef enum _khr_df_sampleshift_e {
135
135
136
136
typedef enum _khr_df_samplemask_e {
137
137
KHR_DF_SAMPLEMASK_BITOFFSET = 0xFFFFU ,
138
- KHR_DF_SAMPLEMASK_BITLENGTH = 0xFF ,
139
- KHR_DF_SAMPLEMASK_CHANNELID = 0xF ,
138
+ KHR_DF_SAMPLEMASK_BITLENGTH = 0xFFU ,
139
+ KHR_DF_SAMPLEMASK_CHANNELID = 0xFU ,
140
140
/* N.B. Qualifiers are defined as an offset into a byte */
141
- KHR_DF_SAMPLEMASK_QUALIFIERS = 0xF0 ,
142
- KHR_DF_SAMPLEMASK_SAMPLEPOSITION0 = 0xFF ,
143
- KHR_DF_SAMPLEMASK_SAMPLEPOSITION1 = 0xFF ,
144
- KHR_DF_SAMPLEMASK_SAMPLEPOSITION2 = 0xFF ,
145
- KHR_DF_SAMPLEMASK_SAMPLEPOSITION3 = 0xFF ,
141
+ KHR_DF_SAMPLEMASK_QUALIFIERS = 0xF0U ,
142
+ KHR_DF_SAMPLEMASK_SAMPLEPOSITION0 = 0xFFU ,
143
+ KHR_DF_SAMPLEMASK_SAMPLEPOSITION1 = 0xFFU ,
144
+ KHR_DF_SAMPLEMASK_SAMPLEPOSITION2 = 0xFFU ,
145
+ KHR_DF_SAMPLEMASK_SAMPLEPOSITION3 = 0xFFU ,
146
146
/* ISO C restricts enum values to range of int hence the
147
147
cast. We do it verbosely instead of using -1 to ensure
148
148
it is a 32-bit value even if int is 64 bits. */
@@ -169,7 +169,7 @@ typedef enum _khr_df_samplemask_e {
169
169
((S) * KHR_DF_WORD_SAMPLEWORDS) + \
170
170
KHR_DF_SAMPLEWORD_ ## X] & \
171
171
~((uint32_t)(KHR_DF_SAMPLEMASK_ ## X) << (KHR_DF_SAMPLESHIFT_ ## X))) | \
172
- (((val) & (uint32_t)(KHR_DF_SAMPLEMASK_ ## X)) << (KHR_DF_SAMPLESHIFT_ ## X)))
172
+ (((uint32_t)( val) & (uint32_t)(KHR_DF_SAMPLEMASK_ ## X)) << (KHR_DF_SAMPLESHIFT_ ## X)))
173
173
174
174
/* Helper macro:
175
175
Number of samples in basic descriptor block BDB */
@@ -213,7 +213,8 @@ typedef enum _khr_df_versionnumber_e {
213
213
KHR_DF_VERSIONNUMBER_1_1 = 0U , /* Version 1.1 did not bump the version number */
214
214
KHR_DF_VERSIONNUMBER_1_2 = 1U , /* Version 1.2 increased the version number */
215
215
KHR_DF_VERSIONNUMBER_1_3 = 2U , /* Version 1.3 increased the version number */
216
- KHR_DF_VERSIONNUMBER_LATEST = KHR_DF_VERSIONNUMBER_1_3 ,
216
+ KHR_DF_VERSIONNUMBER_1_4 = 2U , /* Version 1.4.0 did not bump the block version number */
217
+ KHR_DF_VERSIONNUMBER_LATEST = KHR_DF_VERSIONNUMBER_1_4 ,
217
218
KHR_DF_VERSIONNUMBER_MAX = 0xFFFFU
218
219
} khr_df_versionnumber_e ;
219
220
@@ -273,11 +274,15 @@ typedef enum _khr_df_model_e {
273
274
KHR_DF_MODEL_DXT4 = 130U ,
274
275
KHR_DF_MODEL_DXT5 = 130U ,
275
276
KHR_DF_MODEL_BC3 = 130U ,
276
- /* BC4 - single channel interpolated 8-bit data */
277
+ /* ATI1n/DXT5A/ BC4 - single channel interpolated 8-bit data */
277
278
/* (The UNORM/SNORM variation is recorded in the channel data) */
279
+ KHR_DF_MODEL_ATI1N = 131U ,
280
+ KHR_DF_MODEL_DXT5A = 131U ,
278
281
KHR_DF_MODEL_BC4 = 131U ,
279
- /* BC5 - two channel interpolated 8-bit data */
282
+ /* ATI2n_XY/DXN/ BC5 - two channel interpolated 8-bit data */
280
283
/* (The UNORM/SNORM variation is recorded in the channel data) */
284
+ KHR_DF_MODEL_ATI2N_XY = 132U ,
285
+ KHR_DF_MODEL_DXN = 132U ,
281
286
KHR_DF_MODEL_BC5 = 132U ,
282
287
/* BC6H - DX11 format for 16-bit float channels */
283
288
KHR_DF_MODEL_BC6H = 133U ,
@@ -502,7 +507,6 @@ typedef enum _khr_df_model_channels_e {
502
507
KHR_DF_CHANNEL_PVRTC2_DATA = 0U ,
503
508
KHR_DF_CHANNEL_PVRTC2_COLOR = 0U ,
504
509
/* MODEL UASTC */
505
- KHR_DF_CHANNEL_UASTC_DATA = 0U ,
506
510
KHR_DF_CHANNEL_UASTC_RGB = 0U ,
507
511
KHR_DF_CHANNEL_UASTC_RGBA = 3U ,
508
512
KHR_DF_CHANNEL_UASTC_RRR = 4U ,
@@ -538,6 +542,8 @@ typedef enum _khr_df_primaries_e {
538
542
KHR_DF_PRIMARIES_BT601_SMPTE = 3U ,
539
543
/* Color primaries of ITU-R BT.2020 */
540
544
KHR_DF_PRIMARIES_BT2020 = 4U ,
545
+ /* ITU-R BT.2100 uses the same primaries as BT.2020 */
546
+ KHR_DF_PRIMARIES_BT2100 = 4U ,
541
547
/* CIE theoretical color coordinate space */
542
548
KHR_DF_PRIMARIES_CIEXYZ = 5U ,
543
549
/* Academy Color Encoding System primaries */
@@ -559,49 +565,78 @@ typedef enum _khr_df_primaries_e {
559
565
("gamma correction"). Most transfer functions are not a pure
560
566
power function and also include a linear element.
561
567
LAB and related absolute color representations should use
562
- KHR_DF_TRANSFER_UNSPECIFIED. */
568
+ KHR_DF_TRANSFER_UNSPECIFIED.
569
+ These encodings indicate that the representation has had
570
+ the corresponding transfer function applied relative to a
571
+ linear representation; hence to process the linear intensity
572
+ represented by the value, a corresponding inverse transform
573
+ must be applied. */
563
574
typedef enum _khr_df_transfer_e {
564
575
/* No transfer function defined */
565
576
KHR_DF_TRANSFER_UNSPECIFIED = 0U ,
566
577
/* Linear transfer function (value proportional to intensity) */
567
578
KHR_DF_TRANSFER_LINEAR = 1U ,
568
- /* Perceptually-linear transfer function of sRGH (~2.4) */
579
+ /* Perceptually-linear transfer function of sRGB (~2.2); also used for scRGB */
569
580
KHR_DF_TRANSFER_SRGB = 2U ,
581
+ KHR_DF_TRANSFER_SRGB_EOTF = 2U ,
582
+ KHR_DF_TRANSFER_SCRGB = 2U ,
583
+ KHR_DF_TRANSFER_SCRGB_EOTF = 2U ,
570
584
/* Perceptually-linear transfer function of ITU BT.601, BT.709 and BT.2020 (~1/.45) */
571
585
KHR_DF_TRANSFER_ITU = 3U ,
572
- /* SMTPE170M (digital NTSC) defines an alias for the ITU transfer function (~1/.45) */
573
- KHR_DF_TRANSFER_SMTPE170M = 3U ,
586
+ KHR_DF_TRANSFER_ITU_OETF = 3U ,
587
+ KHR_DF_TRANSFER_BT601 = 3U ,
588
+ KHR_DF_TRANSFER_BT601_OETF = 3U ,
589
+ KHR_DF_TRANSFER_BT709 = 3U ,
590
+ KHR_DF_TRANSFER_BT709_OETF = 3U ,
591
+ KHR_DF_TRANSFER_BT2020 = 3U ,
592
+ KHR_DF_TRANSFER_BT2020_OETF = 3U ,
593
+ /* SMTPE170M (digital NTSC) defines an alias for the ITU transfer function (~1/.45) and a linear OOTF */
594
+ KHR_DF_TRANSFER_SMTPE170M = 3U ,
595
+ KHR_DF_TRANSFER_SMTPE170M_OETF = 3U ,
596
+ KHR_DF_TRANSFER_SMTPE170M_EOTF = 3U ,
574
597
/* Perceptually-linear gamma function of original NTSC (simple 2.2 gamma) */
575
598
KHR_DF_TRANSFER_NTSC = 4U ,
599
+ KHR_DF_TRANSFER_NTSC_EOTF = 4U ,
576
600
/* Sony S-log used by Sony video cameras */
577
601
KHR_DF_TRANSFER_SLOG = 5U ,
602
+ KHR_DF_TRANSFER_SLOG_OETF = 5U ,
578
603
/* Sony S-log 2 used by Sony video cameras */
579
604
KHR_DF_TRANSFER_SLOG2 = 6U ,
605
+ KHR_DF_TRANSFER_SLOG2_OETF = 6U ,
580
606
/* ITU BT.1886 EOTF */
581
607
KHR_DF_TRANSFER_BT1886 = 7U ,
582
- /* ITU BT.2100 HLG OETF */
608
+ KHR_DF_TRANSFER_BT1886_EOTF = 7U ,
609
+ /* ITU BT.2100 HLG OETF (typical scene-referred content), linear light normalized 0..1 */
583
610
KHR_DF_TRANSFER_HLG_OETF = 8U ,
584
- /* ITU BT.2100 HLG EOTF */
611
+ /* ITU BT.2100 HLG EOTF (nominal HDR display of HLG content), linear light normalized 0..1 */
585
612
KHR_DF_TRANSFER_HLG_EOTF = 9U ,
586
- /* ITU BT.2100 PQ EOTF */
613
+ /* ITU BT.2100 PQ EOTF (typical HDR display-referred PQ content) */
587
614
KHR_DF_TRANSFER_PQ_EOTF = 10U ,
588
- /* ITU BT.2100 PQ OETF */
615
+ /* ITU BT.2100 PQ OETF (nominal scene described by PQ HDR content) */
589
616
KHR_DF_TRANSFER_PQ_OETF = 11U ,
590
617
/* DCI P3 transfer function */
591
618
KHR_DF_TRANSFER_DCIP3 = 12U ,
619
+ KHR_DF_TRANSFER_DCIP3_EOTF = 12U ,
592
620
/* Legacy PAL OETF */
593
621
KHR_DF_TRANSFER_PAL_OETF = 13U ,
594
622
/* Legacy PAL 625-line EOTF */
595
623
KHR_DF_TRANSFER_PAL625_EOTF = 14U ,
596
624
/* Legacy ST240 transfer function */
597
625
KHR_DF_TRANSFER_ST240 = 15U ,
626
+ KHR_DF_TRANSFER_ST240_OETF = 15U ,
627
+ KHR_DF_TRANSFER_ST240_EOTF = 15U ,
598
628
/* ACEScc transfer function */
599
629
KHR_DF_TRANSFER_ACESCC = 16U ,
630
+ KHR_DF_TRANSFER_ACESCC_OETF = 16U ,
600
631
/* ACEScct transfer function */
601
- KHR_DF_TRANSFER_ACESCCT = 17U ,
632
+ KHR_DF_TRANSFER_ACESCCT = 17U ,
633
+ KHR_DF_TRANSFER_ACESCCT_OETF = 17U ,
602
634
/* Adobe RGB (1998) transfer function */
603
- KHR_DF_TRANSFER_ADOBERGB = 18U ,
604
- KHR_DF_TRANSFER_MAX = 0xFFU
635
+ KHR_DF_TRANSFER_ADOBERGB = 18U ,
636
+ KHR_DF_TRANSFER_ADOBERGB_EOTF = 18U ,
637
+ /* Legacy ITU BT.2100 HLG OETF (typical scene-referred content), linear light normalized 0..12 */
638
+ KHR_DF_TRANSFER_HLG_UNNORMALIZED_OETF = 19U ,
639
+ KHR_DF_TRANSFER_MAX = 0xFFU
605
640
} khr_df_transfer_e ;
606
641
607
642
typedef enum _khr_df_flags_e {
0 commit comments