UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IMediaTextureSample.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
6#include "IMediaTimeSource.h"
7#include "Math/Color.h"
8#include "Math/IntPoint.h"
9#include "Math/MathFwd.h"
10#include "Math/Matrix.h"
11#include "Math/Plane.h"
12#include "Misc/Optional.h"
13#include "Misc/Timecode.h"
14#include "Misc/Timespan.h"
15#include "Misc/FrameRate.h"
17
18#include "HDRHelper.h"
21#include "MediaShaders.h"
22
23#if WITH_ENGINE
24 class FRHITexture;
27#endif
28
29
41{
44
47
50
53
56
58 CharBMP,
59
62
65
68
71
74
77
80
83
85 YUVv210,
86
88 YUVv216,
89
92
94 Y416,
95
97 R4FL,
98
100 P010,
101
103 DXT1,
104
106 DXT5,
107
109 BC4,
110
113
116
119
121 RGBA16,
122
124 ABGR16,
125
128
131};
132
134{
136
138 {
140 switch (InSampleFormat)
141 {
147 return true;
148 }
150 return false;
151 }
152};
153
166
168{
169 Original = 0,
170 CW90,
171 CW180,
172 CW270
173};
174
176{
177 /* This the reference white level for mapping UE scene-referred colors to nits (see TonemapCommon.ush). */
178 static constexpr float kLinearToNitsScale_UE = 100.0f;
179
180 /* This the reference white level for mapping SDR 1.0 to nits, as defined by ITU-R Report BT.2408. */
181 static constexpr float kLinearToNitsScale_BT2408 = 203.0f;
182}
183
184static constexpr float kMediaSample_HDR_NitsNormalizationFactor = 1.0f / MediaTextureSample::kLinearToNitsScale_UE;
185
199{
200public:
209 virtual const void* GetBuffer() = 0;
210
220 virtual FIntPoint GetDim() const = 0;
221
228 virtual uint8 GetNumMips() const
229 {
230 return 1;
231 }
232
243
253 virtual FTimespan GetDuration() const = 0;
254
262
272 virtual FIntPoint GetOutputDim() const = 0;
273
280 virtual uint32 GetStride() const = 0;
281
286 virtual bool ShouldApplyColorConversion() const { return true; }
287
288#if WITH_ENGINE
289
296 virtual FRHITexture* GetTexture() const = 0;
297
304 {
305 return nullptr;
306 }
307
314 {
315 return nullptr;
316 }
317
318#endif //WITH_ENGINE
319
328 virtual FMediaTimeStamp GetTime() const = 0;
329
337
346
355 virtual bool IsCacheable() const = 0;
356
362 virtual bool IsOutputSrgb() const = 0;
363
370 {
372 }
373
379 virtual double GetAspectRatio() const
380 {
382 return (double)OutputDim.X / (double)OutputDim.Y;
383 }
384
388 virtual bool IsExternalImage() const
389 {
390 return false;
391 }
392
402 {
403 return FLinearColor(1.0f, 0.0f, 0.0f, 1.0f);
404 }
405
414 virtual FLinearColor GetOffset() const
415 {
416 return FLinearColor(0.0f, 0.0f, 0.0f, 0.0f);
417 }
418
426 virtual const FMatrix& GetYUVToRGBMatrix() const
427 {
429 }
430
431 /*
432 * Get full range color flag
433 */
434 virtual bool GetFullRange() const
435 {
436 return false;
437 }
438
445 {
447 FVector Off;
448 switch (GetFormat())
449 {
456 default: Off = MediaShaders::YUVOffset8bits; break;
457 }
458 Pre.M[0][3] = -Off.X;
459 Pre.M[1][3] = -Off.Y;
460 Pre.M[2][3] = -Off.Z;
461 return FMatrix44f(MediaShaders::YuvToRgbRec709Scaled * Pre); // assumes sRGB & video range
462 }
463
464 /*
465 * Get sample source color space (defaults to the sRGB/Rec709 gamut)
466 */
468 {
470 }
471
472 UE_DEPRECATED(5.5, "GetGamutToXYZMatrix is deprecated, please use GetSourceColorSpace instead.")
477
478 UE_DEPRECATED(5.5, "GetWhitePoint is deprecated, please use GetSourceColorSpace instead.")
483
484 UE_DEPRECATED(5.5, "GetDisplayPrimaryRed is deprecated, please use GetMasteringDisplayColorSpace instead.")
486 {
487 return FVector2d(0.64, 0.33);
488 }
489
490 UE_DEPRECATED(5.5, "GetDisplayPrimaryGreen is deprecated, please use GetMasteringDisplayColorSpace instead.")
492 {
493 return FVector2d(0.30, 0.60);
494 }
495
496 UE_DEPRECATED(5.5, "GetDisplayPrimaryBlue is deprecated, please use GetMasteringDisplayColorSpace instead.")
498 {
499 return FVector2d(0.15, 0.06);
500 }
501
509
517
521 virtual float GetHDRNitsNormalizationFactor() const
522 {
523 return (GetEncodingType() == UE::Color::EEncoding::sRGB || GetEncodingType() == UE::Color::EEncoding::Linear) ? 1.0f : kMediaSample_HDR_NitsNormalizationFactor;
524 }
525
529 virtual bool GetDisplayMasteringLuminance(float& OutMin, float& OutMax) const
530 {
531 return false;
532 }
533
541
546 {
547 return false;
548 }
549
557
561 virtual void Reset() { }
562
563public:
564
567};
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EMediaOrientation
Definition IMediaTextureSample.h:168
EMediaTextureSampleFormat
Definition IMediaTextureSample.h:41
UE::Math::TMatrix< double > FMatrix44d
Definition MathFwd.h:64
UE::Math::TVector2< double > FVector2d
Definition MathFwd.h:61
UE::Math::TMatrix< float > FMatrix44f
Definition MathFwd.h:77
#define PRAGMA_DISABLE_SWITCH_UNHANDLED_ENUM_CASE_WARNINGS
Definition MSVCPlatformCompilerPreSetup.h:105
#define PRAGMA_RESTORE_SWITCH_UNHANDLED_ENUM_CASE_WARNINGS
Definition MSVCPlatformCompilerPreSetup.h:111
bool IsBlockCompressedFormat(EPixelFormat Format)
Definition PixelFormat.h:312
RENDERCORE_API FMatrix44f GamutToXYZMatrix(EDisplayColorGamut ColorGamut)
Definition RenderCore.cpp:680
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IMediaTimeSource.h:28
Definition RHIResources.h:2153
Definition IMediaTextureSampleConverter.h:50
Definition IMediaTextureSampleConverter.h:15
Definition IMediaTextureSample.h:199
virtual EMediaTextureSampleFormat GetFormat() const =0
virtual FMatrix44f GetSampleToRGBMatrix() const
Definition IMediaTextureSample.h:444
virtual bool GetFullRange() const
Definition IMediaTextureSample.h:434
virtual TOptional< FFrameRate > GetFramerate() const
Definition IMediaTextureSample.h:345
virtual FMediaTextureTilingDescription GetTilingDescription() const
Definition IMediaTextureSample.h:239
virtual FVector2d GetWhitePoint() const
Definition IMediaTextureSample.h:479
virtual bool GetMaxLuminanceLevels(uint16 &OutCLL, uint16 &OutFALL) const
Definition IMediaTextureSample.h:545
virtual MediaShaders::EToneMapMethod GetToneMapMethod() const
Definition IMediaTextureSample.h:553
virtual bool IsCacheable() const =0
virtual FLinearColor GetOffset() const
Definition IMediaTextureSample.h:414
virtual FIntPoint GetDim() const =0
virtual FVector2d GetDisplayPrimaryBlue() const
Definition IMediaTextureSample.h:497
virtual uint8 GetNumMips() const
Definition IMediaTextureSample.h:228
virtual TOptional< FTimecode > GetTimecode() const
Definition IMediaTextureSample.h:336
virtual void Reset()
Definition IMediaTextureSample.h:561
virtual FTimespan GetDuration() const =0
virtual FMediaTimeStamp GetTime() const =0
virtual FIntPoint GetOutputDim() const =0
virtual FVector2d GetDisplayPrimaryGreen() const
Definition IMediaTextureSample.h:491
virtual UE::Color::EChromaticAdaptationMethod GetChromaticAdapationMethod() const
Definition IMediaTextureSample.h:505
virtual bool ShouldApplyColorConversion() const
Definition IMediaTextureSample.h:286
virtual const FMatrix & GetYUVToRGBMatrix() const
Definition IMediaTextureSample.h:426
virtual const void * GetBuffer()=0
virtual UE::Color::EEncoding GetEncodingType() const
Definition IMediaTextureSample.h:513
virtual double GetAspectRatio() const
Definition IMediaTextureSample.h:379
virtual FLinearColor GetScaleRotation() const
Definition IMediaTextureSample.h:401
virtual bool GetDisplayMasteringLuminance(float &OutMin, float &OutMax) const
Definition IMediaTextureSample.h:529
virtual FVector2d GetDisplayPrimaryRed() const
Definition IMediaTextureSample.h:485
virtual const UE::Color::FColorSpace & GetSourceColorSpace() const
Definition IMediaTextureSample.h:467
virtual float GetHDRNitsNormalizationFactor() const
Definition IMediaTextureSample.h:521
virtual bool IsExternalImage() const
Definition IMediaTextureSample.h:388
virtual TOptional< UE::Color::FColorSpace > GetDisplayMasteringColorSpace() const
Definition IMediaTextureSample.h:537
virtual bool IsOutputSrgb() const =0
virtual FMatrix44d GetGamutToXYZMatrix() const
Definition IMediaTextureSample.h:473
virtual uint32 GetStride() const =0
virtual ~IMediaTextureSample()
Definition IMediaTextureSample.h:566
virtual EMediaOrientation GetOrientation() const
Definition IMediaTextureSample.h:369
Definition ColorSpace.h:98
static CORE_API const FColorSpace & GetSRGB()
Definition ColorSpace.cpp:72
const FMatrix YuvToRgbRec709Scaled
Definition MediaShaders.cpp:63
EToneMapMethod
Definition MediaShaders.h:26
const FVector YUVOffset8bits
Definition MediaShaders.cpp:108
const FVector YUVOffset16bits
Definition MediaShaders.cpp:114
const FVector YUVOffsetFloat
Definition MediaShaders.cpp:117
const FVector YUVOffset10bits
Definition MediaShaders.cpp:111
Definition IMediaTextureSample.cpp:6
const TCHAR * EnumToString(const EMediaTextureSampleFormat InSampleFormat)
Definition IMediaTextureSample.cpp:7
Definition IMediaTextureSample.h:176
FVector2d GetWhitePoint(EWhitePoint InWhitePoint)
Definition ColorSpace.h:78
constexpr EChromaticAdaptationMethod DEFAULT_CHROMATIC_ADAPTATION_METHOD
Definition ColorManagementDefines.h:80
EEncoding
Definition ColorManagementDefines.h:20
EChromaticAdaptationMethod
Definition ColorManagementDefines.h:72
Definition Color.h:48
Definition IMediaTextureSample.h:156
bool IsValid() const
Definition IMediaTextureSample.h:161
int32 TileBorderSize
Definition IMediaTextureSample.h:159
FIntPoint TileNum
Definition IMediaTextureSample.h:157
FIntPoint TileSize
Definition IMediaTextureSample.h:158
Definition Timespan.h:76
Definition Optional.h:131
Definition IntPoint.h:25
IntType Y
Definition IntPoint.h:37
static const TIntPoint ZeroValue
Definition IntPoint.h:45
IntType X
Definition IntPoint.h:34
T M[4][4]
Definition Matrix.h:49
static CORE_API const TMatrix Identity
Definition Matrix.h:52