2 * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
4 * This file is part of org.tizen.video-player
5 * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
7 * PROPRIETARY/CONFIDENTIAL
9 * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
10 * You shall not disclose such Confidential Information and shall
11 * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
12 * SAMSUNG make no representations or warranties about the suitability
13 * of the software, either express or implied, including but not
14 * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
15 * SAMSUNG shall not be liable for any damages suffered by licensee as
16 * a result of using, modifying or distributing this software or its derivatives.
24 #include <mm_message.h>
27 #include "mp-video-log.h"
28 #include "mp-video-app-ctrl.h"
29 #include "mp-video-view-ctrl.h"
30 #include "mp-util-media-service.h"
31 #include "mp-video-value-define.h"
32 #include "mp-video-subtitle-ctrl.h"
33 #include "mp-video-string-define.h"
34 #include "mp-video-streaming-ctrl.h"
36 #include "mp-video-ctrl-mgr.h"
38 static int nBufferingRate = 0;
39 static double nDurationTime = 0;
40 static char szSubtitleString[STR_LEN_MAX] = {0};
41 static int nErrorCode = 0;
43 static Ecore_Pipe *pEcorePipeHandleForErrorMsg = NULL;
44 static Ecore_Pipe *pEcorePipeHandleBOF = NULL;
45 static Ecore_Pipe *pEcorePipeHandleEOF = NULL;
46 static Ecore_Pipe *pEcorePipeHandleForBuffering = NULL;
47 static Ecore_Pipe *pEcorePipeHandleForBluetooth = NULL;
48 static Ecore_Pipe *pEcorePipeHandleForSubTitle = NULL;
49 static Ecore_Pipe *pEcorePipeHandleForResumed = NULL;
50 static Ecore_Pipe *pEcorePipeHandleForInterruped = NULL;
52 static void MpVideoAppCtrlStart(VideoAppData *pAppData);
53 static void MpVideoAppCtrlStop(VideoAppData *pAppData);
54 static void MpVideoAppCtrlPause(VideoAppData *pAppData);
55 static void MpVideoAppCtrlResume(VideoAppData *pAppData);
56 static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData);
57 static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData);
58 static void MpVideoAppCtrlFFDown(VideoAppData *pAppData);
59 static void MpVideoAppCtrlRewDown(VideoAppData *pAppData);
60 static void MpVideoAppCtrlFFUp(VideoAppData *pAppData);
61 static void MpVideoAppCtrlRewUp(VideoAppData *pAppData);
62 static void MpVideoAppCtrlSetMute(VideoAppData *pAppData);
63 static void MpVideoAppCtrlSetScreenType(VideoAppData *pAppData);
64 static void MpVideoAppCtrlSetScreenSize(VideoAppData *pAppData, int nScreenSize);
65 static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData);
66 static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData);
67 static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData);
68 static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData);
69 static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData);
70 static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData);
71 static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData);
72 static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData);
73 static void MpVideoAppCtrlExit(VideoAppData *pAppData);
74 static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData);
75 static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData);
76 static void MpVideoAppCtrlPlayPreMedia(VideoAppData *pAppData);
77 static void MpVideoAppCtrlPlayNextMedia(VideoAppData *pAppData);
78 static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData);
79 static void MpVideoAppCtrlErrorMsg(VideoAppData *pAppData, unsigned int nErrorCode);
80 static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData);
86 static void MpVideoAppCtrlWarningPopupCb(void *pUserData, Evas_Object *pObject,
90 VideoLogInfo("No exist pUserData");
96 MpUtilDeletePopupHandle();
99 static void MpVideoAppCtrlExitCb(void *pUserData, Evas_Object *pObject,
103 VideoLogInfo("No exist pUserData");
109 VideoAppData *pAppData = (VideoAppData *)pUserData;
111 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
114 static int MpVideoAppCtrlPauseByInterrupteCb(void *pUserData)
117 VideoLogInfo("No exist pUserData");
123 VideoAppData *pAppData = (VideoAppData *)pUserData;
125 MpVideoViewHideSoundpath(pUserData);
126 MpVideoAppCtrlPause(pAppData);
131 static int MpVideoAppCtrlBeginOfPlayCb(void *pUserData)
134 VideoLogInfo("No exist pUserData");
140 VideoAppData *pAppData = (VideoAppData *)pUserData;
142 MpVideoAppCtrlSetMute(pAppData);
143 MpVideoAppCtrlBeginOfStream(pAppData);
148 static int MpVideoAppCtrlEndOfPlayCb(void *pUserData)
151 VideoLogInfo("No exist pUserData");
157 VideoAppData *pAppData = (VideoAppData *)pUserData;
158 MpVideoAppCtrlEndOfStream(pAppData);
163 static int MpVideoAppCtrlBufferingCb(void *pUserData)
166 VideoLogInfo("No exist pUserData");
172 MpVideoViewSetBufferingRateForStreamingView(nBufferingRate, pUserData);
177 static int MpVideoAppCtrlBluetoothCb(void *pUserData)
180 VideoLogInfo("No exist pUserData");
189 static int MpVideoAppCtrlResumeByRewCb(void *pUserData)
192 VideoLogInfo("No exist pUserData");
198 VideoAppData *pAppData = (VideoAppData *)pUserData;
200 MpVideoAppCtrlResume(pAppData);
205 static Eina_Bool MpVideoAppCtrlUpdateSubtitleCb(void* pUserData)
208 VideoLogInfo("No exist pUserData");
214 if (strlen(szSubtitleString) > 0 && nDurationTime > 0) {
215 MpVideoViewCtrlUpdateSubtitle(nDurationTime, szSubtitleString);
221 static int MpVideoAppCtrlMmfErrormsgCb(void *pUserData)
224 VideoLogInfo("No exist pUserData");
230 VideoAppData *pAppData = (VideoAppData *)pUserData;
232 MpVideoAppCtrlErrorMsg(pAppData, nErrorCode);
237 static void MpVideoAppCtrlErrorMsg(VideoAppData *pAppData,
238 unsigned int nErrorCode)
240 VideoLogInfo("[MMF ERROR] CtrlErrorMsg.");
242 switch (nErrorCode) {
244 VideoLogInfo("Connection Fail.");
247 case MM_ERROR_PLAYER_CODEC_NOT_FOUND:
248 VideoLogInfo("CODEC NOT FOUND");
249 MpUtilNotifyPopUp(pAppData, _(MP_VPL_POP_UNSUPPORTED_FILE_TYPE),
250 MpVideoAppCtrlExitCb);
253 case MM_ERROR_PLAYER_AUDIO_CODEC_NOT_FOUND:
254 VideoLogInfo("UNSUPPORTED_AUDIO_FORMAT");
255 MpUtilNotifyPopUp(pAppData,
256 _(MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT),
257 MpVideoAppCtrlWarningPopupCb);
260 case MM_ERROR_PLAYER_VIDEO_CODEC_NOT_FOUND:
261 VideoLogInfo("UNSUPPORTED_VIDEO_FORMAT");
262 MpVideoViewCtrlShowNocontentImage();
263 MpUtilNotifyPopUp(pAppData,
264 _(MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT),
265 MpVideoAppCtrlWarningPopupCb);
268 case MM_ERROR_PLAYER_STREAMING_UNSUPPORTED_AUDIO:
269 VideoLogInfo("UNSUPPORTED_AUDIO_FORMAT");
270 MpUtilNotifyPopUp(pAppData,
271 _(MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT),
272 MpVideoAppCtrlWarningPopupCb);
275 case MM_ERROR_PLAYER_STREAMING_UNSUPPORTED_VIDEO:
276 VideoLogInfo("UNSUPPORTED_VIDEO_FORMAT");
277 MpVideoViewCtrlShowNocontentImage();
278 MpUtilNotifyPopUp(pAppData,
279 _(MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT),
280 MpVideoAppCtrlWarningPopupCb);
283 case MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL:
284 VideoLogInfo("CONNECTION_FAILED");
285 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
286 MpVideoAppCtrlExitCb);
289 case MM_ERROR_PLAYER_INVALID_STREAM:
290 VideoLogInfo("MM_ERROR_PLAYER_INVALID_STREAM");
291 MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
292 MpVideoAppCtrlExitCb);
295 case MM_ERROR_PLAYER_FILE_NOT_FOUND:
296 VideoLogInfo("MM_ERROR_PLAYER_FILE_NOT_FOUND");
297 MpUtilNotifyPopUp(pAppData, _(MP_VPL_POP_INVALID_STREAMING_DATA),
298 MpVideoAppCtrlExitCb);
301 case MM_ERROR_PLAYER_STREAMING_DNS_FAIL:
302 VideoLogInfo("DNS_FAILED");
303 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
304 MpVideoAppCtrlExitCb);
307 case MM_ERROR_PLAYER_STREAMING_SERVER_DISCONNECTED:
308 VideoLogInfo("DESCONNECTED_FROM_SERVER");
309 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
310 MpVideoAppCtrlExitCb);
313 case MM_ERROR_PLAYER_STREAMING_BAD_SERVER:
314 VideoLogInfo("UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER");
315 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
316 MpVideoAppCtrlExitCb);
319 case MM_ERROR_PLAYER_STREAMING_INVALID_PROTOCOL:
320 VideoLogInfo("UNSUPPORTED_TRANSPORT_PROTOCOL");
321 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
322 MpVideoAppCtrlExitCb);
325 case MM_ERROR_PLAYER_STREAMING_INVALID_URL:
326 VideoLogInfo("INVALID_URL");
327 MpUtilNotifyPopUp(pAppData,
328 _(MP_VPL_POP_INVALID_STREAMING_DATA),
329 MpVideoAppCtrlExitCb);
332 case MM_ERROR_PLAYER_STREAMING_UNEXPECTED_MSG:
333 VideoLogInfo("UNEXPECTED_MESSAGE");
334 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
335 MpVideoAppCtrlExitCb);
338 case MM_ERROR_PLAYER_STREAMING_OUT_OF_MEMORIES:
339 VideoLogInfo("OUT_OF_MEMORIES");
340 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
341 MpVideoAppCtrlExitCb);
344 case MM_ERROR_PLAYER_STREAMING_RTSP_TIMEOUT:
345 VideoLogInfo("NO_RESPONSE_FROM_SERVER");
346 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
347 MpVideoAppCtrlExitCb);
350 case MM_ERROR_PLAYER_STREAMING_BAD_REQUEST:
351 VideoLogInfo("BAD_REQUEST");
352 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
353 MpVideoAppCtrlExitCb);
356 case MM_ERROR_PLAYER_STREAMING_NOT_AUTHORIZED:
357 VideoLogInfo("NOT_AUTHORIZED");
358 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
359 MpVideoAppCtrlExitCb);
362 case MM_ERROR_PLAYER_STREAMING_PAYMENT_REQUIRED:
363 VideoLogInfo("PAYMENT_REQUIRED");
364 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
365 MpVideoAppCtrlExitCb);
368 case MM_ERROR_PLAYER_STREAMING_FORBIDDEN:
369 VideoLogInfo("FORBIDDEN");
370 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
371 MpVideoAppCtrlExitCb);
374 case MM_ERROR_PLAYER_STREAMING_CONTENT_NOT_FOUND:
375 VideoLogInfo("CONTENT_NOT_FOUND");
376 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
377 MpVideoAppCtrlExitCb);
380 case MM_ERROR_PLAYER_STREAMING_METHOD_NOT_ALLOWED:
381 VideoLogInfo("METHOD_NOT_ALLOWED");
382 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
383 MpVideoAppCtrlExitCb);
386 case MM_ERROR_PLAYER_STREAMING_NOT_ACCEPTABLE:
387 VideoLogInfo("NOT_ACCEPTABLE");
388 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
389 MpVideoAppCtrlExitCb);
392 case MM_ERROR_PLAYER_STREAMING_PROXY_AUTHENTICATION_REQUIRED:
393 VideoLogInfo("PROXY_AUTHENTICATION_REQUIRED");
394 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
395 MpVideoAppCtrlExitCb);
398 case MM_ERROR_PLAYER_STREAMING_SERVER_TIMEOUT:
399 VideoLogInfo("SERVER_TIMEOUT");
400 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
401 MpVideoAppCtrlExitCb);
404 case MM_ERROR_PLAYER_STREAMING_GONE:
405 VideoLogInfo("GONE_MERROR");
406 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
407 MpVideoAppCtrlExitCb);
410 case MM_ERROR_PLAYER_STREAMING_LENGTH_REQUIRED:
411 VideoLogInfo("LENGTH_REQUIRED");
412 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
413 MpVideoAppCtrlExitCb);
416 case MM_ERROR_PLAYER_STREAMING_PRECONDITION_FAILED:
417 VideoLogInfo("PRECONDITION_FAILED");
418 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
419 MpVideoAppCtrlExitCb);
422 case MM_ERROR_PLAYER_STREAMING_REQUEST_ENTITY_TOO_LARGE:
423 VideoLogInfo("REQUEST_ENTITY_TOO_LARGE");
424 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
425 MpVideoAppCtrlExitCb);
428 case MM_ERROR_PLAYER_STREAMING_REQUEST_URI_TOO_LARGE:
429 VideoLogInfo("REQUEST_URI_TOO_LARGE");
430 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
431 MpVideoAppCtrlExitCb);
434 case MM_ERROR_PLAYER_STREAMING_UNSUPPORTED_MEDIA_TYPE:
435 VideoLogInfo("UNSUPPORTED_MEDIA_TYPE");
436 MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
437 MpVideoAppCtrlExitCb);
440 case MM_ERROR_PLAYER_STREAMING_PARAMETER_NOT_UNDERSTOOD:
441 VideoLogInfo("PARAMETER_NOT_UNDERSTOOD");
442 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
443 MpVideoAppCtrlExitCb);
446 case MM_ERROR_PLAYER_STREAMING_CONFERENCE_NOT_FOUND:
447 VideoLogInfo("CONFERENCE_NOT_FOUND");
448 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
449 MpVideoAppCtrlExitCb);
452 case MM_ERROR_PLAYER_STREAMING_NOT_ENOUGH_BANDWIDTH:
453 VideoLogInfo("NOT_ENOUGH_BANDWIDTH");
454 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
455 MpVideoAppCtrlExitCb);
458 case MM_ERROR_PLAYER_STREAMING_NO_SESSION_ID:
459 VideoLogInfo("NO_SESSION_ID");
460 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
461 MpVideoAppCtrlExitCb);
464 case MM_ERROR_PLAYER_STREAMING_METHOD_NOT_VALID_IN_THIS_STATE:
465 VideoLogInfo("METHOD_NOT_VALID_IN_THIS_STATE");
466 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
467 MpVideoAppCtrlExitCb);
470 case MM_ERROR_PLAYER_STREAMING_HEADER_FIELD_NOT_VALID_FOR_SOURCE:
471 VideoLogInfo("HEADER_FIELD_NOT_VALID_FOR_SOURCE");
472 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
473 MpVideoAppCtrlExitCb);
476 case MM_ERROR_PLAYER_STREAMING_INVALID_RANGE:
477 VideoLogInfo("INVALID_RANGE");
478 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
479 MpVideoAppCtrlExitCb);
482 case MM_ERROR_PLAYER_STREAMING_PARAMETER_IS_READONLY:
483 VideoLogInfo("PARAMETER_IS_READONLY");
484 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
485 MpVideoAppCtrlExitCb);
488 case MM_ERROR_PLAYER_STREAMING_AGGREGATE_OP_NOT_ALLOWED:
489 VideoLogInfo("AGGREGATE_OP_NOT_ALLOWED");
490 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
491 MpVideoAppCtrlExitCb);
494 case MM_ERROR_PLAYER_STREAMING_ONLY_AGGREGATE_OP_ALLOWED:
495 VideoLogInfo("ONLY_AGGREGATE_OP_ALLOWED");
496 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
497 MpVideoAppCtrlExitCb);
500 case MM_ERROR_PLAYER_STREAMING_BAD_TRANSPORT:
501 VideoLogInfo("BAD_TRANSPORT");
502 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
503 MpVideoAppCtrlExitCb);
506 case MM_ERROR_PLAYER_STREAMING_DESTINATION_UNREACHABLE:
507 VideoLogInfo("DESTINATION_UNREACHABLE");
508 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
509 MpVideoAppCtrlExitCb);
512 case MM_ERROR_PLAYER_STREAMING_INTERNAL_SERVER_ERROR:
513 VideoLogInfo("INTERNAL_SERVER_ERROR");
514 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
515 MpVideoAppCtrlExitCb);
518 case MM_ERROR_PLAYER_STREAMING_NOT_IMPLEMENTED:
519 VideoLogInfo("NOT_IMPLEMENTED");
520 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
521 MpVideoAppCtrlExitCb);
524 case MM_ERROR_PLAYER_STREAMING_BAD_GATEWAY:
525 VideoLogInfo("BAD_GATEWAY");
526 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
527 MpVideoAppCtrlExitCb);
530 case MM_ERROR_PLAYER_STREAMING_SERVICE_UNAVAILABLE:
531 VideoLogInfo("SERVICE_UNAVAILABLE");
532 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
533 MpVideoAppCtrlExitCb);
536 case MM_ERROR_PLAYER_STREAMING_GATEWAY_TIME_OUT:
537 VideoLogInfo("GATEWAY_TIME_OUT");
538 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
539 MpVideoAppCtrlExitCb);
542 case MM_ERROR_PLAYER_STREAMING_RTSP_VERSION_NOT_SUPPORTED:
543 VideoLogInfo("RTSP_VERSION_NOT_SUPPORTED");
544 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
545 MpVideoAppCtrlExitCb);
548 case MM_ERROR_PLAYER_STREAMING_OPTION_NOT_SUPPORTED:
549 VideoLogInfo("OPTION_NOT_SUPPORTED");
550 MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
551 MpVideoAppCtrlExitCb);
554 case MM_ERROR_PLAYER_STREAMING_FAIL:
555 VideoLogInfo("INTERNAL_ERROR");
556 MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
557 MpVideoAppCtrlExitCb);
559 case MM_MESSAGE_DRM_NOT_AUTHORIZED :
560 VideoLogInfo("DRM_NOT_AUTHORIZED ERROR");
561 MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
562 MpVideoAppCtrlExitCb);
571 static void MpVideoAppCtrlPlayerMsgCallback(int MessageType,
572 void *MessageParam, void *pUserData)
575 VideoLogInfo("[ERR]");
579 VideoLogInfoWithTid("Callback func");
581 VideoAppData *pAppData = (VideoAppData *)pUserData;
582 MMMessageParamType *pParam = (MMMessageParamType *) MessageParam;
584 switch (MessageType) {
585 case MM_MESSAGE_UNKNOWN:
586 VideoLogInfo("MM_MESSAGE_UNKNOWN", MessageType);
587 if(pEcorePipeHandleForErrorMsg) {
588 if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg,
589 (void *)pAppData, sizeof(pAppData))) {
590 VideoLogDebug("FAIL PIPE WRITE");
596 case MM_MESSAGE_ERROR:
597 VideoLogInfo("[ERR]MM_MESSAGE_ERROR : code-0x%x",
599 nErrorCode = (int)pParam->code;
600 if(pEcorePipeHandleForErrorMsg) {
601 if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg,
602 (void *)pAppData, sizeof(pAppData))) {
603 VideoLogDebug("FAIL PIPE WRITE");
608 case MM_MESSAGE_STATE_CHANGED:
609 VideoLogInfo("MM_MESSAGE_STATE_CHANGED");
612 case MM_MESSAGE_BEGIN_OF_STREAM:
613 VideoLogInfo("MM_MESSAGE_BEGIN_OF_STREAM");
614 if(pEcorePipeHandleBOF) {
615 if(!ecore_pipe_write(pEcorePipeHandleBOF,
616 (void *)pAppData, sizeof(pAppData))) {
617 VideoLogDebug("FAIL PIPE WRITE");
622 case MM_MESSAGE_END_OF_STREAM:
623 VideoLogInfo("END OF STREAM.");
624 if(pEcorePipeHandleEOF) {
625 if(!ecore_pipe_write(pEcorePipeHandleEOF,
626 (void *)pAppData, sizeof(pAppData))) {
627 VideoLogDebug("FAIL PIPE WRITE");
632 case MM_MESSAGE_READY_TO_RESUME:
633 VideoLogInfo("MM_MESSAGE_READY_TO_RESUME");
636 case MM_MESSAGE_CONNECTING:
637 VideoLogInfo("MM_MESSAGE_CONNECTING");
640 case MM_MESSAGE_CONNECTED:
641 VideoLogInfo("MM_MESSAGE_CONNECTED");
644 case MM_MESSAGE_CONNECTION_TIMEOUT:
645 VideoLogInfo("MM_MESSAGE_CONNECTION_TIMEOUT");
648 case MM_MESSAGE_BUFFERING:
649 VideoLogInfo("MM_MESSAGE_BUFFERING - Buffering : %d%% ",
650 pParam->connection.buffering);
651 nBufferingRate = pParam->connection.buffering;
653 if (nBufferingRate < 10)
654 MpVideoAppCtrlShowLayout(pAppData);
655 if(pEcorePipeHandleForBuffering) {
656 if(!ecore_pipe_write(pEcorePipeHandleForBuffering,
657 (void *)pAppData, sizeof(pAppData))) {
658 VideoLogDebug("FAIL PIPE WRITE");
663 case MM_MESSAGE_BLUETOOTH_ON:
664 VideoLogInfo("MM_MESSAGE_BLUETOOTH_ON");
667 case MM_MESSAGE_BLUETOOTH_OFF:
668 VideoLogInfo("MM_MESSAGE_BLUETOOTH_OFF ");
669 if(pEcorePipeHandleForBluetooth) {
670 if(!ecore_pipe_write(pEcorePipeHandleForBluetooth,
671 (void *)pAppData, sizeof(pAppData))) {
672 VideoLogDebug("FAIL PIPE WRITE");
677 case MM_MESSAGE_UPDATE_SUBTITLE:
678 VideoLogInfo("UPDATE_SUBTITLE ");
681 memset(szSubtitleString, 0, sizeof(char) * STR_LEN_MAX);
683 if (pParam->subtitle.duration <= 0) {
684 VideoLogInfo("[ERR] MMF Error : code-0x%x", (int)pParam->code);
687 nDurationTime = (double)pParam->subtitle.duration / 1000;
690 if (pParam->data == NULL) {
691 VideoLogInfo("[ERR] MMF Error : code-0x%x", (int)pParam->code);
694 strncpy(szSubtitleString, pParam->data, STR_LEN_MAX - 1);
697 VideoLogInfo("Subtitle duration : %d sec", nDurationTime);
698 VideoLogInfo("Subtitle contents : %s", szSubtitleString);
699 if(pEcorePipeHandleForSubTitle) {
700 if(!ecore_pipe_write(pEcorePipeHandleForSubTitle,
701 (void *)pAppData, sizeof(pAppData))) {
702 VideoLogDebug("FAIL PIPE WRITE");
707 case MM_MESSAGE_RESUMED_BY_REW:
708 VideoLogInfo("Change play state to play.");
709 if(pEcorePipeHandleForResumed) {
710 if(!ecore_pipe_write(pEcorePipeHandleForResumed,
711 (void *)pAppData, sizeof(pAppData))) {
712 VideoLogDebug("FAIL PIPE WRITE");
717 case MM_MESSAGE_RTP_SENDER_REPORT:
718 VideoLogInfo("%08x", MessageType);
721 case MM_MESSAGE_RTP_RECEIVER_REPORT:
722 VideoLogInfo("%08x", MessageType);
725 case MM_MESSAGE_RTP_SESSION_STATUS:
726 VideoLogInfo("%08x", MessageType);
729 case MM_MESSAGE_SENDER_STATE:
730 VideoLogInfo("%08x", MessageType);
733 case MM_MESSAGE_RECEIVER_STATE:
734 VideoLogInfo("%08x", MessageType);
737 case MM_MESSAGE_FILE_NOT_SUPPORTED:
738 VideoLogInfo("%08x", MessageType);
741 case MM_MESSAGE_FILE_NOT_FOUND:
742 VideoLogInfo("%08x", MessageType);
745 case MM_MESSAGE_DRM_NOT_AUTHORIZED:
746 VideoLogInfo("%08x", MessageType);
749 case MM_MESSAGE_STATE_INTERRUPTED:
750 VideoLogDebug("%08x", MessageType);
752 switch ((int)pParam->code) {
753 case MM_MSG_CODE_INTERRUPTED_BY_OTHER_APP:
754 VideoLogInfo("MM_ERROR_PLAYER_BT_CONNECTION");
757 case MM_MSG_CODE_INTERRUPTED_BY_CALL_START:
758 VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_CALL_START");
761 case MM_MSG_CODE_INTERRUPTED_BY_CALL_END:
762 VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_CALL_END");
765 case MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG:
766 VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG");
769 case MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT:
771 ("MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT");
774 case MM_MSG_CODE_INTERRUPTED_BY_ALARM_START:
776 ("MM_MSG_CODE_INTERRUPTED_BY_ALARM_START");
779 case MM_MSG_CODE_INTERRUPTED_BY_ALARM_END:
780 VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_ALARM_END");
783 if(pEcorePipeHandleForInterruped) {
784 if(!ecore_pipe_write(
785 pEcorePipeHandleForInterruped,
786 (void *)pAppData, sizeof(pAppData))) {
787 VideoLogDebug("FAIL PIPE WRITE");
791 case MM_MESSAGE_SEEK_COMPLETED:
793 VideoLogInfo("MM_MESSAGE_SEEK_COMPLETED");
794 if(MpUtilCheckRTSPType(pAppData->szMediaUri)) {
795 VideoLogInfo("RTSP SEEK Start");
796 nBufferingRate = 100;
797 MpVideoAppCtrlShowLayout(pAppData);
798 if(pEcorePipeHandleForBuffering) {
799 if(!ecore_pipe_write(pEcorePipeHandleForBuffering,
800 (void *)pAppData, sizeof(pAppData))) {
801 VideoLogDebug("FAIL PIPE WRITE");
810 VideoLogInfo("No message %08x", MessageType);
818 void MpVideoAppCtrlFuncInit(VideoAppData *pAppData)
823 VideoLogInfo("[ERR]");
827 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStart =
828 (void *)MpVideoAppCtrlStart;
829 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStop =
830 (void *)MpVideoAppCtrlStop;
831 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause =
832 (void *)MpVideoAppCtrlPause;
833 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume =
834 (void *)MpVideoAppCtrlResume;
835 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause =
836 (void *)MpVideoAppCtrlStopByAppPause;
837 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume =
838 (void *)MpVideoAppCtrlStartByAppResume;
839 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFDown =
840 (void *)MpVideoAppCtrlFFDown;
841 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewDown =
842 (void *)MpVideoAppCtrlRewDown;
843 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFUp =
844 (void *)MpVideoAppCtrlFFUp;
845 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewUp =
846 (void *)MpVideoAppCtrlRewUp;
847 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetMute =
848 (void *)MpVideoAppCtrlSetMute;
849 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenType =
850 (void *)MpVideoAppCtrlSetScreenType;
851 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize =
852 (void *)MpVideoAppCtrlSetScreenSize;
853 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition =
854 (void *)MpVideoAppCtrlGetPosition;
855 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition =
856 (void *)MpVideoAppCtrlSetPosition;
857 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout =
858 (void *)MpVideoAppCtrlHideLayout;
859 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout =
860 (void *)MpVideoAppCtrlShowLayout;
861 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution =
862 (void *)MpVideoAppCtrlGetVideoResolution;
863 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime =
864 (void *)MpVideoAppCtrlReqDurationTime;
865 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlBeginOfStream =
866 (void *)MpVideoAppCtrlBeginOfStream;
867 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlEndOfStream =
868 (void *)MpVideoAppCtrlEndOfStream;
869 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit =
870 (void *)MpVideoAppCtrlExit;
871 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartStreaming =
872 (void *)MpVideoAppCtrlStartStreaming;
873 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching =
874 (void *)MpVideoAppCtrlReLaunching;
875 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayPreMedia =
876 (void *)MpVideoAppCtrlPlayPreMedia;
877 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia =
878 (void *)MpVideoAppCtrlPlayNextMedia;
879 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition =
880 (void *)MpVideoAppCtrlGetBufferingPosition;
883 static void MpVideoAppCtrlPlayPreMedia(VideoAppData *pAppData)
886 VideoLogInfo("No exist appdata.");
892 if (strlen(pAppData->szPreMediaUri) <= 0) {
893 VideoLogInfo("szPreMediaUri is NULL.");
897 VideoLogInfo("Current media uri : %s", pAppData->szMediaUri);
898 VideoLogInfo("Previous media uri : %s", pAppData->szPreMediaUri);
900 strncpy(pAppData->szMediaUri, pAppData->szPreMediaUri,
901 sizeof(pAppData->szMediaUri) - 1);
902 MpVideoAppCtrlShowLayout(pAppData);
904 if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
905 MpUtilMediaSvcGetPreNextVideoUrl(pAppData->szMediaUri,
906 pAppData->szPreMediaUri,
907 pAppData->szNextMediaUri);
910 MpVideoAppCtrlReLaunching(pAppData);
913 static void MpVideoAppCtrlPlayNextMedia(VideoAppData *pAppData)
916 VideoLogInfo("No exist appdata.");
922 if (strlen(pAppData->szNextMediaUri) <= 0) {
923 VideoLogInfo("szNextMediaUri is NULL.");
927 VideoLogInfo("Current media uri : %s", pAppData->szMediaUri);
928 VideoLogInfo("Next media uri : %s", pAppData->szNextMediaUri);
930 strncpy(pAppData->szMediaUri, pAppData->szNextMediaUri,
931 sizeof(pAppData->szMediaUri) - 1);
932 MpVideoAppCtrlShowLayout(pAppData);
933 if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
934 MpUtilMediaSvcGetPreNextVideoUrl(pAppData->szMediaUri,
935 pAppData->szPreMediaUri,
936 pAppData->szNextMediaUri);
939 MpVideoAppCtrlReLaunching(pAppData);
942 static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData)
945 VideoLogInfo("No exist appdata.");
949 if (pAppData == NULL) {
954 if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
955 VideoLogInfo("Skip Normal Play mode");
958 if(MpUtilCheckRTSPType(pAppData->szMediaUri)) {
961 pAppData->nBufferingPosition = MpVideoCtrlMgrGetBufferingPosition();
965 static void MpVideoAppCtrlStart(VideoAppData *pAppData)
968 VideoLogInfo("No exist appdata.");
974 if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
975 char szSubtitleUri[STR_LEN_MAX] = {0};
977 if (!MpVideoSubtitleCtrlGetSubtitleUri(szSubtitleUri)) {
978 memset(szSubtitleUri, 0, STR_LEN_MAX);
980 VideoLogInfo("szSubtitleUriPath : %s", szSubtitleUri);
983 if (!MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri,
984 MpVideoAppCtrlPlayerMsgCallback,
985 (void *)MpUtilGetMainWindowXID(),
988 MpUtilNotifyPopUp(pAppData,
989 "It is unable to play video contents.",
990 MpVideoAppCtrlExitCb);
993 if (pAppData->nSetPosition > 0) {
994 VideoLogInfo("Start position time : %dms",
995 pAppData->nSetPosition);
996 MpVideoAppCtrlSetPosition(pAppData);
999 MpVideoCtrlMgrMediaPlay((void *)pAppData);
1001 } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER ) {
1002 if (MpVideoStreamingCtrlInit((void *)pAppData)) {
1003 VideoLogInfo("Connect to network.");
1004 MpVideoAppCtrlStartStreaming((void *)pAppData);
1006 VideoLogInfo("No connect to network.");
1007 MpUtilNotifyPopUp(pAppData,
1008 "It is impossible to connect to network.",
1009 MpVideoAppCtrlExitCb);
1014 static void MpVideoAppCtrlStop(VideoAppData *pAppData)
1017 VideoLogInfo("No exist appdata.");
1023 pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP;
1025 MpVideoCtrlMgrMediaStop((void *)pAppData);
1028 static void MpVideoAppCtrlPause(VideoAppData *pAppData)
1031 VideoLogInfo("No exist appdata.");
1037 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
1038 VideoLogInfo("Allready Pause video player.");
1042 pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE;
1044 MpVideoCtrlMgrMediaPause(pAppData);
1045 MpVideoViewCtrlPause(pAppData);
1046 MpVideoAppCtrlShowLayout(pAppData);
1047 MpUtilLcdNormalPowerUnlockForPause();
1050 static void MpVideoAppCtrlResume(VideoAppData *pAppData)
1053 VideoLogInfo("No exist appdata.");
1059 if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME ||
1060 pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) {
1061 VideoLogInfo("Allready Resume video player.");
1065 pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME;
1066 MpUtilMultimediaKeyGrab();
1068 MpVideoAppCtrlGetPosition(pAppData);
1069 MpVideoCtrlMgrMediaResume(pAppData);
1070 MpVideoViewCtrlResume(pAppData);
1071 MpVideoAppCtrlShowLayout(pAppData);
1072 MpUtilLcdNormalPowerLockForResume();
1075 static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData)
1078 VideoLogInfo("No exist appdata.");
1082 if (!MpVideoCtrlMgrIsExistPlayerHandle()) {
1083 VideoLogInfo("Not exist Player handle.");
1089 MpVideoAppCtrlGetPosition(pAppData);
1090 pAppData->nSetPosition = pAppData->nCurPosition;
1091 VideoLogInfo("Current position time : %d", pAppData->nSetPosition);
1092 MpVideoViewCtrlPause(pAppData);
1093 MpVideoAppCtrlStop(pAppData);
1094 MpVideoCtrlMgrMediaDestroy(pAppData);
1095 MpUtilLcdNormalPowerUnlockForPause();
1097 MpUtilMultimediaKeyUngrab();
1099 if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
1100 MpVideoViewSetBufferingRateForStreamingView(0, (void *)pAppData);
1105 static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData)
1108 VideoLogInfo("No exist appdata.");
1114 MpVideoAppCtrlStart(pAppData);
1115 MpVideoViewCtrlResume(pAppData);
1116 MpVideoAppCtrlShowLayout(pAppData);
1117 MpUtilLcdNormalPowerLockForResume();
1122 static void MpVideoAppCtrlFFDown(VideoAppData *pAppData)
1127 static void MpVideoAppCtrlRewDown(VideoAppData *pAppData)
1132 static void MpVideoAppCtrlFFUp(VideoAppData *pAppData)
1137 static void MpVideoAppCtrlRewUp(VideoAppData *pAppData)
1142 static void MpVideoAppCtrlSetMute(VideoAppData *pAppData)
1146 if (pAppData->bIsMute) {
1147 MpVideoCtrlMgrSetMute(TRUE);
1149 MpVideoCtrlMgrSetMute(FALSE);
1153 static void MpVideoAppCtrlSetScreenType(VideoAppData *pAppData)
1158 static void MpVideoAppCtrlSetScreenSize(VideoAppData *pAppData, int nScreenSize)
1161 VideoLogInfo("No exist appdata.");
1169 case MP_DISPLAY_METHOD_LETTER_BOX: VideoLogInfo("LETTER_BOX"); break;
1170 case MP_DISPLAY_METHOD_ORIGIN_SIZE: VideoLogInfo("ORIGIN_SIZE"); break;
1171 case MP_DISPLAY_METHOD_FULL_SCREEN: VideoLogInfo("FULL_SCREEN"); break;
1172 case MP_DISPLAY_METHOD_CROPPED_FULL: VideoLogInfo("CROPPED_FULL"); break;
1173 case MP_DISPLAY_METHOD_CUSTOM_ROI: VideoLogInfo("CUSTOM_ROI"); break;
1174 default: VideoLogInfo("Nothing."); return;
1177 MpVideoCtrlMgrSetRatioVideoScreen((void*)pAppData, nScreenSize);
1180 static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData)
1182 pAppData->nCurPosition = MpVideoCtrlMgrGetPosition();
1185 static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData)
1188 VideoLogInfo("No exist appdata.");
1194 MpVideoCtrlMgrSetPosition(pAppData->nSetPosition);
1196 if(MpUtilCheckRTSPType(pAppData->szMediaUri)) {
1197 VideoLogInfo("RTSP SEEK Start");
1199 MpVideoAppCtrlBufferingCb((void *)pAppData);
1204 static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData)
1207 VideoLogInfo("No exist appdata.");
1213 MpVideoViewHideLayout((void *)pAppData);
1216 static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData)
1219 VideoLogInfo("No exist appdata.");
1225 MpVideoViewShowLayout((void *)pAppData);
1228 static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData)
1231 VideoLogInfo("No exist appdata.");
1237 pAppData->nVideoWidthResolution =
1238 MpVideoCtrlMgrGetVideoWidthResolution();
1239 pAppData->nVideoHeightResolution =
1240 MpVideoCtrlMgrGetVideoHeightResolution();
1243 static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData)
1246 VideoLogInfo("No exist appdata.");
1252 pAppData->nDuration = MpVideoCtrlMgrGetDuration();
1255 static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData)
1258 VideoLogInfo("No exist appdata.");
1264 pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY;
1265 MpUtilMultimediaKeyGrab();
1267 MpVideoAppCtrlGetVideoResolution(pAppData);
1268 pAppData->nDuration = MpVideoCtrlMgrGetDuration();
1269 MpVideoViewCtrlInitAfterBeginOfStream((void *)pAppData);
1272 static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData)
1275 VideoLogInfo("No exist appdata.");
1281 if (pAppData->nLaunchingAppType == MP_LAUNCH_APP_GALLERY ) {
1282 if (pAppData->nCurPosition >= 0 ) {
1283 MpUtilMediaSvcSaveLastPlayedTime(pAppData->szMediaUri, 0);
1285 VideoLogInfo("Invalid Plaing time or duration time.");
1289 if (strlen(pAppData->szNextMediaUri) > 0) {
1290 MpVideoAppCtrlPlayNextMedia(pAppData);
1293 MpVideoAppCtrlExit(pAppData);
1297 static void MpVideoAppCtrlExit(VideoAppData *pAppData)
1300 VideoLogInfo("No exist appdata.");
1305 if(pEcorePipeHandleForErrorMsg) {
1306 ecore_pipe_del(pEcorePipeHandleForErrorMsg);
1307 pEcorePipeHandleForErrorMsg = NULL;
1310 if(pEcorePipeHandleBOF) {
1311 ecore_pipe_del(pEcorePipeHandleBOF);
1312 pEcorePipeHandleBOF = NULL;
1314 if (pEcorePipeHandleEOF) {
1315 ecore_pipe_del(pEcorePipeHandleEOF);
1316 pEcorePipeHandleEOF = NULL;
1319 if (pEcorePipeHandleForBuffering) {
1320 ecore_pipe_del(pEcorePipeHandleForBuffering);
1321 pEcorePipeHandleForBuffering = NULL;
1324 if (pEcorePipeHandleForBluetooth) {
1325 ecore_pipe_del(pEcorePipeHandleForBluetooth);
1326 pEcorePipeHandleForBluetooth = NULL;
1329 if (pEcorePipeHandleForSubTitle) {
1330 ecore_pipe_del(pEcorePipeHandleForSubTitle);
1331 pEcorePipeHandleForSubTitle = NULL;
1333 if (pEcorePipeHandleForResumed) {
1334 ecore_pipe_del(pEcorePipeHandleForResumed);
1335 pEcorePipeHandleForResumed = NULL;
1337 if (pEcorePipeHandleForInterruped) {
1338 ecore_pipe_del(pEcorePipeHandleForInterruped);
1339 pEcorePipeHandleForInterruped = NULL;
1342 MpVideoAppCtrlStop(pAppData);
1343 MpVideoCtrlMgrMediaDestroy(pAppData);
1345 MpUtilDeletePopupHandle();
1347 MpVideoViewCtrlDestroy((void *)pAppData);
1349 if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
1350 MpVideoStreamingCtrlDestroy((void *)pAppData);
1353 elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
1358 static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData)
1361 VideoLogInfo("No exist appdata.");
1367 MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri,
1368 MpVideoAppCtrlPlayerMsgCallback,
1369 (void *)MpUtilGetMainWindowXID(),
1373 MpVideoCtrlMgrMediaPlay((void *)pAppData);
1375 if (pAppData->nSetPosition > 0) {
1376 VideoLogInfo("Start position time : %dms",
1377 pAppData->nSetPosition);
1378 MpVideoAppCtrlSetPosition(pAppData);
1383 static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData)
1386 VideoLogInfo("No exist appdata.");
1392 MpVideoAppCtrlStop(pAppData);
1393 MpVideoCtrlMgrMediaDestroy(pAppData);
1395 pAppData->nSetPosition = 0;
1397 if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
1398 memset(pAppData->szVideoTitle, 0, STR_LEN_MAX);
1399 MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle);
1400 MpVideoSubtitleCtrlInit(pAppData);
1403 MpVideoViewCtrlChangeTitle(pAppData);
1405 if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
1406 MpVideoAppCtrlStart(pAppData);
1407 } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
1408 MpVideoAppCtrlStartStreaming(pAppData);
1411 MpVideoAppCtrlSetMute(pAppData);
1414 static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData)
1417 VideoLogInfo("No exist appdata.");
1422 if(pEcorePipeHandleForErrorMsg) {
1423 ecore_pipe_del(pEcorePipeHandleForErrorMsg);
1424 pEcorePipeHandleForErrorMsg = NULL;
1426 pEcorePipeHandleForErrorMsg = ecore_pipe_add(
1427 (Ecore_Pipe_Cb)MpVideoAppCtrlMmfErrormsgCb,
1430 if(pEcorePipeHandleBOF) {
1431 ecore_pipe_del(pEcorePipeHandleBOF);
1432 pEcorePipeHandleBOF = NULL;
1434 pEcorePipeHandleBOF = ecore_pipe_add(
1435 (Ecore_Pipe_Cb)MpVideoAppCtrlBeginOfPlayCb,
1438 if(pEcorePipeHandleEOF) {
1439 ecore_pipe_del(pEcorePipeHandleEOF);
1440 pEcorePipeHandleEOF = NULL;
1442 pEcorePipeHandleEOF = ecore_pipe_add(
1443 (Ecore_Pipe_Cb)MpVideoAppCtrlEndOfPlayCb,
1446 if (pEcorePipeHandleForBuffering) {
1447 ecore_pipe_del(pEcorePipeHandleForBuffering);
1448 pEcorePipeHandleForBuffering = NULL;
1450 pEcorePipeHandleForBuffering = ecore_pipe_add(
1451 (Ecore_Pipe_Cb)MpVideoAppCtrlBufferingCb,
1454 if (pEcorePipeHandleForBluetooth) {
1455 ecore_pipe_del(pEcorePipeHandleForBluetooth);
1456 pEcorePipeHandleForBluetooth = NULL;
1458 pEcorePipeHandleForBluetooth = ecore_pipe_add(
1459 (Ecore_Pipe_Cb)MpVideoAppCtrlBluetoothCb,
1462 if (pEcorePipeHandleForSubTitle) {
1463 ecore_pipe_del(pEcorePipeHandleForSubTitle);
1464 pEcorePipeHandleForSubTitle = NULL;
1466 pEcorePipeHandleForSubTitle = ecore_pipe_add(
1467 (Ecore_Pipe_Cb)MpVideoAppCtrlUpdateSubtitleCb,
1470 if (pEcorePipeHandleForResumed) {
1471 ecore_pipe_del(pEcorePipeHandleForResumed);
1472 pEcorePipeHandleForResumed = NULL;
1474 pEcorePipeHandleForResumed = ecore_pipe_add(
1475 (Ecore_Pipe_Cb)MpVideoAppCtrlResumeByRewCb,
1478 if (pEcorePipeHandleForInterruped) {
1479 ecore_pipe_del(pEcorePipeHandleForInterruped);
1480 pEcorePipeHandleForInterruped = NULL;
1482 pEcorePipeHandleForInterruped = ecore_pipe_add(
1483 (Ecore_Pipe_Cb)MpVideoAppCtrlPauseByInterrupteCb,
1493 bool MpVideoAppCtrlInit(VideoAppData *pAppData)
1496 VideoLogInfo("No exist appdata.");
1502 MpVideoAppCtrlFuncInit(pAppData);
1503 MpVideoSubtitleCtrlInit(pAppData);
1504 MpVideoViewCtrlInit(pAppData);
1506 if (!MpUtilCheckCallStatus()) {
1507 MpUtilNotifyPopUp(pAppData, _(MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL), MpVideoAppCtrlExitCb);
1511 if (!MpUtilCheckBatteryStatus()) {
1512 MpUtilNotifyPopUp(pAppData, dgettext("sys_string", MP_COM_BODY_LOW_BATTERY), MpVideoAppCtrlExitCb);
1516 if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
1517 if (!MpUtilCheckLocalFileExist(pAppData->szMediaUri)) {
1518 MpUtilNotifyPopUp(pAppData, "File not Exist", MpVideoAppCtrlExitCb);
1522 memset(pAppData->szVideoTitle, 0, STR_LEN_MAX);
1523 MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle);
1524 MpVideoViewCtrlChangeTitle(pAppData);
1527 MpVideoAppCtrlPipeInit(pAppData);
1529 MpVideoAppCtrlStart(pAppData);
1534 bool MpVideoAppCtrlResetForRelaunching(VideoAppData *pAppData)
1537 VideoLogInfo("No exist appdata.");
1543 MpVideoAppCtrlStop(pAppData);
1544 MpVideoCtrlMgrMediaDestroy(pAppData);
1545 MpUtilDeletePopupHandle();
1546 MpVideoViewCtrlDestroy((void *)pAppData);
1547 MpUtilMediaSvcDestoryVideoList();
1548 MpUtilMediaSvcFinishSession();
1549 MpUtilMediaSvcMtagIterateDestroyTagList();
1550 MpUtilMMCstatusNotiIgnore();
1551 MpUtilBatteryStatusNotiIgnore();
1552 MpVideoSubtitleCtrlDestroy();
1557 pAppData->bIsMute = FALSE;
1558 pAppData->nDuration = 0;
1559 pAppData->nSetPosition = 0;
1560 pAppData->nCurPosition = 0;
1561 pAppData->nSubtitleDuration = 0;
1562 pAppData->nBufferingPosition = 0;
1563 pAppData->nVideoWidthResolution = 0;
1564 pAppData->nVideoHeightResolution = 0;
1566 memset(pAppData->szSubtitle, 0, sizeof(char) * STR_LEN_MAX);
1567 memset(pAppData->szVideoTitle, 0, sizeof(char) * STR_LEN_MAX);
1568 memset(pAppData->szMediaUri, 0, sizeof(char) * STR_LEN_MAX);
1569 memset(pAppData->szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX);
1570 memset(pAppData->szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX);
1571 memset(pAppData->szTagNameForVideoList, 0, sizeof(char) * STR_LEN_MAX);
1573 pAppData->nPrePlayerState = MP_PLAYER_STATE_CLEAR;
1574 pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
1575 pAppData->nLaunchingAppType = MP_LAUNCH_APP_DEFAULT;
1576 pAppData->nVideoSortType = MP_MEDIA_SORT_BY_NONE;
1577 pAppData->nVideoListType = MP_VIDEO_LIST_TYPE_FOLDER;
1578 pAppData->nCurPlayerType = MP_STREAMING_PLAYER;
1580 memset(pAppData->szProxyAddress, 0, sizeof(char) * STR_LEN_MAX);
1581 memset(pAppData->szUserAgent, 0, sizeof(char) * STR_LEN_MAX);
1582 memset(pAppData->szCookie, 0, sizeof(char) * STR_LEN_MAX);
1584 MpUtilResetForRelaunching();
1589 bool MpVideoAppCtrlIsTopView(void* pUserData)
1592 VideoLogInfo("No exist pUserData.");
1598 return MpVideoViewCtrlIsTopView(pUserData);
1601 bool MpVideoAppCtrlIsExistPlayerHandle(void)
1605 return MpVideoCtrlMgrIsExistPlayerHandle();