diff options
author | Tim Blechmann <tim@klingt.org> | 2024-03-29 08:09:49 +0800 |
---|---|---|
committer | Tim Blechmann <tim@klingt.org> | 2024-04-27 10:56:48 +0800 |
commit | d27311be4a07051e0fd17b0535ea378c29e464e8 (patch) | |
tree | 614098781f518a5958a3ce595fd4a2f061d44095 /src/multimedia/platform | |
parent | a17f9937ef8efad084e783f146c4969be4819eb1 (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.cpp | 23 | ||||
-rw-r--r-- | src/multimedia/platform/qplatformmediacapture_p.h | 5 |
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(); |