summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/phonon/qt7/quicktimevideoplayer.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2009-03-23 09:18:55 (GMT)
committerSimon Hausmann <simon.hausmann@nokia.com>2009-03-23 09:18:55 (GMT)
commite5fcad302d86d316390c6b0f62759a067313e8a9 (patch)
treec2afbf6f1066b6ce261f14341cf6d310e5595bc1 /src/3rdparty/phonon/qt7/quicktimevideoplayer.h
downloadQt-e5fcad302d86d316390c6b0f62759a067313e8a9.zip
Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.gz
Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.bz2
Long live Qt 4.5!
Diffstat (limited to 'src/3rdparty/phonon/qt7/quicktimevideoplayer.h')
-rw-r--r--src/3rdparty/phonon/qt7/quicktimevideoplayer.h167
1 files changed, 167 insertions, 0 deletions
diff --git a/src/3rdparty/phonon/qt7/quicktimevideoplayer.h b/src/3rdparty/phonon/qt7/quicktimevideoplayer.h
new file mode 100644
index 0000000..0b3aec2
--- /dev/null
+++ b/src/3rdparty/phonon/qt7/quicktimevideoplayer.h
@@ -0,0 +1,167 @@
+/* This file is part of the KDE project.
+
+ Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+
+ This library is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 2.1 or 3 of the License.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef Phonon_QT7_QUICKTIMEVIDEOPLAYER_H
+#define Phonon_QT7_QUICKTIMEVIDEOPLAYER_H
+
+#include "backendheader.h"
+
+#import <QTKit/QTDataReference.h>
+#import <QTKit/QTMovie.h>
+
+#include <phonon/mediasource.h>
+#include <Carbon/Carbon.h>
+#include <QtCore/QString>
+#include <QtOpenGL/QGLPixelBuffer>
+#include "videoframe.h"
+
+QT_BEGIN_NAMESPACE
+
+class QGLContext;
+
+namespace Phonon
+{
+namespace QT7
+{
+ class QuickTimeStreamReader;
+ class VideoRenderWidgetQTMovieView;
+
+ class QuickTimeVideoPlayer : QObject
+ {
+ public:
+ enum StateEnum {
+ Playing = 0x1,
+ Paused = 0x2,
+ NoMedia = 0x4,
+ };
+ Q_DECLARE_FLAGS(State, StateEnum);
+
+ QuickTimeVideoPlayer();
+ virtual ~QuickTimeVideoPlayer();
+
+ void setMediaSource(const MediaSource &source);
+ MediaSource mediaSource() const;
+ void unsetVideo();
+
+ void play();
+ void pause();
+ void seek(quint64 milliseconds);
+
+ bool videoFrameChanged();
+ CVOpenGLTextureRef currentFrameAsCVTexture();
+ GLuint currentFrameAsGLTexture();
+ void *currentFrameAsCIImage();
+ QImage currentFrameAsQImage();
+ QRect videoRect() const;
+
+ quint64 duration() const;
+ quint64 currentTime() const;
+ long timeScale() const;
+ QString currentTimeString();
+
+ void setColors(qreal brightness = 0, qreal contrast = 1, qreal hue = 0, qreal saturation = 1);
+ void setMasterVolume(float volume);
+ void setRelativeVolume(float volume);
+ void setVolume(float masterVolume, float relativeVolume);
+ void setMute(bool mute);
+ void enableAudio(bool enable);
+ bool audioEnabled();
+ bool setAudioDevice(int id);
+ void setPlaybackRate(float rate);
+ QTMovie *qtMovie() const;
+
+ float playbackRate() const;
+ float prefferedPlaybackRate() const;
+
+ QuickTimeVideoPlayer::State state() const;
+
+ bool hasAudio() const;
+ bool hasVideo() const;
+ bool hasMovie() const;
+ bool canPlayMedia() const;
+ bool isPlaying() const;
+ bool isSeekable() const;
+ bool isDrmProtected() const;
+ bool isDrmAuthorized() const;
+
+ bool preRollMovie(qint64 startTime = 0);
+ float percentageLoaded();
+ quint64 timeLoaded();
+
+ static QString timeToString(quint64 ms);
+
+ // Help functions when drawing to more that one widget in cocoa 64:
+ void *m_primaryRenderingTarget;
+ void setPrimaryRenderingTarget(NSObject *target);
+
+ void *primaryRenderingCIImage();
+ void setPrimaryRenderingCIImage(void *ciImage);
+
+ private:
+ QTMovie *m_QTMovie;
+ State m_state;
+ QGLPixelBuffer *m_QImagePixelBuffer;
+
+ bool m_playbackRateSat;
+ bool m_isDrmProtected;
+ bool m_isDrmAuthorized;
+ bool m_mute;
+ bool m_audioEnabled;
+ bool m_hasVideo;
+ float m_masterVolume;
+ float m_relativeVolume;
+ float m_playbackRate;
+ quint64 m_currentTime;
+ MediaSource m_mediaSource;
+ void *m_primaryRenderingCIImage;
+ qreal m_brightness;
+ qreal m_contrast;
+ qreal m_hue;
+ qreal m_saturation;
+
+#ifdef QUICKTIME_C_API_AVAILABLE
+ QTVisualContextRef m_visualContext;
+#endif
+ VideoFrame m_currentFrame;
+ QuickTimeStreamReader *m_streamReader;
+
+ void createVisualContext();
+ void openMovieFromCurrentMediaSource();
+ void openMovieFromDataRef(QTDataReference *dataRef);
+ void openMovieFromFile();
+ void openMovieFromUrl();
+ void openMovieFromStream();
+ void openMovieFromData(QByteArray *data, char *fileType);
+ void openMovieFromDataGuessType(QByteArray *data);
+ QString mediaSourcePath();
+ bool codecExistsAccordingToSuffix(const QString &fileName);
+
+ void setError(NSError *error);
+ bool errorOccured();
+ void readProtection();
+ void checkIfVideoAwailable();
+ bool movieNotLoaded();
+ void waitStatePlayable();
+ };
+
+ Q_DECLARE_OPERATORS_FOR_FLAGS(QuickTimeVideoPlayer::State);
+
+}} // namespace Phonon::QT7
+
+QT_END_NAMESPACE
+
+#endif // Phonon_QT7_QUICKTIMEVIDEOPLAYER_H