--- a/qtmobility/plugins/multimedia/symbian/mmf/audiosource/s60audioencodercontrol.cpp Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/plugins/multimedia/symbian/mmf/audiosource/s60audioencodercontrol.cpp Wed Jun 23 19:08:38 2010 +0300
@@ -47,7 +47,7 @@
#include <QtCore/qdebug.h>
S60AudioEncoderControl::S60AudioEncoderControl(QObject *session, QObject *parent)
- :QAudioEncoderControl(parent), m_quality(QtMediaServices::NormalQuality)
+ :QAudioEncoderControl(parent), m_quality(QtMultimedia::NormalQuality)
{
m_session = qobject_cast<S60AudioCaptureSession*>(session);
QAudioFormat fmt = m_session->format();
@@ -68,72 +68,45 @@
return m_session->supportedAudioCodecs();
}
-QString S60AudioEncoderControl::audioCodec() const
-{
- return m_session->format().codec();
-}
-
-bool S60AudioEncoderControl::setAudioCodec(const QString &codecName)
-{
- QAudioFormat fmt = m_session->format();
- fmt.setCodec(codecName);
- return m_session->setFormat(fmt);
-}
-
QString S60AudioEncoderControl::codecDescription(const QString &codecName) const
{
return m_session->codecDescription(codecName);
}
-int S60AudioEncoderControl::bitRate() const
-{
- return (m_session->format().frequency() * m_session->format().channels() * (m_session->format().sampleSize() / 8));
-}
-
-void S60AudioEncoderControl::setBitRate(int value)
-{
- Q_UNUSED(value)
- //Note: None of the default codecs provided in the MMF support the setting of bit rates.
-}
-
-QtMediaServices::EncodingQuality S60AudioEncoderControl::quality() const
+QtMultimedia::EncodingQuality S60AudioEncoderControl::quality() const
{
return m_quality;
}
-void S60AudioEncoderControl::setQuality(QtMediaServices::EncodingQuality value)
+void S60AudioEncoderControl::setQuality(QtMultimedia::EncodingQuality value, QAudioFormat &fmt)
{
- QAudioFormat fmt = m_session->format();
-
switch (value) {
- case QtMediaServices::VeryLowQuality:
- case QtMediaServices::LowQuality:
+ case QtMultimedia::VeryLowQuality:
+ case QtMultimedia::LowQuality:
// low, 8000Hz mono U8
fmt.setSampleType(QAudioFormat::UnSignedInt);
fmt.setSampleSize(8);
fmt.setFrequency(8000);
fmt.setChannels(1);
break;
- case QtMediaServices::NormalQuality:
+ case QtMultimedia::NormalQuality:
// medium, 22050Hz mono S16
fmt.setSampleType(QAudioFormat::SignedInt);
fmt.setSampleSize(16);
fmt.setFrequency(22050);
fmt.setChannels(1);
break;
- case QtMediaServices::HighQuality:
- case QtMediaServices::VeryHighQuality:
+ case QtMultimedia::HighQuality:
+ case QtMultimedia::VeryHighQuality:
// high, 44100Hz mono S16
fmt.setSampleType(QAudioFormat::SignedInt);
fmt.setSampleSize(16);
fmt.setFrequency(44100);
- fmt.setChannels(1);
+ fmt.setChannels(2);
break;
default:
break;
}
- m_session->setFormat(fmt);
- m_quality = value;
}
QStringList S60AudioEncoderControl::supportedEncodingOptions(const QString &codec) const
@@ -150,10 +123,7 @@
if (codec == "PCM") {
QAudioFormat fmt = m_session->format();
- if(qstrcmp(name.toLocal8Bit().constData(), "bitrate") == 0) {
- return QVariant(bitRate());
- }
- else if(qstrcmp(name.toLocal8Bit().constData(), "quality") == 0) {
+ if(qstrcmp(name.toLocal8Bit().constData(), "quality") == 0) {
return QVariant(quality());
}
else if(qstrcmp(name.toLocal8Bit().constData(), "channels") == 0) {
@@ -170,30 +140,19 @@
const QString &codec, const QString &name, const QVariant &value)
{
if (codec == "PCM") {
- if(qstrcmp(name.toLocal8Bit().constData(), "bitrate") == 0) {
- setBitRate(value.toInt());
- } else if(qstrcmp(name.toLocal8Bit().constData(), "quality") == 0) {
- setQuality((QtMediaServices::EncodingQuality)value.toInt());
+ QAudioFormat fmt = m_session->format();
+
+ if(qstrcmp(name.toLocal8Bit().constData(), "quality") == 0) {
+ setQuality((QtMultimedia::EncodingQuality)value.toInt(), fmt);
} else if(qstrcmp(name.toLocal8Bit().constData(), "channels") == 0) {
- setChannelCount(value.toInt());
+ fmt.setChannels(value.toInt());
} else if(qstrcmp(name.toLocal8Bit().constData(), "samplerate") == 0) {
- setSampleRate(value.toInt());
- }
+ fmt.setFrequency(value.toInt());
+ }
+ m_session->setFormat(fmt);
}
}
-int S60AudioEncoderControl::sampleRate() const
-{
- return m_session->format().frequency();
-}
-
-void S60AudioEncoderControl::setSampleRate(int sampleRate)
-{
- QAudioFormat fmt = m_session->format();
- fmt.setFrequency(sampleRate);
- m_session->setFormat(fmt);
-}
-
QList<int> S60AudioEncoderControl::supportedSampleRates(const QAudioEncoderSettings &settings, bool *continuous) const
{
if (continuous)
@@ -202,53 +161,34 @@
return m_session->supportedAudioSampleRates(settings);
}
-int S60AudioEncoderControl::channelCount() const
-{
- return m_session->format().channels();
-}
-
-void S60AudioEncoderControl::setChannelCount(int channels)
-{
- QAudioFormat fmt = m_session->format();
- fmt.setChannels(channels);
- m_session->setFormat(fmt);
-}
-
-int S60AudioEncoderControl::sampleSize() const
-{
- return m_session->format().sampleSize();
-}
-
-void S60AudioEncoderControl::setSampleSize(int sampleSize)
-{
- QAudioFormat fmt = m_session->format();
- fmt.setSampleSize(sampleSize);
- m_session->setFormat(fmt);
-}
-
QAudioEncoderSettings S60AudioEncoderControl::audioSettings() const
{
- QAudioEncoderSettings settings;
- settings.setCodec(audioCodec());
- settings.setBitRate(bitRate());
- settings.setQuality(quality());
- settings.setSampleRate(sampleRate());
- settings.setChannelCount(channelCount());
- return settings;
+ return m_settings;
}
void S60AudioEncoderControl::setAudioSettings(const QAudioEncoderSettings &settings)
{
- if (settings.encodingMode() == QtMediaServices::ConstantQualityEncoding) {
- setAudioCodec(settings.codec());
- setQuality(settings.quality());
- if (settings.sampleRate() > 0)
- setSampleRate(settings.sampleRate());
+ QAudioFormat fmt = m_session->format();
+ if (settings.encodingMode() == QtMultimedia::ConstantQualityEncoding) {
+ fmt.setCodec(settings.codec());
+ setQuality(settings.quality(), fmt);
+ if (settings.sampleRate() > 0) {
+ fmt.setFrequency(settings.sampleRate());
+ }
if (settings.channelCount() > 0)
- setChannelCount(settings.channelCount());
- }else {
- setAudioCodec(settings.codec());
- setSampleRate(settings.sampleRate());
- setChannelCount(settings.channelCount());
- }
+ fmt.setChannels(settings.channelCount());
+ }else {
+ if (settings.sampleRate() == 8000) {
+ fmt.setSampleType(QAudioFormat::UnSignedInt);
+ fmt.setSampleSize(8);
+ } else {
+ fmt.setSampleType(QAudioFormat::SignedInt);
+ fmt.setSampleSize(16);
+ }
+ fmt.setCodec(settings.codec());
+ fmt.setFrequency(settings.sampleRate());
+ fmt.setChannels(settings.channelCount());
+ }
+ m_session->setFormat(fmt);
+ m_settings = settings;
}