Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qandroidcapturesession_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 QANDROIDCAPTURESESSION_H
5#define QANDROIDCAPTURESESSION_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 <qobject.h>
19#include <qmediarecorder.h>
20#include <qurl.h>
21#include <qelapsedtimer.h>
22#include <qtimer.h>
25
27
28class QAudioInput;
30
32{
34public:
35 explicit QAndroidCaptureSession();
37
38 QList<QSize> supportedResolutions() const { return m_supportedResolutions; }
39 QList<qreal> supportedFrameRates() const { return m_supportedFramerates; }
40
41 void setCameraSession(QAndroidCameraSession *cameraSession = 0);
44
46
47 void start(QMediaEncoderSettings &settings, const QUrl &outputLocation);
48 void stop(bool error = false);
49
50 qint64 duration() const;
51
52 QMediaEncoderSettings encoderSettings() { return m_encoderSettings; }
53
54 void setMediaEncoder(QAndroidMediaEncoder *encoder) { m_mediaEncoder = encoder; }
55
57 if (m_mediaEncoder)
58 m_mediaEncoder->stateChanged(state);
59 }
61 {
62 if (m_mediaEncoder)
63 m_mediaEncoder->durationChanged(position);
64 }
66 {
67 if (m_mediaEncoder)
68 m_mediaEncoder->actualLocationChanged(location);
69 }
70 void updateError(int error, const QString &errorString)
71 {
72 if (m_mediaEncoder)
73 m_mediaEncoder->updateError(QMediaRecorder::Error(error), errorString);
74 }
75
76private Q_SLOTS:
77 void updateDuration();
78 void onCameraOpened();
79
80 void onError(int what, int extra);
81 void onInfo(int what, int extra);
82
83private:
84 void applySettings(QMediaEncoderSettings &settings);
85
86 struct CaptureProfile {
88 QString outputFileExtension;
89
91 int audioBitRate;
92 int audioChannels;
93 int audioSampleRate;
94
96 int videoBitRate;
97 int videoFrameRate;
98 QSize videoResolution;
99
100 bool isNull;
101
102 CaptureProfile()
103 : outputFormat(AndroidMediaRecorder::MPEG_4)
104 , outputFileExtension(QLatin1String("mp4"))
105 , audioEncoder(AndroidMediaRecorder::DefaultAudioEncoder)
106 , audioBitRate(128000)
107 , audioChannels(2)
108 , audioSampleRate(44100)
109 , videoEncoder(AndroidMediaRecorder::DefaultVideoEncoder)
110 , videoBitRate(1)
111 , videoFrameRate(-1)
112 , videoResolution(1280, 720)
113 , isNull(true)
114 { }
115 };
116
117 CaptureProfile getProfile(int id);
118
119 void restartViewfinder();
120 void updateStreamingState();
121
122 QAndroidMediaEncoder *m_mediaEncoder = nullptr;
123 std::shared_ptr<AndroidMediaRecorder> m_mediaRecorder;
124 QAndroidCameraSession *m_cameraSession;
125
126 QPlatformAudioInput *m_audioInput = nullptr;
127 QPlatformAudioOutput *m_audioOutput = nullptr;
128
129 QElapsedTimer m_elapsedTime;
130 QTimer m_notifyTimer;
131 qint64 m_duration;
132
134 QUrl m_usedOutputLocation;
135 bool m_outputLocationIsStandard = false;
136
137 CaptureProfile m_defaultSettings;
138
139 QMediaEncoderSettings m_encoderSettings;
143
144 QList<QSize> m_supportedResolutions;
145 QList<qreal> m_supportedFramerates;
146
147 QMetaObject::Connection m_audioInputChanged;
148 QMetaObject::Connection m_audioOutputChanged;
149 QMetaObject::Connection m_connOpenCamera;
150 QMetaObject::Connection m_connActiveChangedCamera;
151
152 void setKeepAlive(bool keepAlive);
153
154};
155
157
158#endif // QANDROIDCAPTURESESSION_H
void stateChanged(QMediaRecorder::RecorderState state)
QMediaRecorder::RecorderState state() const
QList< QSize > supportedResolutions() const
QMediaEncoderSettings encoderSettings()
void actualLocationChanged(const QUrl &location)
void setAudioInput(QPlatformAudioInput *input)
void setAudioOutput(QPlatformAudioOutput *output)
void durationChanged(qint64 position)
QList< qreal > supportedFrameRates() const
void updateError(int error, const QString &errorString)
void setMediaEncoder(QAndroidMediaEncoder *encoder)
void setCameraSession(QAndroidCameraSession *cameraSession=0)
\qmltype AudioInput \instantiates QAudioInput
Definition qaudioinput.h:19
\inmodule QtCore
RecorderState
\qmlproperty enumeration QtMultimedia::MediaRecorder::recorderState
Error
\qmlproperty enumeration QtMultimedia::MediaRecorder::error
\inmodule QtCore Represents a handle to a signal-slot (or signal-functor) connection.
\inmodule QtCore
Definition qobject.h:103
void actualLocationChanged(const QUrl &location)
void updateError(QMediaRecorder::Error error, const QString &errorString)
void stateChanged(QMediaRecorder::RecorderState state)
void durationChanged(qint64 position)
\inmodule QtCore
Definition qsize.h:25
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qtimer.h:20
\inmodule QtCore
Definition qurl.h:94
Combined button and popup list for selecting options.
DBusConnection const char DBusError * error
GLint location
GLuint start
GLenum GLenum GLenum input
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
#define Q_OBJECT
#define Q_SLOTS
long long qint64
Definition qtypes.h:60
QT_BEGIN_NAMESPACE typedef uchar * output
QSettings settings("MySoft", "Star Runner")
[0]