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
avfcameraservice.mm
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd and/or its subsidiary(-ies).
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 <QtCore/qvariant.h>
5#include <QtCore/qdebug.h>
6
8#include "avfcamera_p.h"
14#include <qmediadevices.h>
15#include <private/qplatformaudioinput_p.h>
16#include <private/qplatformaudiooutput_p.h>
17#include <qaudioinput.h>
18#include <qaudiooutput.h>
19
20QT_USE_NAMESPACE
21
22AVFCameraService::AVFCameraService()
23{
24 m_session = new AVFCameraSession(this);
25}
26
28{
29
30 delete m_session;
31}
32
33QPlatformCamera *AVFCameraService::camera()
34{
35 return m_cameraControl;
36}
37
38void AVFCameraService::setCamera(QPlatformCamera *camera)
39{
40 AVFCamera *control = static_cast<AVFCamera *>(camera);
41 if (m_cameraControl == control)
42 return;
43
44 if (m_cameraControl) {
45 if (m_encoder)
46 m_cameraControl->disconnect(m_encoder);
47 m_cameraControl->setCaptureSession(nullptr);
48 }
49
50 m_cameraControl = control;
51
52 if (m_cameraControl)
53 m_cameraControl->setCaptureSession(this);
54
55 emit cameraChanged();
56}
57
59{
60 return m_imageCaptureControl;
61}
62
63void AVFCameraService::setImageCapture(QPlatformImageCapture *imageCapture)
64{
65 AVFImageCapture *control = static_cast<AVFImageCapture *>(imageCapture);
66 if (m_imageCaptureControl == control)
67 return;
68
69 if (m_imageCaptureControl)
70 m_imageCaptureControl->setCaptureSession(nullptr);
71
72 m_imageCaptureControl = control;
73 if (m_imageCaptureControl)
74 m_imageCaptureControl->setCaptureSession(this);
75}
76
77QPlatformMediaRecorder *AVFCameraService::mediaRecorder()
78{
79 return m_encoder;
80}
81
82void AVFCameraService::setMediaRecorder(QPlatformMediaRecorder *recorder)
83{
84 AVFMediaEncoder *control = static_cast<AVFMediaEncoder *>(recorder);
85 if (m_encoder == control)
86 return;
87
88 if (m_encoder)
89 m_encoder->setCaptureSession(nullptr);
90
91 m_encoder = control;
92 if (m_encoder)
93 m_encoder->setCaptureSession(this);
94
95 emit encoderChanged();
96}
97
98void AVFCameraService::setAudioInput(QPlatformAudioInput *input)
99{
100 if (m_audioInput == input)
101 return;
102 if (m_audioInput)
103 m_audioInput->q->disconnect(this);
104
105 m_audioInput = input;
106
107 if (input) {
108 connect(m_audioInput->q, &QAudioInput::destroyed, this, &AVFCameraService::audioInputDestroyed);
109 connect(m_audioInput->q, &QAudioInput::deviceChanged, this, &AVFCameraService::audioInputChanged);
110 connect(m_audioInput->q, &QAudioInput::mutedChanged, this, &AVFCameraService::setAudioInputMuted);
111 connect(m_audioInput->q, &QAudioInput::volumeChanged, this, &AVFCameraService::setAudioInputVolume);
112 }
113 audioInputChanged();
114}
115
116void AVFCameraService::setAudioOutput(QPlatformAudioOutput *output)
117{
118 if (m_audioOutput == output)
119 return;
120 if (m_audioOutput)
121 m_audioOutput->q->disconnect(this);
122
123 m_audioOutput = output;
124
125 if (m_audioOutput) {
126 connect(m_audioOutput->q, &QAudioOutput::destroyed, this, &AVFCameraService::audioOutputDestroyed);
127 connect(m_audioOutput->q, &QAudioOutput::deviceChanged, this, &AVFCameraService::audioOutputChanged);
128 connect(m_audioOutput->q, &QAudioOutput::mutedChanged, this, &AVFCameraService::setAudioOutputMuted);
129 connect(m_audioOutput->q, &QAudioOutput::volumeChanged, this, &AVFCameraService::setAudioOutputVolume);
130 }
132}
133
134void AVFCameraService::audioInputChanged()
135{
136 m_session->updateAudioInput();
137}
138
143
145{
146 m_session->setAudioInputMuted(muted);
147}
148
150{
151 m_session->setAudioInputVolume(volume);
152}
153
155{
156 m_session->setAudioOutputMuted(muted);
157}
158
160{
161 m_session->setAudioOutputVolume(volume);
162}
163
164void AVFCameraService::setVideoPreview(QVideoSink *sink)
165{
166 m_session->setVideoSink(sink);
167}
168
169#include "moc_avfcameraservice_p.cpp"
void setImageCapture(QPlatformImageCapture *imageCapture) override
void setAudioOutputMuted(bool muted)
QPlatformMediaRecorder * mediaRecorder() override
void setVideoPreview(QVideoSink *sink) override
void setCamera(QPlatformCamera *camera) override
void setMediaRecorder(QPlatformMediaRecorder *recorder) override
void setAudioInputMuted(bool muted)
~AVFCameraService() override
void setAudioOutputVolume(float volume)
QPlatformImageCapture * imageCapture() override
QPlatformCamera * camera() override
void setAudioInputVolume(float volume)
void setAudioOutputMuted(bool muted)
void setAudioInputVolume(float volume)
void setVideoSink(QVideoSink *sink)
void setAudioOutputVolume(float volume)
void setAudioInputMuted(bool muted)