@@ -96,6 +96,7 @@ static const char* MessageText[] =
96
96
" ditto key" ,
97
97
" ditto key is set to \" same as the previous frame\" but header data differs" ,
98
98
" number of image elements" ,
99
+ " packing field value" ,
99
100
};
100
101
101
102
enum code : uint8_t
@@ -106,6 +107,7 @@ enum code : uint8_t
106
107
DittoKey,
107
108
DittoKey_NotSame,
108
109
NumberOfElements,
110
+ Packing,
109
111
Max
110
112
};
111
113
@@ -134,6 +136,7 @@ enum class packing : uint8_t
134
136
Packed,
135
137
FilledA,
136
138
FilledB,
139
+ Pack3,
137
140
};
138
141
enum flags : uint8_t
139
142
{
@@ -223,6 +226,8 @@ struct dpx_also DPX_Also[] =
223
226
{ { colorspace::Y , 8 , endianness::BE, packing::FilledA }, dpx::flavor::Raw_Y_8 },
224
227
{ { colorspace::Y , 16 , endianness::LE, packing::FilledA }, dpx::flavor::Raw_Y_16_LE },
225
228
{ { colorspace::Y , 16 , endianness::BE, packing::FilledA }, dpx::flavor::Raw_Y_16_BE },
229
+ { { colorspace::Y , 16 , endianness::LE, packing::Pack3 }, dpx::flavor::Raw_Y_16_LE },
230
+ { { colorspace::Y , 16 , endianness::BE, packing::Pack3 }, dpx::flavor::Raw_Y_16_BE },
226
231
};
227
232
228
233
// ***************************************************************************
@@ -670,7 +675,10 @@ void dpx::ConformanceCheck()
670
675
bool HasEncoding = false ;
671
676
for (uint16_t i = 0 ; i < NumberOfElements; i++)
672
677
{
673
- uint32_t Encoding = Get_X4 ();
678
+ uint16_t Packing = Get_X2 ();
679
+ if (Packing > (uint16_t )packing::FilledB)
680
+ Invalid (invalid::Packing);
681
+ uint16_t Encoding = Get_X2 ();
674
682
if (!HasEncoding && Encoding)
675
683
HasEncoding = true ;
676
684
uint32_t OffsetToData = Get_X4 ();
0 commit comments