56 XAresult XAPlayItfImpl_SetPlayState(XAPlayItf self, XAuint32 state) |
56 XAresult XAPlayItfImpl_SetPlayState(XAPlayItf self, XAuint32 state) |
57 { |
57 { |
58 XAresult ret = XA_RESULT_SUCCESS; |
58 XAresult ret = XA_RESULT_SUCCESS; |
59 XAPlayItfImpl* impl = GetImpl(self); |
59 XAPlayItfImpl* impl = GetImpl(self); |
60 DEBUG_API_A1("->XAPlayItfImpl_SetPlayState %s",PLAYSTATENAME(state)); |
60 DEBUG_API_A1("->XAPlayItfImpl_SetPlayState %s",PLAYSTATENAME(state)); |
61 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
|
62 |
61 |
63 if( !impl || state < XA_PLAYSTATE_STOPPED || state > XA_PLAYSTATE_PLAYING ) |
62 if( !impl || state < XA_PLAYSTATE_STOPPED || state > XA_PLAYSTATE_PLAYING ) |
64 { |
63 { |
65 /* invalid parameter */ |
64 /* invalid parameter */ |
|
65 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
|
66 DEBUG_API("<-XAPlayItfImpl_SetPlayState"); |
|
67 return XA_RESULT_PARAMETER_INVALID; |
|
68 } |
|
69 |
|
70 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
|
71 |
|
72 if(impl->pObjImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
|
73 { |
|
74 ret = XAPlayItfAdaptMMF_SetPlayState(impl->pObjImpl->curAdaptCtx, state); |
66 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
75 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
67 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
|
68 DEBUG_API("<-XAPlayItfImpl_SetPlayState"); |
76 DEBUG_API("<-XAPlayItfImpl_SetPlayState"); |
69 return XA_RESULT_PARAMETER_INVALID; |
77 return ret; |
70 } |
78 } |
71 |
79 |
72 /* check is play state changed, if not do nothing */ |
80 /* check is play state changed, if not do nothing */ |
73 if(state != impl->playbackState) |
81 if(state != impl->playbackState) |
74 { |
82 { |
75 if(state == XA_PLAYSTATE_PLAYING) |
83 if(state == XA_PLAYSTATE_PLAYING) |
76 { |
84 { |
77 #ifdef _GSTREAMER_BACKEND_ |
85 XAPlayItfAdaptGST_GetPosition((XAAdaptationGstCtx*)impl->adapCtx, &(impl->lastPosition)); |
78 XAPlayItfAdapt_GetPosition(impl->adapCtx, &(impl->lastPosition)); |
86 } |
79 #endif |
87 ret = XAPlayItfAdaptGST_SetPlayState(impl->adapCtx, state); |
80 } |
88 |
81 if(impl->isMMFPlayback) |
89 if(ret == XA_RESULT_SUCCESS) |
82 { |
90 { |
83 ret = XAPlayItfAdaptMMF_SetPlayState(impl->adaptCtxMMF, state); |
91 impl->playbackState = state; |
84 } |
92 if(state == XA_PLAYSTATE_STOPPED || state == XA_PLAYSTATE_PAUSED) |
85 else |
93 { |
86 { |
94 impl->isMarkerPosCbSend = XA_BOOLEAN_FALSE; |
87 #ifdef _GSTREAMER_BACKEND_ |
95 impl->lastPosition = 0; |
88 ret = XAPlayItfAdapt_SetPlayState(impl->adapCtx, state); |
96 } |
89 #endif |
97 } |
90 } |
|
91 |
|
92 if(ret == XA_RESULT_SUCCESS) |
|
93 { |
|
94 impl->playbackState = state; |
|
95 if(state == XA_PLAYSTATE_STOPPED || state == XA_PLAYSTATE_PAUSED) |
|
96 { |
|
97 impl->isMarkerPosCbSend = XA_BOOLEAN_FALSE; |
|
98 impl->lastPosition = 0; |
|
99 } |
|
100 } |
|
101 } |
98 } |
102 |
99 |
103 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
100 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
104 DEBUG_API("<-XAPlayItfImpl_SetPlayState"); |
101 DEBUG_API("<-XAPlayItfImpl_SetPlayState"); |
105 return ret; |
102 return ret; |
111 **/ |
108 **/ |
112 XAresult XAPlayItfImpl_GetPlayState(XAPlayItf self, XAuint32 *pState) |
109 XAresult XAPlayItfImpl_GetPlayState(XAPlayItf self, XAuint32 *pState) |
113 { |
110 { |
114 XAresult ret = XA_RESULT_SUCCESS; |
111 XAresult ret = XA_RESULT_SUCCESS; |
115 XAPlayItfImpl* impl = GetImpl(self); |
112 XAPlayItfImpl* impl = GetImpl(self); |
|
113 |
116 DEBUG_API("->XAPlayItfImpl_GetPlayState"); |
114 DEBUG_API("->XAPlayItfImpl_GetPlayState"); |
117 |
115 |
118 if(!impl || !pState) |
116 if(!impl || !pState) |
119 { |
117 { |
120 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
118 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
121 DEBUG_API("<-XAPlayItfImpl_GetPlayState"); |
119 DEBUG_API("<-XAPlayItfImpl_GetPlayState"); |
122 /* invalid parameter */ |
120 /* invalid parameter */ |
123 return XA_RESULT_PARAMETER_INVALID; |
121 return XA_RESULT_PARAMETER_INVALID; |
124 } |
122 } |
125 |
123 |
126 *pState = impl->playbackState; |
124 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
|
125 |
|
126 if(impl->pObjImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
|
127 { |
|
128 ret = XAPlayItfAdaptMMF_GetPlayState(impl->pObjImpl->curAdaptCtx, pState); |
|
129 } |
|
130 else |
|
131 { |
|
132 *pState = impl->playbackState; |
|
133 } |
|
134 |
|
135 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
127 |
136 |
128 DEBUG_API_A1("<-XAPlayItfImpl_GetPlayState: %s",PLAYSTATENAME(impl->playbackState)); |
137 DEBUG_API_A1("<-XAPlayItfImpl_GetPlayState: %s",PLAYSTATENAME(impl->playbackState)); |
129 return ret; |
138 return ret; |
130 } |
139 } |
131 |
140 |
136 XAresult XAPlayItfImpl_GetDuration(XAPlayItf self, XAmillisecond *pMsec) |
145 XAresult XAPlayItfImpl_GetDuration(XAPlayItf self, XAmillisecond *pMsec) |
137 { |
146 { |
138 XAresult ret = XA_RESULT_SUCCESS; |
147 XAresult ret = XA_RESULT_SUCCESS; |
139 XAPlayItfImpl* impl = GetImpl(self); |
148 XAPlayItfImpl* impl = GetImpl(self); |
140 DEBUG_API("->XAPlayItfImpl_GetDuration"); |
149 DEBUG_API("->XAPlayItfImpl_GetDuration"); |
141 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
|
142 |
150 |
143 if(!impl || !pMsec) |
151 if(!impl || !pMsec) |
144 { |
152 { |
145 /* invalid parameter */ |
153 /* invalid parameter */ |
146 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
|
147 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
154 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
148 DEBUG_API("<-XAPlayItfImpl_GetDuration"); |
155 DEBUG_API("<-XAPlayItfImpl_GetDuration"); |
149 return XA_RESULT_PARAMETER_INVALID; |
156 return XA_RESULT_PARAMETER_INVALID; |
150 } |
157 } |
151 #ifdef _GSTREAMER_BACKEND_ |
158 |
152 ret = XAPlayItfAdapt_GetDuration(impl->adapCtx, pMsec); |
159 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
153 #endif |
160 |
154 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
161 if(impl->pObjImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
|
162 { |
|
163 ret = XAPlayItfAdaptMMF_GetDuration(impl->pObjImpl->curAdaptCtx, pMsec); |
|
164 } |
|
165 else |
|
166 { |
|
167 ret = XAPlayItfAdaptGST_GetDuration((XAAdaptationGstCtx*)impl->adapCtx, pMsec); |
|
168 } |
|
169 |
|
170 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
|
171 |
155 DEBUG_API("<-XAPlayItfImpl_GetDuration"); |
172 DEBUG_API("<-XAPlayItfImpl_GetDuration"); |
156 return ret; |
173 return ret; |
157 } |
174 } |
158 |
175 |
159 /** |
176 /** |
163 **/ |
180 **/ |
164 XAresult XAPlayItfImpl_GetPosition(XAPlayItf self, XAmillisecond *pMsec) |
181 XAresult XAPlayItfImpl_GetPosition(XAPlayItf self, XAmillisecond *pMsec) |
165 { |
182 { |
166 XAresult ret = XA_RESULT_SUCCESS; |
183 XAresult ret = XA_RESULT_SUCCESS; |
167 XAPlayItfImpl* impl = GetImpl(self); |
184 XAPlayItfImpl* impl = GetImpl(self); |
|
185 |
168 DEBUG_API("->XAPlayItfImpl_GetPosition"); |
186 DEBUG_API("->XAPlayItfImpl_GetPosition"); |
169 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
187 |
170 if(!impl || !pMsec) |
188 if(!impl || !pMsec) |
171 { |
189 { |
172 /* invalid parameter */ |
190 /* invalid parameter */ |
173 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
|
174 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
191 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
175 DEBUG_API("<-XAPlayItfImpl_GetPosition"); |
192 DEBUG_API("<-XAPlayItfImpl_GetPosition"); |
176 return XA_RESULT_PARAMETER_INVALID; |
193 return XA_RESULT_PARAMETER_INVALID; |
177 } |
194 } |
178 |
195 |
179 if ( impl->playbackState == XA_PLAYSTATE_STOPPED ) |
196 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
180 { |
197 |
181 *pMsec = 0; |
198 if(impl->pObjImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
182 DEBUG_API("<-XAPlayItfImpl_GetPosition"); |
199 { |
183 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
200 ret = XAPlayItfAdaptMMF_GetPosition(impl->pObjImpl->curAdaptCtx, pMsec); |
184 return XA_RESULT_SUCCESS; |
201 } |
185 } |
202 else |
186 #ifdef _GSTREAMER_BACKEND_ |
203 { |
187 ret = XAPlayItfAdapt_GetPosition(impl->adapCtx, pMsec); |
204 |
188 #endif |
205 if ( impl->playbackState == XA_PLAYSTATE_STOPPED ) |
|
206 { |
|
207 *pMsec = 0; |
|
208 DEBUG_API("<-XAPlayItfImpl_GetPosition"); |
|
209 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
|
210 return XA_RESULT_SUCCESS; |
|
211 } |
|
212 ret = XAPlayItfAdaptGST_GetPosition((XAAdaptationGstCtx*)impl->adapCtx, pMsec); |
|
213 } |
|
214 |
189 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
215 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
190 DEBUG_API("<-XAPlayItfImpl_GetPosition"); |
216 DEBUG_API("<-XAPlayItfImpl_GetPosition"); |
191 return ret; |
217 return ret; |
192 } |
218 } |
193 |
219 |
214 /* callback may be NULL (to remove callback) */ |
240 /* callback may be NULL (to remove callback) */ |
215 impl->callback = callback; |
241 impl->callback = callback; |
216 impl->cbcontext = pContext; |
242 impl->cbcontext = pContext; |
217 impl->cbPtrToSelf = self; |
243 impl->cbPtrToSelf = self; |
218 |
244 |
|
245 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
|
246 |
|
247 if(impl->pObjImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
|
248 { |
|
249 ret = XAPlayItfAdaptMMF_RegisterCallback(impl->pObjImpl->curAdaptCtx, callback); |
|
250 } |
|
251 |
|
252 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
|
253 |
219 DEBUG_API("<-XAPlayItfImpl_RegisterCallback"); |
254 DEBUG_API("<-XAPlayItfImpl_RegisterCallback"); |
220 return ret; |
255 return ret; |
221 } |
256 } |
222 |
257 |
223 /** |
258 /** |
228 { |
263 { |
229 XAresult ret = XA_RESULT_SUCCESS; |
264 XAresult ret = XA_RESULT_SUCCESS; |
230 XAPlayItfImpl* impl = GetImpl(self); |
265 XAPlayItfImpl* impl = GetImpl(self); |
231 |
266 |
232 DEBUG_API("->XAPlayItfImpl_SetCallbackEventsMask"); |
267 DEBUG_API("->XAPlayItfImpl_SetCallbackEventsMask"); |
233 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
|
234 |
268 |
235 if(!impl || ( eventFlags > (XA_PLAYEVENT_HEADATEND | XA_PLAYEVENT_HEADATMARKER | |
269 if(!impl || ( eventFlags > (XA_PLAYEVENT_HEADATEND | XA_PLAYEVENT_HEADATMARKER | |
236 XA_PLAYEVENT_HEADATNEWPOS | XA_PLAYEVENT_HEADMOVING | XA_PLAYEVENT_HEADSTALLED) ) ) |
270 XA_PLAYEVENT_HEADATNEWPOS | XA_PLAYEVENT_HEADMOVING | XA_PLAYEVENT_HEADSTALLED) ) ) |
237 { |
271 { |
238 /* invalid parameter */ |
272 /* invalid parameter */ |
239 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
|
240 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
273 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
241 DEBUG_API("<-XAPlayItfImpl_SetCallbackEventsMask"); |
274 DEBUG_API("<-XAPlayItfImpl_SetCallbackEventsMask"); |
242 return XA_RESULT_PARAMETER_INVALID; |
275 return XA_RESULT_PARAMETER_INVALID; |
243 } |
276 } |
244 |
277 |
|
278 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
|
279 |
245 impl->eventFlags = eventFlags; |
280 impl->eventFlags = eventFlags; |
246 #ifdef _GSTREAMER_BACKEND_ |
281 |
|
282 if(impl->pObjImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
|
283 { |
|
284 ret = XAPlayItfAdaptMMF_SetCallbackEventsMask(impl->pObjImpl->curAdaptCtx, eventFlags); |
|
285 |
|
286 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
|
287 DEBUG_API("<-XAPlayItfImpl_SetCallbackEventsMask"); |
|
288 return ret; |
|
289 } |
|
290 |
247 /* enable position tracking if client wants so */ |
291 /* enable position tracking if client wants so */ |
248 if( (eventFlags & (XA_PLAYEVENT_HEADATMARKER | XA_PLAYEVENT_HEADATNEWPOS)) |
292 if( (eventFlags & (XA_PLAYEVENT_HEADATMARKER | XA_PLAYEVENT_HEADATNEWPOS)) |
249 && impl->adapCtx && !impl->positionupdateOn) |
293 && impl->adapCtx && !impl->positionupdateOn) |
250 { |
294 { |
251 ret = XAPlayItfAdapt_EnablePositionTracking(impl->adapCtx, XA_BOOLEAN_TRUE); |
295 ret = XAPlayItfAdapt_EnablePositionTracking((XAAdaptationGstCtx*)impl->adapCtx, XA_BOOLEAN_TRUE); |
252 if( ret == XA_RESULT_SUCCESS ) |
296 if( ret == XA_RESULT_SUCCESS ) |
253 { |
297 { |
254 impl->positionupdateOn = XA_BOOLEAN_TRUE; |
298 impl->positionupdateOn = XA_BOOLEAN_TRUE; |
255 } |
299 } |
256 } |
300 } |
257 else if( !(eventFlags & (XA_PLAYEVENT_HEADATMARKER | XA_PLAYEVENT_HEADATNEWPOS)) |
301 else if( !(eventFlags & (XA_PLAYEVENT_HEADATMARKER | XA_PLAYEVENT_HEADATNEWPOS)) |
258 && impl->adapCtx && impl->positionupdateOn) |
302 && impl->adapCtx && impl->positionupdateOn) |
259 { |
303 { |
260 ret = XAPlayItfAdapt_EnablePositionTracking(impl->adapCtx, XA_BOOLEAN_FALSE); |
304 ret = XAPlayItfAdapt_EnablePositionTracking((XAAdaptationGstCtx*)impl->adapCtx, XA_BOOLEAN_FALSE); |
261 if( ret == XA_RESULT_SUCCESS ) |
305 if( ret == XA_RESULT_SUCCESS ) |
262 { |
306 { |
263 impl->positionupdateOn = XA_BOOLEAN_FALSE; |
307 impl->positionupdateOn = XA_BOOLEAN_FALSE; |
264 } |
308 } |
265 } |
309 } |
266 #endif |
310 |
267 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
311 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
268 DEBUG_API("<-XAPlayItfImpl_SetCallbackEventsMask"); |
312 DEBUG_API("<-XAPlayItfImpl_SetCallbackEventsMask"); |
269 return ret; |
313 return ret; |
270 } |
314 } |
271 |
315 |
299 **/ |
343 **/ |
300 XAresult XAPlayItfImpl_SetMarkerPosition(XAPlayItf self, XAmillisecond mSec) |
344 XAresult XAPlayItfImpl_SetMarkerPosition(XAPlayItf self, XAmillisecond mSec) |
301 { |
345 { |
302 XAresult ret = XA_RESULT_SUCCESS; |
346 XAresult ret = XA_RESULT_SUCCESS; |
303 XAmillisecond duration = 0; |
347 XAmillisecond duration = 0; |
304 XAPlayItfImpl* impl = NULL; |
348 XAPlayItfImpl* impl = GetImpl(self); |
305 |
|
306 |
349 |
307 DEBUG_API_A1("->XAPlayItfImpl_SetMarkerPosition: %lu ms", mSec); |
350 DEBUG_API_A1("->XAPlayItfImpl_SetMarkerPosition: %lu ms", mSec); |
|
351 |
308 /* Get duration of the content */ |
352 /* Get duration of the content */ |
309 if(XAPlayItfImpl_GetDuration(self, &duration) != XA_RESULT_SUCCESS) |
353 if(XAPlayItfImpl_GetDuration(self, &duration) != XA_RESULT_SUCCESS) |
310 { |
354 { |
311 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
355 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
312 DEBUG_API("<-XAPlayItfImpl_SetMarkerPosition"); |
356 DEBUG_API("<-XAPlayItfImpl_SetMarkerPosition"); |
313 /* invalid parameter */ |
357 /* invalid parameter */ |
314 return XA_RESULT_PARAMETER_INVALID; |
358 return XA_RESULT_PARAMETER_INVALID; |
315 } |
359 } |
316 |
360 |
317 impl = GetImpl(self); |
|
318 |
361 |
319 if(!impl || mSec > duration) |
362 if(!impl || mSec > duration) |
320 { |
363 { |
321 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
364 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
322 DEBUG_API("<-XAPlayItfImpl_SetMarkerPosition"); |
365 DEBUG_API("<-XAPlayItfImpl_SetMarkerPosition"); |
323 /* invalid parameter */ |
366 /* invalid parameter */ |
324 return XA_RESULT_PARAMETER_INVALID; |
367 return XA_RESULT_PARAMETER_INVALID; |
325 } |
368 } |
|
369 |
326 impl->markerPosition = mSec; |
370 impl->markerPosition = mSec; |
327 impl->isMarkerPosCbSend = XA_BOOLEAN_FALSE; |
371 impl->isMarkerPosCbSend = XA_BOOLEAN_FALSE; |
328 |
372 |
|
373 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
|
374 |
|
375 if(impl->pObjImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
|
376 { |
|
377 ret = XAPlayItfAdaptMMF_SetMarkerPosition(impl->pObjImpl->curAdaptCtx, mSec); |
|
378 } |
|
379 |
|
380 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
|
381 |
329 DEBUG_API("<-XAPlayItfImpl_SetMarkerPosition"); |
382 DEBUG_API("<-XAPlayItfImpl_SetMarkerPosition"); |
330 return ret; |
383 return ret; |
331 } |
384 } |
332 |
385 |
333 /** |
386 /** |
345 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
398 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
346 DEBUG_API("<-XAPlayItfImpl_ClearMarkerPosition"); |
399 DEBUG_API("<-XAPlayItfImpl_ClearMarkerPosition"); |
347 /* invalid parameter */ |
400 /* invalid parameter */ |
348 return XA_RESULT_PARAMETER_INVALID; |
401 return XA_RESULT_PARAMETER_INVALID; |
349 } |
402 } |
|
403 |
350 impl->isMarkerPosCbSend = XA_BOOLEAN_FALSE; |
404 impl->isMarkerPosCbSend = XA_BOOLEAN_FALSE; |
351 impl->markerPosition = NO_POSITION; |
405 impl->markerPosition = NO_POSITION; |
|
406 |
|
407 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
|
408 |
|
409 if(impl->pObjImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
|
410 { |
|
411 ret = XAPlayItfAdaptMMF_ClearMarkerPosition(impl->pObjImpl->curAdaptCtx); |
|
412 } |
|
413 |
|
414 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
352 |
415 |
353 DEBUG_API("<-XAPlayItfImpl_ClearMarkerPosition"); |
416 DEBUG_API("<-XAPlayItfImpl_ClearMarkerPosition"); |
354 return ret; |
417 return ret; |
355 } |
418 } |
356 |
419 |
403 /* invalid parameter */ |
466 /* invalid parameter */ |
404 return XA_RESULT_PARAMETER_INVALID; |
467 return XA_RESULT_PARAMETER_INVALID; |
405 } |
468 } |
406 impl->positionUpdatePeriod = mSec; |
469 impl->positionUpdatePeriod = mSec; |
407 |
470 |
|
471 XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); |
|
472 |
|
473 if(impl->pObjImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
|
474 { |
|
475 ret = XAPlayItfAdaptMMF_SetPositionUpdatePeriod(impl->pObjImpl->curAdaptCtx, mSec); |
|
476 } |
|
477 |
|
478 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
|
479 |
408 DEBUG_API("<-XAPlayItfImpl_SetPositionUpdatePeriod"); |
480 DEBUG_API("<-XAPlayItfImpl_SetPositionUpdatePeriod"); |
409 return ret; |
481 return ret; |
410 } |
482 } |
411 |
483 |
412 /** |
484 /** |
440 |
512 |
441 /** |
513 /** |
442 * XAPlayItfImpl* XAPlayItfImpl_Create() |
514 * XAPlayItfImpl* XAPlayItfImpl_Create() |
443 * Description: Allocate and initialize PlayItfImpl |
515 * Description: Allocate and initialize PlayItfImpl |
444 **/ |
516 **/ |
445 XAPlayItfImpl* XAPlayItfImpl_Create( |
517 XAPlayItfImpl* XAPlayItfImpl_Create( XAMediaPlayerImpl *impl ) |
446 #ifdef _GSTREAMER_BACKEND_ |
|
447 XAAdaptationBaseCtx *adapCtx, |
|
448 #endif |
|
449 XAAdaptationBaseMMFCtx *adaptationCtxMMF ) |
|
450 { |
518 { |
451 XAPlayItfImpl *self; |
519 XAPlayItfImpl *self; |
452 |
520 |
453 DEBUG_API("->XAPlayItfImpl_Create"); |
521 DEBUG_API("->XAPlayItfImpl_Create"); |
454 self = (XAPlayItfImpl*)calloc(1,sizeof(XAPlayItfImpl)); |
522 self = (XAPlayItfImpl*)calloc(1,sizeof(XAPlayItfImpl)); |
474 self->playbackState = XA_PLAYSTATE_STOPPED; |
542 self->playbackState = XA_PLAYSTATE_STOPPED; |
475 self->eventFlags = 0; |
543 self->eventFlags = 0; |
476 self->markerPosition = NO_POSITION; |
544 self->markerPosition = NO_POSITION; |
477 self->positionUpdatePeriod = PLAYITF_DEFAULT_UPDATE_PERIOD; |
545 self->positionUpdatePeriod = PLAYITF_DEFAULT_UPDATE_PERIOD; |
478 self->lastPosition = START_POSITION; |
546 self->lastPosition = START_POSITION; |
479 #ifdef _GSTREAMER_BACKEND_ |
547 /*self->adapCtx = impl->curAdaptCtx;*/ |
480 self->adapCtx = adapCtx; |
548 self->pObjImpl = impl; |
481 #endif |
|
482 self->adaptCtxMMF = adaptationCtxMMF; |
|
483 self->cbPtrToSelf = NULL; |
549 self->cbPtrToSelf = NULL; |
484 self->isMarkerPosCbSend = XA_BOOLEAN_FALSE; |
550 self->isMarkerPosCbSend = XA_BOOLEAN_FALSE; |
485 |
551 |
486 #ifdef _GSTREAMER_BACKEND_ |
552 /* XAAdaptationBase_AddEventHandler( self->adapCtx, &XAPlayItfImpl_AdaptCb, XA_PLAYITFEVENTS, self );*/ |
487 XAAdaptationBase_AddEventHandler( adapCtx, &XAPlayItfImpl_AdaptCb, XA_PLAYITFEVENTS, self ); |
553 XAAdaptationBase_AddEventHandler( self->pObjImpl->curAdaptCtx, &XAPlayItfImpl_AdaptCb, XA_PLAYITFEVENTS, self ); |
488 #endif |
|
489 |
554 |
490 self->self = self; |
555 self->self = self; |
491 } |
556 } |
492 |
557 |
493 DEBUG_API("<-XAPlayItfImpl_Create"); |
558 DEBUG_API("<-XAPlayItfImpl_Create"); |
499 */ |
564 */ |
500 void XAPlayItfImpl_Free(XAPlayItfImpl* self) |
565 void XAPlayItfImpl_Free(XAPlayItfImpl* self) |
501 { |
566 { |
502 DEBUG_API("->XAPlayItfImpl_Free"); |
567 DEBUG_API("->XAPlayItfImpl_Free"); |
503 assert(self==self->self); |
568 assert(self==self->self); |
504 #ifdef _GSTREAMER_BACKEND_ |
569 /* XAAdaptationBase_RemoveEventHandler( self->adapCtx, &XAPlayItfImpl_AdaptCb );*/ |
505 XAAdaptationBase_RemoveEventHandler( self->adapCtx, &XAPlayItfImpl_AdaptCb ); |
570 XAAdaptationBase_RemoveEventHandler( self->pObjImpl->curAdaptCtx, &XAPlayItfImpl_AdaptCb ); |
506 #endif |
|
507 free(self); |
571 free(self); |
508 DEBUG_API("<-XAPlayItfImpl_Free"); |
572 DEBUG_API("<-XAPlayItfImpl_Free"); |
509 } |
573 } |
510 |
|
511 #ifdef _GSTREAMER_BACKEND_ |
|
512 |
574 |
513 /* void XAPlayItfImpl_AdaptCb |
575 /* void XAPlayItfImpl_AdaptCb |
514 * Description: Listen changes in adaptation |
576 * Description: Listen changes in adaptation |
515 */ |
577 */ |
516 void XAPlayItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) |
578 void XAPlayItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) |
526 DEBUG_API("<-XAPlayItfImpl_AdaptCb"); |
588 DEBUG_API("<-XAPlayItfImpl_AdaptCb"); |
527 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); |
589 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); |
528 return; |
590 return; |
529 } |
591 } |
530 assert(event); |
592 assert(event); |
|
593 |
|
594 if(impl->pObjImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
|
595 { |
|
596 impl->callback(impl->cbPtrToSelf, impl->cbcontext, event->eventid); |
|
597 DEBUG_API("<-XAPlayItfImpl_AdaptCb"); |
|
598 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); |
|
599 return; |
|
600 } |
|
601 |
531 /* check position update events */ |
602 /* check position update events */ |
532 if( event->eventid == XA_ADAPT_POSITION_UPDATE_EVT ) |
603 if( event->eventid == XA_ADAPT_POSITION_UPDATE_EVT ) |
533 { |
604 { |
534 assert(event->data); |
605 assert(event->data); |
535 newpos = *((XAuint32*)(event->data)); |
606 newpos = *((XAuint32*)(event->data)); |
590 } |
661 } |
591 } |
662 } |
592 else if( event->eventid == XA_PLAYEVENT_HEADSTALLED ) |
663 else if( event->eventid == XA_PLAYEVENT_HEADSTALLED ) |
593 { |
664 { |
594 impl->playbackState = XA_PLAYSTATE_PAUSED; |
665 impl->playbackState = XA_PLAYSTATE_PAUSED; |
595 XAPlayItfAdapt_GetPosition(impl->adapCtx, &(impl->lastPosition)); |
666 if(impl->adapCtx->fwtype == FWMgrFWMMF) |
|
667 { |
|
668 //XAPlayItfAdaptMMF_GetPosition((XAAdaptationGstCtx*)impl->adapCtx, &(impl->lastPosition)); |
|
669 } |
|
670 else |
|
671 { |
|
672 XAPlayItfAdaptGST_GetPosition((XAAdaptationGstCtx*)impl->adapCtx, &(impl->lastPosition)); |
|
673 } |
596 /* send callback if needed */ |
674 /* send callback if needed */ |
597 if( (XA_PLAYEVENT_HEADSTALLED & impl->eventFlags) && impl->callback ) |
675 if( (XA_PLAYEVENT_HEADSTALLED & impl->eventFlags) && impl->callback ) |
598 { |
676 { |
599 impl->callback(impl->cbPtrToSelf, impl->cbcontext, XA_PLAYEVENT_HEADSTALLED); |
677 impl->callback(impl->cbPtrToSelf, impl->cbcontext, XA_PLAYEVENT_HEADSTALLED); |
600 } |
678 } |
614 } |
692 } |
615 |
693 |
616 DEBUG_API("<-XAPlayItfImpl_AdaptCb"); |
694 DEBUG_API("<-XAPlayItfImpl_AdaptCb"); |
617 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); |
695 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); |
618 } |
696 } |
619 #endif |
697 |
620 |
|
621 XAresult XAPlayItfImpl_DeterminePlaybackEngine(XAPlayItf self, XADataLocator_URI *uri) |
|
622 { |
|
623 |
|
624 XAresult ret = XA_RESULT_SUCCESS; |
|
625 |
|
626 char* tempPtr = NULL; |
|
627 char extension[5]; |
|
628 |
|
629 XAPlayItfImpl* impl = (XAPlayItfImpl*)(self); |
|
630 DEBUG_API("->XAPlayItfImpl_DeterminePlaybackEngine"); |
|
631 |
|
632 //need to move to configuration file and add more in final class |
|
633 |
|
634 impl->isMMFPlayback = XA_BOOLEAN_TRUE; |
|
635 |
|
636 tempPtr = strchr((char*)(uri->URI), '.'); |
|
637 strcpy(extension, tempPtr); |
|
638 |
|
639 if(!strcmp(extension, ".wav")) |
|
640 { |
|
641 impl->isMMFPlayback = XA_BOOLEAN_FALSE; |
|
642 } |
|
643 |
|
644 return ret; |
|
645 |
|
646 DEBUG_API("<-XAPlayItfImpl_DeterminePlaybackEngine"); |
|
647 } |
|