2 #ifndef _YI_ABSTRACT_VIDEO_PLAYER_H_ 3 #define _YI_ABSTRACT_VIDEO_PLAYER_H_ 12 #include <glm/fwd.hpp> 129 WidevineModularCustomRequest
159 StateTransitionError,
264 virtual bool IsBackgroundPlaybackEnabled()
const = 0;
269 virtual void EnableBackgroundPlayback(
bool enabled) = 0;
280 virtual void SetRewindIncrementMs(std::chrono::milliseconds increment) = 0;
284 virtual void SetFastForwardIncrementMs(std::chrono::milliseconds increment) = 0;
289 virtual void SetNotificationColor(
const CYIColor &color) = 0;
305 virtual void EnablePauseOnHeadphonesUnplugged(
bool enabled) = 0;
310 virtual bool IsPausingOnHeadphonesUnplugged()
const = 0;
328 virtual std::vector<CYIHTTPHeader> SetHeaders(
const std::vector<CYIHTTPHeader> &customHeaders) = 0;
338 virtual bool RemoveHeader(
const CYIString &name) = 0;
343 virtual void ClearHeaders() = 0;
348 virtual std::vector<CYIHTTPHeader> GetHeaders()
const = 0;
359 std::chrono::milliseconds
min;
364 std::chrono::milliseconds
max;
366 BufferLength(std::chrono::milliseconds minIn, std::chrono::milliseconds maxIn)
399 virtual void SetBufferLength(
const BufferLength &bufferLength) = 0;
546 virtual void EnableMediaPlaybackControl(
bool enabled) = 0;
551 virtual bool IsMediaPlaybackControlEnabled()
const = 0;
558 virtual void SetControlsHandler(
ControlsHandler *pControlsHandler) = 0;
734 : startTimeMs(startTimeMs)
735 , endTimeMs(endTimeMs)
764 void Seek(uint64_t seekPositionMs);
898 void Mute(
bool mute);
980 using RefreshDRMConfigurationCallback = std::function<std::unique_ptr<CYIAbstractVideoPlayer::DRMConfiguration>(std::unique_ptr<CYIAbstractVideoPlayer::DRMConfiguration>)>;
1189 enum class Direction
1196 Direction direction;
1197 uint64_t requestedPositionMs;
1198 uint64_t positionBeforeSeekMs;
1206 virtual bool OnFrameTimeUpdated(std::chrono::microseconds frameTime)
override;
1210 uint64_t m_lastUpdateUs;
1241 virtual void Init_();
1313 virtual void Play_() = 0;
1324 virtual void Pause_() = 0;
1331 virtual void Stop_() = 0;
1359 virtual void Seek_(uint64_t seekPositionMS) = 0;
1400 virtual void Mute_(
bool mute) = 0;
1494 void CheckAndNotifyAudioTracksChanged();
1495 void CheckAndNotifyClosedCaptionsTracksChanged();
1496 void CheckAndNotifyBitrateChanged();
1497 void OnNotifyErrorOccurred(
Error error);
1498 void OnNotifyPlaybackComplete();
1499 void OnNotifyDurationChanged(uint64_t duration);
1500 void UpdateSeekState(uint64_t positionBeforeSeekMs, uint64_t requestedPositionMs);
1501 void OnNotifySeekCompleted(
bool success, uint64_t positionAfterSeekMs);
1502 void ClearCachedTrackData();
1503 void OnStateReady();
1504 void OnStateUnloaded();
1505 void ClearClosedCaptions();
1506 void SetTimeUpdatesEnabled(
bool enabled);
1508 bool m_audioTracksAvailable;
1509 std::vector<AudioTrackInfo> m_audioTracksCache;
1511 float m_cachedTotalBitrate;
1512 float m_cachedVideoBitrate;
1513 float m_cachedAudioBitrate;
1515 std::unique_ptr<CYIVideoSurface> m_pVideoSurface;
1516 uint64_t m_lastNotifiedTime;
1520 CYITimer m_mediaTracksRefreshTimer;
1523 SeekState m_seekState;
1525 bool m_closedCaptionsTracksAvailable;
1526 std::vector<ClosedCaptionsTrackInfo> m_closedCaptionsTracksCache;
1527 uint32_t m_previousClosedCaptionsTrackId;
1563 #endif //ifndef _YI_ABSTRACT_VIDEO_PLAYER_H_ virtual uint64_t GetDurationMs_() const =0
TrackInfo(uint32_t id, const CYIString &name, const CYIString &language)
Definition: YiAbstractVideoPlayer.h:199
virtual void SetMaxBitrate_(uint64_t maxBitrate)
std::vector< ClosedCaptionsTrackInfo > GetClosedCaptionsTracks() const
virtual void SetUserAgent_(const CYIString &userAgent)
CYISignal PlaybackComplete
Definition: YiAbstractVideoPlayer.h:1028
bool AreClosedCaptionsTracksAvailable() const
#define YI_DISALLOW_COPY_AND_ASSIGN(TypeName)
Delete the copy constructor and assignment operator (and consequently the move constructor as well) ...
Definition: YiPredef.h:122
BackgroundPlaybackInterface * GetBackgroundPlaybackInterface() const
CYIRuntimeTypeInfo::NonInstantiableTag RTTIInstantiatability
Definition: YiAbstractVideoPlayer.h:61
void SetVideoMetadata(const CYIAbstractVideoPlayer::VideoMetadata &metadata)
CYIVideoSurface * GetSurface() const
Definition: YiAbstractVideoPlayer.h:210
CYISignal< float > AudioBitrateChanged
Definition: YiAbstractVideoPlayer.h:1081
float renderedFramesPerSecond
Definition: YiAbstractVideoPlayer.h:659
Definition: YiAbstractVideoPlayer.h:391
Definition: YiAbstractVideoPlayer.h:354
std::unique_ptr< DRMConfiguration > m_pDRMConfiguration
Definition: YiAbstractVideoPlayer.h:1167
void SetClosedCaptionsEnabled(bool enabled)
virtual bool IsMuted_() const =0
HeadphoneJackInterface * GetHeadphoneJackInterface() const
Definition: YiAbstractVideoPlayer.h:184
Statistics GetStatistics() const
void ChangeInitialPlaybackState(CYIAbstractVideoPlayer::PlaybackState initialState)
virtual VideoRequestHTTPHeadersInterface * GetVideoRequestHTTPHeadersInterface_()
virtual std::vector< SeekableRange > GetLiveSeekableRanges_() const =0
ClosedCaptionsTrackInfo(uint32_t id, const CYIString &name, const CYIString &language)
Definition: YiAbstractVideoPlayer.h:241
CYISignal< std::vector< ClosedCaptionsTrackInfo > > AvailableClosedCaptionsTracksChanged
Definition: YiAbstractVideoPlayer.h:1066
BufferingInterface * GetBufferingInterface() const
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:36
CYISignal BufferingEnded
Definition: YiAbstractVideoPlayer.h:995
float bufferLengthMs
Definition: YiAbstractVideoPlayer.h:645
CYISignal< Error > ErrorOccurred
Definition: YiAbstractVideoPlayer.h:1002
bool SupportsFormat(StreamingFormat streamingFormat, DRMScheme drmScheme=DRMScheme::None)
AudioTrackInfo(uint32_t id, const CYIString &name, const CYIString &language)
Definition: YiAbstractVideoPlayer.h:218
virtual std::unique_ptr< CYIVideoSurface > CreateSurface_()=0
A texture asset representing an image which will be loaded into the GPU.
Definition: YiAssetTexture.h:22
std::function< std::unique_ptr< CYIAbstractVideoPlayer::DRMConfiguration >(std::unique_ptr< CYIAbstractVideoPlayer::DRMConfiguration >)> RefreshDRMConfigurationCallback
Definition: YiAbstractVideoPlayer.h:980
CYISignal Preparing
Definition: YiAbstractVideoPlayer.h:1007
CYISignal< const CYIAbstractVideoPlayer::PlayerState & > PlayerStateChanged
Definition: YiAbstractVideoPlayer.h:1056
bool operator!=(const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackL, const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackR)
uint64_t startTimeMs
Definition: YiAbstractVideoPlayer.h:742
ClosedCaptionsTrackInfo()
Definition: YiAbstractVideoPlayer.h:237
const std::shared_ptr< CYIMaterial > & GetVideoMaterial() const
TrackInfo(uint32_t id)
Definition: YiAbstractVideoPlayer.h:190
CYIMaterial is a place holder for all the drawing parameters required by the renderer to draw a mesh/...
Definition: YiMaterial.h:26
ClosedCaptionsTrackInfo(const TrackInfo &trackInfo)
Definition: YiAbstractVideoPlayer.h:245
CYISignal Finalized
Definition: YiAbstractVideoPlayer.h:1034
bool SelectClosedCaptionsTrack(uint32_t id)
CYISignal Ready
Definition: YiAbstractVideoPlayer.h:1012
virtual CYIAbstractVideoPlayer::ClosedCaptionsTrackInfo GetActiveClosedCaptionsTrack_() const =0
std::chrono::milliseconds min
Definition: YiAbstractVideoPlayer.h:359
virtual bool SelectClosedCaptionsTrack_(uint32_t id)=0
AudioTrackInfo(const TrackInfo &trackInfo)
Definition: YiAbstractVideoPlayer.h:223
float defaultAudioBitrateKbps
Definition: YiAbstractVideoPlayer.h:638
TrackInfo(uint32_t id, const CYIString &name)
Definition: YiAbstractVideoPlayer.h:194
Definition: YiAbstractVideoPlayer.h:297
CYISignal< float > TotalBitrateChanged
Definition: YiAbstractVideoPlayer.h:1071
virtual BufferingInterface * GetBufferingInterface_() const
CYISignal< bool, uint64_t > NotifySeekCompleted
Definition: YiAbstractVideoPlayer.h:1144
void OnRefreshDRMConfiguration()
static uint32_t DEFAULT_TRACK_ID
Definition: YiAbstractVideoPlayer.h:212
MediaState mediaState
Definition: YiAbstractVideoPlayer.h:101
void SetRefreshDRMConfigurationCallback(RefreshDRMConfigurationCallback callback)
A class which manages the various media and playback states of the CYIAbstractVideoPlayer.
Definition: YiVideoPlayerStateManager.h:44
AudioTrackInfo GetActiveAudioTrack() const
constexpr std::enable_if< YiEnableBitmaskOperators< E >::enable, bool >::type None(E a)
Definition: YiEnumBitmaskOperators.h:136
CYISignal< float > VideoBitrateChanged
Definition: YiAbstractVideoPlayer.h:1076
std::map< CYIString, CYIString > VideoMetadata
Definition: YiAbstractVideoPlayer.h:68
virtual ~CYIAbstractVideoPlayer()
CYISignal BufferingStarted
Definition: YiAbstractVideoPlayer.h:988
virtual CYIString GetVersion_() const
uint64_t GetCurrentTimeMs() const
An abstract video player that provides a basic interface that all subclasses must implement...
Definition: YiAbstractVideoPlayer.h:56
CYISignal< uint64_t > CurrentTimeUpdated
Definition: YiAbstractVideoPlayer.h:1040
ErrorCode errorCode
Definition: YiAbstractVideoPlayer.h:176
Definition: YiAbstractVideoPlayer.h:99
CYISignal Paused
Definition: YiAbstractVideoPlayer.h:1022
bool isValid
Definition: YiAbstractVideoPlayer.h:228
virtual Statistics GetStatistics_() const
uint64_t endTimeMs
Definition: YiAbstractVideoPlayer.h:747
RefreshDRMConfigurationCallback m_refreshDRMConfigurationCallback
Definition: YiAbstractVideoPlayer.h:1184
CYIAbstractVideoPlayer::PlaybackState GetRequestedInitialPlaybackState() const
Definition: YiAbstractVideoPlayer.h:169
virtual bool HasNativeBitrateEventHandling_() const
uint32_t id
Definition: YiAbstractVideoPlayer.h:186
A low-precision timer driven by the update loop.
Definition: YiTimer.h:27
virtual BackgroundPlaybackInterface * GetBackgroundPlaybackInterface_() const
bool AreAudioTracksAvailable() const
virtual bool SelectAudioTrack_(uint32_t id)=0
virtual TimedMetadataInterface * GetTimedMetadataInterface_() const
float minimumBufferLengthMs
Definition: YiAbstractVideoPlayer.h:652
CYISignal NotifyPlaybackComplete
Definition: YiAbstractVideoPlayer.h:1131
PlaybackState
Definition: YiAbstractVideoPlayer.h:89
virtual std::vector< AudioTrackInfo > GetAudioTracks_() const =0
CYIString nativePlayerErrorCode
Definition: YiAbstractVideoPlayer.h:178
uint64_t m_initialStartTimeMs
Definition: YiAbstractVideoPlayer.h:1179
CYISignal< uint64_t > DurationChanged
Definition: YiAbstractVideoPlayer.h:1046
virtual void Seek_(uint64_t seekPositionMS)=0
float totalBitrateKbps
Definition: YiAbstractVideoPlayer.h:603
bool SelectAudioTrack(uint32_t id)
SeekableRange(uint64_t startTimeMs, uint64_t endTimeMs)
Definition: YiAbstractVideoPlayer.h:733
PlaybackState playbackState
Definition: YiAbstractVideoPlayer.h:102
CYIAbstractVideoPlayer::PlayerState GetPlayerState() const
bool isLive
Definition: YiAbstractVideoPlayer.h:596
The base class for all DRM configurations.
Definition: YiAbstractVideoPlayer.h:139
float defaultTotalBitrateKbps
Definition: YiAbstractVideoPlayer.h:624
std::chrono::milliseconds max
Definition: YiAbstractVideoPlayer.h:364
Definition: YiAbstractVideoPlayer.h:256
uint64_t m_maxBitrate
Definition: YiAbstractVideoPlayer.h:1172
CYIClosedCaptionsDispatcher * GetClosedCaptionsDispatcher() const
A class used to encapsulate an URL.
Definition: YiUrl.h:24
virtual void DisableClosedCaptions_()=0
virtual void GetClosedCaptionsDispatcher_() const
virtual void SetVideoMetadata_(const CYIAbstractVideoPlayer::VideoMetadata &metadata)
CYISignal Playing
Definition: YiAbstractVideoPlayer.h:1017
std::unique_ptr< CYIVideoPlayerStateManager > m_pStateManager
Definition: YiAbstractVideoPlayer.h:1151
float audioBitrateKbps
Definition: YiAbstractVideoPlayer.h:617
Definition: YiSignalHandler.h:175
static uint32_t OFF_TRACK_ID
Definition: YiAbstractVideoPlayer.h:236
CYIString message
Definition: YiAbstractVideoPlayer.h:177
std::vector< AudioTrackInfo > GetAudioTracks() const
CYISignal< bool, uint64_t > SeekCompleted
Definition: YiAbstractVideoPlayer.h:1051
bool operator==(const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackL, const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackR)
void SetUserAgent(const CYIString &userAgent)
CYIString GetName() const
CYIString name
Definition: YiAbstractVideoPlayer.h:187
ErrorCode
Definition: YiAbstractVideoPlayer.h:155
StreamingFormat
Definition: YiAbstractVideoPlayer.h:110
Dispatches closed captioning cues to registered captions renderers.
Definition: YiClosedCaptionsDispatcher.h:27
virtual CYIAbstractVideoPlayer::AudioTrackInfo GetActiveAudioTrack_() const =0
BufferLength(std::chrono::milliseconds minIn, std::chrono::milliseconds maxIn)
Definition: YiAbstractVideoPlayer.h:366
Definition: YiAbstractVideoPlayer.h:581
friend class TimeUpdater
Definition: YiAbstractVideoPlayer.h:1212
void CheckAndNotifyMediaTracksChanged()
MediaState
Definition: YiAbstractVideoPlayer.h:76
void Prepare(const CYIUrl &videoURI, StreamingFormat formatHint, CYIAbstractVideoPlayer::PlaybackState initialState=CYIAbstractVideoPlayer::PlaybackState::Paused, std::unique_ptr< DRMConfiguration > pDRMConfiguration=nullptr, uint64_t startTimeMs=0)
BufferLength()
Definition: YiAbstractVideoPlayer.h:375
void SetMaxBitrate(uint64_t maxBitrate)
const DRMConfiguration * GetDRMConfiguration() const
std::unique_ptr< CYIClosedCaptionsDispatcher > m_pClosedCaptionsDispatcher
Definition: YiAbstractVideoPlayer.h:1159
uint64_t GetDurationMs() const
CYISignal< uint64_t > NotifyDurationChanged
Definition: YiAbstractVideoPlayer.h:1137
TimedMetadataInterface * GetTimedMetadataInterface() const
void SetVideoSurfaceSize(const glm::ivec2 &size)
void Seek(uint64_t seekPositionMs)
#define YI_TYPE_BASES(CLASS, BASES...)
Definition: YiRtti.h:257
float videoBitrateKbps
Definition: YiAbstractVideoPlayer.h:610
float encodedFramesPerSecond
Definition: YiAbstractVideoPlayer.h:666
float defaultVideoBitrateKbps
Definition: YiAbstractVideoPlayer.h:631
CYISignal< std::vector< AudioTrackInfo > > AvailableAudioTracksChanged
Definition: YiAbstractVideoPlayer.h:1061
virtual CYIString GetName_() const
AudioTrackInfo()
Definition: YiAbstractVideoPlayer.h:213
virtual void Prepare_(const CYIUrl &videoURI, StreamingFormat format)=0
This file contains the classes and macros used to implement RTTI in You.i Engine. ...
A class used to represent a color value.
Definition: YiColor.h:31
ClosedCaptionsTrackInfo GetActiveClosedCaptionsTrack() const
CYIString language
Definition: YiAbstractVideoPlayer.h:188
Signals and slots are a thread-safe and flexible communication framework that will allow various obje...
Definition: YiSignal.h:168
std::vector< SeekableRange > GetLiveSeekableRanges() const
virtual void Mute_(bool mute)=0
Asset representing a video.
Definition: YiAssetVideo.h:20
virtual MediaPlaybackControlsInterface * GetMediaPlaybackControlsInterface_() const
DRMScheme
Definition: YiAbstractVideoPlayer.h:123
virtual bool HasNativeStartTimeHandling_() const
virtual bool HasNativeSeekEventHandling_() const
virtual std::vector< ClosedCaptionsTrackInfo > GetClosedCaptionsTracks_() const =0
CYISignal< Error > NotifyErrorOccurred
Definition: YiAbstractVideoPlayer.h:1125
Representation of a CYIAbstractVideoPlayer's video surface.
Definition: YiVideoSurface.h:34
MediaPlaybackControlsInterface * GetMediaPlaybackControlsInterface() const
CYIString GetVersion() const
Definition: YiAbstractVideoPlayer.h:234
virtual HeadphoneJackInterface * GetHeadphoneJackInterface_() const
Error()
Definition: YiAbstractVideoPlayer.h:171
virtual uint64_t GetCurrentTimeMs_() const =0
Definition: YiAbstractVideoPlayer.h:728
virtual bool SupportsFormat_(StreamingFormat streamingFormat, DRMScheme drmScheme=DRMScheme::None) const =0
VideoRequestHTTPHeadersInterface * GetVideoRequestHTTPHeadersInterface()