summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform
diff options
context:
space:
mode:
authorTim Blechmann <tim@klingt.org>2024-03-29 08:09:49 +0800
committerTim Blechmann <tim@klingt.org>2024-04-27 10:56:48 +0800
commitd27311be4a07051e0fd17b0535ea378c29e464e8 (patch)
tree614098781f518a5958a3ce595fd4a2f061d44095 /src/multimedia/platform
parenta17f9937ef8efad084e783f146c4969be4819eb1 (diff)
GStreamer: add private API to access pipeline for capture session
Allows users to mess with the underlying gstreamer pipeline of the `QMediaCaptureSession` like they can with the `QMediaPlayer` [ChangeLog] QMediaCaptureSession: GStreamer - private interface to access underlying GstPipeline of QMediaCaptureSession Pick-to: 6.5 6.6 6.7 Task-number: QTBUG-123830 Change-Id: I5b17240c9951ee8e05dd6cb4a78b203a56794922 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
Diffstat (limited to 'src/multimedia/platform')
-rw-r--r--src/multimedia/platform/qplatformmediacapture.cpp23
-rw-r--r--src/multimedia/platform/qplatformmediacapture_p.h5
2 files changed, 22 insertions, 6 deletions
diff --git a/src/multimedia/platform/qplatformmediacapture.cpp b/src/multimedia/platform/qplatformmediacapture.cpp
index 826228764..c8aded824 100644
--- a/src/multimedia/platform/qplatformmediacapture.cpp
+++ b/src/multimedia/platform/qplatformmediacapture.cpp
@@ -1,12 +1,14 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
-#include <qtmultimediaglobal_p.h>
-#include "qplatformmediacapture_p.h"
-#include "qaudiodevice.h"
-#include "qaudioinput.h"
-#include "qplatformcamera_p.h"
-#include "qplatformsurfacecapture_p.h"
+#include <QtMultimedia/qaudiodevice.h>
+#include <QtMultimedia/qaudioinput.h>
+#include <QtMultimedia/qmediacapturesession.h>
+#include <QtMultimedia/private/qplatformcamera_p.h>
+#include <QtMultimedia/private/qplatformmediacapture_p.h>
+#include <QtMultimedia/private/qmediacapturesession_p.h>
+#include <QtMultimedia/private/qplatformsurfacecapture_p.h>
+#include <QtMultimedia/private/qtmultimediaglobal_p.h>
QT_BEGIN_NAMESPACE
@@ -28,6 +30,15 @@ std::vector<QPlatformVideoSource *> QPlatformMediaCaptureSession::activeVideoSou
return result;
}
+void *QPlatformMediaCaptureSession::nativePipeline(QMediaCaptureSession *session)
+{
+ auto sessionPrivate = session->d_func();
+ if (!sessionPrivate || !sessionPrivate->captureSession)
+ return nullptr;
+
+ return sessionPrivate->captureSession->nativePipeline();
+}
+
QT_END_NAMESPACE
#include "moc_qplatformmediacapture_p.cpp"
diff --git a/src/multimedia/platform/qplatformmediacapture_p.h b/src/multimedia/platform/qplatformmediacapture_p.h
index 814fa160c..981cf199b 100644
--- a/src/multimedia/platform/qplatformmediacapture_p.h
+++ b/src/multimedia/platform/qplatformmediacapture_p.h
@@ -64,6 +64,11 @@ public:
// TBD: implement ordering of the sources basing on the order of adding
std::vector<QPlatformVideoSource *> activeVideoSources();
+ virtual void *nativePipeline() { return nullptr; }
+
+ // private API, the purpose is getting GstPipeline
+ static void *nativePipeline(QMediaCaptureSession *);
+
Q_SIGNALS:
void cameraChanged();
void screenCaptureChanged();