qtmobility/plugins/multimedia/symbian/mmf/audiosource/s60audioencodercontrol.cpp
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
child 15 1f895d8a5b2b
--- 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;
 }