48 |
48 |
49 S60AudioPlayerSession::S60AudioPlayerSession(QObject *parent) |
49 S60AudioPlayerSession::S60AudioPlayerSession(QObject *parent) |
50 : S60MediaPlayerSession(parent) |
50 : S60MediaPlayerSession(parent) |
51 , m_player(0) |
51 , m_player(0) |
52 , m_audioOutput(0) |
52 , m_audioOutput(0) |
|
53 , m_audioEndpoint("Default") |
53 { |
54 { |
54 QT_TRAP_THROWING(m_player = CAudioPlayer::NewL(*this, 0, EMdaPriorityPreferenceNone)); |
55 QT_TRAP_THROWING(m_player = CAudioPlayer::NewL(*this, 0, EMdaPriorityPreferenceNone)); |
55 //QT_TRAP_THROWING(m_audioOutput = CAudioOutput::NewL(*m_player)); |
|
56 //QT_TRAP_THROWING(m_audioOutput->RegisterObserverL(*this)); |
|
57 |
|
58 m_player->RegisterForAudioLoadingNotification(*this); |
56 m_player->RegisterForAudioLoadingNotification(*this); |
59 } |
57 } |
60 |
58 |
61 S60AudioPlayerSession::~S60AudioPlayerSession() |
59 S60AudioPlayerSession::~S60AudioPlayerSession() |
62 { |
60 { |
63 #ifndef HAS_NO_AUDIOROUTING |
61 #if !defined(HAS_NO_AUDIOROUTING) |
64 if (m_audioOutput) |
62 if (m_audioOutput) |
65 m_audioOutput->UnregisterObserver(*this); |
63 m_audioOutput->UnregisterObserver(*this); |
66 delete m_audioOutput; |
64 delete m_audioOutput; |
67 #endif |
65 #endif |
68 m_player->Close(); |
66 m_player->Close(); |
69 delete m_player; |
67 delete m_player; |
70 } |
68 } |
71 |
69 |
72 void S60AudioPlayerSession::doLoadL(const TDesC &path) |
70 void S60AudioPlayerSession::doLoadL(const TDesC &path) |
73 { |
71 { |
|
72 // m_audioOutput needs to be reinitialized after MapcInitComplete |
|
73 if (m_audioOutput) |
|
74 m_audioOutput->UnregisterObserver(*this); |
|
75 delete m_audioOutput; |
|
76 m_audioOutput = NULL; |
|
77 |
74 m_player->OpenFileL(path); |
78 m_player->OpenFileL(path); |
75 } |
79 } |
76 |
80 |
77 qint64 S60AudioPlayerSession::doGetDurationL() const |
81 qint64 S60AudioPlayerSession::doGetDurationL() const |
78 { |
82 { |
180 { |
190 { |
181 setError(aError); |
191 setError(aError); |
182 endOfMedia(); |
192 endOfMedia(); |
183 } |
193 } |
184 |
194 |
|
195 void S60AudioPlayerSession::doSetAudioEndpoint(const QString& audioEndpoint) |
|
196 { |
|
197 m_audioEndpoint = audioEndpoint; |
|
198 } |
|
199 |
185 QString S60AudioPlayerSession::activeEndpoint() const |
200 QString S60AudioPlayerSession::activeEndpoint() const |
186 { |
201 { |
187 #ifndef HAS_NO_AUDIOROUTING |
202 QString outputName = QString("Default"); |
188 QString outputName; |
203 #if !defined(HAS_NO_AUDIOROUTING) |
189 if (m_audioOutput) { |
204 if (m_audioOutput) { |
190 CAudioOutput::TAudioOutputPreference output = m_audioOutput->AudioOutput(); |
205 CAudioOutput::TAudioOutputPreference output = m_audioOutput->AudioOutput(); |
191 outputName = qStringFromTAudioOutputPreference(output); |
206 outputName = qStringFromTAudioOutputPreference(output); |
192 } |
207 } |
|
208 #endif |
193 return outputName; |
209 return outputName; |
194 #endif |
|
195 return QString("Default"); |
|
196 } |
210 } |
197 |
211 |
198 QString S60AudioPlayerSession::defaultEndpoint() const |
212 QString S60AudioPlayerSession::defaultEndpoint() const |
199 { |
213 { |
200 #ifndef HAS_NO_AUDIOROUTING |
214 QString outputName = QString("Default"); |
201 QString outputName; |
215 #if !defined(HAS_NO_AUDIOROUTING) |
202 if (m_audioOutput) { |
216 if (m_audioOutput) { |
203 CAudioOutput::TAudioOutputPreference output = m_audioOutput->DefaultAudioOutput(); |
217 CAudioOutput::TAudioOutputPreference output = m_audioOutput->DefaultAudioOutput(); |
204 outputName = qStringFromTAudioOutputPreference(output); |
218 outputName = qStringFromTAudioOutputPreference(output); |
205 } |
219 } |
|
220 #endif |
206 return outputName; |
221 return outputName; |
207 #endif |
|
208 return QString("Default"); |
|
209 } |
222 } |
210 |
223 |
211 void S60AudioPlayerSession::setActiveEndpoint(const QString& name) |
224 void S60AudioPlayerSession::setActiveEndpoint(const QString& name) |
212 { |
225 { |
213 CAudioOutput::TAudioOutputPreference output = CAudioOutput::ENoPreference; |
226 CAudioOutput::TAudioOutputPreference output = CAudioOutput::ENoPreference; |
220 output = CAudioOutput::ENoOutput; |
233 output = CAudioOutput::ENoOutput; |
221 else if (name == QString("Earphone")) |
234 else if (name == QString("Earphone")) |
222 output = CAudioOutput::EPrivate; |
235 output = CAudioOutput::EPrivate; |
223 else if (name == QString("Speaker")) |
236 else if (name == QString("Speaker")) |
224 output = CAudioOutput::EPublic; |
237 output = CAudioOutput::EPublic; |
225 #ifndef HAS_NO_AUDIOROUTING |
238 #if !defined(HAS_NO_AUDIOROUTING) |
226 if (m_audioOutput) { |
239 if (m_audioOutput) { |
227 TRAPD(err, m_audioOutput->SetAudioOutputL(output)); |
240 TRAPD(err, m_audioOutput->SetAudioOutputL(output)); |
228 setError(err); |
241 setError(err); |
229 } |
242 |
230 #endif |
243 if (m_audioEndpoint != name) { |
231 |
244 m_audioEndpoint = name; |
|
245 emit activeEndpointChanged(name); |
|
246 } |
|
247 } |
|
248 #endif |
232 } |
249 } |
233 |
250 |
234 void S60AudioPlayerSession::DefaultAudioOutputChanged(CAudioOutput& aAudioOutput, |
251 void S60AudioPlayerSession::DefaultAudioOutputChanged(CAudioOutput& aAudioOutput, |
235 CAudioOutput::TAudioOutputPreference aNewDefault) |
252 CAudioOutput::TAudioOutputPreference aNewDefault) |
236 { |
253 { |
237 #ifndef HAS_NO_AUDIOROUTING |
254 // Emit already implemented in setActiveEndpoint function |
238 if (m_audioOutput) { |
|
239 CAudioOutput::TAudioOutputPreference output = m_audioOutput->AudioOutput(); |
|
240 if (output == CAudioOutput::ENoPreference) { |
|
241 QString name; |
|
242 if (output == CAudioOutput::EAll) |
|
243 name = QString("All"); |
|
244 else if (output == CAudioOutput::ENoOutput) |
|
245 name = QString("None"); |
|
246 else if (output == CAudioOutput::EPrivate) |
|
247 name = QString("Earphone"); |
|
248 else if (output == CAudioOutput::EPublic) |
|
249 name = QString("Speaker"); |
|
250 if (!name.isEmpty()) |
|
251 emit activeEndpointChanged(name); |
|
252 } |
|
253 } |
|
254 #else |
|
255 Q_UNUSED(aAudioOutput) |
255 Q_UNUSED(aAudioOutput) |
256 Q_UNUSED(aNewDefault) |
256 Q_UNUSED(aNewDefault) |
257 #endif |
|
258 } |
257 } |
259 |
258 |
260 QString S60AudioPlayerSession::qStringFromTAudioOutputPreference(CAudioOutput::TAudioOutputPreference output) const |
259 QString S60AudioPlayerSession::qStringFromTAudioOutputPreference(CAudioOutput::TAudioOutputPreference output) const |
261 { |
260 { |
262 if (output == CAudioOutput::ENoPreference) |
261 if (output == CAudioOutput::ENoPreference) |
263 return QString("Default"); |
262 return QString("Default"); |
264 else if (output == CAudioOutput::EAll) |
263 else if (output == CAudioOutput::EAll) |
265 return QString("All"); |
264 return QString("All"); |
266 else if (output == CAudioOutput::ENoOutput) |
265 else if (output == CAudioOutput::ENoOutput) |
267 return QString("None"); |
266 return QString("None"); |
268 else if (output == CAudioOutput::EPrivate) |
267 else if (output == CAudioOutput::EPrivate) |
269 return QString("Earphone"); |
268 return QString("Earphone"); |
270 else if (output == CAudioOutput::EPublic) |
269 else if (output == CAudioOutput::EPublic) |
271 return QString("Speaker"); |
270 return QString("Speaker"); |
272 return QString(); |
271 return QString("Default"); |
273 } |
272 } |