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
qgstvideobuffer_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QGSTVIDEOBUFFER_P_H
5#define QGSTVIDEOBUFFER_P_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 <private/qhwvideobuffer_p.h>
19#include <QtCore/qvariant.h>
20
21#include <common/qgst_p.h>
22#include <common/qgstbufferprovider_p.h>
23#include <gst/video/video.h>
24
26class QVideoFrameFormat;
27
28class QGstVideoBuffer final : public QHwVideoBuffer, public QGstBufferProvider
29{
30public:
31 QGstVideoBuffer(QGstBufferHandle buffer, const QGstVideoInfo &videoInfo,
32 const QVideoFrameFormat &frameFormat);
33 ~QGstVideoBuffer() override;
34
35 MapData map(QVideoFrame::MapMode mode) override;
36 void unmap() override;
37
38 QVideoFrameTexturesUPtr mapTextures(QRhi &) override;
39 GstBuffer *gstBuffer() const override { return m_buffer.get(); }
40
41private:
42 const QGstCaps::MemoryFormat m_memoryFormat = QGstCaps::CpuMemory;
43 const QVideoFrameFormat m_frameFormat;
44 QGstVideoInfo m_videoInfo;
45 mutable GstVideoFrame m_frame{};
46 const QGstBufferHandle m_buffer;
47 QVideoFrame::MapMode m_mode = QVideoFrame::NotMapped;
48};
49
50QT_END_NAMESPACE
51
52#endif
QGObjectHandlerConnection(QGstObject object, gulong handler)
Definition qgst.cpp:809
QGObjectHandlerScopedConnection(QGObjectHandlerConnection connection)
Definition qgst.cpp:826
std::optional< int > toInt64() const
Definition qgst.cpp:149
std::optional< QGRange< int > > toIntRange() const
Definition qgst.cpp:178
std::optional< int > toInt() const
Definition qgst.cpp:142
int listSize() const
Definition qgst.cpp:204
bool isList() const
Definition qgst.cpp:199
QGstStructureView toStructure() const
Definition qgst.cpp:185
std::optional< QGRange< float > > getFractionRange() const
Definition qgst.cpp:169
const char * toString() const
Definition qgst.cpp:156
std::optional< float > getFraction() const
Definition qgst.cpp:161
QGValue at(int index) const
Definition qgst.cpp:209
bool isNull() const
Definition qgst.cpp:130
QGstCaps toCaps() const
Definition qgst.cpp:192
std::optional< bool > toBool() const
Definition qgst.cpp:135
QGValue(const GValue *v)
Definition qgst.cpp:128
QGstSampleHandle pullSample()
Definition qgst.cpp:1567
void setCallbacks(GstAppSinkCallbacks &callbacks, gpointer user_data, GDestroyNotify notify)
Definition qgst.cpp:1561
GstAppSink * appSink() const
Definition qgst.cpp:1539
void setCaps(const QGstCaps &caps)
Definition qgst.cpp:1556
void setMaxBuffers(int)
Definition qgst.cpp:1551
static QGstAppSink create(const char *name)
Definition qgst.cpp:1530
QGstAppSink(GstAppSink *, RefMode)
Definition qgst.cpp:1522
static QGstAppSrc create(const char *name)
Definition qgst.cpp:1585
void setCallbacks(GstAppSrcCallbacks &callbacks, gpointer user_data, GDestroyNotify notify)
Definition qgst.cpp:1599
QGstAppSrc(GstAppSrc *, RefMode)
Definition qgst.cpp:1577
GstAppSrc * appSrc() const
Definition qgst.cpp:1594
void setSync(bool)
Definition qgst.cpp:1495
QGstBaseSink(GstBaseSink *, RefMode)
Definition qgst.cpp:1487
GstBaseSink * baseSink() const
Definition qgst.cpp:1500
QGstBaseSrc(GstBaseSrc *, RefMode)
Definition qgst.cpp:1507
GstBaseSrc * baseSrc() const
Definition qgst.cpp:1515
void addUnlinkedGhostPads(GstPadDirection)
Definition qgst.cpp:1439
void dumpGraph(const char *fileNamePrefix, bool includeTimestamp=true) const
Definition qgst.cpp:1461
QGstElement findByName(const char *)
Definition qgst.cpp:1472
void recalculateLatency()
Definition qgst.cpp:1480
GstBin * bin() const
Definition qgst.cpp:1424
static QGstBin create(const char *name)
Definition qgst.cpp:1371
void addGhostPad(const QGstElement &child, const char *name)
Definition qgst.cpp:1429
static QGstBin createFromPipelineDescription(const char *pipelineDescription, const char *name=nullptr, bool ghostUnlinkedPads=false)
Definition qgst.cpp:1392
static QGstBin createFromFactory(const char *factory, const char *name)
Definition qgst.cpp:1376
void addGhostPad(const char *name, const QGstPad &pad)
Definition qgst.cpp:1434
bool syncChildrenState()
Definition qgst.cpp:1456
QGstBin(GstBin *bin, RefMode mode=NeedsRef)
Definition qgst.cpp:1416
MemoryFormat memoryFormat() const
Definition qgst.cpp:610
std::optional< QGstVideoInfo > videoInfo() const
Definition qgst.cpp:469
int size() const
Definition qgst.cpp:620
static QGstCaps fromCameraFormat(const QCameraFormat &format)
Definition qgst.cpp:545
static QGstCaps create()
Definition qgst.cpp:637
GstCaps * caps() const
Definition qgst.cpp:632
void setResolution(QSize)
Definition qgst.cpp:531
MemoryFormat
Definition qgst_p.h:394
@ DMABuf
Definition qgst_p.h:394
@ CpuMemory
Definition qgst_p.h:394
@ GLTexture
Definition qgst_p.h:394
QGstCaps copy() const
Definition qgst.cpp:602
void addPixelFormats(const QList< QVideoFrameFormat::PixelFormat > &formats, const char *capsFeatures=nullptr)
Definition qgst.cpp:491
QGstStructureView at(int index) const
Definition qgst.cpp:625
QGstClock(GstClock *clock, RefMode mode)
Definition qgst.cpp:989
GstClockTime time() const
Definition qgst.cpp:1002
GstClock * clock() const
Definition qgst.cpp:997
QGstClock(const QGstObject &o)
Definition qgst.cpp:981
void setBaseTime(GstClockTime time) const
Definition qgst.cpp:1284
GstStateChangeReturn setState(GstState state)
Definition qgst.cpp:1143
std::optional< std::chrono::nanoseconds > position() const
Definition qgst.cpp:1240
GstElement * element() const
Definition qgst.cpp:1289
void removeFromParent()
Definition qgst.cpp:1344
QGstElement(GstElement *element, RefMode mode)
Definition qgst.cpp:1009
void lockState(bool locked)
Definition qgst.cpp:1201
QGstBin getRootBin() const
Definition qgst.cpp:1310
QGstPad getRequestPad(const char *name) const
Definition qgst.cpp:1118
std::optional< bool > canSeek() const
Definition qgst.cpp:1263
std::optional< std::chrono::nanoseconds > duration() const
Definition qgst.cpp:1221
bool isStateLocked() const
Definition qgst.cpp:1206
void sendEvent(GstEvent *event) const
Definition qgst.cpp:1211
void dumpPipelineGraph(const char *filename) const
Definition qgst.cpp:1350
GstClockTime baseTime() const
Definition qgst.cpp:1279
QByteArrayView factoryName() const
Definition qgst.cpp:1093
void releaseRequestPad(const QGstPad &pad) const
Definition qgst.cpp:1123
bool syncStateWithParent()
Definition qgst.cpp:1161
QGstPad sink() const
Definition qgst.cpp:1113
QGstPad staticPad(const char *name) const
Definition qgst.cpp:1103
void sendEos() const
Definition qgst.cpp:1216
QGstBin getParentBin() const
Definition qgst.cpp:1302
std::optional< std::chrono::milliseconds > positionInMs() const
Definition qgst.cpp:1254
static QGstElement createFromFactory(const char *factory, const char *name=nullptr)
Definition qgst.cpp:1017
QGstElement getParent() const
Definition qgst.cpp:1294
QGstPipeline getPipeline() const
Definition qgst.cpp:1330
static QGstElement createFromPipelineDescription(const char *)
Definition qgst.cpp:1061
QGstPad src() const
Definition qgst.cpp:1108
std::optional< std::chrono::milliseconds > durationInMs() const
Definition qgst.cpp:1231
void set(const char *property, double d)
Definition qgst.cpp:674
QGObjectHandlerConnection connect(const char *name, GCallback callback, gpointer userData)
Definition qgst.cpp:769
void * getObject(const char *property) const
Definition qgst.cpp:764
double getDouble(const char *property) const
Definition qgst.cpp:750
int getInt(const char *property) const
Definition qgst.cpp:722
void set(const char *property, int32_t i)
Definition qgst.cpp:659
QLatin1StringView name() const
Definition qgst.cpp:800
void set(const char *property, const QGstObject &o)
Definition qgst.cpp:679
QGString getString(const char *property) const
Definition qgst.cpp:694
void disconnect(gulong handlerId)
Definition qgst.cpp:778
QGstObject getGstObject(const char *property) const
Definition qgst.cpp:757
QLatin1StringView typeName() const
Definition qgst.cpp:788
void set(const char *property, const char *str)
Definition qgst.cpp:644
bool getBool(const char *property) const
Definition qgst.cpp:708
GType type() const
Definition qgst.cpp:783
QGstObject & operator=(QGstObject &&) noexcept=default
void set(const char *property, void *object, GDestroyNotify destroyFunction)
Definition qgst.cpp:689
void set(const char *property, bool b)
Definition qgst.cpp:649
quint64 getUInt64(const char *property) const
Definition qgst.cpp:729
QGstStructureView getStructure(const char *property) const
Definition qgst.cpp:701
qint64 getInt64(const char *property) const
Definition qgst.cpp:736
void set(const char *property, const QGstCaps &c)
Definition qgst.cpp:684
float getFloat(const char *property) const
Definition qgst.cpp:743
uint getUInt(const char *property) const
Definition qgst.cpp:715
GstObject * object() const
Definition qgst.cpp:795
bool link(const QGstPad &sink) const
Definition qgst.cpp:908
GstEvent * stickyEvent(GstEventType type)
Definition qgst.cpp:942
QGstTagListHandle tags() const
Definition qgst.cpp:872
QGstPad(const QGstObject &o)
Definition qgst.cpp:846
bool isLinked() const
Definition qgst.cpp:903
bool unlinkPeer() const
Definition qgst.cpp:918
QGstCaps queryCaps() const
Definition qgst.cpp:867
GstPad * pad() const
Definition qgst.cpp:937
QGstPad(GstPad *pad, RefMode mode)
Definition qgst.cpp:854
void sendFlushIfPaused()
Definition qgst.cpp:967
void sendFlushStartStop(bool resetTime)
Definition qgst.cpp:952
QGString streamId() const
Definition qgst.cpp:879
std::optional< QPlatformMediaPlayer::TrackType > inferTrackTypeFromName() const
Definition qgst.cpp:886
bool sendEvent(GstEvent *event)
Definition qgst.cpp:947
QGstCaps currentCaps() const
Definition qgst.cpp:862
QGstElement parent() const
Definition qgst.cpp:932
bool unlink(const QGstPad &sink) const
Definition qgst.cpp:913
QGstPad peer() const
Definition qgst.cpp:927
QGstStructureView(const QUniqueGstStructureHandle &)
Definition qgst.cpp:218
bool isNull() const
Definition qgst.cpp:228
QGRange< float > frameRateRange() const
Definition qgst.cpp:348
QSize nativeSize() const
Definition qgst.cpp:453
QGValue operator[](const char *fieldname) const
Definition qgst.cpp:238
QUniqueGstStructureHandle clone() const
Definition qgst.cpp:223
QList< QVideoFrameFormat::PixelFormat > pixelFormats() const
Definition qgst.cpp:273
std::optional< QGRange< QSize > > resolutionRange() const
Definition qgst.cpp:406
QGstreamerMessage getMessage()
Definition qgst.cpp:432
QGstCaps caps() const
Definition qgst.cpp:243
std::optional< Fraction > pixelAspectRatio() const
Definition qgst.cpp:439
QGstTagListHandle tags() const
Definition qgst.cpp:248
QSize resolution() const
Definition qgst.cpp:259
QByteArrayView name() const
Definition qgst.cpp:233
QGstStructureView(const GstStructure *)
Definition qgst.cpp:216
~QGstVideoBuffer() override
GstBuffer * gstBuffer() const override
void unmap() override
Releases the memory mapped by the map() function.
MapData map(QVideoFrame::MapMode mode) override
Maps the planes of a video buffer to memory.
QVideoFrameTexturesUPtr mapTextures(QRhi &) override
QGstVideoBuffer(QGstBufferHandle buffer, const QGstVideoInfo &videoInfo, const QVideoFrameFormat &frameFormat)
QSize qCalculateFrameSizeGStreamer(QSize resolution, Fraction par)
Combined button and popup list for selecting options.
constexpr std::array< VideoFormat, 19 > qt_videoFormatLookup
Definition qgst.cpp:42
QGstCaps::MemoryFormat qMemoryFormatFromGstBuffer(GstBuffer *buffer)
Definition qgst.cpp:1708
QVideoFrame qCreateFrameFromGstBuffer(QGstBufferHandle buffer, const QGstVideoInfo &videoInfo, const QVideoFrameFormat &format)
Definition qgst.cpp:1727
QVideoFrameFormat qVideoFrameFormatFromGstVideoInfo(const QGstVideoInfo &vidInfo)
Definition qgst.cpp:1616
#define QT_GSTREAMER_SUPPORTS_GST_VIDEO_FORMAT_DMA_DRM
Definition qgst_p.h:38
GstVideoFormat qGstVideoFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format)
Definition qgst.cpp:108
QString qGstErrorMessageCannotFindElement(std::string_view element)
Definition qgst.cpp:1610
QVideoFrame qCreateFrameFromGstBuffer(QGstBufferHandle buffer, const QGstVideoInfo &videoInfo)
Definition qgst.cpp:1738
QVideoFrameFormat::PixelFormat qPixelFormatFromGstVideoFormat(GstVideoFormat format)
Definition qgst.cpp:117
typedefQT_BEGIN_NAMESPACE struct _GstBuffer GstBuffer
void setInt(const char *field, int value)
Definition qgst_p.h:203
void setIntRange(const char *field, int min, int max)
Definition qgst_p.h:213
void setString(const char *field, const char *value)
Definition qgst_p.h:208
QGstStructure(const char *name)
Definition qgst_p.h:198
QVideoFrameFormat::PixelFormat pixelFormat
Definition qgst.cpp:38