summaryrefslogtreecommitdiffstats
path: root/src/multimedia/playback/qmediaplayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/playback/qmediaplayer.cpp')
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index 27bff02..9466cad 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -43,6 +43,7 @@
#include <QtCore/qmetaobject.h>
#include <QtCore/qtimer.h>
#include <QtCore/qpointer.h>
+#include <QtCore/qdebug.h>
#include <QtMultimedia/qmediaplayer.h>
@@ -55,6 +56,7 @@
#include <QtMultimedia/qvideowidget.h>
#include <QtMultimedia/qgraphicsvideoitem.h>
+//#define DEBUG_PLAYER_STATE
QT_BEGIN_HEADER
@@ -152,10 +154,16 @@ public:
void _q_playlistDestroyed();
};
+#define ENUM_NAME(c,e,v) (c::staticMetaObject.enumerator(c::staticMetaObject.indexOfEnumerator(e)).valueToKey((v)))
+
void QMediaPlayerPrivate::_q_stateChanged(QMediaPlayer::State ps)
{
Q_Q(QMediaPlayer);
+#ifdef DEBUG_PLAYER_STATE
+ qDebug() << "State changed:" << ENUM_NAME(QMediaPlayer, "State", ps) << (filterStates ? "(filtered)" : "");
+#endif
+
if (filterStates)
return;
@@ -183,6 +191,10 @@ void QMediaPlayerPrivate::_q_mediaStatusChanged(QMediaPlayer::MediaStatus status
{
Q_Q(QMediaPlayer);
+#ifdef DEBUG_PLAYER_STATE
+ qDebug() << "MediaStatus changed:" << ENUM_NAME(QMediaPlayer, "MediaStatus", status);
+#endif
+
switch (status) {
case QMediaPlayer::StalledMedia:
case QMediaPlayer::BufferingMedia:
@@ -230,8 +242,12 @@ void QMediaPlayerPrivate::_q_updateMedia(const QMediaContent &media)
state = control->state();
- if (state != currentState)
+ if (state != currentState) {
+#ifdef DEBUG_PLAYER_STATE
+ qDebug() << "State changed:" << ENUM_NAME(QMediaPlayer, "State", state);
+#endif
emit q_func()->stateChanged(state);
+ }
}
void QMediaPlayerPrivate::_q_playlistDestroyed()
@@ -243,10 +259,17 @@ void QMediaPlayerPrivate::_q_playlistDestroyed()
static QMediaService *playerService(QMediaPlayer::Flags flags, QMediaServiceProvider *provider)
{
- if (flags && QMediaPlayer::LowLatency)
+ if (flags) {
+ QMediaServiceProviderHint::Features features = 0;
+ if (flags & QMediaPlayer::LowLatency)
+ features |= QMediaServiceProviderHint::LowLatencyPlayback;
+
+ if (flags & QMediaPlayer::StreamPlayback)
+ features |= QMediaServiceProviderHint::StreamPlayback;
+
return provider->requestService(Q_MEDIASERVICE_MEDIAPLAYER,
- QMediaServiceProviderHint(QMediaServiceProviderHint::LowLatencyPlayback));
- else
+ QMediaServiceProviderHint(features));
+ } else
return provider->requestService(Q_MEDIASERVICE_MEDIAPLAYER);
}
@@ -945,6 +968,11 @@ QStringList QMediaPlayer::supportedMimeTypes(Flags flags)
The player is expected to be used with simple audio formats,
but playback should start without significant delay.
Such playback service can be used for beeps, ringtones, etc.
+
+ \value StreamPlayback
+ The player is expected to play QIODevice based streams.
+ If passed to QMediaPlayer constructor, the service supporting
+ streams playback will be choosen.
*/
QT_END_NAMESPACE