qtmobility/plugins/multimedia/symbian/mmf/audiosource/s60audiocapturesession.h
changeset 5 453da2cfceef
parent 4 90517678cc4f
child 8 71781823f776
equal deleted inserted replaced
4:90517678cc4f 5:453da2cfceef
    47 #include <QFile>
    47 #include <QFile>
    48 #include <QUrl>
    48 #include <QUrl>
    49 #include <QList>
    49 #include <QList>
    50 #include <QHash>
    50 #include <QHash>
    51 #include <QAudioFormat>
    51 #include <QAudioFormat>
       
    52 #include <QMediaRecorder>
    52 
    53 
    53 #include <Mda\Common\Audio.h>
    54 #include <Mda\Common\Audio.h>
    54 #include <Mda\Common\Resource.h>
    55 #include <Mda\Common\Resource.h>
    55 #include <Mda\Client\Utility.h>
    56 #include <Mda\Client\Utility.h>
    56 #include <MdaAudioSampleEditor.h>
    57 #include <MdaAudioSampleEditor.h>
    57 #include <mmf\common\mmfutilities.h>
    58 #include <mmf\common\mmfutilities.h>
    58 
    59 
    59 QTM_BEGIN_NAMESPACE
    60 QT_BEGIN_NAMESPACE
    60 struct ControllerData
    61 struct ControllerData
    61 {
    62 {
    62 	int controllerUid;
    63 	int controllerUid;
    63 	int destinationFormatUid;
    64 	int destinationFormatUid;
    64 	QString destinationFormatDescription;
    65 	QString destinationFormatDescription;
       
    66 	QString fileExtension;
    65 };
    67 };
    66 
    68 
    67 struct CodecData
    69 struct CodecData
    68 {
    70 {
    69     TFourCC fourCC;
    71     TFourCC fourCC;
    70     QString codecDescription;
    72     QString codecDescription;
    71 };
    73 };
    72 QTM_END_NAMESPACE
    74 QT_END_NAMESPACE
    73 
    75 
    74 QTM_USE_NAMESPACE
    76 QT_USE_NAMESPACE
    75 
    77 
    76 class S60AudioCaptureSession : public QObject, public MMdaObjectStateChangeObserver
    78 class S60AudioCaptureSession : public QObject, public MMdaObjectStateChangeObserver
    77 {
    79 {
    78     Q_OBJECT
    80     Q_OBJECT
    79     Q_PROPERTY(qint64 position READ position NOTIFY positionChanged)
    81     Q_PROPERTY(qint64 position READ position NOTIFY positionChanged)
    80     Q_ENUMS(TAudioCaptureState)
    82     Q_ENUMS(TAudioCaptureState)
    81 public:
    83 public:    
    82     
    84     
    83     enum TAudioCaptureState
    85     enum TAudioCaptureState
    84     {
    86     {
    85         ENotInitialized = 0,
    87         ENotInitialized = 0,
    86         EInitializing,
    88         EInitializing,
   102     QString audioCodec() const;
   104     QString audioCodec() const;
   103     QString audioContainer() const;
   105     QString audioContainer() const;
   104     QStringList supportedAudioContainers() const;
   106     QStringList supportedAudioContainers() const;
   105     bool setAudioContainer(const QString &containerMimeType); 
   107     bool setAudioContainer(const QString &containerMimeType); 
   106     QString audioContainerDescription(const QString &containerName);
   108     QString audioContainerDescription(const QString &containerName);
   107     QList<int> supportedAudioSampleRates() const;
   109     QList<int> supportedAudioSampleRates(const QAudioEncoderSettings &settings) const;
   108     QUrl outputLocation() const;
   110     QUrl outputLocation() const;
   109     bool setOutputLocation(const QUrl& sink);
   111     bool setOutputLocation(const QUrl& sink);
   110     qint64 position() const;    
   112     qint64 position() const;    
   111     void record();
   113     void record();
   112     void pause();
   114     void pause();
   113     void stop();
   115     void stop();
   114     
   116     
   115 private:    
   117 private:    
   116     void initializeSessionL();
   118     void initializeSessionL();
       
   119     void setError(TInt aError);
       
   120     QMediaRecorder::Error fromSymbianErrorToMultimediaError(int error);    
       
   121     QString initializeSinkL();
   117     void updateAudioContainersL();    
   122     void updateAudioContainersL();    
   118     void populateAudioCodecsDataL();
   123     void populateAudioCodecsDataL();
   119     void retrieveSupportedAudioSampleRatesL();
   124     void retrieveSupportedAudioSampleRatesL();
   120     void applyAudioSettingsL();
   125     void applyAudioSettingsL();
   121     TFourCC determinePCMFormat();
   126     TFourCC determinePCMFormat();
   131     void setCaptureDevice(const QString &deviceName);
   136     void setCaptureDevice(const QString &deviceName);
   132 
   137 
   133 Q_SIGNALS:
   138 Q_SIGNALS:
   134     void stateChanged(S60AudioCaptureSession::TAudioCaptureState);
   139     void stateChanged(S60AudioCaptureSession::TAudioCaptureState);
   135     void positionChanged(qint64 position);
   140     void positionChanged(qint64 position);
       
   141     void error(int error, const QString &errorString);
   136 
   142 
   137 private:
   143 private:
   138     QString m_container;    
   144     QString m_container;    
   139     QString m_captureDevice;
   145     QString m_captureDevice;
   140     QUrl m_sink;
   146     QUrl m_sink;
   143     TAudioCaptureState m_captureState;
   149     TAudioCaptureState m_captureState;
   144     QAudioFormat m_format;    
   150     QAudioFormat m_format;    
   145     QHash<QString, ControllerData> m_controllerIdMap;
   151     QHash<QString, ControllerData> m_controllerIdMap;
   146     QHash<QString, CodecData>  m_audioCodeclist;
   152     QHash<QString, CodecData>  m_audioCodeclist;
   147     QList<int> m_supportedSampleRates;    
   153     QList<int> m_supportedSampleRates;    
       
   154     int m_error; 
   148 };
   155 };
   149 
   156 
   150 #endif // S60AUDIOCAPTURESESSION_H
   157 #endif // S60AUDIOCAPTURESESSION_H