107 lines
2.1 KiB
C++
107 lines
2.1 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "HAL/Platform.h"
|
|
#include "ColorManagement/ColorManagementDefines.h"
|
|
#include "Misc/AssertionMacros.h"
|
|
|
|
namespace ElectraColorimetryUtils
|
|
{
|
|
static constexpr uint8 DefaultMPEGColorPrimaries = 2;
|
|
static constexpr uint8 DefaultMPEGMatrixCoefficients = 2;
|
|
static constexpr uint8 DefaultMPEGTransferCharacteristics = 2;
|
|
|
|
UE::Color::EColorSpace TranslateMPEGColorPrimaries(uint8 InPrimaries)
|
|
{
|
|
switch (InPrimaries)
|
|
{
|
|
case 1: // Rec709
|
|
case 2: // unknown
|
|
{
|
|
return UE::Color::EColorSpace::sRGB;
|
|
}
|
|
case 6: // Rec601
|
|
case 7: // Rec601 (historical)
|
|
{
|
|
return UE::Color::EColorSpace::sRGB;
|
|
}
|
|
case 9: // Rec2020
|
|
{
|
|
return UE::Color::EColorSpace::Rec2020;
|
|
}
|
|
default:
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
return UE::Color::EColorSpace::sRGB;
|
|
}
|
|
|
|
UE::Color::EColorSpace TranslateMPEGMatrixCoefficients(uint8 InMatrixCoefficients)
|
|
{
|
|
switch (InMatrixCoefficients)
|
|
{
|
|
case 0: // ID (RGB)
|
|
{
|
|
return UE::Color::EColorSpace::None;
|
|
}
|
|
case 1: // Rec709
|
|
case 2: // unknown
|
|
{
|
|
return UE::Color::EColorSpace::sRGB;
|
|
}
|
|
case 6: // Rec601
|
|
case 7: // Rec601 (historical)
|
|
{
|
|
return UE::Color::EColorSpace::sRGB;
|
|
}
|
|
case 9: // Rec2020
|
|
{
|
|
return UE::Color::EColorSpace::Rec2020;
|
|
}
|
|
default:
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
return UE::Color::EColorSpace::sRGB;
|
|
}
|
|
|
|
UE::Color::EEncoding TranslateMPEGTransferCharacteristics(uint8 InTransferCharacteristics)
|
|
{
|
|
switch (InTransferCharacteristics)
|
|
{
|
|
case 1:
|
|
case 6:
|
|
case 7:
|
|
case 14:
|
|
case 15: // Rec. ITU-R BT.1886-0
|
|
{
|
|
return UE::Color::EEncoding::sRGB; // using sRGB in place of HLG for now
|
|
}
|
|
case 18: // Rec. ITU-R BT.2100-2
|
|
{
|
|
return UE::Color::EEncoding::sRGB; // using sRGB in place of HLG for now
|
|
}
|
|
case 2: // unknown
|
|
{
|
|
return UE::Color::EEncoding::sRGB;
|
|
}
|
|
case 8:
|
|
{
|
|
return UE::Color::EEncoding::Linear;
|
|
}
|
|
case 16:
|
|
{
|
|
return UE::Color::EEncoding::ST2084;
|
|
}
|
|
default:
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
return UE::Color::EEncoding::sRGB;
|
|
}
|
|
};
|