Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
framegenerator_p.h
Go to the documentation of this file.
1// Copyright (C) 2024 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef FRAMEGENERATOR_H
5#define FRAMEGENERATOR_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtCore/qobject.h>
19#include <QtCore/qlist.h>
20#include <QtMultimedia/qvideoframe.h>
21#include <QtMultimedia/qaudiobuffer.h>
22#include <private/audiogenerationutils_p.h>
23
24#include <functional>
25#include <chrono>
26
27QT_BEGIN_NAMESPACE
28
29enum class ImagePattern
30{
31 SingleColor, // Image filled with a single color
32 ColoredSquares // Colored squares, [red, green; blue, yellow]
33};
34
35class VideoGenerator : public QObject
36{
38public:
40 void setFrameCount(int count);
41 void setSize(QSize size);
42 void setPixelFormat(QVideoFrameFormat::PixelFormat pixelFormat);
43 void setFrameRate(double rate);
44 void setPeriod(std::chrono::milliseconds period);
45 void setPresentationRotation(QtVideo::Rotation rotation);
46 void setPresentationMirrored(bool mirror);
49
51 void done();
52 void frameCreated(const QVideoFrame &frame);
53
54public slots:
55 void nextFrame();
56
57private:
58 QList<QColor> colors = { Qt::red, Qt::green, Qt::blue, Qt::black, Qt::white };
59 ImagePattern m_pattern = ImagePattern::SingleColor;
60 QSize m_size{ 640, 480 };
61 QVideoFrameFormat::PixelFormat m_pixelFormat = QVideoFrameFormat::Format_BGRA8888;
62 std::optional<int> m_maxFrameCount;
63 int m_frameIndex = 0;
64 std::optional<double> m_frameRate;
65 std::optional<std::chrono::milliseconds> m_period;
66 std::optional<QtVideo::Rotation> m_presentationRotation;
67 std::optional<bool> m_presentationMirrored;
68 bool m_emitEmptyFrameOnStop = false;
69};
70
71QT_END_NAMESPACE
72
73#endif
QVideoFrame createFrame()
void setSize(QSize size)
void setPeriod(std::chrono::milliseconds period)
void emitEmptyFrameOnStop()
void setPresentationMirrored(bool mirror)
void frameCreated(const QVideoFrame &frame)
void setFrameCount(int count)
void setFrameRate(double rate)
void setPresentationRotation(QtVideo::Rotation rotation)
void setPixelFormat(QVideoFrameFormat::PixelFormat pixelFormat)
static void fillColoredSquares(QImage &image)