xoreos  0.0.5
Classes | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
Video::XboxMediaVideo Class Reference

A decoder for Microsoft Xbox XMV videos. More...

#include <xmv.h>

Inheritance diagram for Video::XboxMediaVideo:
Inheritance graph
[legend]
Collaboration diagram for Video::XboxMediaVideo:
Collaboration graph
[legend]

Classes

struct  AudioInfo
 An audio track's information. More...
 
struct  Packet
 An XMV packet. More...
 
struct  PacketAudio
 An audio packet. More...
 
struct  PacketVideo
 A video packet. More...
 
class  XMVAudioTrack
 An XMV audio track. More...
 
class  XMVAudioTrack51
 An XMV 5.1 audio track. More...
 
class  XMVVideoTrack
 

Public Member Functions

 XboxMediaVideo (Common::SeekableReadStream *xmv)
 
 ~XboxMediaVideo ()
 
- Public Member Functions inherited from Video::VideoDecoder
 VideoDecoder ()
 
 ~VideoDecoder ()
 
void setScale (Scale scale)
 
bool isPlaying () const
 Is the video currently playing? More...
 
virtual uint32 getWidth () const
 Returns the width of the video's frames. More...
 
virtual uint32 getHeight () const
 Returns the height of the video's frames. More...
 
void start ()
 Start playing the video. More...
 
void abort ()
 Abort the playing of the video. More...
 
bool needsUpdate () const
 Check whether a new frame should be decoded, i.e. More...
 
bool endOfVideo () const
 Returns if the video has reached the end or not. More...
 
bool endOfVideoTracks () const
 Have all video tracks finished? More...
 
uint32 getTime () const
 Returns the time position (in ms) of the current video. More...
 
uint32 getTimeToNextFrame () const
 Return the time, in milliseconds, to the next frame. More...
 
void calculateDistance ()
 Calculate the object's distance. More...
 
void render (Graphics::RenderPass pass)
 Render the object. More...
 
virtual Common::Timestamp getDuration () const
 Get the duration of the video. More...
 
void pauseVideo (bool pause)
 Pause or resume the video. More...
 
bool isPaused () const
 Return whether the video is currently paused or not. More...
 
- Public Member Functions inherited from Graphics::GLContainer
 GLContainer ()
 
 ~GLContainer ()
 
void rebuild ()
 
void destroy ()
 
- Public Member Functions inherited from Graphics::Queueable
 Queueable ()
 
virtual ~Queueable ()
 
- Public Member Functions inherited from Graphics::Renderable
 Renderable (RenderableType type)
 
 ~Renderable ()
 
bool operator< (const Queueable &q) const
 
virtual void advanceTime (float dt)
 Advance time (used by renderables with animations). More...
 
virtual void renderImmediate (const glm::mat4 &parentTransform)
 For shader based systems, don't sort anything, render this right_now. More...
 
virtual void queueRender (const glm::mat4 &parentTransform)
 Queue the object for later rendering. More...
 
double getDistance () const
 Get the distance of the object from the viewer. More...
 
uint32 getID () const
 Get the object's unique ID. More...
 
bool isClickable () const
 Is the object clickable? More...
 
void setClickable (bool clickable)
 Set the object's clickable state. More...
 
const Common::UStringgetTag () const
 Get the object's tag. More...
 
void setTag (const Common::UString &tag)
 Set the object's tag. More...
 
bool isVisible () const
 Is the object visible? More...
 
virtual void show ()
 Show the object. More...
 
virtual void hide ()
 Hide the object. More...
 
virtual bool isIn (float x, float y) const
 Is that point within the object? More...
 
virtual bool isIn (float x, float y, float z) const
 Is that point within the object? More...
 
virtual bool isIn (float x1, float y1, float z1, float x2, float y2, float z2) const
 Does the line from x1.y1.z1 to x2.y2.z2 intersect with the object? More...
 

Protected Member Functions

void decodeNextTrackFrame (VideoTrack &track)
 Decode enough data for the next frame. More...
 
- Protected Member Functions inherited from Video::VideoDecoder
void initVideo ()
 Create a surface for video of these dimensions. More...
 
void deinit ()
 
void doRebuild ()
 
void doDestroy ()
 
virtual void checkAudioBuffer (AudioTrack &track, const Common::Timestamp &endTime)
 Ensure that there is enough audio buffered in the given track to reach the given timestamp. More...
 
void addTrack (Track *track, bool isExternal=false)
 Define a track to be used by this class. More...
 
TrackPtr getTrack (uint track)
 Get the given internal track based on its index. More...
 
ConstTrackPtr getTrack (uint track) const
 Get the given internal track based on its index. More...
 
VideoTrackPtr findNextVideoTrack ()
 Set _nextVideoTrack to the video track with the lowest start time for the next frame. More...
 
TrackList getInternalTracks ()
 Get a copy of the internal tracks. More...
 
ConstTrackList getInternalTracks () const
 Get a copy of the internal tracks. More...
 
- Protected Member Functions inherited from Graphics::Queueable
bool isInQueue (QueueType queue) const
 
void addToQueue (QueueType queue)
 
void removeFromQueue (QueueType queue)
 
void lockQueue (QueueType queue)
 
void unlockQueue (QueueType queue)
 
void sortQueue (QueueType queue)
 
- Protected Member Functions inherited from Graphics::Renderable
void resort ()
 
void lockFrame ()
 
void unlockFrame ()
 
void lockFrameIfVisible ()
 
void unlockFrameIfVisible ()
 

Private Member Functions

void load ()
 Load an XMV file. More...
 
void fetchNextPacket (Packet &packet)
 Fetch the next packet. More...
 
void processPacketHeader (Packet &packet)
 Process a packet's header. More...
 
