summaryrefslogtreecommitdiffstats
path: root/examples/multimediawidgets/player/player.cpp
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@qt.io>2016-11-10 17:55:06 +0100
committerYoann Lopes <yoann.lopes@qt.io>2017-01-27 13:27:09 +0000
commit47c672cdd67853658a2f86688ec72eb9b4d8c1ca (patch)
tree0cdcfe8d5ae4bafe847ee3cb9b847e872d1914b8 /examples/multimediawidgets/player/player.cpp
parent3b8ceccf49138243c8a8d98c4d7a4796944d188b (diff)
Add audio probe handling in the player example
Adds histogram widgets to visualize the data received from the audio probes, similar to what's done for the video probe already. Change-Id: Ie49a7766dc7ddcab1d9ccaf31372fb23f9ff5b68 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
Diffstat (limited to 'examples/multimediawidgets/player/player.cpp')
-rw-r--r--examples/multimediawidgets/player/player.cpp31
1 files changed, 26 insertions, 5 deletions
diff --git a/examples/multimediawidgets/player/player.cpp b/examples/multimediawidgets/player/player.cpp
index ab048838a..8f291c501 100644
--- a/examples/multimediawidgets/player/player.cpp
+++ b/examples/multimediawidgets/player/player.cpp
@@ -47,6 +47,7 @@
#include <QMediaService>
#include <QMediaPlaylist>
#include <QVideoProbe>
+#include <QAudioProbe>
#include <QMediaMetaData>
#include <QtWidgets>
@@ -73,6 +74,7 @@ Player::Player(QWidget *parent)
connect(player, SIGNAL(bufferStatusChanged(int)), this, SLOT(bufferingProgress(int)));
connect(player, SIGNAL(videoAvailableChanged(bool)), this, SLOT(videoAvailableChanged(bool)));
connect(player, SIGNAL(error(QMediaPlayer::Error)), this, SLOT(displayErrorMessage()));
+ connect(player, &QMediaPlayer::stateChanged, this, &Player::stateChanged);
//! [2]
videoWidget = new VideoWidget(this);
@@ -96,14 +98,20 @@ Player::Player(QWidget *parent)
labelHistogram = new QLabel(this);
labelHistogram->setText("Histogram:");
- histogram = new HistogramWidget(this);
+ videoHistogram = new HistogramWidget(this);
+ audioHistogram = new HistogramWidget(this);
QHBoxLayout *histogramLayout = new QHBoxLayout;
histogramLayout->addWidget(labelHistogram);
- histogramLayout->addWidget(histogram, 1);
+ histogramLayout->addWidget(videoHistogram, 1);
+ histogramLayout->addWidget(audioHistogram, 2);
- probe = new QVideoProbe(this);
- connect(probe, SIGNAL(videoFrameProbed(QVideoFrame)), histogram, SLOT(processFrame(QVideoFrame)));
- probe->setSource(player);
+ videoProbe = new QVideoProbe(this);
+ connect(videoProbe, SIGNAL(videoFrameProbed(QVideoFrame)), videoHistogram, SLOT(processFrame(QVideoFrame)));
+ videoProbe->setSource(player);
+
+ audioProbe = new QAudioProbe(this);
+ connect(audioProbe, SIGNAL(audioBufferProbed(QAudioBuffer)), audioHistogram, SLOT(processBuffer(QAudioBuffer)));
+ audioProbe->setSource(player);
QPushButton *openButton = new QPushButton(tr("Open"), this);
@@ -269,6 +277,7 @@ void Player::jump(const QModelIndex &index)
void Player::playlistPositionChanged(int currentItem)
{
+ clearHistogram();
playlistView->setCurrentIndex(playlistModel->index(currentItem, 0));
}
@@ -305,6 +314,12 @@ void Player::statusChanged(QMediaPlayer::MediaStatus status)
}
}
+void Player::stateChanged(QMediaPlayer::State state)
+{
+ if (state == QMediaPlayer::StoppedState)
+ clearHistogram();
+}
+
void Player::handleCursor(QMediaPlayer::MediaStatus status)
{
#ifndef QT_NO_CURSOR
@@ -423,3 +438,9 @@ void Player::showColorDialog()
}
colorDialog->show();
}
+
+void Player::clearHistogram()
+{
+ QMetaObject::invokeMethod(videoHistogram, "processFrame", Qt::QueuedConnection, Q_ARG(QVideoFrame, QVideoFrame()));
+ QMetaObject::invokeMethod(audioHistogram, "processBuffer", Qt::QueuedConnection, Q_ARG(QAudioBuffer, QAudioBuffer()));
+}