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
qlinuxmediadevice.h
Go to the documentation of this file.
1// Copyright (C) 2017 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// Qt-Security score:significant reason:default
4
5#ifndef QLINUXMEDIADEVICE_H
6#define QLINUXMEDIADEVICE_H
7
8#include <linux/v4l2-mediabus.h>
9
10#include <QtCore/qglobal.h>
11#include <QtCore/QString>
12
13QT_BEGIN_NAMESPACE
14
15class QSize;
16class QRect;
17
19{
20public:
21 QLinuxMediaDevice(const QString &devicePath);
23
24 QString model();
26 bool resetLinks();
27 struct media_link *parseLink(const QString &link);
28 struct media_pad *parsePad(const QString &pad);
29 bool enableLink(struct media_link *link);
30 bool disableLink(struct media_link *link);
31 struct media_entity *getEntity(const QString &name);
32 int openVideoDevice(const QString &name);
33
35 {
36 public:
37 CaptureSubDevice(QLinuxMediaDevice *mediaDevice, const QString &name);
38 bool setFormat(const QSize &size, uint32_t pixelFormat = V4L2_PIX_FMT_ABGR32); //TODO: fix to match output device
39 bool clearBuffers();
40 bool requestBuffer();
41 bool queueBuffer(int dmabufFd, const QSize &bufferSize);
42 bool dequeueBuffer();
43 bool streamOn();
44 bool streamOff();
45 private:
46 int m_subdevFd = -1;
47 };
48
50 {
51 public:
52 OutputSubDevice(QLinuxMediaDevice *mediaDevice, const QString &name);
53 bool setFormat(const QSize &size, uint32_t pixelFormat, uint32_t bytesPerLine);
54 bool clearBuffers();
55 bool requestBuffer();
56 bool queueBuffer(int dmabufFd, uint bytesUsed, uint length);
57 bool streamOn();
58 bool streamOff();
59 private:
60 int m_subdevFd = -1;
61 };
62
63 static int openVideoDevice(media_pad *pad);
64
65 static bool setSubdevFormat(struct media_pad *pad, const QSize &size, uint32_t mbusFormat = MEDIA_BUS_FMT_ARGB8888_1X32);
66 static bool setSubdevAlpha(int subdevFd, qreal alpha);
67
68 static bool setSubdevSelection(struct media_pad *pad, const QRect &geometry, uint target);
69 static bool setSubdevCrop(struct media_pad *pad, const QRect &geometry);
70 static bool setSubdevCompose(struct media_pad *pad, const QRect &geometry);
71
72private:
73 static bool streamOn(int subDeviceFd, v4l2_buf_type bufferType);
74 static bool streamOff(int subDeviceFd, v4l2_buf_type bufferType);
75 struct media_device *m_mediaDevice = nullptr;
76 const struct media_device_info *m_info = nullptr;
77};
78
79QT_END_NAMESPACE
80
81#endif // QLINUXMEDIADEVICE_H
gbm_device * gbmDevice() const
void * nativeDisplay() const override
QEglFSKmsVsp2Device(QKmsScreenConfig *screenConfig, const QString &path)
void registerScreenCloning(QPlatformScreen *screen, QPlatformScreen *screenThisScreenClones, const QList< QPlatformScreen * > &screensCloningThisScreen) override
QPlatformScreen * createHeadlessScreen() override
QPlatformScreen * createScreen(const QKmsOutput &output) override
bool removeLayer(int id) override
void setLayerPosition(int id, const QPoint &position) override
gbm_surface * createSurface()
void setLayerBuffer(int id, int dmabufFd) override
void addBlendListener(void(*callback)()) override
int addLayer(int dmabufFd, const QSize &size, const QPoint &position, uint drmPixelFormat, uint bytesPerLine) override
void setLayerAlpha(int id, qreal alpha) override
QEglFSKmsVsp2Screen(QEglFSKmsDevice *device, const QKmsOutput &output)
CaptureSubDevice(QLinuxMediaDevice *mediaDevice, const QString &name)
bool queueBuffer(int dmabufFd, const QSize &bufferSize)
bool queueBuffer(int dmabufFd, uint bytesUsed, uint length)
OutputSubDevice(QLinuxMediaDevice *mediaDevice, const QString &name)
int openVideoDevice(const QString &name)
struct media_link * parseLink(const QString &link)
bool enableLink(struct media_link *link)
static bool setSubdevCrop(struct media_pad *pad, const QRect &geometry)
bool disableLink(struct media_link *link)
static bool setSubdevSelection(struct media_pad *pad, const QRect &geometry, uint target)
static int openVideoDevice(media_pad *pad)
struct media_pad * parsePad(const QString &pad)
static bool setSubdevAlpha(int subdevFd, qreal alpha)
struct media_entity * getEntity(const QString &name)
QLinuxMediaDevice(const QString &devicePath)
static bool setSubdevCompose(struct media_pad *pad, const QRect &geometry)
QVsp2BlendingDevice(const QSize &screenSize)
int enableInput(const QRect &bufferGeometry, uint drmFormat, uint bytesPerLine)
bool blend(int outputDmabufFd)
bool setInputBuffer(int index, int dmabufFd)
bool enableInput(int i, const QRect &bufferGeometry, uint drmFormat, uint bytesPerLine)
bool setInputPosition(int index, const QPoint &position)
bool setInputAlpha(int index, qreal alpha)
Combined button and popup list for selecting options.