UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FMediaTextureResource Class Reference

#include <MediaTextureResource.h>

+ Inheritance diagram for FMediaTextureResource:

Classes

struct  FRenderParams
 

Public Member Functions

MEDIAASSETS_API FMediaTextureResource (UMediaTexture &InOwner, FIntPoint &InOwnerDim, SIZE_T &InOwnerSize, FLinearColor InClearColor, FGuid InTextureGuid, bool bEnableGenMips, uint8 InNumMips, UE::Color::EColorSpace OverrideColorSpaceType)
 
virtual ~FMediaTextureResource ()
 
void Render (const FRenderParams &Params)
 
void FlushPendingData ()
 
void SetJustInTimeRenderParams (const FRenderParams &InJustInTimeRenderParams)
 
void ResetJustInTimeRenderParams ()
 
void JustInTimeRender ()
 
virtual FIntPoint GetSizeXY () const override
 
virtual FString GetFriendlyName () const override
 
virtual uint32 GetSizeX () const override
 
virtual uint32 GetSizeY () const override
 
virtual void InitRHI (FRHICommandListBase &RHICmdList) override
 
virtual void ReleaseRHI () override
 
- Public Member Functions inherited from FRenderTarget
ENGINE_API FRenderTarget ()
 
virtual ENGINE_API ~FRenderTarget ()
 
virtual ENGINE_API const FTextureRHIRefGetRenderTargetTexture () const
 
virtual ENGINE_API FUnorderedAccessViewRHIRef GetRenderTargetUAV () const
 
virtual ENGINE_API FRDGTextureRef GetRenderTargetTexture (FRDGBuilder &GraphBuilder) const
 
virtual ENGINE_API const FTextureRHIRefGetShaderResourceTexture () const
 
virtual ENGINE_API float GetDisplayGamma () const
 
virtual EDisplayColorGamut GetDisplayColorGamut () const
 
virtual EDisplayOutputFormat GetDisplayOutputFormat () const
 
virtual bool GetSceneHDREnabled () const
 
virtual void ProcessToggleFreezeCommand ()
 
virtual bool HasToggleFreezeCommand ()
 
virtual ENGINE_API bool ReadPixels (TArray< FColor > &OutImageData, FReadSurfaceDataFlags InFlags=FReadSurfaceDataFlags(RCM_UNorm, CubeFace_MAX), FIntRect InSrcRect=FIntRect(0, 0, 0, 0))
 
ENGINE_API bool ReadPixelsPtr (FColor *OutImageBytes, FReadSurfaceDataFlags InFlags=FReadSurfaceDataFlags(RCM_UNorm, CubeFace_MAX), FIntRect InSrcRect=FIntRect(0, 0, 0, 0))
 
ENGINE_API bool ReadFloat16Pixels (TArray< FFloat16Color > &OutImageData, ECubeFace CubeFace)
 
virtual ENGINE_API bool ReadFloat16Pixels (TArray< FFloat16Color > &OutImageData, FReadSurfaceDataFlags InFlags=FReadSurfaceDataFlags(RCM_UNorm, CubeFace_MAX), FIntRect InSrcRect=FIntRect(0, 0, 0, 0))
 
virtual ENGINE_API bool ReadLinearColorPixels (TArray< FLinearColor > &OutImageData, FReadSurfaceDataFlags InFlags=FReadSurfaceDataFlags(RCM_MinMax, CubeFace_MAX), FIntRect InSrcRect=FIntRect(0, 0, 0, 0))
 
ENGINE_API bool ReadLinearColorPixelsPtr (FLinearColor *OutImageBytes, FReadSurfaceDataFlags InFlags=FReadSurfaceDataFlags(RCM_MinMax, CubeFace_MAX), FIntRect InSrcRect=FIntRect(0, 0, 0, 0))
 
virtual FRHIGPUMask GetGPUMask (FRHICommandListImmediate &RHICmdList) const
 
- Public Member Functions inherited from FTextureResource
 FTextureResource ()
 
virtual ~FTextureResource ()
 
virtual bool IsProxy () const
 
virtual FTexture2DResourceGetTexture2DResource ()
 
virtual FTexture3DResourceGetTexture3DResource ()
 
virtual FTexture2DArrayResourceGetTexture2DArrayResource ()
 
virtual FStreamableTextureResourceGetStreamableTextureResource ()
 
virtual FVirtualTexture2DResourceGetVirtualTexture2DResource ()
 
virtual const FTexture2DResourceGetTexture2DResource () const
 
virtual const FTexture3DResourceGetTexture3DResource () const
 
