2 #ifndef _YI_ABSTRACT_VIDEO_PLAYER_H_ 3 #define _YI_ABSTRACT_VIDEO_PLAYER_H_ 12 #include <glm/fwd.hpp> 183 language(language) {}
349 void Seek(uint64_t uSeekPositionMs);
476 void Mute(
bool bMute);
691 virtual bool OnFrameTimeUpdated(std::chrono::microseconds nFrameTime)
override;
720 virtual std::unique_ptr<CYIVideoSurface> CreateSurface_() = 0;
761 virtual void Play_() = 0;
772 virtual void Pause_() = 0;
779 virtual void Stop_() = 0;
786 virtual uint64_t GetDurationMs_()
const = 0;
793 virtual uint64_t GetCurrentTimeMs_()
const = 0;
800 virtual void Seek_(uint64_t uSeekPositionMS) = 0;
810 virtual bool SelectAudioTrack_(uint32_t uID) = 0;
819 virtual std::vector<AudioTrackInfo> GetAudioTracks_()
const = 0;
836 virtual bool IsMuted_()
const = 0;
841 virtual void Mute_(
bool bMute) = 0;
846 virtual void DisableClosedCaptions_() = 0;
856 virtual bool SelectClosedCaptionsTrack_(uint32_t uID) = 0;
865 virtual std::vector<ClosedCaptionsTrackInfo> GetClosedCaptionsTracks_()
const = 0;
884 virtual void GetClosedCaptionsDispatcher_()
const;
889 virtual void SetMaxBitrate_(uint64_t uMaxBitrate);
894 virtual void SetUserAgent_(
const CYIString &userAgent);
901 void CheckAndNotifyAudioTracksChanged();
902 void CheckAndNotifyClosedCaptionsTracksChanged();
903 void OnNotifyErrorOccurred(
Error error);
904 void OnNotifyPlaybackComplete();
905 void OnNotifyDurationChanged(uint64_t);
906 void ClearCachedTrackData();
908 void OnStateUnloaded();
909 void ClearClosedCaptions();
911 bool m_bAudioTracksAvailable;
912 std::vector<AudioTrackInfo> m_audioTracksCache;
914 std::unique_ptr<CYIVideoSurface> m_pVideoSurface;
915 uint64_t m_uLastNotifiedTime;
921 bool m_bClosedCaptionsTracksAvailable;
922 std::vector<ClosedCaptionsTrackInfo> m_closedCaptionsTracksCache;
943 bool operator ==(const CYIAbstractVideoPlayer::
PlayerState &playerStateL, const CYIAbstractVideoPlayer::
PlayerState &playerStateR);
945 bool operator ==(const CYIAbstractVideoPlayer::
MEDIA_STATE &mediaState, const CYIAbstractVideoPlayer::
PlayerState &playerState);
947 bool operator ==(const CYIAbstractVideoPlayer::
PLAYBACK_STATE &playbackState, const CYIAbstractVideoPlayer::
PlayerState &playerState);
949 bool operator !=(const CYIAbstractVideoPlayer::
PlayerState &playerStateL, const CYIAbstractVideoPlayer::
PlayerState &playerStateR);
950 bool operator !=(const CYIAbstractVideoPlayer::
PlayerState &playerState, const CYIAbstractVideoPlayer::
MEDIA_STATE &mediaState);
951 bool operator !=(const CYIAbstractVideoPlayer::
MEDIA_STATE &mediaState, const CYIAbstractVideoPlayer::
PlayerState &playerState);
952 bool operator !=(const CYIAbstractVideoPlayer::
PlayerState &playerState, const CYIAbstractVideoPlayer::
PLAYBACK_STATE &playbackState);
953 bool operator !=(const CYIAbstractVideoPlayer::
PLAYBACK_STATE &playbackState, const CYIAbstractVideoPlayer::
PlayerState &playerState);
955 #endif //ifndef _YI_ABSTRACT_VIDEO_PLAYER_H_ PLAYBACK_STATE
Definition: YiAbstractVideoPlayer.h:78
void ChangeInitialPlaybackState(CYIAbstractVideoPlayer::PLAYBACK_STATE eInitialState)
CYISignal PlaybackComplete
Definition: YiAbstractVideoPlayer.h:570
#define YI_DISALLOW_COPY_AND_ASSIGN(TypeName)
Delete the copy constructor and assignment operator (and consequently the move constructor as well) ...
Definition: YiPredef.h:114
uint64_t GetCurrentTimeMs() const
std::vector< ClosedCaptionsTrackInfo > GetClosedCaptionsTracks() const
void SetVideoMetadata(const CYIAbstractVideoPlayer::VideoMetadata &metadata)
std::vector< AudioTrackInfo > GetAudioTracks() const
Definition: YiAbstractVideoPlayer.h:189
bool bIsLive
Definition: YiAbstractVideoPlayer.h:255
void SetMaxBitrate(uint64_t uMaxBitrate)
ERROR_CODE eErrorCode
Definition: YiAbstractVideoPlayer.h:162
float fFramesPerSecond
Definition: YiAbstractVideoPlayer.h:290
MEDIA_STATE
Definition: YiAbstractVideoPlayer.h:65
Definition: YiAbstractVideoPlayer.h:169
void Prepare(const CYIUrl &videoURI, STREAMING_FORMAT eFormatHint, CYIAbstractVideoPlayer::PLAYBACK_STATE eInitialState=CYIAbstractVideoPlayer::PLAYBACK_PAUSED, std::unique_ptr< DRMConfiguration > pDRMConfiguration=nullptr)
Definition: YiAbstractVideoPlayer.h:81
const std::shared_ptr< CYIMaterial > & GetVideoMaterial() const
CYISignal< std::vector< ClosedCaptionsTrackInfo > > AvailableClosedCaptionsTracksChanged
Definition: YiAbstractVideoPlayer.h:603
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
CYISignal BufferingEnded
Definition: YiAbstractVideoPlayer.h:537
CYISignal< Error > ErrorOccurred
Definition: YiAbstractVideoPlayer.h:544
CYIScriptableObject & operator=(const CYIScriptableObject &other)
TrackInfo(uint32_t uID, const CYIString &name)
Definition: YiAbstractVideoPlayer.h:177
A texture asset representing an image which will be loaded into the GPU.
Definition: YiAssetTexture.h:23
ClosedCaptionsTrackInfo(uint32_t uID, const CYIString &name, const CYIString &language)
Definition: YiAbstractVideoPlayer.h:207
CYISignal Preparing
Definition: YiAbstractVideoPlayer.h:549
CYISignal< const CYIAbstractVideoPlayer::PlayerState & > PlayerStateChanged
Definition: YiAbstractVideoPlayer.h:593
bool operator!=(const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackL, const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackR)
bool AreAudioTracksAvailable() const
CYIClosedCaptionsDispatcher * GetClosedCaptionsDispatcher() const
#define YI_TYPE_BASES(...)
Definition: YiRtti.h:350
ClosedCaptionsTrackInfo()
Definition: YiAbstractVideoPlayer.h:206
AudioTrackInfo(uint32_t uID, const CYIString &name, const CYIString &language)
Definition: YiAbstractVideoPlayer.h:193
CYIMaterial is a place holder for all the drawing parameters required by the renderer to draw a mesh/...
Definition: YiMaterial.h:27
ClosedCaptionsTrackInfo(const TrackInfo &trackInfo)
Definition: YiAbstractVideoPlayer.h:209
CYISignal Finalized
Definition: YiAbstractVideoPlayer.h:576
The base class for an object accessible from script source code.
Definition: YiScriptableObject.h:28
CYISignal Ready
Definition: YiAbstractVideoPlayer.h:554
float fBitrateKbps
Definition: YiAbstractVideoPlayer.h:262
AudioTrackInfo(const TrackInfo &trackInfo)
Definition: YiAbstractVideoPlayer.h:196
Definition: YiAbstractVideoPlayer.h:115
Definition: YiAbstractVideoPlayer.h:68
static uint32_t DEFAULT_TRACK_ID
Definition: YiAbstractVideoPlayer.h:191
float fDefaultBitrateKbps
Definition: YiAbstractVideoPlayer.h:269
float fMinimumBufferLengthMs
Definition: YiAbstractVideoPlayer.h:283
DRM_SCHEME
Definition: YiAbstractVideoPlayer.h:112
A class which manages the various media and playback states of the CYIAbstractVideoPlayer.
Definition: YiVideoPlayerStateManager.h:42
CYIString GetVersion() const
std::map< CYIString, CYIString > VideoMetadata
Definition: YiAbstractVideoPlayer.h:217
virtual ~CYIAbstractVideoPlayer()
CYISignal BufferingStarted
Definition: YiAbstractVideoPlayer.h:530
An abstract video player that provides a basic interface that all subclasses must implement...
Definition: YiAbstractVideoPlayer.h:55
CYISignal< uint64_t > CurrentTimeUpdated
Definition: YiAbstractVideoPlayer.h:582
bool SelectClosedCaptionsTrack(uint32_t uID)
Definition: YiAbstractVideoPlayer.h:88
CYISignal Paused
Definition: YiAbstractVideoPlayer.h:564
Definition: YiAbstractVideoPlayer.h:156
uint64_t GetDurationMs() const
TrackInfo(uint32_t uID)
Definition: YiAbstractVideoPlayer.h:175
CYIString GetName() const
Definition: YiAbstractVideoPlayer.h:148
Definition: YiAbstractVideoPlayer.h:116
A low-precision timer driven by the update loop.
Definition: YiTimer.h:29
CYISignal NotifyPlaybackComplete
Definition: YiAbstractVideoPlayer.h:649
bool SupportsFormat(STREAMING_FORMAT eStreamingFormat, DRM_SCHEME eDRMScheme=DRM_NONE)
CYIAbstractVideoPlayer::PLAYBACK_STATE GetRequestedInitialPlaybackState() const
ClosedCaptionsTrackInfo GetActiveClosedCaptionsTrack() const
CYISignal< uint64_t > DurationChanged
Definition: YiAbstractVideoPlayer.h:588
bool bIsValid
Definition: YiAbstractVideoPlayer.h:197
MEDIA_STATE mediaState
Definition: YiAbstractVideoPlayer.h:90
CYIVideoSurface * GetSurface() const
bool AreClosedCaptionsTracksAvailable() const
The base class for all DRM configurations.
Definition: YiAbstractVideoPlayer.h:127
A class used to encapsulate an URL.
Definition: YiUrl.h:24
Definition: YiAbstractVideoPlayer.h:102
CYISignal Playing
Definition: YiAbstractVideoPlayer.h:559
std::unique_ptr< CYIVideoPlayerStateManager > m_pStateManager
Definition: YiAbstractVideoPlayer.h:662
Definition: YiAbstractVideoPlayer.h:101
Definition: YiSignalHandler.h:174
static uint32_t OFF_TRACK_ID
Definition: YiAbstractVideoPlayer.h:205
Definition: YiAbstractVideoPlayer.h:145
CYIString message
Definition: YiAbstractVideoPlayer.h:163
Definition: YiAbstractVideoPlayer.h:82
bool operator==(const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackL, const CYIAbstractVideoPlayer::AudioTrackInfo &audioTrackR)
void SetUserAgent(const CYIString &userAgent)
CYIString name
Definition: YiAbstractVideoPlayer.h:172
Definition: YiAbstractVideoPlayer.h:147
uint32_t uID
Definition: YiAbstractVideoPlayer.h:171
bool SelectAudioTrack(uint32_t uID)
Dispatches closed captioning cues to registered captions renderers.
Definition: YiClosedCaptionsDispatcher.h:27
uint64_t m_uMaxBitrate
Definition: YiAbstractVideoPlayer.h:683
std::shared_ptr< DRMConfiguration > m_pDRMConfiguration
Definition: YiAbstractVideoPlayer.h:678
Definition: YiAbstractVideoPlayer.h:238
friend class TimeUpdater
Definition: YiAbstractVideoPlayer.h:696
Definition: YiAbstractVideoPlayer.h:104
float fBufferLengthMs
Definition: YiAbstractVideoPlayer.h:276
void CheckAndNotifyMediaTracksChanged()
Definition: YiAbstractVideoPlayer.h:69
Definition: YiAbstractVideoPlayer.h:150
std::unique_ptr< CYIClosedCaptionsDispatcher > m_pClosedCaptionsDispatcher
Definition: YiAbstractVideoPlayer.h:670
CYISignal< uint64_t > NotifyDurationChanged
Definition: YiAbstractVideoPlayer.h:655
void SetVideoSurfaceSize(const glm::ivec2 &size)
STREAMING_FORMAT
Definition: YiAbstractVideoPlayer.h:99
CYIAbstractVideoPlayer::PlayerState GetPlayerState() const
PLAYBACK_STATE playbackState
Definition: YiAbstractVideoPlayer.h:91
Definition: YiAbstractVideoPlayer.h:114
CYISignal< std::vector< AudioTrackInfo > > AvailableAudioTracksChanged
Definition: YiAbstractVideoPlayer.h:598
ERROR_CODE
Definition: YiAbstractVideoPlayer.h:143
AudioTrackInfo()
Definition: YiAbstractVideoPlayer.h:192
Definition: YiAbstractVideoPlayer.h:103
This file contains the classes and macros used to implement RTTI in You.i Engine. ...
CYIString language
Definition: YiAbstractVideoPlayer.h:173
TrackInfo(uint32_t uID, const CYIString &name, const CYIString &language)
Definition: YiAbstractVideoPlayer.h:180
Signals and slots are a thread-safe and flexible communication framework that will allow various obje...
Definition: YiSignal.h:164
void Seek(uint64_t uSeekPositionMs)
Asset representing a video.
Definition: YiAssetVideo.h:20
Statistics GetStatistics() const
Definition: YiAbstractVideoPlayer.h:80
CYISignal< Error > NotifyErrorOccurred
Definition: YiAbstractVideoPlayer.h:643
Representation of a CYIAbstractVideoPlayer's video surface.
Definition: YiVideoSurface.h:34
AudioTrackInfo GetActiveAudioTrack() const
Definition: YiAbstractVideoPlayer.h:203
Error()
Definition: YiAbstractVideoPlayer.h:158
const DRMConfiguration * GetDRMConfiguration() const
Definition: YiAbstractVideoPlayer.h:146
Definition: YiAbstractVideoPlayer.h:117
Definition: YiAbstractVideoPlayer.h:67