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:805
QGObjectHandlerScopedConnection(QGObjectHandlerConnection connection)
Definition qgst.cpp:822
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:1561
void setCallbacks(GstAppSinkCallbacks &callbacks, gpointer user_data, GDestroyNotify notify)
Definition qgst.cpp:1555
GstAppSink * appSink() const
Definition qgst.cpp:1533
void setCaps(const QGstCaps &caps)
Definition qgst.cpp:1550
void setMaxBuffers(int)
Definition qgst.cpp:1545
static QGstAppSink create(const char *name)
Definition qgst.cpp:1524
QGstAppSink(GstAppSink *, RefMode)
Definition qgst.cpp:1516
static QGstAppSrc create(const char *name)
Definition qgst.cpp:1579
GstFlowReturn pushBuffer(GstBuffer *)
Definition qgst.cpp:1599
void setCallbacks(GstAppSrcCallbacks &callbacks, gpointer user_data, GDestroyNotify notify)
Definition qgst.cpp:1593
QGstAppSrc(GstAppSrc *, RefMode)
Definition qgst.cpp:1571
GstAppSrc * appSrc() const
Definition qgst.cpp:1588
void setSync(bool)
Definition qgst.cpp:1489
QGstBaseSink(GstBaseSink *, RefMode)
Definition qgst.cpp:1481
GstBaseSink * baseSink() const
Definition qgst.cpp:1494
QGstBaseSrc(GstBaseSrc *, RefMode)
Definition qgst.cpp:1501
GstBaseSrc * baseSrc() const
Definition qgst.cpp:1509
void addUnlinkedGhostPads(GstPadDirection)
Definition qgst.cpp:1433
void dumpGraph(const char *fileNamePrefix, bool includeTimestamp=true) const
Definition qgst.cpp:1455
QGstElement findByName(const char *)
Definition qgst.cpp:1466
void recalculateLatency()
Definition qgst.cpp:1474
GstBin * bin() const
Definition qgst.cpp:1418
static QGstBin create(const char *name)
Definition qgst.cpp:1365
void addGhostPad(const QGstElement &child, const char *name)
Definition qgst.cpp:1423
static QGstBin createFromPipelineDescription(const char *pipelineDescription, const char *name=nullptr, bool ghostUnlinkedPads=false)
Definition qgst.cpp:1386
static QGstBin createFromFactory(const char *factory, const char *name)
Definition qgst.cpp:1370
void addGhostPad(const char *name, const QGstPad &pad)
Definition qgst.cpp:1428
bool syncChildrenState()
Definition qgst.cpp:1450
QGstBin(GstBin *bin, RefMode mode=NeedsRef)
Definition qgst.cpp:1410
MemoryFormat memoryFormat() const
Definition qgst.cpp:606
std::optional< QGstVideoInfo > videoInfo() const
Definition qgst.cpp:465
int size() const
Definition qgst.cpp:616
static QGstCaps fromCameraFormat(const QCameraFormat &format)
Definition qgst.cpp:541
static QGstCaps create()
Definition qgst.cpp:633
GstCaps * caps() const
Definition qgst.cpp:628
void setResolution(QSize)
Definition qgst.cpp:527
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:598
void addPixelFormats(const QList< QVideoFrameFormat::PixelFormat > &formats, const char *capsFeatures=nullptr)
Definition qgst.cpp:487
QGstStructureView at(int index) const
Definition qgst.cpp:621
QGstClock(GstClock *clock, RefMode mode)
Definition qgst.cpp:983
GstClockTime time() const
Definition qgst.cpp:996
GstClock * clock() const
Definition qgst.cpp:991
QGstClock(const QGstObject &o)
Definition qgst.cpp:975
void setBaseTime(GstClockTime time) const
Definition qgst.cpp:1278
GstStateChangeReturn setState(GstState state)
Definition qgst.cpp:1137
std::optional< std::chrono::nanoseconds > position() const
Definition qgst.cpp:1234
GstElement * element() const
Definition qgst.cpp:1283
void removeFromParent()
Definition qgst.cpp:1338
QGstElement(GstElement *element, RefMode mode)
Definition qgst.cpp:1003
void lockState(bool locked)
Definition qgst.cpp:1195
QGstBin getRootBin() const
Definition qgst.cpp:1304
QGstPad getRequestPad(const char *name) const
Definition qgst.cpp:1112
std::optional< bool > canSeek() const
Definition qgst.cpp:1257
std::optional< std::chrono::nanoseconds > duration() const
Definition qgst.cpp:1215
bool isStateLocked() const
Definition qgst.cpp:1200
void sendEvent(GstEvent *event) const
Definition qgst.cpp:1205
void dumpPipelineGraph(const char *filename) const
Definition qgst.cpp:1344
GstClockTime baseTime() const
Definition qgst.cpp:1273
QByteArrayView factoryName() const
Definition qgst.cpp:1087
void releaseRequestPad(const QGstPad &pad) const
Definition qgst.cpp:1117
bool syncStateWithParent()
Definition qgst.cpp:1155
QGstPad sink() const
Definition qgst.cpp:1107
QGstPad staticPad(const char *name) const
Definition qgst.cpp:1097
void sendEos() const
Definition qgst.cpp:1210
QGstBin getParentBin() const
Definition qgst.cpp:1296
std::optional< std::chrono::milliseconds > positionInMs() const
Definition qgst.cpp:1248
static QGstElement createFromFactory(const char *factory, const char *name=nullptr)
Definition qgst.cpp:1011
QGstElement getParent() const
Definition qgst.cpp:1288
QGstPipeline getPipeline() const
Definition qgst.cpp:1324
static QGstElement createFromPipelineDescription(const char *)
Definition qgst.cpp:1055
QGstPad src() const
Definition qgst.cpp:1102
std::optional< std::chrono::milliseconds > durationInMs() const
Definition qgst.cpp:1225
void set(const char *property, double d)
Definition qgst.cpp:670
QGObjectHandlerConnection connect(const char *name, GCallback callback, gpointer userData)
Definition qgst.cpp:765
void * getObject(const char *property) const
Definition qgst.cpp:760
double getDouble(const char *property) const
Definition qgst.cpp:746
int getInt(const char *property) const
Definition qgst.cpp:718
void set(const char *property, int32_t i)
Definition qgst.cpp:655
QLatin1StringView name() const
Definition qgst.cpp:796
void set(const char *property, const QGstObject &o)
Definition qgst.cpp:675
QGString getString(const char *property) const
Definition qgst.cpp:690
void disconnect(gulong handlerId)
Definition qgst.cpp:774
QGstObject getGstObject(const char *property) const
Definition qgst.cpp:753
QLatin1StringView typeName() const
Definition qgst.cpp:784
void set(const char *property, const char *str)
Definition qgst.cpp:640
bool getBool(const char *property) const
Definition qgst.cpp:704
GType type() const
Definition qgst.cpp:779
QGstObject & operator=(QGstObject &&) noexcept=default
void set(const char *property, void *object, GDestroyNotify destroyFunction)
Definition qgst.cpp:685
void set(const char *property, bool b)
Definition qgst.cpp:645
quint64 getUInt64(const char *property) const
Definition qgst.cpp:725
QGstStructureView getStructure(const char *property) const
Definition qgst.cpp:697
qint64 getInt64(const char *property) const
Definition qgst.cpp:732
void set(const char *property, const QGstCaps &c)
Definition qgst.cpp:680
float getFloat(const char *property) const
Definition qgst.cpp:739
uint getUInt(const char *property) const
Definition qgst.cpp:711
GstObject * object() const
Definition qgst.cpp:791
bool link(const QGstPad &sink) const
Definition qgst.cpp:902
GstEvent * stickyEvent(GstEventType type)
Definition qgst.cpp:936
QGstTagListHandle tags() const
Definition qgst.cpp:868
QGstPad(const QGstObject &o)
Definition qgst.cpp:842
bool isLinked() const
Definition qgst.cpp:897
bool unlinkPeer() const
Definition qgst.cpp:912
QGstCaps queryCaps() const
Definition qgst.cpp:863
GstPad * pad() const
Definition qgst.cpp:931
QGstPad(GstPad *pad, RefMode mode)
Definition qgst.cpp:850
void sendFlushIfPaused()
Definition qgst.cpp:961
void sendFlushStartStop(bool resetTime)
Definition qgst.cpp:946
QGString streamId() const
Definition qgst.cpp:875
std::optional< QPlatformMediaPlayer::TrackType > inferTrackTypeFromName() const
Definition qgst.cpp:882
bool sendEvent(GstEvent *event)
Definition qgst.cpp:941
QGstCaps currentCaps() const
Definition qgst.cpp:858
QGstElement parent() const
Definition qgst.cpp:926
bool unlink(const QGstPad &sink) const
Definition qgst.cpp:907
QGstPad peer() const
Definition qgst.cpp:921
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:1702
QVideoFrameFormat qVideoFrameFormatFromGstVideoInfo(const QGstVideoInfo &vidInfo)
Definition qgst.cpp:1610
#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:1604
QVideoFrame qCreateFrameFromGstBuffer(QGstBufferHandle buffer, const QGstVideoInfo &videoInfo)
Definition qgst.cpp:1721
QVideoFrameFormat::PixelFormat qPixelFormatFromGstVideoFormat(GstVideoFormat format)
Definition qgst.cpp:113
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:34