virtual const FTexture2DArrayResourceGetTexture2DArrayResource () const
 
virtual const FStreamableTextureResourceGetStreamableTextureResource () const
 
virtual const FVirtualTexture2DResourceGetVirtualTexture2DResource () const
 
int32 GetCurrentMipCount () const
 
bool IsTextureRHIPartiallyResident () const
 
FRHITextureGetTexture2DRHI () const
 
FRHITextureGetTexture3DRHI () const
 
FRHITextureGetTexture2DArrayRHI () const
 
void SetTextureReference (FRHITextureReference *TextureReference)
 
FRHITextureReferenceGetTextureReference () const
 
- Public Member Functions inherited from FTexture
RENDERCORE_API FTexture ()
 
virtual RENDERCORE_API ~FTexture ()
 
RENDERCORE_API FTexture (const FTexture &)
 
RENDERCORE_API FTexture (FTexture &&)
 
RENDERCORE_API FTextureoperator= (const FTexture &Other)
 
RENDERCORE_API FTextureoperator= (FTexture &&Other)
 
const FTextureRHIRefGetTextureRHI ()
 
virtual RENDERCORE_API uint32 GetSizeZ () const
 
- Public Member Functions inherited from FRenderResource
RENDERCORE_API FRenderResource ()
 
RENDERCORE_API FRenderResource (ERHIFeatureLevel::Type InFeatureLevel)
 
RENDERCORE_API FRenderResource (const FRenderResource &)
 
RENDERCORE_API FRenderResource (FRenderResource &&)
 
RENDERCORE_API FRenderResourceoperator= (const FRenderResource &Other)
 
RENDERCORE_API FRenderResourceoperator= (FRenderResource &&Other)
 
virtual RENDERCORE_API ~FRenderResource ()
 
virtual RENDERCORE_API void InitResource (FRHICommandListBase &RHICmdList)
 
virtual RENDERCORE_API void ReleaseResource ()
 
RENDERCORE_API void UpdateRHI (FRHICommandListBase &RHICmdList)
 
bool IsInitialized () const
 
int32 GetListIndex () const
 
EInitPhase GetInitPhase () const
 
void SetOwnerName (FName InOwnerName)
 
FName GetOwnerName () const
 
void SetResourceName (FName InResourceName)
 
FName GetResourceName () const
 

Protected Member Functions

void ClearTexture (FRHICommandListImmediate &RHICmdList, const FLinearColor &ClearColor, bool SrgbOutput)
 
void ConvertSample (FRHICommandListImmediate &RHICmdList, const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &Sample, const FLinearColor &ClearColor, uint8 InTargetNumMips)
 
void ConvertTextureToOutput (FRHICommandListImmediate &RHICmdList, FRHITexture *InputTexture, const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &Sample)
 
void CopySample (FRHICommandListImmediate &RHICmdList, const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &Sample, const FLinearColor &ClearColor, uint8 InTargetNumMips, const FGuid &TextureGUID)
 
void UpdateResourceSize ()
 
void UpdateTextureReference (FRHICommandListImmediate &RHICmdList, FRHITexture *NewTexture)
 
void CreateIntermediateRenderTarget (FRHICommandListImmediate &RHICmdList, const FIntPoint &InDim, EPixelFormat InPixelFormat, bool bInSRGB, const FLinearColor &InClearColor, uint8 InNumMips, bool bNeedsUAVSupport)
 
void CacheNextAvailableSampleTime (const TSharedPtr< FMediaTextureSampleSource, ESPMode::ThreadSafe > &InSampleQueue) const
 
void SetupSampler ()
 
void CopyFromExternalTexture (FRHICommandListImmediate &RHICmdList, const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &Sample, const FGuid &TextureGUID)
 
bool RequiresConversion (const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &Sample, uint8 InTargetNumMips) const
 
bool RequiresConversion (const FTextureRHIRef &SampleTexture, const FIntPoint &OutputDim, uint8 InTargetNumMips) const
 
void GetColorSpaceConversionMatrixForSample (const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > Sample, FMatrix44f &ColorSpaceMtx)
 
- Protected Member Functions inherited from FRenderResource
void SetFeatureLevel (const FStaticFeatureLevel InFeatureLevel)
 
const FStaticFeatureLevel GetFeatureLevel () const
 
bool HasValidFeatureLevel () const
 
template<typename T >
FBufferRHIRef CreateRHIBuffer (FRHICommandListBase &RHICmdList, T &InOutResourceObject, uint32 ResourceCount, EBufferUsageFlags InBufferUsageFlags, const TCHAR *InDebugName)
 