void queueNewAudio (PacketAudio &audioPacket)
 Queue the data from this audio packet. More...
 
void queueNewAudio (Packet &packet)
 Queue the data from all audio packets in this packet. More...
 
void processNextFrame (PacketVideo &videoPacket)
 Process the next frame. More...
 

Private Attributes

Common::ScopedPtr< Common::SeekableReadStream_xmv
 
XMVVideoTrack_videoTrack
 The current video track. More...
 
uint32 _audioTrackCount
 The audio track count. More...
 
Packet _curPacket
 The current packet. More...
 

Additional Inherited Members

- Public Types inherited from Video::VideoDecoder
enum  Scale { kScaleNone, kScaleUp, kScaleDown, kScaleUpDown }
 
- Protected Types inherited from Video::VideoDecoder
typedef boost::shared_ptr< TrackTrackPtr
 A Track pointer. More...
 
typedef boost::shared_ptr< const TrackConstTrackPtr
 A const Track pointer. More...
 
typedef boost::shared_ptr< AudioTrackAudioTrackPtr
 An AudioTrack pointer. More...
 
typedef boost::shared_ptr< VideoTrackVideoTrackPtr
 A VideoTrack pointer. More...
 
typedef std::vector< TrackPtrTrackList
 A list of tracks. More...
 
typedef std::vector< ConstTrackPtrConstTrackList
 A list of const tracks. More...
 
- Protected Attributes inherited from Video::VideoDecoder
bool _needCopy
 Is new frame content available that needs to by copied? More...
 
Common::ScopedPtr< Graphics::Surface_surface
 The video's surface. More...
 
- Protected Attributes inherited from Graphics::Renderable
QueueType _queueExists
 
QueueType _queueVisible
 
uint32 _id
 
bool _clickable
 
Common::UString _tag
 
double _distance
 The distance of the object from the viewer. More...
 

Detailed Description

A decoder for Microsoft Xbox XMV videos.

Definition at line 48 of file xmv.h.

Constructor & Destructor Documentation

◆ XboxMediaVideo()

Video::XboxMediaVideo::XboxMediaVideo ( Common::SeekableReadStream xmv)

Definition at line 53 of file xmv.cpp.

References _xmv, and load().

Here is the call graph for this function:

◆ ~XboxMediaVideo()

Video::XboxMediaVideo::~XboxMediaVideo ( )

Definition at line 61 of file xmv.cpp.

Member Function Documentation

◆ decodeNextTrackFrame()

void Video::XboxMediaVideo::decodeNextTrackFrame ( VideoTrack track)
protectedvirtual

Decode enough data for the next frame.

Currently, audio may be buffered here at the same time. This is deprecated in favor of using checkAudioBuffer().

Implements Video::VideoDecoder.

Definition at line 328 of file xmv.cpp.

References _audioTrackCount, _curPacket, Video::XboxMediaVideo::Packet::audio, fetchNextPacket(), Video::XboxMediaVideo::PacketVideo::frameCount, processNextFrame(), queueNewAudio(), and Video::XboxMediaVideo::Packet::video.

Here is the call graph for this function:

◆ fetchNextPacket()

void Video::XboxMediaVideo::fetchNextPacket ( Packet packet)
private

Fetch the next packet.

Definition at line 240 of file xmv.cpp.

References _audioTrackCount, _xmv, Video::XboxMediaVideo::Packet::nextPacketOffset, Video::XboxMediaVideo::Packet::nextPacketSize, processPacketHeader(), Video::XboxMediaVideo::Packet::thisPacketOffset, and Video::XboxMediaVideo::Packet::thisPacketSize.

Referenced by decodeNextTrackFrame(), and load().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ load()

void Video::XboxMediaVideo::load ( )
private

◆ processNextFrame()

void Video::XboxMediaVideo::processNextFrame ( PacketVideo videoPacket)
private

◆ processPacketHeader()

void Video::XboxMediaVideo::processPacketHeader ( Packet packet)
private

◆ queueNewAudio() [1/2]

void Video::XboxMediaVideo::queueNewAudio ( PacketAudio audioPacket)
private

Queue the data from this audio packet.

Definition at line 64 of file xmv.cpp.

References _xmv, Video::XboxMediaVideo::PacketAudio::dataOffset, Video::XboxMediaVideo::PacketAudio::dataSize, Video::XboxMediaVideo::PacketAudio::newSlice, Video::XboxMediaVideo::XMVAudioTrack::queueAudio(), and Video::XboxMediaVideo::PacketAudio::track.

Referenced by decodeNextTrackFrame(), load(), and queueNewAudio().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ queueNewAudio() [2/2]

void Video::XboxMediaVideo::queueNewAudio ( Packet packet)
private

Queue the data from all audio packets in this packet.

Definition at line 78 of file xmv.cpp.

References Video::XboxMediaVideo::Packet::audio, and queueNewAudio().

Here is the call graph for this function:

Member Data Documentation

◆ _audioTrackCount

uint32 Video::XboxMediaVideo::_audioTrackCount
private

The audio track count.

Definition at line 178 of file xmv.h.

Referenced by decodeNextTrackFrame(), fetchNextPacket(), load(), and processPacketHeader().

◆ _curPacket

Packet Video::XboxMediaVideo::_curPacket
private

The current packet.

Definition at line 181 of file xmv.h.

Referenced by decodeNextTrackFrame(), and load().

◆ _videoTrack

XMVVideoTrack* Video::XboxMediaVideo::_videoTrack
private

The current video track.

Definition at line 175 of file xmv.h.

Referenced by load(), processNextFrame(), and processPacketHeader().

◆ _xmv

Common::ScopedPtr<Common::SeekableReadStream> Video::XboxMediaVideo::_xmv
private

The documentation for this class was generated from the following files: