UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IMediaControls.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Math/Range.h"
6#include "Math/RangeSet.h"
8#include "Misc/Timespan.h"
9#include "Misc/Optional.h"
10
11
15enum class EMediaControl
16{
19
21 Pause,
22
24 Resume,
25
27 Scrub,
28
30 Seek,
31
34};
35
36
41{
44
47
49 End,
50
53};
54
55
60{
62 Thinned,
63
66};
67
68
72enum class EMediaState
73{
75 Closed,
76
78 Error,
79
81 Paused,
82
84 Playing,
85
88
91};
92
93
97enum class EMediaStatus
98{
100 None = 0x0,
101
103 Buffering = 0x1,
104
106 Connecting = 0x2
107};
108
109
111
112
117{
119 Absolute,
120
122 Current
123};
124
125
134
135
142{
143public:
144
150 virtual bool CanControl(EMediaControl Control) const = 0;
151
158 virtual FTimespan GetDuration() const = 0;
159
166 virtual float GetRate() const = 0;
167
174 virtual EMediaState GetState() const = 0;
175
181 virtual EMediaStatus GetStatus() const = 0;
182
191
198 virtual FTimespan GetTime() const = 0;
199
206 virtual bool IsLooping() const = 0;
207
215 virtual bool Seek(const FTimespan& Time) = 0;
216
223 virtual bool SetLooping(bool Looping) = 0;
224
237 virtual bool SetRate(float Rate) = 0;
238
249
250
256 {
257 return Seek(InNewTime);
258 }
259
260public:
261
270 inline bool Pause()
271 {
272 return SetRate(0.0f);
273 }
274
283 inline bool Play()
284 {
285 return SetRate(1.0f);
286 }
287
296 UE_DEPRECATED(5.6, "Use absolute seeking only. This method will be removed soon.")
297 bool Seek(const FTimespan& TimeOffset, EMediaSeekDirection Direction)
298 {
299 FTimespan SeekTime;
300
301 switch (Direction)
302 {
304 SeekTime = GetTime() - TimeOffset;
305 break;
306
308 SeekTime = TimeOffset;
309 break;
310
312 SeekTime = GetDuration() - TimeOffset;
313 break;
314
316 SeekTime = GetTime() + TimeOffset;
317 break;
318 }
319
320 return Seek(SeekTime);
321 }
322
327
329 {
330 return false;
331 }
332
333public:
334
336 virtual ~IMediaControls() { }
337};
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
EMediaRateThinning
Definition IMediaControls.h:60
EMediaStatus
Definition IMediaControls.h:98
EMediaState
Definition IMediaControls.h:73
EMediaTimeRangeType
Definition IMediaControls.h:117
EMediaSeekDirection
Definition IMediaControls.h:41
EMediaControl
Definition IMediaControls.h:16
const bool
Definition NetworkReplayStreaming.h:178
Definition IMediaControls.h:142
virtual float GetRate() const =0
virtual TRangeSet< float > GetSupportedRates(EMediaRateThinning Thinning) const =0
virtual bool SetRate(float Rate)=0
virtual bool CanControl(EMediaControl Control) const =0
virtual bool SetPlaybackTimeRange(const TRange< FTimespan > &InTimeRange)
Definition IMediaControls.h:328
virtual bool Seek(const FTimespan &InNewTime, const FMediaSeekParams &InAdditionalParams)
Definition IMediaControls.h:255
virtual TRange< FTimespan > GetPlaybackTimeRange(EMediaTimeRangeType InRangeToGet) const
Definition IMediaControls.h:323
virtual bool SetLooping(bool Looping)=0
virtual bool Seek(const FTimespan &Time)=0
bool Pause()
Definition IMediaControls.h:270
virtual EMediaStatus GetStatus() const =0
bool Play()
Definition IMediaControls.h:283
virtual ~IMediaControls()
Definition IMediaControls.h:336
virtual EMediaState GetState() const =0
virtual void SetBlockingPlaybackHint(bool bFacadeWillUseBlockingPlayback)
Definition IMediaControls.h:246
virtual FTimespan GetDuration() const =0
virtual FTimespan GetTime() const =0
virtual bool IsLooping() const =0
Definition RangeSet.h:17
Definition Range.h:50
Definition IMediaControls.h:130
TOptional< int32 > NewSequenceIndex
Definition IMediaControls.h:132
Definition Timespan.h:76
Definition Optional.h:131