void SetInitPhase (EInitPhase InInitPhase)
 

Additional Inherited Members

- Public Types inherited from FRenderResource
enum class  EInitPhase : uint8 { Pre , Default , MAX }
 
- Static Public Member Functions inherited from FRenderTarget
static float GetEngineDisplayGamma ()
 
- Static Public Member Functions inherited from FRenderResource
static RENDERCORE_API void ReleaseRHIForAllResources ()
 
static RENDERCORE_API void InitPreRHIResources ()
 
static RENDERCORE_API void ChangeFeatureLevel (ERHIFeatureLevel::Type NewFeatureLevel)
 
static RENDERCORE_API FName SetScopeName (FName Name)
 
- Public Attributes inherited from FTexture
FTextureRHIRef TextureRHI
 
FSamplerStateRHIRef SamplerStateRHI
 
FSamplerStateRHIRef DeferredPassSamplerStateRHI
 
double LastRenderTime = -FLT_MAX
 
FMipBiasFade MipBiasFade
 
bool bGreyScaleFormat = false
 
bool bIgnoreGammaConversions = false
 
bool bSRGB = false
 
- Public Attributes inherited from FRenderResource
ERenderResourceState ResourceState = ERenderResourceState::Default
 
- Static Protected Member Functions inherited from FTexture
static RENDERCORE_API FRHISamplerStateGetOrCreateSamplerState (const FSamplerStateInitializerRHI &Initializer)
 
- Static Protected Member Functions inherited from FRenderResource
static RENDERCORE_API FRHICommandListBaseGetImmediateCommandList ()
 
- Protected Attributes inherited from FRenderTarget
FTextureRHIRef RenderTargetTextureRHI
 
- Protected Attributes inherited from FTextureResource
FTextureReferenceRHIRef TextureReferenceRHI
 

Detailed Description

Texture resource type for media textures.

Constructor & Destructor Documentation

◆ FMediaTextureResource()

FMediaTextureResource::FMediaTextureResource ( UMediaTexture InOwner,
FIntPoint InOwnerDim,
SIZE_T InOwnerSize,
FLinearColor  InClearColor,
FGuid  InTextureGuid,
bool  bEnableGenMips,
uint8  InNumMips,
UE::Color::EColorSpace  OverrideColorSpaceType 
)

Creates and initializes a new instance.

Parameters
InOwnerThe Movie texture object to create a resource for (must not be nullptr).
InOwnerDimReference to the width and height of the texture that owns this resource (will be updated by resource).
InOwnerSizeReference to the size in bytes of the texture that owns this resource (will be updated by resource).
InClearColorThe initial clear color.
InTextureGuidThe initial external texture GUID.
bEnableGenMipsIf true mips generation will be enabled (possibly optimizing for NumMips == 1 case)
InNumMipsThe initial number of mips to be generated for the output texture

◆ ~FMediaTextureResource()

virtual FMediaTextureResource::~FMediaTextureResource ( )
inlinevirtual

Virtual destructor.

Member Function Documentation

◆ CacheNextAvailableSampleTime()

void FMediaTextureResource::CacheNextAvailableSampleTime ( const TSharedPtr< FMediaTextureSampleSource, ESPMode::ThreadSafe > &  InSampleQueue) const
protected

Caches next available sample from queue in MediaTexture owner to keep single consumer access

Parameters
InSampleQueueSampleQueue to query sample information from

◆ ClearTexture()

void FMediaTextureResource::ClearTexture ( FRHICommandListImmediate RHICmdList,
const FLinearColor ClearColor,
bool  SrgbOutput 
)
protected

Clear the texture using the given clear color.

Parameters
ClearColorThe clear color to use.
SrgbOutputWhether the output texture is in sRGB color space.

◆ ConvertSample()

void FMediaTextureResource::ConvertSample ( FRHICommandListImmediate RHICmdList,
const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &  Sample,
const FLinearColor ClearColor,
uint8  InTargetNumMips 
)
protected

Render the given texture sample by converting it on the GPU.

Parameters
SampleThe texture sample to convert.
ClearColorThe clear color to use for the output texture.
Numberof mips
See also
CopySample

◆ ConvertTextureToOutput()

void FMediaTextureResource::ConvertTextureToOutput ( FRHICommandListImmediate RHICmdList,
FRHITexture InputTexture,
const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &  Sample 
)
protected

◆ CopyFromExternalTexture()

void FMediaTextureResource::CopyFromExternalTexture ( FRHICommandListImmediate RHICmdList,
const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &  Sample,
const FGuid TextureGUID 
)
protected

Copy to local buffer from external texture

