- Replace phonon framework by Qmultimedia classes(QMediPlayer...)

preferencesAboutTextFull
agriche 9 years ago
parent 39cc2fdce1
commit 4db18c9b4a
  1. 99
      src/domain/UBGraphicsMediaItem.cpp
  2. 33
      src/domain/UBGraphicsMediaItem.h

@ -24,12 +24,10 @@
#include <QUrl>
#include "UBGraphicsGroupContainerItem.h" #include "UBGraphicsGroupContainerItem.h"
#include "UBGraphicsMediaItem.h" #include "UBGraphicsMediaItem.h"
#include "UBGraphicsMediaItemDelegate.h" #include "UBGraphicsMediaItemDelegate.h"
#include "UBGraphicsItemDelegate.h"
#include "UBGraphicsScene.h" #include "UBGraphicsScene.h"
#include "UBGraphicsDelegateFrame.h" #include "UBGraphicsDelegateFrame.h"
#include "document/UBDocumentProxy.h" #include "document/UBDocumentProxy.h"
@ -51,7 +49,13 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
{ {
update(); update();
mMediaPlayer = new QMediaPlayer(this);
//mMediaObject = new Phonon::MediaObject(this);
mMediaObject = new QMediaPlayer(this);
//playlist = new QMediaPlaylist;
//mMediaObject->setPlaylist(playlist);
QString mediaPath = pMediaFileUrl.toString(); QString mediaPath = pMediaFileUrl.toString();
if ("" == mediaPath) if ("" == mediaPath)
@ -61,11 +65,23 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
{ {
mMediaType = mediaType_Video; mMediaType = mediaType_Video;
mAudioOutput = new QAudioOutput(QAudioFormat(), this); //mAudioOutput = new Phonon::AudioOutput(Phonon::VideoCategory, this);
mMediaPlayer->setNotifyInterval(50); QAudioFormat format; // to define
mVideoWidget = new QVideoWidget(); format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::UnSignedInt);
//mAudioOutput = new QAudioOutput(format, this);
mAudioOutput = new QMediaPlayer;
//mMediaObject->setTickInterval(50);
mMediaObject->setPosition(50);
mMediaPlayer->setVideoOutput(mVideoWidget); //mVideoWidget = new Phonon::VideoWidget(); // owned and destructed by the scene ...
mVideoWidget = new QVideoWidget(); // owned and destructed by the scene ...
//Phonon::createPath(mMediaObject, mVideoWidget);
mMediaObject->setVideoOutput(mVideoWidget);
if(mVideoWidget->sizeHint() == QSize(1,1)){ if(mVideoWidget->sizeHint() == QSize(1,1)){
mVideoWidget->resize(320,240); mVideoWidget->resize(320,240);
@ -75,11 +91,19 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
haveLinkedImage = true; haveLinkedImage = true;
} }
else if (mediaPath.toLower().contains("audios")){ else if (mediaPath.toLower().contains("audios"))
{
mMediaType = mediaType_Audio; mMediaType = mediaType_Audio;
mAudioOutput = new QAudioOutput(QAudioFormat(), this);
mMediaPlayer->setNotifyInterval(1000); QAudioFormat format;
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::UnSignedInt);
// mAudioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
//mAudioOutput = new QMediaPlayer(format, this);
mAudioOutput = new QMediaPlayer;
//mMediaObject->setTickInterval(1000);
mAudioWidget = new QWidget(); mAudioWidget = new QWidget();
mAudioWidget->resize(320,26); mAudioWidget->resize(320,26);
mAudioWidget->setMinimumSize(150,26); mAudioWidget->setMinimumSize(150,26);
@ -87,8 +111,16 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
haveLinkedImage = false; haveLinkedImage = false;
} }
//Phonon::createPath(mMediaObject, mAudioOutput);
//mSource = Phonon::MediaSource(pMediaFileUrl);
//mMediaObject->setCurrentSource(mSource);
mMediaObject->setMedia(pMediaFileUrl);
// we should create delegate after media objects because delegate uses his properties at creation. // we should create delegate after media objects because delegate uses his properties at creation.
setDelegate(new UBGraphicsMediaItemDelegate(this, mMediaPlayer)); setDelegate(new UBGraphicsMediaItemDelegate(this, mMediaObject));
// delegate should be created earler because we setWidget calls resize event for graphics proxy widgt. // delegate should be created earler because we setWidget calls resize event for graphics proxy widgt.
// resize uses delegate. // resize uses delegate.
@ -109,18 +141,15 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
connect(Delegate(), &UBGraphicsItemDelegate::showOnDisplayChanged, connect(Delegate(), SIGNAL(showOnDisplayChanged(bool)), this, SLOT(showOnDisplayChanged(bool)));
this, &UBGraphicsMediaItem::showOnDisplayChanged); connect(mMediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasMediaChanged(bool)));
connect(mMediaPlayer, &QMediaPlayer::videoAvailableChanged,
this, &UBGraphicsMediaItem::hasMediaChanged);
} }
UBGraphicsMediaItem::~UBGraphicsMediaItem() UBGraphicsMediaItem::~UBGraphicsMediaItem()
{ {
if (mMediaPlayer) if (mMediaObject)
mMediaPlayer->stop(); mMediaObject->stop();
} }
@ -142,13 +171,13 @@ QVariant UBGraphicsMediaItem::itemChange(GraphicsItemChange change, const QVaria
|| (change == QGraphicsItem::ItemSceneChange) || (change == QGraphicsItem::ItemSceneChange)
|| (change == QGraphicsItem::ItemVisibleChange)) || (change == QGraphicsItem::ItemVisibleChange))
{ {
if (mMediaPlayer && (!isEnabled() || !isVisible() || !scene())) if (mMediaObject && (!isEnabled() || !isVisible() || !scene()))
mMediaPlayer->pause(); mMediaObject->pause();
} }
else if (change == QGraphicsItem::ItemSceneHasChanged) else if (change == QGraphicsItem::ItemSceneHasChanged)
{ {
if (!scene()) if (!scene())
mMediaPlayer->stop(); mMediaObject->stop();
else { else {
QString absoluteMediaFilename; QString absoluteMediaFilename;
@ -158,7 +187,11 @@ QVariant UBGraphicsMediaItem::itemChange(GraphicsItemChange change, const QVaria
absoluteMediaFilename = mMediaFileUrl.toLocalFile(); absoluteMediaFilename = mMediaFileUrl.toLocalFile();
if (absoluteMediaFilename.length() > 0) if (absoluteMediaFilename.length() > 0)
mMediaPlayer->setMedia(QUrl::fromLocalFile(absoluteMediaFilename)); //mMediaObject->setCurrentSource(QMediaSource(absoluteMediaFilename));
mMediaObject->setMedia(QUrl::fromLocalFile(absoluteMediaFilename));
} }
} }
@ -192,12 +225,7 @@ void UBGraphicsMediaItem::toggleMute()
void UBGraphicsMediaItem::setMute(bool bMute) void UBGraphicsMediaItem::setMute(bool bMute)
{ {
mMuted = bMute; mMuted = bMute;
mAudioOutput->setMuted(mMuted);
if (bMute)
mAudioOutput->setVolume(0);
else
mAudioOutput->setVolume(mVolume);
mMutedByUserAction = mMuted; mMutedByUserAction = mMuted;
sIsMutedByDefault = mMuted; sIsMutedByDefault = mMuted;
} }
@ -205,9 +233,11 @@ void UBGraphicsMediaItem::setMute(bool bMute)
void UBGraphicsMediaItem::hasMediaChanged(bool hasMedia) void UBGraphicsMediaItem::hasMediaChanged(bool hasMedia)
{ {
if(hasMedia && mMediaPlayer->isSeekable()) if(hasMedia && mMediaObject->isSeekable())
{ {
mMediaPlayer->setPosition(mInitialPos); //mMediaObject->seek(mInitialPos);
mMediaObject->setPosition(mInitialPos);
UBGraphicsMediaItemDelegate *med = dynamic_cast<UBGraphicsMediaItemDelegate *>(Delegate()); UBGraphicsMediaItemDelegate *med = dynamic_cast<UBGraphicsMediaItemDelegate *>(Delegate());
if (med) if (med)
med->updateTicker(initialPos()); med->updateTicker(initialPos());
@ -224,7 +254,7 @@ UBGraphicsScene* UBGraphicsMediaItem::scene()
void UBGraphicsMediaItem::activeSceneChanged() void UBGraphicsMediaItem::activeSceneChanged()
{ {
if (UBApplication::boardController->activeScene() != scene()) if (UBApplication::boardController->activeScene() != scene())
mMediaPlayer->pause(); mMediaObject->pause();
} }
@ -233,12 +263,12 @@ void UBGraphicsMediaItem::showOnDisplayChanged(bool shown)
if (!shown) if (!shown)
{ {
mMuted = true; mMuted = true;
mAudioOutput->setVolume(0); mAudioOutput->setMuted(mMuted);
} }
else if (!mMutedByUserAction) else if (!mMutedByUserAction)
{ {
mMuted = false; mMuted = false;
mAudioOutput->setVolume(mVolume); mAudioOutput->setMuted(mMuted);
} }
} }
@ -322,7 +352,8 @@ void UBGraphicsMediaItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
QPointF eventPos = mapFromScene( event->scenePos()); QPointF eventPos = mapFromScene( event->scenePos());
QPointF translation = eventPos - mouseMovePos; QPointF translation = eventPos - mouseMovePos;
setTransform(QTransform::fromTranslate(translation.x(), translation.y()), true); //translate(translation.x(), translation.y());
setPos(translation.x(), translation.y());
} }
mMouseMovePos = event->scenePos(); mMouseMovePos = event->scenePos();

@ -28,11 +28,19 @@
#ifndef UBGRAPHICSMEDIAITEM_H #ifndef UBGRAPHICSMEDIAITEM_H
#define UBGRAPHICSMEDIAITEM_H #define UBGRAPHICSMEDIAITEM_H
#include <QtWidgets/QGraphicsView>
#include "UBGraphicsProxyWidget.h"
//#include <phonon/AudioOutput>
//#include <phonon/MediaObject>
//#include <phonon/VideoWidget>
#include <QAudioOutput> #include <QAudioOutput>
#include <QMediaObject>
#include <QMediaPlayer> #include <QMediaPlayer>
#include <QVideoWidget> #include <QMediaService>
#include "UBGraphicsProxyWidget.h" #include <QtMultimediaWidgets/QVideoWidget>
#include <QtMultimedia/QVideoFrame>
#include "core/UBApplication.h" #include "core/UBApplication.h"
#include "board/UBBoardController.h" #include "board/UBBoardController.h"
@ -65,9 +73,11 @@ public:
virtual void mediaFileUrl(QUrl url){mMediaFileUrl=url;} virtual void mediaFileUrl(QUrl url){mMediaFileUrl=url;}
//Phonon::MediaObject* mediaObject() const
QMediaPlayer* mediaObject() const QMediaPlayer* mediaObject() const
{ {
return mMediaPlayer; return mMediaObject;
} }
void setInitialPos(qint64 p) { void setInitialPos(qint64 p) {
@ -82,7 +92,9 @@ public:
return mMuted; return mMuted;
} }
// Phonon::VideoWidget* videoWidget() const
QVideoWidget* videoWidget() const QVideoWidget* videoWidget() const
{ {
return mVideoWidget; return mVideoWidget;
} }
@ -117,9 +129,17 @@ protected:
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void clearSource(); virtual void clearSource();
QMediaPlayer* mMediaPlayer; //Phonon::MediaObject *mMediaObject;
QVideoWidget* mVideoWidget; //Phonon::VideoWidget *mVideoWidget;
QAudioOutput* mAudioOutput; //Phonon::AudioOutput *mAudioOutput;
//Phonon::MediaSource mSource;
QMediaPlayer *mMediaObject;
QMediaPlaylist *playlist;
QVideoWidget *mVideoWidget;
// QAudioOutput *mAudioOutput;
QMediaPlayer *mAudioOutput;
QMediaService *mSource;
QWidget *mAudioWidget; QWidget *mAudioWidget;
@ -128,7 +148,6 @@ private:
bool mMuted; bool mMuted;
bool mMutedByUserAction; bool mMutedByUserAction;
static bool sIsMutedByDefault; static bool sIsMutedByDefault;
qreal mVolume;
QUrl mMediaFileUrl; QUrl mMediaFileUrl;
QString mMediaSource; QString mMediaSource;

Loading…
Cancel
Save