Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qqnxmediarecorder.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 Research In Motion
2// Copyright (C) 2022 The Qt Company Ltd.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
5
7#include "qqnxaudioinput_p.h"
8#include "qqnxcamera_p.h"
10
11#include <private/qplatformcamera_p.h>
12
13#include <QDebug>
14#include <QUrl>
15
17
20{
21}
22
23bool QQnxMediaRecorder::isLocationWritable(const QUrl &/*location*/) const
24{
25 return true;
26}
27
29{
30 m_session = session;
31}
32
34{
35 if (!m_session)
36 return;
37
38 m_audioRecorder.disconnect();
39
40 if (hasCamera()) {
41 startVideoRecording(settings);
42 } else {
44 [this](qint64 d) { durationChanged(d); });
45
48
50 [this](const QUrl &l) { actualLocationChanged(l); });
51
52 startAudioRecording(settings);
53 }
54}
55
57{
58 if (hasCamera()) {
59 stopVideoRecording();
60 } else {
61 m_audioRecorder.stop();
62 }
63}
64
65void QQnxMediaRecorder::startAudioRecording(QMediaEncoderSettings &settings)
66{
67 if (!m_session)
68 return;
69
70 QQnxAudioInput *audioInput = m_session->audioInput();
71
72 if (!audioInput)
73 return;
74
75 m_audioRecorder.setInputDeviceId(audioInput->device.id());
76 m_audioRecorder.setMediaEncoderSettings(settings);
77 m_audioRecorder.setOutputUrl(outputLocation());
78 m_audioRecorder.record();
79}
80
81void QQnxMediaRecorder::startVideoRecording(QMediaEncoderSettings &settings)
82{
83 if (!hasCamera())
84 return;
85
86 auto *camera = static_cast<QQnxPlatformCamera*>(m_session->camera());
87
88 camera->setMediaEncoderSettings(settings);
89 camera->setOutputUrl(outputLocation());
90
91 if (camera->startVideoRecording())
93}
94
95void QQnxMediaRecorder::stopVideoRecording()
96{
97 if (!hasCamera())
98 return;
99
100 auto *camera = static_cast<QQnxPlatformCamera*>(m_session->camera());
101
102 camera->stop();
103
105}
106
107bool QQnxMediaRecorder::hasCamera() const
108{
109 return m_session && m_session->camera();
110}
111
QByteArray id
\qmlproperty string QtMultimedia::audioDevice::id
void stop()
\qmlmethod void Camera::stop()
Definition qcamera.h:205
\inmodule QtMultimedia
RecorderState
\qmlproperty enumeration QtMultimedia::MediaRecorder::recorderState
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2823
static bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)
\threadsafe
Definition qobject.cpp:3099
void actualLocationChanged(const QUrl &location)
void stateChanged(QMediaRecorder::RecorderState state)
void durationChanged(qint64 position)
void setInputDeviceId(const QByteArray &id)
void durationChanged(qint64 durationMs)
void setOutputUrl(const QUrl &url)
void stateChanged(QMediaRecorder::RecorderState state)
void setMediaEncoderSettings(const QMediaEncoderSettings &settings)
void actualLocationChanged(const QUrl &location)
QPlatformCamera * camera() override
QQnxAudioInput * audioInput() const
bool isLocationWritable(const QUrl &location) const override
QQnxMediaRecorder(QMediaRecorder *parent)
void record(QMediaEncoderSettings &settings) override
void setCaptureSession(QQnxMediaCaptureSession *session)
\inmodule QtCore
Definition qurl.h:94
QCamera * camera
Definition camera.cpp:19
Combined button and popup list for selecting options.
GLdouble s
[6]
Definition qopenglext.h:235
long long qint64
Definition qtypes.h:55
QSettings settings("MySoft", "Star Runner")
[0]
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent