From 0241b0e39c4ac259c2336d074f1fa488d0e0ebcc Mon Sep 17 00:00:00 2001 From: Venugopal Shivashankar Date: Wed, 12 Dec 2012 16:35:15 +0100 Subject: Doc: Updated the \example and \snippet paths Also: - Grouped the example docs under one group. i.e. multimedia-examples - Moved the \group page here from the qtdoc repo - Moved the snippets directory under doc from doc/src Change-Id: I28fb81cf910e58101cd601fb4c440b59b0b0366d Reviewed-by: Jerome Pasion --- .../doc/snippets/multimedia-snippets/video.cpp | 193 +++++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 src/multimedia/doc/snippets/multimedia-snippets/video.cpp (limited to 'src/multimedia/doc/snippets/multimedia-snippets/video.cpp') diff --git a/src/multimedia/doc/snippets/multimedia-snippets/video.cpp b/src/multimedia/doc/snippets/multimedia-snippets/video.cpp new file mode 100644 index 000000000..37dca0851 --- /dev/null +++ b/src/multimedia/doc/snippets/multimedia-snippets/video.cpp @@ -0,0 +1,193 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* Video related snippets */ +#include "qvideorenderercontrol.h" +#include "qmediaservice.h" +#include "qmediaplayer.h" +#include "qabstractvideosurface.h" +#include "qvideowidgetcontrol.h" +#include "qvideowindowcontrol.h" +#include "qgraphicsvideoitem.h" +#include "qmediaplaylist.h" +#include "qvideosurfaceformat.h" + +#include +#include + +//! [Derived Surface] +class MyVideoSurface : public QAbstractVideoSurface +{ + QList supportedPixelFormats( + QAbstractVideoBuffer::HandleType handleType = QAbstractVideoBuffer::NoHandle) const + { + Q_UNUSED(handleType); + + // Return the formats you will support + return QList() << 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 WRITE setVideoSurface) + +public: + void setVideoSurface(QAbstractVideoSurface *surface) + { + m_surface = surface; + m_surface->start(m_format); + } + + // ... + +public slots: + void onNewVideoContentReceived(const QVideoFrame &frame) + { + if (m_surface) + m_surface->present(frame); + } + +private: + QAbstractVideoSurface *m_surface; + QVideoSurfaceFormat m_format; +}; + +//! [Video producer] + + +class VideoExample : public QObject { + Q_OBJECT +public: + void VideoGraphicsItem(); + void VideoRendererControl(); + void VideoWidget(); + void VideoWindowControl(); + void VideoWidgetControl(); + +private: + // Common naming + QMediaService *mediaService; + QMediaPlaylist *playlist; + QVideoWidget *videoWidget; + QWidget *widget; + QFormLayout *layout; + QAbstractVideoSurface *myVideoSurface; + QMediaPlayer *player; + QMediaContent video; + QGraphicsView *graphicsView; +}; + +void VideoExample::VideoRendererControl() +{ + //! [Video renderer control] + QVideoRendererControl *rendererControl = mediaService->requestControl(); + 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")); + + videoWidget = new QVideoWidget; + player->setVideoOutput(videoWidget); + + videoWidget->show(); + playlist->setCurrentIndex(1); + player->play(); + //! [Video widget] + + player->stop(); + + //! [Setting surface in player] + player->setVideoOutput(myVideoSurface); + //! [Setting surface in player] +} + +void VideoExample::VideoWidgetControl() +{ + //! [Video widget control] + QVideoWidgetControl *widgetControl = mediaService->requestControl(); + layout->addWidget(widgetControl->videoWidget()); + //! [Video widget control] +} + +void VideoExample::VideoWindowControl() +{ + //! [Video window control] + QVideoWindowControl *windowControl = mediaService->requestControl(); + windowControl->setWinId(widget->winId()); + windowControl->setDisplayRect(widget->rect()); + windowControl->setAspectRatioMode(Qt::KeepAspectRatio); + //! [Video window control] +} + +void VideoExample::VideoGraphicsItem() +{ + //! [Video graphics item] + player = new QMediaPlayer(this); + + QGraphicsVideoItem *item = new QGraphicsVideoItem; + player->setVideoOutput(item); + graphicsView->scene()->addItem(item); + graphicsView->show(); + + player->setMedia(QUrl("http://example.com/myclip4.ogv")); + player->play(); + //! [Video graphics item] +} -- cgit v1.2.3