◆ CopySample()

void FMediaTextureResource::CopySample ( FRHICommandListImmediate RHICmdList,
const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &  Sample,
const FLinearColor ClearColor,
uint8  InTargetNumMips,
const FGuid TextureGUID 
)
protected

Render the given texture sample by using it as or copying it to the render target.

Parameters
SampleThe texture sample to copy.
ClearColorThe clear color to use for the output texture.
SrgbOutputWhether the output texture is in sRGB color space.
Numberof mips
See also
ConvertSample

◆ CreateIntermediateRenderTarget()

void FMediaTextureResource::CreateIntermediateRenderTarget ( FRHICommandListImmediate RHICmdList,
const FIntPoint InDim,
EPixelFormat  InPixelFormat,
bool  bInSRGB,
const FLinearColor InClearColor,
uint8  InNumMips,
bool  bNeedsUAVSupport 
)
protected

Create/update intermediate render target as needed. If no color conversion is needed, the RT will be used as the output.

◆ FlushPendingData()

void FMediaTextureResource::FlushPendingData ( )

Flush out any pending data like texture samples waiting for retirement etc.

Note
this call can stall for noticable amounts of time under certain circumstances

◆ GetColorSpaceConversionMatrixForSample()

void FMediaTextureResource::GetColorSpaceConversionMatrixForSample ( const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe Sample,
FMatrix44f ColorSpaceMtx 
)
protected

Compute CS conversion martix based on sample's data

◆ GetFriendlyName()

FString FMediaTextureResource::GetFriendlyName ( ) const
overridevirtual
Returns
The resource's friendly name. Typically a UObject name.

Reimplemented from FTexture.

◆ GetSizeX()

uint32 FMediaTextureResource::GetSizeX ( ) const
overridevirtual

Returns the width of the texture in pixels.

Reimplemented from FTexture.

◆ GetSizeXY()

FIntPoint FMediaTextureResource::GetSizeXY ( ) const
overridevirtual

Implements FRenderTarget.

◆ GetSizeY()

uint32 FMediaTextureResource::GetSizeY ( ) const
overridevirtual

Returns the height of the texture in pixels.

Reimplemented from FTexture.

◆ InitRHI()

void FMediaTextureResource::InitRHI ( FRHICommandListBase RHICmdList)
overridevirtual

Initializes the RHI resources used by this resource. Called when entering the state where both the resource and the RHI have been initialized. This is only called by the rendering thread.

Reimplemented from FRenderResource.

◆ JustInTimeRender()

void FMediaTextureResource::JustInTimeRender ( )

Render the texture using the cached FRenderParams. Call from render thread only.

◆ ReleaseRHI()

void FMediaTextureResource::ReleaseRHI ( )
overridevirtual

Releases the RHI resources used by this resource. Called when leaving the state where both the resource and the RHI have been initialized. This is only called by the rendering thread.

Reimplemented from FTexture.

◆ Render()

void FMediaTextureResource::Render ( const FRenderParams Params)

Render the texture resource.

This method is called on the render thread by the MediaTexture that owns this texture resource to clear or redraw the resource using the given parameters.

Parameters
ParamsRender parameters.

◆ RequiresConversion() [1/2]

bool FMediaTextureResource::RequiresConversion ( const FTextureRHIRef SampleTexture,
const FIntPoint OutputDim,
uint8  InTargetNumMips 
) const
protected

◆ RequiresConversion() [2/2]

bool FMediaTextureResource::RequiresConversion ( const TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &  Sample,
uint8  InTargetNumMips 
) const
protected

◆ ResetJustInTimeRenderParams()

void FMediaTextureResource::ResetJustInTimeRenderParams ( )

Clears the just in time render params, in which case calling JustInTimeRender() would have no effect

◆ SetJustInTimeRenderParams()

void FMediaTextureResource::SetJustInTimeRenderParams ( const FRenderParams InJustInTimeRenderParams)

Sets the just in time render parameters for later use when JustInTimeRender() gets called

◆ SetupSampler()

void FMediaTextureResource::SetupSampler ( )
protected

Setup sampler state from owner's settings as needed

◆ UpdateResourceSize()

void FMediaTextureResource::UpdateResourceSize ( )
protected

Calculates the current resource size and notifies the owner texture.

◆ UpdateTextureReference()

void FMediaTextureResource::UpdateTextureReference ( FRHICommandListImmediate RHICmdList,
FRHITexture NewTexture 
)
protected

Set the owner's texture reference to the given texture.

Parameters
NewTextureThe texture to set.

The documentation for this class was generated from the following files: