Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qffmpegmediacapturesession_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
QFFMPEGMEDIACAPTURESESSION_H
5
#
define
QFFMPEGMEDIACAPTURESESSION_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
<
QtCore
/
qiodevice
.
h
>
19
#
include
<
QtCore
/
qpointer
.
h
>
20
21
#
include
<
QtMultimedia
/
private
/
qplatformmediacapture_p
.
h
>
22
#
include
<
QtMultimedia
/
private
/
qplatformmediaintegration_p
.
h
>
23
24
QT_BEGIN_NAMESPACE
25
26
class
QFFmpegMediaRecorder;
27
class
QFFmpegImageCapture
;
28
class
QVideoFrame;
29
class
QAudioSink;
30
class
QFFmpegAudioInput
;
31
class
QAudioBuffer;
32
class
QPlatformVideoSource;
33
class
QPlatformAudioBufferInput;
34
class
QAudioBufferSource;
35
36
class
QFFmpegMediaCaptureSession
:
public
QPlatformMediaCaptureSession
37
{
38
Q_OBJECT
39
40
public
:
41
using
VideoSources
=
std
::
vector
<
QPointer
<
QPlatformVideoSource
>>;
42
43
QFFmpegMediaCaptureSession
();
44
~
QFFmpegMediaCaptureSession
()
override
;
45
46
QPlatformCamera
*
camera
()
override
;
47
void
setCamera
(QPlatformCamera *camera)
override
;
48
49
QPlatformSurfaceCapture
*
screenCapture
()
override
;
50
void
setScreenCapture
(QPlatformSurfaceCapture *)
override
;
51
52
QPlatformSurfaceCapture
*
windowCapture
()
override
;
53
void
setWindowCapture
(QPlatformSurfaceCapture *)
override
;
54
55
QPlatformVideoFrameInput
*
videoFrameInput
()
override
;
56
void
setVideoFrameInput
(QPlatformVideoFrameInput *)
override
;
57
58
QPlatformImageCapture
*
imageCapture
()
override
;
59
void
setImageCapture
(QPlatformImageCapture *imageCapture)
override
;
60
61
QPlatformMediaRecorder
*
mediaRecorder
()
override
;
62
void
setMediaRecorder
(QPlatformMediaRecorder *recorder)
override
;
63
64
void
setAudioInput
(QPlatformAudioInput *input)
override
;
65
QPlatformAudioInput
*
audioInput
()
const
;
66
67
void
setAudioBufferInput
(QPlatformAudioBufferInput *input)
override
;
68
69
void
setVideoPreview
(QVideoSink *sink)
override
;
70
void
setAudioOutput
(QPlatformAudioOutput *output)
override
;
71
72
// A source may emit frames from a backgrund thread before
73
// its setActive() is done. We need to setup necessary connections
74
// ahead of time as to not miss initial frames. This function
75
// should be called by a source right before it initiates
76
// the internal stream.
77
void
onSourceActivating
(QPlatformVideoSource &);
78
// Called by a source if it fails to go inactive.
79
void
onSourceActivationFailure
(QPlatformVideoSource &);
80
81
QPlatformVideoSource *
primaryActiveVideoSource
();
82
83
// it might be moved to the base class, but it needs QPlatformAudioInput
84
// to be QAudioBufferSource, which might not make sense
85
std
::
vector
<
QAudioBufferSource
*>
activeAudioInputs
()
const
;
86
87
private
Q_SLOTS
:
88
void
updateAudioSink
();
89
void
updateVolume();
90
void
updatePrimaryActiveVideoSource();
91
92
Q_SIGNALS
:
93
void
primaryActiveVideoSourceChanged
();
94
95
private
:
96
template
<
typename
VideoSource>
97
bool
setVideoSource(QPointer<VideoSource> &source, VideoSource *newSource);
98
99
[[nodiscard]] QPlatformVideoSource *primaryVideoSource(QPlatformVideoSource *pendingActiveSource);
100
101
void
updateVideoFrameConnection(QPlatformVideoSource *pendingActiveSource);
102
103
QPointer<QPlatformCamera> m_camera;
104
QPointer<QPlatformSurfaceCapture> m_screenCapture;
105
QPointer<QPlatformSurfaceCapture> m_windowCapture;
106
QPointer<QPlatformVideoFrameInput> m_videoFrameInput;
107
QPointer<QPlatformVideoSource> m_primaryActiveVideoSource;
108
109
QPointer<QFFmpegAudioInput> m_audioInput;
110
QPointer<QPlatformAudioBufferInput> m_audioBufferInput;
111
112
QFFmpegImageCapture
*m_imageCapture =
nullptr
;
113
QFFmpegMediaRecorder
*m_mediaRecorder =
nullptr
;
114
QPlatformAudioOutput *m_audioOutput =
nullptr
;
115
QVideoSink *m_videoSink =
nullptr
;
116
std::unique_ptr<QAudioSink> m_audioSink;
117
QPointer<QIODevice> m_audioIODevice;
118
qsizetype m_audioBufferSize = 0;
119
120
struct
SourceSinkConnection {
121
QPlatformVideoSource *source =
nullptr
;
122
QVideoSink *sink =
nullptr
;
123
QMetaObject::Connection connection;
124
};
125
126
SourceSinkConnection m_videoSinkConnection;
127
};
128
129
QT_END_NAMESPACE
130
131
#
endif
// QGSTREAMERCAPTURESERVICE_H
QFFmpegAudioInput
Definition
qffmpegaudioinput_p.h:31
QFFmpegImageCapture
Definition
qffmpegimagecapture_p.h:28
QFFmpegMediaCaptureSession
Definition
qffmpegmediacapturesession_p.h:37
QFFmpegMediaCaptureSession::setMediaRecorder
void setMediaRecorder(QPlatformMediaRecorder *recorder) override
Definition
qffmpegmediacapturesession.cpp:121
QFFmpegMediaCaptureSession::setVideoPreview
void setVideoPreview(QVideoSink *sink) override
Definition
qffmpegmediacapturesession.cpp:230
QFFmpegMediaCaptureSession::windowCapture
QPlatformSurfaceCapture * windowCapture() override
Definition
qffmpegmediacapturesession.cpp:78
QFFmpegMediaCaptureSession::setWindowCapture
void setWindowCapture(QPlatformSurfaceCapture *) override
Definition
qffmpegmediacapturesession.cpp:83
QFFmpegMediaCaptureSession::setVideoFrameInput
void setVideoFrameInput(QPlatformVideoFrameInput *) override
Definition
qffmpegmediacapturesession.cpp:94
QFFmpegMediaCaptureSession::setScreenCapture
void setScreenCapture(QPlatformSurfaceCapture *) override
Definition
qffmpegmediacapturesession.cpp:72
QFFmpegMediaCaptureSession::setAudioInput
void setAudioInput(QPlatformAudioInput *input) override
Definition
qffmpegmediacapturesession.cpp:141
QFFmpegMediaCaptureSession::videoFrameInput
QPlatformVideoFrameInput * videoFrameInput() override
Definition
qffmpegmediacapturesession.cpp:89
QFFmpegMediaCaptureSession::activeAudioInputs
std::vector< QAudioBufferSource * > activeAudioInputs() const
Definition
qffmpegmediacapturesession.cpp:360
QFFmpegMediaCaptureSession::setImageCapture
void setImageCapture(QPlatformImageCapture *imageCapture) override
Definition
qffmpegmediacapturesession.cpp:105
QFFmpegMediaCaptureSession::screenCapture
QPlatformSurfaceCapture * screenCapture() override
Definition
qffmpegmediacapturesession.cpp:67
QFFmpegMediaCaptureSession::imageCapture
QPlatformImageCapture * imageCapture() override
Definition
qffmpegmediacapturesession.cpp:100
QFFmpegMediaCaptureSession::audioInput
QPlatformAudioInput * audioInput() const
Definition
qffmpegmediacapturesession.cpp:225
QFFmpegMediaCaptureSession::onSourceActivating
void onSourceActivating(QPlatformVideoSource &)
Definition
qffmpegmediacapturesession.cpp:263
QFFmpegMediaCaptureSession::primaryActiveVideoSource
QPlatformVideoSource * primaryActiveVideoSource()
Definition
qffmpegmediacapturesession.cpp:355
QFFmpegMediaCaptureSession::setCamera
void setCamera(QPlatformCamera *camera) override
Definition
qffmpegmediacapturesession.cpp:61
QFFmpegMediaCaptureSession::onSourceActivationFailure
void onSourceActivationFailure(QPlatformVideoSource &)
Definition
qffmpegmediacapturesession.cpp:272
QFFmpegMediaCaptureSession::QFFmpegMediaCaptureSession
QFFmpegMediaCaptureSession()
Definition
qffmpegmediacapturesession.cpp:43
QFFmpegMediaCaptureSession::mediaRecorder
QPlatformMediaRecorder * mediaRecorder() override
Definition
qffmpegmediacapturesession.cpp:136
QFFmpegMediaCaptureSession::camera
QPlatformCamera * camera() override
Definition
qffmpegmediacapturesession.cpp:56
QFFmpegMediaCaptureSession::~QFFmpegMediaCaptureSession
~QFFmpegMediaCaptureSession() override
QFFmpegMediaCaptureSession::setAudioBufferInput
void setAudioBufferInput(QPlatformAudioBufferInput *input) override
Definition
qffmpegmediacapturesession.cpp:164
QFFmpegMediaCaptureSession::setAudioOutput
void setAudioOutput(QPlatformAudioOutput *output) override
Definition
qffmpegmediacapturesession.cpp:238
QFFmpegMediaRecorder
Definition
qffmpegmediarecorder_p.h:30
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
preferredAudioSinkBufferSize
static int preferredAudioSinkBufferSize(const QFFmpegAudioInput &input)
Definition
qffmpegmediacapturesession.cpp:33
Q_STATIC_LOGGING_CATEGORY
QT_BEGIN_NAMESPACE Q_STATIC_LOGGING_CATEGORY(lcSynthesizedIterableAccess, "qt.iterable.synthesized", QtWarningMsg)
qtmultimedia
src
plugins
multimedia
ffmpeg
qffmpegmediacapturesession_p.h
Generated on
for Qt by
1.18.0