Skip to content

Commit 284244e

Browse files
Support of non conforming packing value 3
1 parent a9d4f4e commit 284244e

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

Project/GNU/CLI/test/test1.txt

+1
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ Formats/DPX/Flavors/Y_10_FilledB_BE/Y_10_FilledB_BE_Modified_9x4_Scanity.dpx
210210
Formats/DPX/Flavors/Y_12_Packed_BE/086400.dpx pass
211211
Formats/DPX/Flavors/Y_16_FilledA_BE/0000001.dpx pass
212212
Formats/DPX/Flavors/Y_16_Packed_BE/FFmpeg_gray16be.dpx pass
213+
Formats/DPX/Flavors/Y_16_Packed_BE/pack3.dpx pass
213214
Formats/DPX/Flavors/Y_16_Packed_LE/FFmpeg_gray16le.dpx pass
214215
Formats/DPX/Conformance/0004_OffsetToImageData/0004_OffsetToImageData_000000.dpx fail
215216
Formats/DPX/Conformance/0008_VersionNumber/0008_VersionNumber_null.dpx pass

Source/Lib/Uncompressed/DPX/DPX.cpp

+9-1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ static const char* MessageText[] =
9696
"ditto key",
9797
"ditto key is set to \"same as the previous frame\" but header data differs",
9898
"number of image elements",
99+
"packing field value",
99100
};
100101

101102
enum code : uint8_t
@@ -106,6 +107,7 @@ enum code : uint8_t
106107
DittoKey,
107108
DittoKey_NotSame,
108109
NumberOfElements,
110+
Packing,
109111
Max
110112
};
111113

@@ -134,6 +136,7 @@ enum class packing : uint8_t
134136
Packed,
135137
FilledA,
136138
FilledB,
139+
Pack3,
137140
};
138141
enum flags : uint8_t
139142
{
@@ -223,6 +226,8 @@ struct dpx_also DPX_Also[] =
223226
{ { colorspace::Y , 8, endianness::BE, packing::FilledA }, dpx::flavor::Raw_Y_8 },
224227
{ { colorspace::Y , 16, endianness::LE, packing::FilledA }, dpx::flavor::Raw_Y_16_LE },
225228
{ { 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 },
226231
};
227232

228233
//***************************************************************************
@@ -670,7 +675,10 @@ void dpx::ConformanceCheck()
670675
bool HasEncoding = false;
671676
for (uint16_t i = 0; i < NumberOfElements; i++)
672677
{
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();
674682
if (!HasEncoding && Encoding)
675683
HasEncoding = true;
676684
uint32_t OffsetToData = Get_X4();

0 commit comments

Comments
 (0)