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 <gst/video/video.h>
23
25class QVideoFrameFormat;
26class QOpenGLContext;
27
28class QGstVideoBuffer final : public QHwVideoBuffer
29{
30public:
31 QGstVideoBuffer(QGstBufferHandle buffer, const QGstVideoInfo &videoInfo,
32 const QVideoFrameFormat &frameFormat);
34
35 MapData map(QVideoFrame::MapMode mode) override;
36 void unmap() override;
37
38 bool isDmaBuf() const override;
39
40 QVideoFrameTexturesUPtr mapTextures(QRhi &, QVideoFrameTexturesUPtr& /*oldTextures*/) override;
41 GstBuffer *gstBuffer() const { return m_buffer.get(); }
42
43private:
44 const QGstCaps::MemoryFormat m_memoryFormat = QGstCaps::CpuMemory;
45 const QVideoFrameFormat m_frameFormat;
46 QGstVideoInfo m_videoInfo;
47 mutable GstVideoFrame m_frame{};
48 const QGstBufferHandle m_buffer;
49 QVideoFrame::MapMode m_mode = QVideoFrame::NotMapped;
50#if QT_CONFIG(gstreamer_gl_egl)
51 Qt::HANDLE m_eglDisplay = nullptr;
52 QFunctionPointer m_eglImageTargetTexture2D = nullptr;
53#endif
54};
55
56QT_END_NAMESPACE
57
58#endif
QGObjectHandlerConnection(QGstObject object, gulong handler)
Definition qgst.cpp:801
QGObjectHandlerScopedConnection(QGObjectHandlerConnection connection)
Definition qgst.cpp:818
std::optional< int > toInt64() const
Definition qgst.cpp:145
std::optional< QGRange< int > > toIntRange() const
Definition qgst.cpp:174
std::optional< int > toInt() const
Definition qgst.cpp:138
int listSize() const
Definition qgst.cpp:200
bool isList() const
Definition qgst.cpp:195
QGstStructureView toStructure() const
Definition qgst.cpp:181
std::optional< QGRange< float > > getFractionRange() const
Definition qgst.cpp:165
const char * toString() const
Definition qgst.cpp:152
std::optional< float > getFraction() const
Definition qgst.cpp:157
QGValue at(int index) const
Definition qgst.cpp:205
bool isNull() const
Definition qgst.cpp:126
QGstCaps toCaps() const
Definition qgst.cpp:188
std::optional< bool > toBool() const
Definition qgst.cpp:131
QGValue(const GValue *v)
Definition qgst.cpp:124
QGstSampleHandle pullSample()
Definition qgst.cpp:1557
void setCallbacks(GstAppSinkCallbacks &callbacks, gpointer user_data, GDestroyNotify notify)
Definition qgst.cpp:1551
GstAppSink * appSink() const
Definition qgst.cpp:1529
void setCaps(const QGstCaps &caps)
Definition qgst.cpp:1546
void setMaxBuffers(int)
Definition qgst.cpp:1541
static QGstAppSink create(const char *name)
Definition qgst.cpp:1520
QGstAppSink(GstAppSink *, RefMode)
Definition qgst.cpp:1512
static QGstAppSrc create(const char *name)
Definition qgst.cpp:1575
GstFlowReturn pushBuffer(GstBuffer *)
Definition qgst.cpp:1595
void setCallbacks(GstAppSrcCallbacks &callbacks, gpointer user_data, GDestroyNotify notify)
Definition qgst.cpp:1589
QGstAppSrc(GstAppSrc *, RefMode)
Definition qgst.cpp:1567
GstAppSrc * appSrc() const
Definition qgst.cpp:1584
void setSync(bool)
Definition qgst.cpp:1485
QGstBaseSink(GstBaseSink *, RefMode)
Definition qgst.cpp:1477
GstBaseSink * baseSink() const
Definition qgst.cpp:1490
QGstBaseSrc(GstBaseSrc *, RefMode)
Definition qgst.cpp:1497
GstBaseSrc * baseSrc() const
Definition qgst.cpp:1505
void addUnlinkedGhostPads(GstPadDirection)
Definition qgst.cpp:1429
void dumpGraph(const char *fileNamePrefix, bool includeTimestamp=true) const
Definition qgst.cpp:1451
QGstElement findByName(const char *)
Definition qgst.cpp:1462
void recalculateLatency()
Definition qgst.cpp:1470
GstBin * bin() const
Definition qgst.cpp:1414
static QGstBin create(const char *name)
Definition qgst.cpp:1361
void addGhostPad(const QGstElement &child, const char *name)
Definition qgst.cpp:1419
static QGstBin createFromPipelineDescription(const char *pipelineDescription, const char *name=nullptr, bool ghostUnlinkedPads=false)
Definition qgst.cpp:1382
static QGstBin createFromFactory(const char *factory, const char *name)
Definition qgst.cpp:1366
void addGhostPad(const char *name, const QGstPad &pad)
Definition qgst.cpp:1424
bool syncChildrenState()
Definition qgst.cpp:1446
QGstBin(GstBin *bin, RefMode mode=NeedsRef)
Definition qgst.cpp:1406
MemoryFormat memoryFormat() const
Definition qgst.cpp:602
std::optional< QGstVideoInfo > videoInfo() const
Definition qgst.cpp:465
int size() const
Definition qgst.cpp:612
static QGstCaps fromCameraFormat(const QCameraFormat &format)
Definition qgst.cpp:539
static QGstCaps create()
Definition qgst.cpp:629
GstCaps * caps() const
Definition qgst.cpp:624
void setResolution(QSize)
Definition qgst.cpp:525
MemoryFormat
Definition qgst_p.h:358
@ DMABuf
Definition qgst_p.h:358
@ CpuMemory
Definition qgst_p.h:358
@ GLTexture
Definition qgst_p.h:358
QGstCaps copy() const
Definition qgst.cpp:594
void addPixelFormats(const QList< QVideoFrameFormat::PixelFormat > &formats, const char *capsFeatures=nullptr)
Definition qgst.cpp:487
QGstStructureView at(int index) const
Definition qgst.cpp:617
QGstClock(GstClock *clock, RefMode mode)
Definition qgst.cpp:979
GstClockTime time() const
Definition qgst.cpp:992
GstClock * clock() const
Definition qgst.cpp:987
QGstClock(const QGstObject &o)
Definition qgst.cpp:971
void setBaseTime(GstClockTime time) const
Definition qgst.cpp:1274
GstStateChangeReturn setState(GstState state)
Definition qgst.cpp:1133
std::optional< std::chrono::nanoseconds > position() const
Definition qgst.cpp:1230
GstElement * element() const
Definition qgst.cpp:1279
void removeFromParent()
Definition qgst.cpp:1334
QGstElement(GstElement *element, RefMode mode)
Definition qgst.cpp:999
void lockState(bool locked)
Definition qgst.cpp:1191
QGstBin getRootBin() const
Definition qgst.cpp:1300
QGstPad getRequestPad(const char *name) const
Definition qgst.cpp:1108
std::optional< bool > canSeek() const
Definition qgst.cpp:1253
std::optional< std::chrono::nanoseconds > duration() const
Definition qgst.cpp:1211
bool isStateLocked() const
Definition qgst.cpp:1196
void sendEvent(GstEvent *event) const
Definition qgst.cpp:1201
void dumpPipelineGraph(const char *filename) const
Definition qgst.cpp:1340
GstClockTime baseTime() const
Definition qgst.cpp:1269
QByteArrayView factoryName() const
Definition qgst.cpp:1083
void releaseRequestPad(const QGstPad &pad) const
Definition qgst.cpp:1113
bool syncStateWithParent()
Definition qgst.cpp:1151
QGstPad sink() const
Definition qgst.cpp:1103
QGstPad staticPad(const char *name) const
Definition qgst.cpp:1093
void sendEos() const
Definition qgst.cpp:1206
QGstBin getParentBin() const
Definition qgst.cpp:1292
std::optional< std::chrono::milliseconds > positionInMs() const
Definition qgst.cpp:1244
static QGstElement createFromFactory(const char *factory, const char *name=nullptr)
Definition qgst.cpp:1007
QGstElement getParent() const
Definition qgst.cpp:1284
QGstPipeline getPipeline() const
Definition qgst.cpp:1320
static QGstElement createFromPipelineDescription(const char *)
Definition qgst.cpp:1051
QGstPad src() const
Definition qgst.cpp:1098
std::optional< std::chrono::milliseconds > durationInMs() const
Definition qgst.cpp:1221
void set(const char *property, double d)
Definition qgst.cpp:666
QGObjectHandlerConnection connect(const char *name, GCallback callback, gpointer userData)
Definition qgst.cpp:761
void * getObject(const char *property) const
Definition qgst.cpp:756
double getDouble(const char *property) const
Definition qgst.cpp:742
int getInt(const char *property) const
Definition qgst.cpp:714
void set(const char *property, int32_t i)
Definition qgst.cpp:651
QLatin1StringView name() const
Definition qgst.cpp:792
void set(const char *property, const QGstObject &o)
Definition qgst.cpp:671
QGString getString(const char *property) const
Definition qgst.cpp:686
void disconnect(gulong handlerId)
Definition qgst.cpp:770
QGstObject getGstObject(const char *property) const
Definition qgst.cpp:749
QLatin1StringView typeName() const
Definition qgst.cpp:780
void set(const char *property, const char *str)
Definition qgst.cpp:636
bool getBool(const char *property) const
Definition qgst.cpp:700
GType type() const
Definition qgst.cpp:775
QGstObject & operator=(QGstObject &&) noexcept=default
void set(const char *property, void *object, GDestroyNotify destroyFunction)
Definition qgst.cpp:681
void set(const char *property, bool b)
Definition qgst.cpp:641
quint64 getUInt64(const char *property) const
Definition qgst.cpp:721
QGstStructureView getStructure(const char *property) const
Definition qgst.cpp:693
qint64 getInt64(const char *property) const
Definition qgst.cpp:728
void set(const char *property, const QGstCaps &c)
Definition qgst.cpp:676
float getFloat(const char *property) const
Definition qgst.cpp:735
uint getUInt(const char *property) const
Definition qgst.cpp:707
GstObject * object() const
Definition qgst.cpp:787
bool link(const QGstPad &sink) const
Definition qgst.cpp:898
GstEvent * stickyEvent(GstEventType type)
Definition qgst.cpp:932
QGstTagListHandle tags() const
Definition qgst.cpp:864
QGstPad(const QGstObject &o)
Definition qgst.cpp:838
bool isLinked() const
Definition qgst.cpp:893
bool unlinkPeer() const
Definition qgst.cpp:908
QGstCaps queryCaps() const
Definition qgst.cpp:859
GstPad * pad() const
Definition qgst.cpp:927
QGstPad(GstPad *pad, RefMode mode)
Definition qgst.cpp:846
void sendFlushIfPaused()
Definition qgst.cpp:957
void sendFlushStartStop(bool resetTime)
Definition qgst.cpp:942
QGString streamId() const
Definition qgst.cpp:871
std::optional< QPlatformMediaPlayer::TrackType > inferTrackTypeFromName() const
Definition qgst.cpp:878
bool sendEvent(GstEvent *event)
Definition qgst.cpp:937
QGstCaps currentCaps() const
Definition qgst.cpp:854
QGstElement parent() const
Definition qgst.cpp:922
bool unlink(const QGstPad &sink) const
Definition qgst.cpp:903
QGstPad peer() const
Definition qgst.cpp:917
QGstStructureView(const QUniqueGstStructureHandle &)
Definition qgst.cpp:214
bool isNull() const
Definition qgst.cpp:224
QGRange< float > frameRateRange() const
Definition qgst.cpp:344
QSize nativeSize() const
Definition qgst.cpp:449
QGValue operator[](const char *fieldname) const
Definition qgst.cpp:234
QUniqueGstStructureHandle clone() const
Definition qgst.cpp:219
QList< QVideoFrameFormat::PixelFormat > pixelFormats() const
Definition qgst.cpp:269
std::optional< QGRange< QSize > > resolutionRange() const
Definition qgst.cpp:402
QGstreamerMessage getMessage()
Definition qgst.cpp:428
QGstCaps caps() const
Definition qgst.cpp:239
std::optional< Fraction > pixelAspectRatio() const
Definition qgst.cpp:435
QGstTagListHandle tags() const
Definition qgst.cpp:244
QSize resolution() const
Definition qgst.cpp:255
QByteArrayView name() const
Definition qgst.cpp:229
QGstStructureView(const GstStructure *)
Definition qgst.cpp:212
QGstVideoBuffer(QGstBufferHandle buffer, const QGstVideoInfo &videoInfo, const QVideoFrameFormat &frameFormat)
~QGstVideoBuffer() override
bool isDmaBuf() const override
QVideoFrameTexturesUPtr mapTextures(QRhi &, QVideoFrameTexturesUPtr &) override
GstBuffer * gstBuffer() const
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.
QSize qCalculateFrameSizeGStreamer(QSize resolution, Fraction par)
Combined button and popup list for selecting options.
constexpr std::array< VideoFormat, 19 > qt_videoFormatLookup
Definition qgst.cpp:38
QGstCaps::MemoryFormat qMemoryFormatFromGstBuffer(GstBuffer *buffer)
Definition qgst.cpp:1698
QVideoFrameFormat qVideoFrameFormatFromGstVideoInfo(const QGstVideoInfo &vidInfo)
Definition qgst.cpp:1606
#define QT_GSTREAMER_SUPPORTS_GST_VIDEO_FORMAT_DMA_DRM
Definition qgst_p.h:38
GstVideoFormat qGstVideoFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format)
Definition qgst.cpp:104
QString qGstErrorMessageCannotFindElement(std::string_view element)
Definition qgst.cpp:1600
QVideoFrame qCreateFrameFromGstBuffer(QGstBufferHandle buffer, const QGstVideoInfo &videoInfo)
Definition qgst.cpp:1717
QVideoFrameFormat::PixelFormat qPixelFormatFromGstVideoFormat(GstVideoFormat format)
Definition qgst.cpp:113
QVideoFrameFormat::PixelFormat pixelFormat
Definition qgst.cpp:34