UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MediaSampleCache.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
7#include "Containers/Set.h"
8#include "CoreTypes.h"
10#include "IMediaAudioSample.h"
11#include "IMediaBinarySample.h"
12#include "IMediaOverlaySample.h"
13#include "IMediaTextureSample.h"
14#include "Math/RangeSet.h"
15#include "Misc/Timespan.h"
17
21class IMediaPlayer;
22class IMediaSamples;
24template <typename ElementType> class TRangeSet;
25
26
31{
33 template<typename SampleType>
34 struct TSampleKeyFuncs
35 : BaseKeyFuncs<TSharedPtr<SampleType, ESPMode::ThreadSafe>, FTimespan, false>
36 {
37 static inline FTimespan GetSetKey(const TSharedPtr<SampleType, ESPMode::ThreadSafe>& Element)
38 {
39 return Element->GetTime().Time;
40 }
41
42 static inline bool Matches(FTimespan A, FTimespan B)
43 {
44 return A == B;
45 }
46
47 static inline uint32 GetKeyHash(FTimespan Key)
48 {
49 return GetTypeHash(Key);
50 }
51 };
52
54 template<typename SampleType>
56
57public:
58
61
62public:
63
69 MEDIAUTILS_API void Empty();
70
81
89
97
106
120
128 {
129 CacheAhead = Ahead;
130 CacheBehind = Behind;
131 }
132
144 MEDIAUTILS_API void Tick(FTimespan DeltaTime, float Rate, FTimespan Time);
145
146private:
147
150
152 TSampleSet<IMediaBinarySample> MetadataSamples;
153
155 TSampleSet<IMediaOverlaySample> OverlaySamples;
156
159
160private:
161
162 FTimespan CacheAhead;
163
164 FTimespan CacheBehind;
165
167 mutable FCriticalSection CriticalSection;
168};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MediaSampleCache.h:31
MEDIAUTILS_API TSharedPtr< IMediaAudioSample, ESPMode::ThreadSafe > GetAudioSample(FTimespan Time)
Definition MediaSampleCache.cpp:40
MEDIAUTILS_API FMediaSampleCache()
Definition MediaSampleCache.cpp:20
MEDIAUTILS_API TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > GetVideoSample(FTimespan Time, bool Forward)
Definition MediaSampleCache.cpp:114
MEDIAUTILS_API void GetCachedVideoSampleRanges(TRangeSet< FTimespan > &OutTimeRanges) const
Definition MediaSampleCache.cpp:83
MEDIAUTILS_API void GetOverlaySamples(FTimespan Time, TArray< TSharedPtr< IMediaOverlaySample, ESPMode::ThreadSafe > > &OutSamples)
Definition MediaSampleCache.cpp:95
void SetCacheWindow(FTimespan Ahead, FTimespan Behind)
Definition MediaSampleCache.h:127
MEDIAUTILS_API void GetCachedAudioSampleRanges(TRangeSet< FTimespan > &OutTimeRanges) const
Definition MediaSampleCache.cpp:71
MEDIAUTILS_API void Empty()
Definition MediaSampleCache.cpp:29
Definition IMediaAudioSample.h:41
Definition IMediaBinarySample.h:17
Definition IMediaOverlaySample.h:32
Definition IMediaPlayer.h:35
Definition IMediaSamples.h:24
Definition IMediaTextureSample.h:199
Definition Array.h:670
Definition RangeSet.h:17
Definition SharedPointer.h:692
Definition SetUtilities.h:23
Definition Timespan.h:76