UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MediaSamples.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 "IMediaSamples.h"
8#include "IMediaTimeSource.h"
9#include "MediaSampleQueue.h"
11
16struct FTimespan;
17template <typename ElementType> class TRange;
18
19
24 : public IMediaSamples
25{
26public:
32
38
40
48
56
64
72
86 int32 NumAudioSamples() const override
87 {
88 return AudioSampleQueue.Num();
89 }
90
97 int32 NumCaptionSamples() const override
98 {
99 return CaptionSampleQueue.Num();
100 }
101
108 int32 NumMetadataSamples() const override
109 {
110 return MetadataSampleQueue.Num();
111 }
112
119 int32 NumSubtitleSamples() const override
120 {
121 return SubtitleSampleQueue.Num();
122 }
123
130 int32 NumVideoSamples() const override
131 {
132 return VideoSampleQueue.Num();
133 }
134
135public:
136
137 //~ IMediaSamples interface
138
144 MEDIAUTILS_API virtual void FlushSamples() override;
145
151
153
155
156
161 virtual bool PeekVideoSampleTime(FMediaTimeStamp & TimeStamp) override
162 {
164 if (!VideoSampleQueue.Peek(Sample))
165 {
166 return false;
167 }
168 TimeStamp = Sample->GetTime();
169 return true;
170 }
171
173 {
174 VideoSampleQueue.GetSampleTimes(TimeRange);
175 return TimeRange.Num() > 0;
176 }
178 {
179 AudioSampleQueue.GetSampleTimes(TimeRange);
180 return TimeRange.Num() > 0;
181 }
182
183 virtual bool DiscardVideoSamples(const TRange<FMediaTimeStamp>& TimeRange, bool bReverse) override
184 {
185 return VideoSampleQueue.Discard(TimeRange, bReverse);
186 }
187
188 virtual bool DiscardAudioSamples(const TRange<FMediaTimeStamp>& TimeRange, bool bReverse) override
189 {
190 return AudioSampleQueue.Discard(TimeRange, bReverse);
191 }
192
193 virtual bool DiscardCaptionSamples(const TRange<FMediaTimeStamp>& TimeRange, bool bReverse) override
194 {
195 return CaptionSampleQueue.Discard(TimeRange, bReverse);
196 }
197
198 virtual bool DiscardSubtitleSamples(const TRange<FMediaTimeStamp>& TimeRange, bool bReverse) override
199 {
200 return SubtitleSampleQueue.Discard(TimeRange, bReverse);
201 }
202
203 virtual bool DiscardMetadataSamples(const TRange<FMediaTimeStamp>& TimeRange, bool bReverse) override
204 {
205 return MetadataSampleQueue.Discard(TimeRange, bReverse);
206 }
207
209 {
210 return VideoSampleQueue.GetNumDroppedSamples(bInClearToZero);
211 }
212
214 {
215 return AudioSampleQueue.GetNumDroppedSamples(bInClearToZero);
216 }
217
219 {
220 return SubtitleSampleQueue.GetNumDroppedSamples(bInClearToZero);
221 }
222
224 {
225 return CaptionSampleQueue.GetNumDroppedSamples(bInClearToZero);
226 }
227
229 {
230 return MetadataSampleQueue.GetNumDroppedSamples(bInClearToZero);
231 }
232
233
238
239 MEDIAUTILS_API virtual bool CanReceiveVideoSamples(uint32 Num) const override;
240 MEDIAUTILS_API virtual bool CanReceiveAudioSamples(uint32 Num) const override;
241 MEDIAUTILS_API virtual bool CanReceiveSubtitleSamples(uint32 Num) const override;
242 MEDIAUTILS_API virtual bool CanReceiveCaptionSamples(uint32 Num) const override;
243 MEDIAUTILS_API virtual bool CanReceiveMetadataSamples(uint32 Num) const override;
244
245private:
246
248 FMediaAudioSampleQueue AudioSampleQueue;
249
251 FMediaOverlaySampleQueue CaptionSampleQueue;
252
254 FMediaBinarySampleQueue MetadataSampleQueue;
255
257 FMediaOverlaySampleQueue SubtitleSampleQueue;
258
260 FMediaTextureSampleQueue VideoSampleQueue;
261
263 TOptional<int32> NextMinSequenceIndex;
264};
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
@ Num
Definition MetalRHIPrivate.h:234
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MediaSampleQueue.h:455
Definition MediaSamples.h:25
MEDIAUTILS_API void AddVideo(const TSharedRef< IMediaTextureSample, ESPMode::ThreadSafe > &Sample)
Definition MediaSamples.cpp:193
int32 NumVideoSamples() const override
Definition MediaSamples.h:130
virtual uint32 GetNumDroppedAudioSamples(bool bInClearToZero) override
Definition MediaSamples.h:213
MEDIAUTILS_API void AddAudio(const TSharedRef< IMediaAudioSample, ESPMode::ThreadSafe > &Sample)
Definition MediaSamples.cpp:161
virtual MEDIAUTILS_API EFetchBestSampleResult FetchBestVideoSampleForTimeRange(const TRange< FMediaTimeStamp > &TimeRange, TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &OutSample, bool bReverse, bool bConsistentResult) override
Definition MediaSamples.cpp:206
MEDIAUTILS_API void AddSubtitle(const TSharedRef< IMediaOverlaySample, ESPMode::ThreadSafe > &Sample)
Definition MediaSamples.cpp:185
virtual MEDIAUTILS_API bool CanReceiveVideoSamples(uint32 Num) const override
Definition MediaSamples.cpp:249
static constexpr uint32 MaxNumberOfQueuedCaptionSamples
Definition MediaSamples.h:29
virtual bool DiscardSubtitleSamples(const TRange< FMediaTimeStamp > &TimeRange, bool bReverse) override
Definition MediaSamples.h:198
int32 NumCaptionSamples() const override
Definition MediaSamples.h:97
virtual MEDIAUTILS_API bool CanReceiveMetadataSamples(uint32 Num) const override
Definition MediaSamples.cpp:281
virtual uint32 GetNumDroppedCaptionSamples(bool bInClearToZero) override
Definition MediaSamples.h:223
virtual bool DiscardMetadataSamples(const TRange< FMediaTimeStamp > &TimeRange, bool bReverse) override
Definition MediaSamples.h:203
static constexpr uint32 MaxNumberOfQueuedMetaDataSamples
Definition MediaSamples.h:31
static constexpr uint32 MaxNumberOfQueuedVideoSamples
Definition MediaSamples.h:27
virtual MEDIAUTILS_API void SetMinExpectedNextSequenceIndex(TOptional< int32 > InNextSequenceIndex) override
Definition MediaSamples.cpp:140
virtual bool PeekVideoSampleTime(FMediaTimeStamp &TimeStamp) override
Definition MediaSamples.h:161
int32 NumAudioSamples() const override
Definition MediaSamples.h:86
virtual MEDIAUTILS_API uint32 PurgeOutdatedVideoSamples(const FMediaTimeStamp &ReferenceTime, bool bReversed, FTimespan MaxAge) override
Definition MediaSamples.cpp:217
static constexpr uint32 MaxNumberOfQueuedAudioSamples
Definition MediaSamples.h:28
virtual MEDIAUTILS_API bool FetchMetadata(TRange< FTimespan > TimeRange, TSharedPtr< IMediaBinarySample, ESPMode::ThreadSafe > &OutSample) override
Definition MediaSamples.cpp:86
virtual bool PeekVideoSampleTimeRanges(TArray< TRange< FMediaTimeStamp > > &TimeRange) override
Definition MediaSamples.h:172
virtual MEDIAUTILS_API uint32 PurgeOutdatedMetadataSamples(const FMediaTimeStamp &ReferenceTime, bool bReversed, FTimespan MaxAge) override
Definition MediaSamples.cpp:241
virtual bool DiscardCaptionSamples(const TRange< FMediaTimeStamp > &TimeRange, bool bReverse) override
Definition MediaSamples.h:193
virtual uint32 GetNumDroppedSubtitleSamples(bool bInClearToZero) override
Definition MediaSamples.h:218
int32 NumSubtitleSamples() const override
Definition MediaSamples.h:119
virtual MEDIAUTILS_API bool CanReceiveSubtitleSamples(uint32 Num) const override
Definition MediaSamples.cpp:265
MEDIAUTILS_API ~FMediaSamples()
virtual MEDIAUTILS_API bool FetchSubtitle(TRange< FTimespan > TimeRange, TSharedPtr< IMediaOverlaySample, ESPMode::ThreadSafe > &OutSample) override
Definition MediaSamples.cpp:92
virtual MEDIAUTILS_API bool CanReceiveCaptionSamples(uint32 Num) const override
Definition MediaSamples.cpp:273
virtual MEDIAUTILS_API bool FetchAudio(TRange< FTimespan > TimeRange, TSharedPtr< IMediaAudioSample, ESPMode::ThreadSafe > &OutSample) override
Definition MediaSamples.cpp:74
virtual MEDIAUTILS_API uint32 PurgeOutdatedSubtitleSamples(const FMediaTimeStamp &ReferenceTime, bool bReversed, FTimespan MaxAge) override
Definition MediaSamples.cpp:225
static constexpr uint32 MaxNumberOfQueuedSubtitlesSamples
Definition MediaSamples.h:30
virtual MEDIAUTILS_API uint32 PurgeOutdatedCaptionSamples(const FMediaTimeStamp &ReferenceTime, bool bReversed, FTimespan MaxAge) override
Definition MediaSamples.cpp:233
virtual bool PeekAudioSampleTimeRanges(TArray< TRange< FMediaTimeStamp > > &TimeRange) override
Definition MediaSamples.h:177
virtual bool DiscardAudioSamples(const TRange< FMediaTimeStamp > &TimeRange, bool bReverse) override
Definition MediaSamples.h:188
virtual MEDIAUTILS_API bool CanReceiveAudioSamples(uint32 Num) const override
Definition MediaSamples.cpp:257
virtual MEDIAUTILS_API void FlushSamples() override
Definition MediaSamples.cpp:128
virtual MEDIAUTILS_API bool FetchVideo(TRange< FTimespan > TimeRange, TSharedPtr< IMediaTextureSample, ESPMode::ThreadSafe > &OutSample) override
Definition MediaSamples.cpp:98
MEDIAUTILS_API void AddCaption(const TSharedRef< IMediaOverlaySample, ESPMode::ThreadSafe > &Sample)
Definition MediaSamples.cpp:169
virtual uint32 GetNumDroppedMetadataSamples(bool bInClearToZero) override
Definition MediaSamples.h:228
MEDIAUTILS_API void AddMetadata(const TSharedRef< IMediaBinarySample, ESPMode::ThreadSafe > &Sample)
Definition MediaSamples.cpp:177
int32 NumMetadataSamples() const override
Definition MediaSamples.h:108
virtual bool DiscardVideoSamples(const TRange< FMediaTimeStamp > &TimeRange, bool bReverse) override
Definition MediaSamples.h:183
virtual MEDIAUTILS_API bool FetchCaption(TRange< FTimespan > TimeRange, TSharedPtr< IMediaOverlaySample, ESPMode::ThreadSafe > &OutSample) override
Definition MediaSamples.cpp:80
virtual uint32 GetNumDroppedVideoSamples(bool bInClearToZero) override
Definition MediaSamples.h:208
Definition IMediaTimeSource.h:28
Definition IMediaAudioSample.h:41
Definition IMediaBinarySample.h:17
Definition IMediaOverlaySample.h:32
Definition IMediaSamples.h:24
EFetchBestSampleResult
Definition IMediaSamples.h:124
Definition IMediaTextureSample.h:199
Definition Array.h:670
virtual void GetSampleTimes(TArray< TRange< FMediaTimeStamp > > &OutSampleTimeRanges) override
Definition MediaSampleQueue.h:132
virtual bool Peek(TSharedPtr< SampleType, ESPMode::ThreadSafe > &OutSample) override
Definition MediaSampleQueue.h:111
int32 Num() const
Definition MediaSampleQueue.h:61
bool Discard(const TRange< FMediaTimeStamp > &TimeRange, bool bReverse)
Definition MediaSampleQueue.h:163
uint32 GetNumDroppedSamples(bool bInClearToZero)
Definition MediaSampleQueue.h:74
Definition Range.h:50
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition Timespan.h:76
Definition Optional.h:131