2 #ifndef _YI_ABSTRACT_VIDEO_PLAYER_H_ 3 #define _YI_ABSTRACT_VIDEO_PLAYER_H_ 12 #include <glm/fwd.hpp> 122 WidevineModularCustomRequest
152 StateTransitionError,
257 virtual bool IsBackgroundPlaybackEnabled()
const = 0;
262 virtual void EnableBackgroundPlayback(
bool enabled) = 0;
273 virtual void SetRewindIncrementMs(std::chrono::milliseconds increment) = 0;
277 virtual void SetFastForwardIncrementMs(std::chrono::milliseconds increment) = 0;
282 virtual void SetNotificationColor(
const CYIColor &color) = 0;
298 virtual void EnablePauseOnHeadphonesUnplugged(
bool enabled) = 0;
303 virtual bool IsPausingOnHeadphonesUnplugged()
const = 0;
321 virtual std::vector<CYIHTTPHeader> SetHeaders(
const std::vector<CYIHTTPHeader> &customHeaders) = 0;
331 virtual bool RemoveHeader(
const CYIString &name) = 0;
336 virtual void ClearHeaders() = 0;
341 virtual std::vector<CYIHTTPHeader> GetHeaders()
const = 0;
352 std::chrono::milliseconds
min;
357 std::chrono::milliseconds
max;
359 BufferLength(std::chrono::milliseconds minIn, std::chrono::milliseconds maxIn)
392 virtual void SetBufferLength(
const BufferLength &bufferLength) = 0;
539 virtual void EnableMediaPlaybackControl(
bool enabled) = 0;
544 virtual bool IsMediaPlaybackControlEnabled()
const = 0;
551 virtual void SetControlsHandler(
ControlsHandler *pControlsHandler) = 0;
727 : startTimeMs(startTimeMs)
728 , endTimeMs(endTimeMs)
757 void Seek(uint64_t seekPositionMs);
891 void Mute(
bool mute);
977 using RefreshDRMConfigurationCallback = std::function<std::unique_ptr<CYIAbstractVideoPlayer::DRMConfiguration>(std::unique_ptr<CYIAbstractVideoPlayer::DRMConfiguration>)>;
1191 enum class Direction
1198 Direction direction;
1199 uint64_t requestedPositionMs;
1200 uint64_t positionBeforeSeekMs;
1208 virtual bool OnFrameTimeUpdated(std::chrono::microseconds frameTime)
override;
1212 uint64_t m_lastUpdateUs;
1243 virtual void Init_();
1324 virtual void Play_() = 0;
1335 virtual void Pause_() = 0;
1342 virtual void Stop_() = 0;
1370 virtual void Seek_(uint64_t seekPositionMS) = 0;
1411 virtual void Mute_(
bool mute) = 0;
1500 void CheckAndNotifyAudioTracksChanged();
1501 void CheckAndNotifyClosedCaptionsTracksChanged();
1502 void CheckAndNotifyBitrateChanged();
1503 void OnNotifyErrorOccurred(
Error error);
1504 void OnNotifyPlaybackComplete();
1505 void OnNotifyDurationChanged(uint64_t duration);
1506 void UpdateSeekState(uint64_t positionBeforeSeekMs, uint64_t requestedPositionMs);
1507 void OnNotifySeekCompleted(
bool success, uint64_t positionAfterSeekMs);
1508 void ClearCachedTrackData();
1509 void OnStateReady();
1510 void OnStateUnloaded();
1511 void ClearClosedCaptions();
1512 void SetTimeUpdatesEnabled(
bool enabled);
1514 bool m_audioTracksAvailable;
1515 std::vector<AudioTrackInfo> m_audioTracksCache;
1517 float m_cachedTotalBitrate;
1518 float m_cachedVideoBitrate;
1519 float m_cachedAudioBitrate;
1521 std::unique_ptr<CYIVideoSurface> m_pVideoSurface;
1522 uint64_t m_lastNotifiedTime;
1526 CYITimer m_mediaTracksRefreshTimer;
1529 SeekState m_seekState;
1531 bool m_closedCaptionsTracksAvailable;
1532 std::vector<ClosedCaptionsTrackInfo> m_closedCaptionsTracksCache;
1533 uint32_t m_previousClosedCaptionsTrackId;
1569 #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:192
virtual void SetMaxBitrate_(uint64_t maxBitrate)
std::vector< ClosedCaptionsTrackInfo > GetClosedCaptionsTracks() const
virtual void SetUserAgent_(const CYIString &userAgent)
CYISignal PlaybackComplete
Definition: YiAbstractVideoPlayer.h:1025
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
CYIVideoSurface * GetSurface() const
Definition: YiAbstractVideoPlayer.h:203
CYISignal< float > AudioBitrateChanged
Definition: YiAbstractVideoPlayer.h:1078
float renderedFramesPerSecond
Definition: YiAbstractVideoPlayer.h:652
Definition: YiAbstractVideoPlayer.h:384
Definition: YiAbstractVideoPlayer.h:347
uint64_t m_initialBandwidthHint
Definition: YiAbstractVideoPlayer.h:1174
std::unique_ptr< DRMConfiguration > m_pDRMConfiguration
Definition: YiAbstractVideoPlayer.h:1164
void SetClosedCaptionsEnabled(bool enabled)
virtual bool IsMuted_() const =0
HeadphoneJackInterface * GetHeadphoneJackInterface() const
Definition: YiAbstractVideoPlayer.h:177
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:234
CYISignal< std::vector< ClosedCaptionsTrackInfo > > AvailableClosedCaptionsTracksChanged
Definition: YiAbstractVideoPlayer.h:1063
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:992
float bufferLengthMs
Definition: YiAbstractVideoPlayer.h:638
CYISignal< Error > ErrorOccurred
Definition: YiAbstractVideoPlayer.h:999
bool SupportsFormat(StreamingFormat streamingFormat, DRMScheme drmScheme=DRMScheme::None)
AudioTrackInfo(uint32_t id, const CYIString &name, const CYIString &language)
Definition: YiAbstractVideoPlayer.h:211
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:977
CYISignal Preparing
Definition: YiAbstractVideoPlayer.h:1004
CYISignal< const CYIAbstractVideoPlayer::PlayerState & > PlayerStateChanged
Definition: YiAbstractVideoPlayer.h:1053
bool operator!=(const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackL, const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackR)
uint64_t startTimeMs
Definition: YiAbstractVideoPlayer.h:735
ClosedCaptionsTrackInfo()
Definition: YiAbstractVideoPlayer.h:230
const std::shared_ptr< CYIMaterial > & GetVideoMaterial() const
TrackInfo(uint32_t id)
Definition: YiAbstractVideoPlayer.h:183
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:238
CYISignal Finalized
Definition: YiAbstractVideoPlayer.h:1031
bool SelectClosedCaptionsTrack(uint32_t id)
CYISignal Ready
Definition: YiAbstractVideoPlayer.h:1009
virtual CYIAbstractVideoPlayer::ClosedCaptionsTrackInfo GetActiveClosedCaptionsTrack_() const =0
std::chrono::milliseconds min
Definition: YiAbstractVideoPlayer.h:352
virtual bool SelectClosedCaptionsTrack_(uint32_t id)=0
AudioTrackInfo(const TrackInfo &trackInfo)
Definition: YiAbstractVideoPlayer.h:216
float defaultAudioBitrateKbps
Definition: YiAbstractVideoPlayer.h:631
TrackInfo(uint32_t id, const CYIString &name)
Definition: YiAbstractVideoPlayer.h:187
Definition: YiAbstractVideoPlayer.h:290
CYISignal< float > TotalBitrateChanged
Definition: YiAbstractVideoPlayer.h:1068
virtual BufferingInterface * GetBufferingInterface_() const
CYISignal< bool, uint64_t > NotifySeekCompleted
Definition: YiAbstractVideoPlayer.h:1141
void OnRefreshDRMConfiguration()
static uint32_t DEFAULT_TRACK_ID
Definition: YiAbstractVideoPlayer.h:205
MediaState mediaState
Definition: YiAbstractVideoPlayer.h:94
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:1073
virtual ~CYIAbstractVideoPlayer()
CYISignal BufferingStarted
Definition: YiAbstractVideoPlayer.h:985
virtual CYIString GetVersion_() const
uint64_t GetCurrentTimeMs() const
virtual bool HasInitialBandwidthHintHandling_() 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:1037
ErrorCode errorCode
Definition: YiAbstractVideoPlayer.h:169
Definition: YiAbstractVideoPlayer.h:92
CYISignal Paused
Definition: YiAbstractVideoPlayer.h:1019
bool isValid
Definition: YiAbstractVideoPlayer.h:221
virtual Statistics GetStatistics_() const
uint64_t endTimeMs
Definition: YiAbstractVideoPlayer.h:740
RefreshDRMConfigurationCallback m_refreshDRMConfigurationCallback
Definition: YiAbstractVideoPlayer.h:1186
CYIAbstractVideoPlayer::PlaybackState GetRequestedInitialPlaybackState() const
Definition: YiAbstractVideoPlayer.h:162
virtual bool HasNativeBitrateEventHandling_() const
uint32_t id
Definition: YiAbstractVideoPlayer.h:179
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:645
CYISignal NotifyPlaybackComplete
Definition: YiAbstractVideoPlayer.h:1128
PlaybackState
Definition: YiAbstractVideoPlayer.h:82
virtual std::vector< AudioTrackInfo > GetAudioTracks_() const =0
CYIString nativePlayerErrorCode
Definition: YiAbstractVideoPlayer.h:171
uint64_t m_initialStartTimeMs
Definition: YiAbstractVideoPlayer.h:1181
CYISignal< uint64_t > DurationChanged
Definition: YiAbstractVideoPlayer.h:1043
virtual void Seek_(uint64_t seekPositionMS)=0
float totalBitrateKbps
Definition: YiAbstractVideoPlayer.h:596
bool SelectAudioTrack(uint32_t id)
SeekableRange(uint64_t startTimeMs, uint64_t endTimeMs)
Definition: YiAbstractVideoPlayer.h:726
PlaybackState playbackState
Definition: YiAbstractVideoPlayer.h:95
CYIAbstractVideoPlayer::PlayerState GetPlayerState() const
bool isLive
Definition: YiAbstractVideoPlayer.h:589
The base class for all DRM configurations.
Definition: YiAbstractVideoPlayer.h:132
float defaultTotalBitrateKbps
Definition: YiAbstractVideoPlayer.h:617
std::chrono::milliseconds max
Definition: YiAbstractVideoPlayer.h:357
Definition: YiAbstractVideoPlayer.h:249
uint64_t m_maxBitrate
Definition: YiAbstractVideoPlayer.h:1169
CYIClosedCaptionsDispatcher * GetClosedCaptionsDispatcher() const
A class used to encapsulate an URL.
Definition: YiUrl.h:24
virtual void DisableClosedCaptions_()=0
virtual void GetClosedCaptionsDispatcher_() const
CYISignal Playing
Definition: YiAbstractVideoPlayer.h:1014
std::unique_ptr< CYIVideoPlayerStateManager > m_pStateManager
Definition: YiAbstractVideoPlayer.h:1148
float audioBitrateKbps
Definition: YiAbstractVideoPlayer.h:610
Definition: YiSignalHandler.h:175
static uint32_t OFF_TRACK_ID
Definition: YiAbstractVideoPlayer.h:229
CYIString message
Definition: YiAbstractVideoPlayer.h:170
std::vector< AudioTrackInfo > GetAudioTracks() const
CYISignal< bool, uint64_t > SeekCompleted
Definition: YiAbstractVideoPlayer.h:1048
bool operator==(const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackL, const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackR)
void SetUserAgent(const CYIString &userAgent)
CYIString GetName() const
CYIString name
Definition: YiAbstractVideoPlayer.h:180
ErrorCode
Definition: YiAbstractVideoPlayer.h:148
StreamingFormat
Definition: YiAbstractVideoPlayer.h:103
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:359
Definition: YiAbstractVideoPlayer.h:574
friend class TimeUpdater
Definition: YiAbstractVideoPlayer.h:1214
void CheckAndNotifyMediaTracksChanged()
MediaState
Definition: YiAbstractVideoPlayer.h:69
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:368
void SetMaxBitrate(uint64_t maxBitrate)
const DRMConfiguration * GetDRMConfiguration() const
std::unique_ptr< CYIClosedCaptionsDispatcher > m_pClosedCaptionsDispatcher
Definition: YiAbstractVideoPlayer.h:1156
uint64_t GetDurationMs() const
void SetInitialBandwidthHint(uint64_t initialBandwidthHint)
CYISignal< uint64_t > NotifyDurationChanged
Definition: YiAbstractVideoPlayer.h:1134
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:603
float encodedFramesPerSecond
Definition: YiAbstractVideoPlayer.h:659
float defaultVideoBitrateKbps
Definition: YiAbstractVideoPlayer.h:624
CYISignal< std::vector< AudioTrackInfo > > AvailableAudioTracksChanged
Definition: YiAbstractVideoPlayer.h:1058
virtual CYIString GetName_() const
AudioTrackInfo()
Definition: YiAbstractVideoPlayer.h:206
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:181
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:116
virtual bool HasNativeStartTimeHandling_() const
virtual bool HasNativeSeekEventHandling_() const
virtual std::vector< ClosedCaptionsTrackInfo > GetClosedCaptionsTracks_() const =0
CYISignal< Error > NotifyErrorOccurred
Definition: YiAbstractVideoPlayer.h:1122
Representation of a CYIAbstractVideoPlayer's video surface.
Definition: YiVideoSurface.h:34
MediaPlaybackControlsInterface * GetMediaPlaybackControlsInterface() const
CYIString GetVersion() const
Definition: YiAbstractVideoPlayer.h:227
virtual HeadphoneJackInterface * GetHeadphoneJackInterface_() const
Error()
Definition: YiAbstractVideoPlayer.h:164
virtual uint64_t GetCurrentTimeMs_() const =0
Definition: YiAbstractVideoPlayer.h:721
virtual bool SupportsFormat_(StreamingFormat streamingFormat, DRMScheme drmScheme=DRMScheme::None) const =0
VideoRequestHTTPHeadersInterface * GetVideoRequestHTTPHeadersInterface()