Added volume property to QMediaRecorder
Change-Id: I19f727107651c9f640ca1c010a3764f05aef8820 Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
0d0e89b1e8
commit
36ff2fe85e
@@ -230,9 +230,21 @@ bool CameraBinRecorder::isMuted() const
|
||||
return m_session->isMuted();
|
||||
}
|
||||
|
||||
qreal CameraBinRecorder::volume() const
|
||||
{
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
void CameraBinRecorder::setMuted(bool muted)
|
||||
{
|
||||
m_session->setMuted(muted);
|
||||
}
|
||||
|
||||
void CameraBinRecorder::setVolume(qreal volume)
|
||||
{
|
||||
if (!qFuzzyCompare(volume, qreal(1.0)))
|
||||
qWarning() << "Media service doesn't support recorder audio gain.";
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
|
||||
@@ -66,6 +66,7 @@ public:
|
||||
qint64 duration() const;
|
||||
|
||||
bool isMuted() const;
|
||||
qreal volume() const;
|
||||
|
||||
void applySettings();
|
||||
GstEncodingContainerProfile *videoProfile();
|
||||
@@ -73,6 +74,7 @@ public:
|
||||
public slots:
|
||||
void setState(QMediaRecorder::State state);
|
||||
void setMuted(bool);
|
||||
void setVolume(qreal volume);
|
||||
|
||||
private slots:
|
||||
void updateStatus();
|
||||
|
||||
@@ -86,6 +86,7 @@ QGstreamerCaptureSession::QGstreamerCaptureSession(QGstreamerCaptureSession::Cap
|
||||
m_audioPreview(0),
|
||||
m_audioVolume(0),
|
||||
m_muted(false),
|
||||
m_volume(1.0),
|
||||
m_videoSrc(0),
|
||||
m_videoTee(0),
|
||||
m_videoPreviewQueue(0),
|
||||
@@ -163,7 +164,8 @@ GstElement *QGstreamerCaptureSession::buildEncodeBin()
|
||||
return 0;
|
||||
}
|
||||
|
||||
g_object_set(G_OBJECT(m_audioVolume), "volume", (m_muted ? 0.0 : 1.0), NULL);
|
||||
g_object_set(G_OBJECT(m_audioVolume), "mute", m_muted, NULL);
|
||||
g_object_set(G_OBJECT(m_audioVolume), "volume", m_volume, NULL);
|
||||
|
||||
// add ghostpads
|
||||
GstPad *pad = gst_element_get_static_pad(audioConvert, "sink");
|
||||
@@ -1012,14 +1014,26 @@ bool QGstreamerCaptureSession::processBusMessage(const QGstreamerMessage &messag
|
||||
|
||||
void QGstreamerCaptureSession::setMuted(bool muted)
|
||||
{
|
||||
if (m_muted != muted) {
|
||||
if (bool(m_muted) != muted) {
|
||||
m_muted = muted;
|
||||
if (m_audioVolume)
|
||||
g_object_set(G_OBJECT(m_audioVolume), "volume", (m_muted ? 0.0 : 1.0), NULL);
|
||||
g_object_set(G_OBJECT(m_audioVolume), "mute", m_muted, NULL);
|
||||
|
||||
emit mutedChanged(muted);
|
||||
}
|
||||
}
|
||||
|
||||
void QGstreamerCaptureSession::setVolume(qreal volume)
|
||||
{
|
||||
if (!qFuzzyCompare(volume, m_volume)) {
|
||||
m_volume = volume;
|
||||
if (m_audioVolume)
|
||||
g_object_set(G_OBJECT(m_audioVolume), "volume", m_volume, NULL);
|
||||
|
||||
emit volumeChanged(volume);
|
||||
}
|
||||
}
|
||||
|
||||
void QGstreamerCaptureSession::addProbe(QGstreamerAudioProbeControl* probe)
|
||||
{
|
||||
QMutexLocker locker(&m_audioProbeMutex);
|
||||
|
||||
@@ -131,6 +131,7 @@ public:
|
||||
|
||||
qint64 duration() const;
|
||||
bool isMuted() const { return m_muted; }
|
||||
qreal volume() const { return m_volume; }
|
||||
|
||||
bool isReady() const;
|
||||
|
||||
@@ -148,6 +149,7 @@ signals:
|
||||
void imageCaptured(int requestId, const QImage &img);
|
||||
void imageSaved(int requestId, const QString &path);
|
||||
void mutedChanged(bool);
|
||||
void volumeChanged(qreal);
|
||||
void readyChanged(bool);
|
||||
void viewfinderChanged();
|
||||
|
||||
@@ -159,6 +161,7 @@ public slots:
|
||||
|
||||
void setMetaData(const QMap<QByteArray, QVariant>&);
|
||||
void setMuted(bool);
|
||||
void setVolume(qreal volume);
|
||||
|
||||
private:
|
||||
enum PipelineMode { EmptyPipeline, PreviewPipeline, RecordingPipeline, PreviewAndRecordingPipeline };
|
||||
@@ -210,7 +213,8 @@ private:
|
||||
GstElement *m_audioPreviewQueue;
|
||||
GstElement *m_audioPreview;
|
||||
GstElement *m_audioVolume;
|
||||
bool m_muted;
|
||||
gboolean m_muted;
|
||||
double m_volume;
|
||||
|
||||
GstElement *m_videoSrc;
|
||||
GstElement *m_videoTee;
|
||||
|
||||
@@ -56,6 +56,7 @@ QGstreamerRecorderControl::QGstreamerRecorderControl(QGstreamerCaptureSession *s
|
||||
connect(m_session, SIGNAL(error(int,QString)), SLOT(handleSessionError(int,QString)));
|
||||
connect(m_session, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged(qint64)));
|
||||
connect(m_session, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged(bool)));
|
||||
connect(m_session, SIGNAL(volumeChanged(qreal)), SIGNAL(volumeChanged(qreal)));
|
||||
m_hasPreviewState = m_session->captureMode() != QGstreamerCaptureSession::Audio;
|
||||
}
|
||||
|
||||
@@ -309,11 +310,21 @@ bool QGstreamerRecorderControl::isMuted() const
|
||||
return m_session->isMuted();
|
||||
}
|
||||
|
||||
qreal QGstreamerRecorderControl::volume() const
|
||||
{
|
||||
return m_session->volume();
|
||||
}
|
||||
|
||||
void QGstreamerRecorderControl::setMuted(bool muted)
|
||||
{
|
||||
m_session->setMuted(muted);
|
||||
}
|
||||
|
||||
void QGstreamerRecorderControl::setVolume(qreal volume)
|
||||
{
|
||||
m_session->setVolume(volume);
|
||||
}
|
||||
|
||||
QDir QGstreamerRecorderControl::defaultDir() const
|
||||
{
|
||||
QStringList dirCandidates;
|
||||
|
||||
@@ -67,6 +67,7 @@ public:
|
||||
qint64 duration() const;
|
||||
|
||||
bool isMuted() const;
|
||||
qreal volume() const;
|
||||
|
||||
void applySettings();
|
||||
|
||||
@@ -76,6 +77,7 @@ public slots:
|
||||
void pause();
|
||||
void stop();
|
||||
void setMuted(bool);
|
||||
void setVolume(qreal volume);
|
||||
|
||||
private slots:
|
||||
void updateStatus();
|
||||
|
||||
Reference in New Issue
Block a user