78 QAudioOutputPrivate *const m_audioDevice; |
78 QAudioOutputPrivate *const m_audioDevice; |
79 }; |
79 }; |
80 |
80 |
81 class QAudioOutputPrivate |
81 class QAudioOutputPrivate |
82 : public QAbstractAudioOutput |
82 : public QAbstractAudioOutput |
83 , public MDevSoundObserver |
|
84 { |
83 { |
85 friend class SymbianAudioOutputPrivate; |
84 friend class SymbianAudioOutputPrivate; |
86 Q_OBJECT |
85 Q_OBJECT |
87 public: |
86 public: |
88 QAudioOutputPrivate(const QByteArray &device, |
87 QAudioOutputPrivate(const QByteArray &device, |
105 qint64 elapsedUSecs() const; |
104 qint64 elapsedUSecs() const; |
106 QAudio::Error error() const; |
105 QAudio::Error error() const; |
107 QAudio::State state() const; |
106 QAudio::State state() const; |
108 QAudioFormat format() const; |
107 QAudioFormat format() const; |
109 |
108 |
110 // MDevSoundObserver |
|
111 void InitializeComplete(TInt aError); |
|
112 void ToneFinished(TInt aError); |
|
113 void BufferToBeFilled(CMMFBuffer *aBuffer); |
|
114 void PlayError(TInt aError); |
|
115 void BufferToBeEmptied(CMMFBuffer *aBuffer); |
|
116 void RecordError(TInt aError); |
|
117 void ConvertError(TInt aError); |
|
118 void DeviceMessage(TUid aMessageType, const TDesC8 &aMsg); |
|
119 |
|
120 private slots: |
109 private slots: |
121 void dataReady(); |
110 void dataReady(); |
122 void underflowTimerExpired(); |
111 void underflowTimerExpired(); |
|
112 void devsoundInitializeComplete(int err); |
|
113 void devsoundBufferToBeFilled(CMMFBuffer *); |
|
114 void devsoundPlayError(int err); |
123 |
115 |
124 private: |
116 private: |
125 void open(); |
117 void open(); |
126 void startPlayback(); |
118 void startPlayback(); |
127 void startDevSoundL(); |
|
128 void writePaddingData(); |
119 void writePaddingData(); |
129 qint64 pushData(const char *data, qint64 len); |
120 qint64 pushData(const char *data, qint64 len); |
130 void pullData(); |
121 void pullData(); |
131 void bufferFilled(); |
122 void bufferFilled(); |
132 void lastBufferFilled(); |
123 void lastBufferFilled(); |
136 |
127 |
137 void setError(QAudio::Error error); |
128 void setError(QAudio::Error error); |
138 void setState(SymbianAudio::State state); |
129 void setState(SymbianAudio::State state); |
139 |
130 |
140 bool isDataReady() const; |
131 bool isDataReady() const; |
141 QAudio::State initializingState() const; |
|
142 |
132 |
143 private: |
133 private: |
144 const QByteArray m_device; |
134 const QByteArray m_device; |
145 const QAudioFormat m_format; |
135 const QAudioFormat m_format; |
146 |
136 |
154 QAudio::State m_externalState; |
144 QAudio::State m_externalState; |
155 |
145 |
156 bool m_pullMode; |
146 bool m_pullMode; |
157 QIODevice *m_source; |
147 QIODevice *m_source; |
158 |
148 |
159 QScopedPointer<CMMFDevSound> m_devSound; |
149 SymbianAudio::DevSoundWrapper* m_devSound; |
160 TUint32 m_nativeFourCC; |
|
161 TMMFCapabilities m_nativeFormat; |
|
162 |
150 |
163 // Buffer provided by DevSound, to be filled with data. |
151 // Buffer provided by DevSound, to be filled with data. |
164 CMMFDataBuffer *m_devSoundBuffer; |
152 CMMFDataBuffer *m_devSoundBuffer; |
165 |
153 |
166 int m_devSoundBufferSize; |
154 int m_devSoundBufferSize; |