1// Copyright (C) 2024 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#include "qmediaframeinput_p.h"
5
6QT_BEGIN_NAMESPACE
7
8void QMediaFrameInputPrivate::setCaptureSession(QMediaCaptureSession *session)
9{
10 if (session == m_captureSession)
11 return;
12
13 auto prevSession = std::exchange(obj&: m_captureSession, new_val&: session);
14 updateCaptureSessionConnections(prevSession, currentSession: session);
15 updateCanSendMediaFrame();
16}
17
18void QMediaFrameInputPrivate::updateCanSendMediaFrame()
19{
20 const bool canSendMediaFrame = m_captureSession && checkIfCanSendMediaFrame();
21 if (m_canSendMediaFrame != canSendMediaFrame) {
22 m_canSendMediaFrame = canSendMediaFrame;
23 if (m_canSendMediaFrame)
24 emitReadyToSendMediaFrame();
25 }
26}
27
28void QMediaFrameInputPrivate::postponeCheckReadyToSend()
29{
30 if (m_canSendMediaFrame && !m_postponeReadyToSendCheckRun) {
31 m_postponeReadyToSendCheckRun = true;
32 QMetaObject::invokeMethod(
33 object: q_ptr,
34 function: [this]() {
35 m_postponeReadyToSendCheckRun = false;
36 if (m_canSendMediaFrame)
37 emitReadyToSendMediaFrame();
38 },
39 type: Qt::QueuedConnection);
40 }
41}
42
43QT_END_NAMESPACE
44

Provided by KDAB

Privacy Policy
Learn to use CMake with our Intro Training
Find out more

source code of qtmultimedia/src/multimedia/qmediaframeinput.cpp