MediaPlayerPrivateQt.h [plain text]
#ifndef MediaPlayerPrivateQt_h
#define MediaPlayerPrivateQt_h
#include "MediaPlayerPrivate.h"
#include <QMediaPlayer>
#include <QObject>
QT_BEGIN_NAMESPACE
class QMediaPlayerControl;
class QGraphicsVideoItem;
class QGraphicsScene;
QT_END_NAMESPACE
#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER)
#include "TextureMapper.h"
#endif
namespace WebCore {
class MediaPlayerPrivateQt : public QObject, public MediaPlayerPrivateInterface
#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER)
, public TextureMapperPlatformLayer
#endif
{
Q_OBJECT
public:
static PassOwnPtr<MediaPlayerPrivateInterface> create(MediaPlayer*);
~MediaPlayerPrivateQt();
static void registerMediaEngine(MediaEngineRegistrar);
static void getSupportedTypes(HashSet<String>&);
static MediaPlayer::SupportsType supportsType(const String&, const String&);
static bool isAvailable() { return true; }
bool hasVideo() const;
bool hasAudio() const;
void load(const String &url);
void commitLoad(const String& url);
void resumeLoad();
void cancelLoad();
void play();
void pause();
void prepareToPlay();
bool paused() const;
bool seeking() const;
float duration() const;
float currentTime() const;
void seek(float);
void setRate(float);
void setVolume(float);
bool supportsMuting() const;
void setMuted(bool);
void setPreload(MediaPlayer::Preload);
MediaPlayer::NetworkState networkState() const;
MediaPlayer::ReadyState readyState() const;
PassRefPtr<TimeRanges> buffered() const;
float maxTimeSeekable() const;
unsigned bytesLoaded() const;
unsigned totalBytes() const;
void setVisible(bool);
IntSize naturalSize() const;
void setSize(const IntSize&);
void paint(GraphicsContext*, const IntRect&);
void paintCurrentFrameInContext(GraphicsContext*, const IntRect&);
bool supportsFullscreen() const { return true; }
#if USE(ACCELERATED_COMPOSITING)
#if USE(TEXTURE_MAPPER)
virtual bool supportsAcceleratedRendering() const { return true; }
virtual void acceleratedRenderingStateChanged() { }
virtual PlatformLayer* platformLayer() const { return const_cast<MediaPlayerPrivateQt*>(this); }
virtual void paintToTextureMapper(TextureMapper*, const FloatRect& targetRect, const TransformationMatrix&, float opacity, BitmapTexture* mask) const;
#else
virtual bool supportsAcceleratedRendering() const { return false; }
virtual void acceleratedRenderingStateChanged() { }
virtual PlatformLayer* platformLayer() const { return 0; }
#endif
#endif
virtual PlatformMedia platformMedia() const;
QMediaPlayer* mediaPlayer() const { return m_mediaPlayer; }
void removeVideoItem();
void restoreVideoItem();
private slots:
void mediaStatusChanged(QMediaPlayer::MediaStatus);
void handleError(QMediaPlayer::Error);
void stateChanged(QMediaPlayer::State);
void nativeSizeChanged(const QSizeF&);
void positionChanged(qint64);
void durationChanged(qint64);
void bufferStatusChanged(int);
void volumeChanged(int);
void mutedChanged(bool);
void repaint();
private:
void updateStates();
private:
MediaPlayerPrivateQt(MediaPlayer*);
MediaPlayer* m_webCorePlayer;
QMediaPlayer* m_mediaPlayer;
QMediaPlayerControl* m_mediaPlayerControl;
QGraphicsVideoItem* m_videoItem;
QGraphicsScene* m_videoScene;
mutable MediaPlayer::NetworkState m_networkState;
mutable MediaPlayer::ReadyState m_readyState;
IntSize m_currentSize;
IntSize m_naturalSize;
IntSize m_oldNaturalSize;
bool m_isVisible;
bool m_isSeeking;
bool m_composited;
MediaPlayer::Preload m_preload;
bool m_delayingLoad;
String m_mediaUrl;
bool m_suppressNextPlaybackChanged;
};
}
#endif // MediaPlayerPrivateQt_h