summaryrefslogtreecommitdiffstats
path: root/examples/multimediawidgets/player/histogramwidget.cpp
diff options
context:
space:
mode:
authorVaL Doroshchuk <valentyn.doroshchuk@qt.io>2017-09-14 09:56:30 +0200
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2017-09-28 14:00:26 +0000
commit62d72daf70fed1d7fa1c38bd52468b6536ec6cad (patch)
tree867428c277ac8cc0fcfa5c15003d6ad5b43f03cd /examples/multimediawidgets/player/histogramwidget.cpp
parent61b0771e832cad41c726995aafd7bea705909bdd (diff)
Modernize the Player example
Fixed memory leak. Renamed members, avoided passing args by copy. Changed the style of member initialization. Changed 0 to nullptr. Changed to new signal/slot style if possible. Removed Q_WS_SIMULATOR ifdef. Changed signal/slot connection style. Task-number: QTBUG-60627 Change-Id: I85bd6e56fe87f4e17f3c9964d6d1fdcb8202c519 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'examples/multimediawidgets/player/histogramwidget.cpp')
-rw-r--r--examples/multimediawidgets/player/histogramwidget.cpp37
1 files changed, 17 insertions, 20 deletions
diff --git a/examples/multimediawidgets/player/histogramwidget.cpp b/examples/multimediawidgets/player/histogramwidget.cpp
index 71c243e23..c4019b5f8 100644
--- a/examples/multimediawidgets/player/histogramwidget.cpp
+++ b/examples/multimediawidgets/player/histogramwidget.cpp
@@ -49,7 +49,7 @@ class QAudioLevel : public QWidget
{
Q_OBJECT
public:
- explicit QAudioLevel(QWidget *parent = 0);
+ explicit QAudioLevel(QWidget *parent = nullptr);
// Using [0; 1.0] range
void setLevel(qreal level);
@@ -58,12 +58,11 @@ protected:
void paintEvent(QPaintEvent *event);
private:
- qreal m_level;
+ qreal m_level = 0;
};
QAudioLevel::QAudioLevel(QWidget *parent)
- : QWidget(parent)
- , m_level(0.0)
+ : QWidget(parent)
{
setMinimumHeight(15);
setMaximumHeight(50);
@@ -91,12 +90,10 @@ void QAudioLevel::paintEvent(QPaintEvent *event)
HistogramWidget::HistogramWidget(QWidget *parent)
: QWidget(parent)
- , m_levels(128)
- , m_isBusy(false)
{
m_processor.moveToThread(&m_processorThread);
- qRegisterMetaType<QVector<qreal> >("QVector<qreal>");
- connect(&m_processor, SIGNAL(histogramReady(QVector<qreal>)), SLOT(setHistogram(QVector<qreal>)));
+ qRegisterMetaType<QVector<qreal>>("QVector<qreal>");
+ connect(&m_processor, &FrameProcessor::histogramReady, this, &HistogramWidget::setHistogram);
m_processorThread.start(QThread::LowestPriority);
setLayout(new QHBoxLayout);
}
@@ -107,7 +104,7 @@ HistogramWidget::~HistogramWidget()
m_processorThread.wait(10000);
}
-void HistogramWidget::processFrame(QVideoFrame frame)
+void HistogramWidget::processFrame(const QVideoFrame &frame)
{
if (m_isBusy && frame.isValid())
return; //drop frame
@@ -226,24 +223,24 @@ QVector<qreal> getBufferLevels(const T *buffer, int frames, int channels)
return max_values;
}
-void HistogramWidget::processBuffer(QAudioBuffer buffer)
+void HistogramWidget::processBuffer(const QAudioBuffer &buffer)
{
- if (audioLevels.count() != buffer.format().channelCount()) {
- qDeleteAll(audioLevels);
- audioLevels.clear();
+ if (m_audioLevels.count() != buffer.format().channelCount()) {
+ qDeleteAll(m_audioLevels);
+ m_audioLevels.clear();
for (int i = 0; i < buffer.format().channelCount(); ++i) {
QAudioLevel *level = new QAudioLevel(this);
- audioLevels.append(level);
+ m_audioLevels.append(level);
layout()->addWidget(level);
}
}
QVector<qreal> levels = getBufferLevels(buffer);
for (int i = 0; i < levels.count(); ++i)
- audioLevels.at(i)->setLevel(levels.at(i));
+ m_audioLevels.at(i)->setLevel(levels.at(i));
}
-void HistogramWidget::setHistogram(QVector<qreal> histogram)
+void HistogramWidget::setHistogram(const QVector<qreal> &histogram)
{
m_isBusy = false;
m_histogram = histogram;
@@ -254,7 +251,7 @@ void HistogramWidget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
- if (!audioLevels.isEmpty())
+ if (!m_audioLevels.isEmpty())
return;
QPainter painter(this);
@@ -266,7 +263,7 @@ void HistogramWidget::paintEvent(QPaintEvent *event)
qreal barWidth = width() / (qreal)m_histogram.size();
- for (int i = 0; i < m_histogram.size(); i++) {
+ for (int i = 0; i < m_histogram.size(); ++i) {
qreal h = m_histogram[i] * height();
// draw level
painter.fillRect(barWidth * i, height() - h, barWidth * (i + 1), height(), Qt::red);
@@ -290,7 +287,7 @@ void FrameProcessor::processFrame(QVideoFrame frame, int levels)
frame.pixelFormat() == QVideoFrame::Format_NV12) {
// Process YUV data
uchar *b = frame.bits();
- for (int y = 0; y < frame.height(); y++) {
+ for (int y = 0; y < frame.height(); ++y) {
uchar *lastPixel = b + frame.width();
for (uchar *curPixel = b; curPixel < lastPixel; curPixel++)
histogram[(*curPixel * levels) >> 8] += 1.0;
@@ -304,7 +301,7 @@ void FrameProcessor::processFrame(QVideoFrame frame, int levels)
image = image.convertToFormat(QImage::Format_RGB32);
const QRgb* b = (const QRgb*)image.bits();
- for (int y = 0; y < image.height(); y++) {
+ for (int y = 0; y < image.height(); ++y) {
const QRgb *lastPixel = b + frame.width();
for (const QRgb *curPixel = b; curPixel < lastPixel; curPixel++)
histogram[(qGray(*curPixel) * levels) >> 8] += 1.0;