Refactored AudioCapture plugin.
Change-Id: I025588d7d2afc8d8137a258d86f6dab5b00b234a Reviewed-by: Christian Stromme <christian.stromme@digia.com>
This commit is contained in:
committed by
The Qt Project
parent
b49746b588
commit
c2f95891c0
@@ -44,15 +44,22 @@
|
||||
|
||||
#include <QtCore/qdebug.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
AudioMediaRecorderControl::AudioMediaRecorderControl(QObject *parent)
|
||||
:QMediaRecorderControl(parent)
|
||||
, m_state(QMediaRecorder::StoppedState)
|
||||
, m_prevStatus(QMediaRecorder::UnloadedStatus)
|
||||
: QMediaRecorderControl(parent)
|
||||
{
|
||||
m_session = qobject_cast<AudioCaptureSession*>(parent);
|
||||
connect(m_session,SIGNAL(positionChanged(qint64)),this,SIGNAL(durationChanged(qint64)));
|
||||
connect(m_session,SIGNAL(stateChanged(QMediaRecorder::State)), this,SLOT(updateStatus()));
|
||||
connect(m_session,SIGNAL(error(int,QString)),this,SLOT(handleSessionError(int,QString)));
|
||||
connect(m_session, SIGNAL(positionChanged(qint64)),
|
||||
this, SIGNAL(durationChanged(qint64)));
|
||||
connect(m_session, SIGNAL(stateChanged(QMediaRecorder::State)),
|
||||
this, SIGNAL(stateChanged(QMediaRecorder::State)));
|
||||
connect(m_session, SIGNAL(statusChanged(QMediaRecorder::Status)),
|
||||
this, SIGNAL(statusChanged(QMediaRecorder::Status)));
|
||||
connect(m_session, SIGNAL(actualLocationChanged(QUrl)),
|
||||
this, SIGNAL(actualLocationChanged(QUrl)));
|
||||
connect(m_session, SIGNAL(error(int,QString)),
|
||||
this, SIGNAL(error(int,QString)));
|
||||
}
|
||||
|
||||
AudioMediaRecorderControl::~AudioMediaRecorderControl()
|
||||
@@ -71,21 +78,12 @@ bool AudioMediaRecorderControl::setOutputLocation(const QUrl& sink)
|
||||
|
||||
QMediaRecorder::State AudioMediaRecorderControl::state() const
|
||||
{
|
||||
return (QMediaRecorder::State)m_session->state();
|
||||
return m_session->state();
|
||||
}
|
||||
|
||||
QMediaRecorder::Status AudioMediaRecorderControl::status() const
|
||||
{
|
||||
static QMediaRecorder::Status statusTable[3][3] = {
|
||||
//Stopped recorder state:
|
||||
{ QMediaRecorder::LoadedStatus, QMediaRecorder::FinalizingStatus, QMediaRecorder::FinalizingStatus },
|
||||
//Recording recorder state:
|
||||
{ QMediaRecorder::StartingStatus, QMediaRecorder::RecordingStatus, QMediaRecorder::PausedStatus },
|
||||
//Paused recorder state:
|
||||
{ QMediaRecorder::StartingStatus, QMediaRecorder::RecordingStatus, QMediaRecorder::PausedStatus }
|
||||
};
|
||||
|
||||
return statusTable[m_state][m_session->state()];
|
||||
return m_session->status();
|
||||
}
|
||||
|
||||
qint64 AudioMediaRecorderControl::duration() const
|
||||
@@ -106,47 +104,19 @@ qreal AudioMediaRecorderControl::volume() const
|
||||
|
||||
void AudioMediaRecorderControl::setState(QMediaRecorder::State state)
|
||||
{
|
||||
if (m_state == state)
|
||||
return;
|
||||
|
||||
m_state = state;
|
||||
|
||||
switch (state) {
|
||||
case QMediaRecorder::StoppedState:
|
||||
m_session->stop();
|
||||
break;
|
||||
case QMediaRecorder::PausedState:
|
||||
m_session->pause();
|
||||
break;
|
||||
case QMediaRecorder::RecordingState:
|
||||
m_session->record();
|
||||
break;
|
||||
}
|
||||
|
||||
updateStatus();
|
||||
m_session->setState(state);
|
||||
}
|
||||
|
||||
void AudioMediaRecorderControl::setMuted(bool)
|
||||
void AudioMediaRecorderControl::setMuted(bool muted)
|
||||
{
|
||||
if (muted)
|
||||
qWarning("Muting the audio recording is not supported.");
|
||||
}
|
||||
|
||||
void AudioMediaRecorderControl::setVolume(qreal volume)
|
||||
{
|
||||
if (!qFuzzyCompare(volume, qreal(1.0)))
|
||||
qWarning() << "Media service doesn't support recorder audio gain.";
|
||||
qWarning("Changing the audio recording volume is not supported.");
|
||||
}
|
||||
|
||||
void AudioMediaRecorderControl::updateStatus()
|
||||
{
|
||||
QMediaRecorder::Status newStatus = status();
|
||||
if (m_prevStatus != newStatus) {
|
||||
m_prevStatus = newStatus;
|
||||
emit statusChanged(m_prevStatus);
|
||||
}
|
||||
}
|
||||
|
||||
void AudioMediaRecorderControl::handleSessionError(int code, const QString &description)
|
||||
{
|
||||
emit error(code, description);
|
||||
setState(QMediaRecorder::StoppedState);
|
||||
}
|
||||
QT_END_NAMESPACE
|
||||
|
||||
Reference in New Issue
Block a user