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 |