diff options
Diffstat (limited to 'src/multimedia/doc/snippets/multimedia-snippets/video.cpp')
-rw-r--r-- | src/multimedia/doc/snippets/multimedia-snippets/video.cpp | 136 |
1 files changed, 17 insertions, 119 deletions
diff --git a/src/multimedia/doc/snippets/multimedia-snippets/video.cpp b/src/multimedia/doc/snippets/multimedia-snippets/video.cpp index 46327e3d6..8cc3b41b3 100644 --- a/src/multimedia/doc/snippets/multimedia-snippets/video.cpp +++ b/src/multimedia/doc/snippets/multimedia-snippets/video.cpp @@ -1,95 +1,29 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Mobility Components. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause /* Video related snippets */ #include "qvideorenderercontrol.h" -#include "qmediaservice.h" #include "qmediaplayer.h" -#include "qabstractvideosurface.h" -#include "qvideowidgetcontrol.h" +#include "qvideosink.h" #include "qvideowindowcontrol.h" #include "qgraphicsvideoitem.h" -#include "qmediaplaylist.h" -#include "qvideosurfaceformat.h" +#include "qvideoframeformat.h" #include <QFormLayout> #include <QGraphicsView> -//! [Derived Surface] -class MyVideoSurface : public QAbstractVideoSurface -{ - QList<QVideoFrame::PixelFormat> supportedPixelFormats( - QAbstractVideoBuffer::HandleType handleType = QAbstractVideoBuffer::NoHandle) const - { - Q_UNUSED(handleType); - - // Return the formats you will support - return QList<QVideoFrame::PixelFormat>() << QVideoFrame::Format_RGB565; - } - - bool present(const QVideoFrame &frame) - { - Q_UNUSED(frame); - // Handle the frame and do your processing - - return true; - } -}; -//! [Derived Surface] - //! [Video producer] class MyVideoProducer : public QObject { Q_OBJECT - Q_PROPERTY(QAbstractVideoSurface *videoSurface READ videoSurface WRITE setVideoSurface) + Q_PROPERTY(QVideoSink *videoSink READ videoSink WRITE setVideoSink) public: - QAbstractVideoSurface* videoSurface() const { return m_surface; } + QVideoSink* videoSink() const { return m_sink; } - void setVideoSurface(QAbstractVideoSurface *surface) + void setVideoSink(QVideoSink *sink) { - if (m_surface != surface && m_surface && m_surface->isActive()) { - m_surface->stop(); - } - m_surface = surface; - if (m_surface) - m_surface->start(m_format); + m_sink = sink; } // ... @@ -97,13 +31,12 @@ public: public slots: void onNewVideoContentReceived(const QVideoFrame &frame) { - if (m_surface) - m_surface->present(frame); + if (m_sink) + m_sink->setVideoFrame(frame); } private: - QAbstractVideoSurface *m_surface; - QVideoSurfaceFormat m_format; + QVideoSink *m_sink; }; //! [Video producer] @@ -113,7 +46,6 @@ class VideoExample : public QObject { Q_OBJECT public: void VideoGraphicsItem(); - void VideoRendererControl(); void VideoWidget(); void VideoWindowControl(); void VideoWidgetControl(); @@ -121,46 +53,32 @@ public: private: // Common naming - QMediaService *mediaService; - QMediaPlaylist *playlist; QVideoWidget *videoWidget; QWidget *widget; QFormLayout *layout; - QAbstractVideoSurface *myVideoSurface; + QVideoSink *myVideoSink; QMediaPlayer *player; QMediaContent video; QGraphicsView *graphicsView; }; -void VideoExample::VideoRendererControl() -{ - //! [Video renderer control] - QVideoRendererControl *rendererControl = mediaService->requestControl<QVideoRendererControl *>(); - rendererControl->setSurface(myVideoSurface); - //! [Video renderer control] -} - void VideoExample::VideoWidget() { //! [Video widget] player = new QMediaPlayer; - - playlist = new QMediaPlaylist(player); - playlist->addMedia(QUrl("http://example.com/myclip1.mp4")); - playlist->addMedia(QUrl("http://example.com/myclip2.mp4")); + player->setSource(QUrl("http://example.com/myclip1.mp4")); videoWidget = new QVideoWidget; player->setVideoOutput(videoWidget); videoWidget->show(); - playlist->setCurrentIndex(1); player->play(); //! [Video widget] player->stop(); //! [Setting surface in player] - player->setVideoOutput(myVideoSurface); + player->setVideoOutput(myVideoSink); //! [Setting surface in player] } @@ -168,7 +86,7 @@ void VideoExample::VideoSurface() { //! [Widget Surface] QImage img = QImage("images/qt-logo.png").convertToFormat(QImage::Format_ARGB32); - QVideoSurfaceFormat format(img.size(), QVideoFrame::Format_ARGB32); + QVideoFrameFormat format(img.size(), QVideoFrameFormat::Format_ARGB8888); videoWidget = new QVideoWidget; videoWidget->videoSurface()->start(format); videoWidget->videoSurface()->present(img); @@ -180,30 +98,10 @@ void VideoExample::VideoSurface() graphicsView->scene()->addItem(item); graphicsView->show(); QImage img = QImage("images/qt-logo.png").convertToFormat(QImage::Format_ARGB32); - QVideoSurfaceFormat format(img.size(), QVideoFrame::Format_ARGB32); - item->videoSurface()->start(format); - item->videoSurface()->present(img); + item->videoSink()->setVideoFrame(QVideoFrame(img)); //! [GraphicsVideoItem Surface] } -void VideoExample::VideoWidgetControl() -{ - //! [Video widget control] - QVideoWidgetControl *widgetControl = mediaService->requestControl<QVideoWidgetControl *>(); - layout->addWidget(widgetControl->videoWidget()); - //! [Video widget control] -} - -void VideoExample::VideoWindowControl() -{ - //! [Video window control] - QVideoWindowControl *windowControl = mediaService->requestControl<QVideoWindowControl *>(); - windowControl->setWinId(widget->winId()); - windowControl->setDisplayRect(widget->rect()); - windowControl->setAspectRatioMode(Qt::KeepAspectRatio); - //! [Video window control] -} - void VideoExample::VideoGraphicsItem() { //! [Video graphics item] @@ -214,7 +112,7 @@ void VideoExample::VideoGraphicsItem() graphicsView->scene()->addItem(item); graphicsView->show(); - player->setMedia(QUrl("http://example.com/myclip4.ogv")); + player->setSource(QUrl("http://example.com/myclip4.ogv")); player->play(); //! [Video graphics item] } |