2 * Copyright (c) [2012] Samsung Electronics Co., Ltd.
4 * Licensed under the Flora License, Version 1.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include <mm_util_imgp.h>
21 #include <image_util.h>
24 #include "mp-video-log.h"
25 #include "mp-video-app-ctrl.h"
26 #include "mp-video-view-mgr.h"
27 #include "mp-util-media-service.h"
28 #include "mp-video-value-define.h"
29 #include "mp-video-string-define.h"
30 #include "mp-video-streaming-ctrl.h"
31 #include "mp-external-ug.h"
32 #include "mp-video-ctrl-mgr.h"
33 #include "mp-video-service-ctrl.h"
35 static int nPlayerErrorType = 0;
36 static int nPlayerInterruptType = 0;
37 static int nBufferingRate = 0;
38 static bool bWindowForegroundState = FALSE;
40 static MpPlayerInterrupteType g_nCurrentInterrupt = MP_PLAYER_INTERRUPTED_COMPLETED;
42 static Ecore_Pipe *pEcorePipeHandleForErrorMsg = NULL;
43 static Ecore_Pipe *pEcorePipeHandleBOF = NULL;
44 static Ecore_Pipe *pEcorePipeHandleEOF = NULL;
45 static Ecore_Pipe *pEcorePipeHandleForBuffering = NULL;
46 static Ecore_Pipe *pEcorePipeHandleForResumed = NULL;
47 static Ecore_Pipe *pEcorePipeHandleForInterruped = NULL;
48 static Ecore_Pipe *pEcorePipeHandlerForSeekComplete = NULL;
51 static void MpVideoAppCtrlStart(VideoAppData *pAppData);
52 static void MpVideoAppCtrlStop(VideoAppData *pAppData);
53 static void MpVideoAppCtrlPause(VideoAppData *pAppData);
54 static void MpVideoAppCtrlResume(VideoAppData *pAppData);
55 static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData);
56 static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData);
57 static void MpVideoAppCtrlFFDown(VideoAppData *pAppData);
58 static void MpVideoAppCtrlRewDown(VideoAppData *pAppData);
59 static void MpVideoAppCtrlFFUp(VideoAppData *pAppData);
60 static void MpVideoAppCtrlRewUp(VideoAppData *pAppData);
61 static void MpVideoAppCtrlSpeedReset(VideoAppData *pAppData);
62 static void MpVideoAppCtrlSpeedFF(VideoAppData *pAppData);
63 static void MpVideoAppCtrlSpeedRew(VideoAppData *pAppData);
64 static void MpVideoAppCtrlRotateScreen(VideoAppData *pAppData, int nRotateState);
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 MpVideoAppCtrlHideFinish(VideoAppData *pAppData);
70 static void MpVideoAppCtrlShowFinish(VideoAppData *pAppData);
71 static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData);
72 static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData);
73 static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData);
74 static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData);
75 static void MpVideoAppCtrlExit(VideoAppData *pAppData);
76 static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData);
77 static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData);
78 static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData);
79 static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData);
80 static void MpVideoAppCtrlShowVolume(VideoAppData *pAppData);
81 static void MpVideoAppCtrlHideVolume(VideoAppData *pAppData);
88 static void MpVideoAppCtrlUnSupportFormatErrorCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
92 VideoLogInfo("[ERR] No exist pUserData");
98 VideoAppData *pAppData = (VideoAppData *)pUserData;
100 MpUtilLcdNormalPowerUnlockForPause();
102 MpVideoAppCtrlEndOfStream(pAppData);
106 static void MpVideoAppCtrlExitCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
110 VideoLogInfo("[ERR] No exist pUserData");
116 VideoAppData *pAppData = (VideoAppData *)pUserData;
118 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
121 static int MpVideoAppCtrlPauseByInterrupteCb(void *pUserData)
125 VideoLogInfo("[ERR] No exist pUserData");
131 VideoAppData *pAppData = (VideoAppData *)pUserData;
133 MpVideoAppCtrlPause(pAppData);
135 g_nCurrentInterrupt = nPlayerInterruptType;
137 switch(nPlayerInterruptType)
139 case MP_PLAYER_INTERRUPTED_COMPLETED:
140 VideoLogInfo("MP_PLAYER_INTERRUPTED_COMPLETED");
143 case MP_PLAYER_INTERRUPTED_BY_OTHER_APP:
144 VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_OTHER_APP");
147 case MP_PLAYER_INTERRUPTED_BY_CALL:
148 VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_CALL");
151 case MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG:
152 VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG");
155 case MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT:
156 VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT");
159 case MP_PLAYER_INTERRUPTED_BY_ALARM:
160 VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_ALARM");
164 VideoLogInfo("OTHER");
171 static int MpVideoAppCtrlBeginOfPlayCb(void *pUserData)
175 VideoLogInfo("[ERR] No exist pUserData");
181 VideoAppData *pAppData = (VideoAppData *)pUserData;
183 int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
184 if(nTmpPlayerType == MP_STREAMING_PLAYER)
186 MpVideoCtrlMgrMediaPlay((void *)pAppData);
188 pAppData->bStartSeek = FALSE;
190 if(pAppData->nSetPosition > 0)
192 VideoLogInfo("Start position time : %dms", pAppData->nSetPosition);
193 MpVideoAppCtrlSetPosition(pAppData);
199 pAppData->bStartSeek = FALSE;
200 if(pAppData->nSetPosition > 0)
202 VideoLogInfo("Pending seek position time : %dms", pAppData->nSetPosition);
203 MpVideoAppCtrlSetPosition(pAppData);
204 pAppData->bStartSeek = TRUE;
207 if(MpVideoViewCtrlIsPauseByUser((void *)pAppData))
209 MpVideoCtrlMgrSetMute(TRUE);
212 if(!pAppData->bStartSeek)
214 MpVideoCtrlMgrMediaPlay((void *)pAppData);
218 MpVideoAppCtrlBeginOfStream(pAppData);
219 MpUtilLcdNormalPowerLockForResume();
224 static int MpVideoAppCtrlEndOfPlayCb(void *pUserData)
228 VideoLogInfo("[ERR] No exist pUserData");
234 VideoAppData *pAppData = (VideoAppData *)pUserData;
236 MpVideoViewCtrlPause(pAppData);
237 MpVideoAppCtrlStop(pAppData);
238 MpVideoCtrlMgrMediaDestroy(pAppData);
240 MpUtilLcdNormalPowerUnlockForPause();
242 MpVideoAppCtrlEndOfStream(pAppData);
247 static int MpVideoAppCtrlBufferingCb(void *pUserData)
251 VideoLogInfo("No exist pUserData");
255 if(nBufferingRate < 10)
257 MpVideoAppCtrlShowLayout((VideoAppData *)pUserData);
260 MpVideoViewSetBufferingRateForStreamingView(nBufferingRate, pUserData);
265 static int MpVideoAppCtrlSeekCompletePipeCb(void *pUserData)
269 VideoLogInfo("[ERR] No exist pUserData");
275 VideoAppData *pAppData = (VideoAppData *)pUserData;
277 if(pAppData->bStartSeek)
279 MpVideoCtrlMgrMediaPlay((void *)pAppData);
280 MpVideoAppCtrlBeginOfStream(pAppData);
281 MpUtilLcdNormalPowerLockForResume();
282 pAppData->bStartSeek = FALSE;
285 pAppData->bSeekComplete = TRUE;
287 if(pAppData->nSeekPosition > 0) {
288 pAppData->nSetPosition = pAppData->nSeekPosition;
289 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
290 pAppData->nSeekPosition = 0;
291 MpVideoViewCtrlUpdateProgressbar((void *)pAppData);
295 if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_PAUSE) {
297 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
298 pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE;
300 else if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_RESUME) {
302 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
303 pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE;
309 static void MpVideoAppCtrlSeekCompleteCb(void *pUserData)
313 VideoLogInfo("No exist pUserData");
318 VideoAppData *pAppData = (VideoAppData *)pUserData;
319 if(pEcorePipeHandlerForSeekComplete)
321 if(!ecore_pipe_write(pEcorePipeHandlerForSeekComplete, (void *)pAppData, sizeof(VideoAppData)))
323 VideoLogDebug("Fail to write MpVideoAppCtrlSeekCompleteCb.");
329 static int MpVideoAppCtrlResumeByRewCb(void *pUserData)
333 VideoLogInfo("No exist pUserData");
339 VideoAppData *pAppData = (VideoAppData *)pUserData;
341 MpVideoAppCtrlResume(pAppData);
346 static int MpVideoAppCtrlErrormsgCb(void *pUserData)
350 VideoLogInfo("No exist pUserData");
356 switch(MpVideoCtrlMgrGetErrorType(nPlayerErrorType))
358 case MP_PLAYER_ERROR_NONE:
359 VideoLogInfo("MP_PLAYER_ERROR_NONE");
362 case MP_PLAYER_ERROR_OUT_OF_MEMORY:
363 VideoLogInfo("MP_PLAYER_ERROR_OUT_OF_MEMORY");
364 MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb);
367 case MP_PLAYER_ERROR_INVALID_PARAMETER:
368 VideoLogInfo("MP_PLAYER_ERROR_INVALID_PARAMETER");
369 MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb);
372 case MP_PLAYER_ERROR_NO_SUCH_FILE:
373 VideoLogInfo("MP_PLAYER_ERROR_NO_SUCH_FILE");
374 MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_FILE_NOT_FOUND, MpVideoAppCtrlExitCb);
377 case MP_PLAYER_ERROR_INVALID_OPERATION:
378 VideoLogInfo("MP_PLAYER_ERROR_INVALID_OPERATION");
379 MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlUnSupportFormatErrorCb);
382 case MP_PLAYER_ERROR_SEEK_FAILED:
383 VideoLogInfo("MP_PLAYER_ERROR_SEEK_FAILED");
386 case MP_PLAYER_ERROR_INVALID_STATE:
387 VideoLogInfo("MP_PLAYER_ERROR_INVALID_STATE");
390 case MP_PLAYER_ERROR_NOT_SUPPORTED_FILE:
391 VideoLogInfo("MP_PLAYER_ERROR_NOT_SUPPORTED_FILE");
392 MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_POP_UNSUPPORTED_FILE_TYPE), MpVideoAppCtrlUnSupportFormatErrorCb);
395 case MP_PLAYER_ERROR_INVALID_URI:
396 VideoLogInfo("MP_PLAYER_ERROR_INVALID_URI");
397 MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_INVALID_URL, MpVideoAppCtrlExitCb);
400 case MP_PLAYER_ERROR_SOUND_POLICY:
401 VideoLogInfo("MP_PLAYER_ERROR_SOUND_POLICY");
404 case MP_PLAYER_ERROR_CONNECTION_FAILED:
405 VideoLogInfo("MP_PLAYER_ERROR_CONNECTION_FAILED");
406 MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_CONNECTION_FAILED, MpVideoAppCtrlExitCb);
409 case MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED:
410 VideoLogInfo("MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED");
414 MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb);
421 static void MpVideoAppCtrlPlayerPrepareCb(void *pUserData)
425 VideoLogInfo("No exist appdata.");
431 if(pEcorePipeHandleBOF)
433 if(!ecore_pipe_write(pEcorePipeHandleBOF, pUserData, sizeof(VideoAppData)))
435 VideoLogDebug("FAIL PIPE WRITE");
440 static void MpVideoAppCtrlPlayerCompletedCb(void *pUserData)
444 VideoLogInfo("No exist appdata.");
450 if(pEcorePipeHandleEOF)
452 if(!ecore_pipe_write(pEcorePipeHandleEOF, pUserData, sizeof(VideoAppData)))
454 VideoLogDebug("FAIL PIPE WRITE");
459 static void MpVideoAppCtrlPlayerInterruptedCb(player_interrupted_code_e nInterruptCode, void *pUserData)
463 VideoLogInfo("No exist appdata.");
469 nPlayerInterruptType = nInterruptCode;
471 if(pEcorePipeHandleForInterruped)
473 if(!ecore_pipe_write(pEcorePipeHandleForInterruped, pUserData, sizeof(VideoAppData)))
475 VideoLogDebug("FAIL PIPE WRITE");
480 static void MpVideoAppCtrlPlayerErrorCb(int nPlayerErrorCode, void *pUserData)
484 VideoLogInfo("No exist appdata.");
490 nPlayerErrorType = nPlayerErrorCode;
492 if(pEcorePipeHandleForErrorMsg)
494 if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg, pUserData, sizeof(VideoAppData)))
496 VideoLogDebug("FAIL PIPE WRITE");
501 static void MpVideoAppCtrlPlayerBufferingCb(int nPercent, void *pUserData)
505 VideoLogInfo("No exist appdata.");
509 VideoLogInfo("Buffering : %d%% ", nPercent);
511 nBufferingRate = nPercent;
513 if(pEcorePipeHandleForBuffering)
515 if(!ecore_pipe_write(pEcorePipeHandleForBuffering, pUserData, sizeof(VideoAppData)))
517 VideoLogDebug("FAIL PIPE WRITE");
522 static void MpVideoAppCtrlPlayerUpdateSubtitleCb(unsigned long nDuration, char* szText, void *pUserData)
526 VideoLogInfo("No exist appdata.");
536 void MpVideoAppCtrlFuncInit(VideoAppData *pAppData)
542 VideoLogInfo("[ERR]");
546 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStart = (void *)MpVideoAppCtrlStart;
547 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStop = (void *)MpVideoAppCtrlStop;
548 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause = (void *)MpVideoAppCtrlPause;
549 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume = (void *)MpVideoAppCtrlResume;
550 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause = (void *)MpVideoAppCtrlStopByAppPause;
551 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume = (void *)MpVideoAppCtrlStartByAppResume;
552 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFDown = (void *)MpVideoAppCtrlFFDown;
553 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewDown = (void *)MpVideoAppCtrlRewDown;
554 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFUp = (void *)MpVideoAppCtrlFFUp;
555 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewUp = (void *)MpVideoAppCtrlRewUp;
556 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF = (void *)MpVideoAppCtrlSpeedFF;
557 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew = (void *)MpVideoAppCtrlSpeedRew;
558 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset = (void *)MpVideoAppCtrlSpeedReset;
559 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRotateScreen = (void *)MpVideoAppCtrlRotateScreen;
560 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition = (void *)MpVideoAppCtrlGetPosition;
561 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition = (void *)MpVideoAppCtrlSetPosition;
562 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout = (void *)MpVideoAppCtrlHideLayout;
563 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout = (void *)MpVideoAppCtrlShowLayout;
564 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish = (void *)MpVideoAppCtrlHideFinish;
565 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish = (void *)MpVideoAppCtrlShowFinish;
566 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution = (void *)MpVideoAppCtrlGetVideoResolution;
567 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime = (void *)MpVideoAppCtrlReqDurationTime;
568 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlBeginOfStream = (void *)MpVideoAppCtrlBeginOfStream;
569 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlEndOfStream = (void *)MpVideoAppCtrlEndOfStream;
570 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit = (void *)MpVideoAppCtrlExit;
571 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartStreaming = (void *)MpVideoAppCtrlStartStreaming;
572 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching = (void *)MpVideoAppCtrlReLaunching;
573 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition = (void *)MpVideoAppCtrlGetBufferingPosition;
574 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume = (void *)MpVideoAppCtrlShowVolume;
575 pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume = (void *)MpVideoAppCtrlHideVolume;
578 static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData)
582 VideoLogInfo("No exist appdata.");
586 int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
587 if(nTmpPlayerType == MP_VIDEO_PLAYER ||
588 nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
589 nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
590 nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
591 nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
593 VideoLogInfo("Skip Normal Play mode");
597 if(MpUtilCheckRTSPType(pAppData->szMediaUri))
602 pAppData->nBufferingPosition = MpVideoCtrlMgrGetBufferingPosition();
605 static void MpVideoAppCtrlStart(VideoAppData *pAppData)
609 VideoLogInfo("No exist appdata.");
615 int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
616 if(nTmpPlayerType == MP_VIDEO_PLAYER ||
617 nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
618 nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
619 nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
620 nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
622 if(!MpUtilCheckLocalFileExist(pAppData->szMediaUri))
624 MpUtilNotifyPopUp(pAppData, MP_COM_POP_FILE_NOT_EXIST, MpVideoAppCtrlExitCb);
628 MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle, STR_LEN_MAX);
629 MpVideoViewCtrlChangeTitle(pAppData);
630 MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri,
631 (void *)MpUtilGetMainWindowXID(),
633 pAppData->szSubtitle,
636 MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb,
637 MpVideoAppCtrlPlayerInterruptedCb,
638 MpVideoAppCtrlPlayerErrorCb,
639 MpVideoAppCtrlPlayerBufferingCb,
640 MpVideoAppCtrlPlayerUpdateSubtitleCb,
643 if(!MpVideoCtrlMgrMediaRealizeAsync(MpVideoAppCtrlPlayerPrepareCb, (void *)pAppData))
645 MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlUnSupportFormatErrorCb);
649 else if(nTmpPlayerType == MP_STREAMING_PLAYER)
651 if(!MpVideoStreamingCtrlIsNetworkOn())
653 MpUtilNotifyPopUp(pAppData, MP_COM_CONNECTION_FAIL, MpVideoAppCtrlExitCb);
657 if(MpVideoStreamingCtrlInit((void *)pAppData))
659 VideoLogInfo("Connect to network.");
660 MpVideoAppCtrlStartStreaming((void *)pAppData);
665 static void MpVideoAppCtrlStop(VideoAppData *pAppData)
669 VideoLogInfo("No exist appdata.");
675 pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP;
676 MpVideoCtrlMgrMediaStop((void *)pAppData);
679 static void MpVideoAppCtrlPause(VideoAppData *pAppData)
683 VideoLogInfo("No exist appdata.");
689 if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE)
691 VideoLogInfo("Allready Pause video player.");
695 pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE;
697 MpVideoCtrlMgrMediaPause(pAppData);
698 MpVideoViewCtrlPause(pAppData);
699 MpVideoAppCtrlShowLayout(pAppData);
700 MpUtilLcdNormalPowerUnlockForPause();
703 static void MpVideoAppCtrlResume(VideoAppData *pAppData)
707 VideoLogInfo("No exist appdata.");
713 if(MpVideoViewCtrlIsPauseByUser((void *)pAppData))
718 if(pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY)
720 VideoLogInfo("Allready Resume video player.");
724 pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME;
725 MpUtilMultimediaKeyGrab();
727 MpVideoAppCtrlGetPosition(pAppData);
728 MpVideoCtrlMgrMediaResume(pAppData);
729 MpVideoViewCtrlResume(pAppData);
730 MpVideoAppCtrlShowLayout(pAppData);
731 MpUtilLcdNormalPowerLockForResume();
734 static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData)
738 VideoLogInfo("No exist appdata.");
742 if(!MpVideoCtrlMgrIsExistPlayerHandle())
744 VideoLogInfo("Not exist Player handle.");
750 MpVideoAppCtrlGetPosition(pAppData);
751 pAppData->nSetPosition = pAppData->nCurPosition;
752 VideoLogInfo("Current position time : %d", pAppData->nSetPosition);
753 MpVideoViewCtrlPause(pAppData);
754 MpVideoAppCtrlStop(pAppData);
755 MpVideoCtrlMgrMediaDestroy(pAppData);
756 MpUtilLcdNormalPowerUnlockForPause();
758 MpVideoViewCtrlResetProgressBar((void *)pAppData);
760 MpUtilMultimediaKeyUngrab();
762 int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
763 if(nTmpPlayerType == MP_STREAMING_PLAYER)
765 MpVideoViewSetBufferingRateForStreamingView(0, (void *)pAppData);
769 static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData)
773 VideoLogInfo("No exist appdata.");
779 if(bWindowForegroundState == FALSE)
781 VideoLogInfo("The Window of the video player is hided.");
784 MpVideoAppCtrlStart(pAppData);
785 MpVideoViewCtrlResume(pAppData);
786 MpVideoAppCtrlShowLayout(pAppData);
791 static void MpVideoAppCtrlFFDown(VideoAppData *pAppData)
796 static void MpVideoAppCtrlRewDown(VideoAppData *pAppData)
801 static void MpVideoAppCtrlFFUp(VideoAppData *pAppData)
806 static void MpVideoAppCtrlRewUp(VideoAppData *pAppData)
811 static void MpVideoAppCtrlRotateScreen(VideoAppData *pAppData, int nRotateState)
815 VideoLogInfo("No exist appdata.");
821 if(VIDEO_ROTATE_UNKNOWN > nRotateState || VIDEO_ROTATE_LANDSCAPE_REVERSE < nRotateState)
823 VideoLogInfo("Wrong rotate state. - %d", nRotateState);
827 MpVideoCtrlMgrRotateVideoScreen(nRotateState);
830 static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData)
832 pAppData->nCurPosition = MpVideoCtrlMgrGetPosition();
835 static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData)
839 VideoLogInfo("No exist appdata.");
845 MpVideoCtrlMgrSetPosition(pAppData->nSetPosition, (void *)MpVideoAppCtrlSeekCompleteCb, (void *)pAppData);
846 if(MpUtilCheckRTSPType(pAppData->szMediaUri))
848 VideoLogInfo("RTSP SEEK Start");
850 MpVideoAppCtrlBufferingCb((void *)pAppData);
854 static void MpVideoAppCtrlSpeedReset(VideoAppData *pAppData)
857 MpVideoAppCtrlGetPosition(pAppData);
858 MpVideoCtrlMgrSetPosition( pAppData->nCurPosition, (void *)MpVideoAppCtrlSeekCompleteCb, (void *)pAppData);
859 MpVideoCtrlMgrResetPlaySpeed((void *)pAppData);
862 static void MpVideoAppCtrlSpeedFF(VideoAppData *pAppData)
865 MpVideoCtrlMgrSetPlaySpeedUp((void *)pAppData);
868 static void MpVideoAppCtrlSpeedRew(VideoAppData *pAppData)
871 MpVideoCtrlMgrSetPlaySpeedDown((void *)pAppData);
874 static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData)
878 VideoLogInfo("No exist appdata.");
884 MpVideoViewHideLayout((void *)pAppData);
887 static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData)
891 VideoLogInfo("No exist appdata.");
897 MpVideoViewShowLayout((void *)pAppData);
900 static void MpVideoAppCtrlHideFinish(VideoAppData *pAppData)
904 VideoLogInfo("No exist appdata.");
910 MpVideoViewCtrlHideFinish((void *)pAppData, bWindowForegroundState);
913 static void MpVideoAppCtrlShowFinish(VideoAppData *pAppData)
917 VideoLogInfo("No exist appdata.");
923 MpVideoViewCtrlShowFinish((void *)pAppData);
926 static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData)
930 VideoLogInfo("No exist appdata.");
936 pAppData->nVideoWidthResolution = MpVideoCtrlMgrGetVideoWidthResolution();
937 pAppData->nVideoHeightResolution = MpVideoCtrlMgrGetVideoHeightResolution();
940 static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData)
944 VideoLogInfo("No exist appdata.");
950 pAppData->nDuration = MpVideoCtrlMgrGetDuration();
953 static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData)
957 VideoLogInfo("No exist appdata.");
963 MpUtilMultimediaKeyGrab();
965 MpVideoAppCtrlGetVideoResolution(pAppData);
966 pAppData->nDuration = MpVideoCtrlMgrGetDuration();
968 MpVideoViewCtrlInitAfterBeginOfStream((void*)pAppData);
970 if(MpVideoViewCtrlIsPauseByUser((void *)pAppData))
972 MpVideoAppCtrlPause(pAppData);
973 MpVideoCtrlMgrSetMute(FALSE);
976 if(MpVideoCtrlMgrIsOnlyAudio())
978 MpVideoViewCtrlShowNocontentImage((void*)pAppData);
982 MpVideoViewCtrlHideNocontentImage((void*)pAppData);
986 static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData)
990 VideoLogInfo("No exist appdata.");
996 int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
997 if(nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY)
999 if(pAppData->nCurPosition >= 0)
1001 MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, 0);
1005 VideoLogInfo("Invalid Plaing time or duration time.");
1008 MpVideoAppCtrlExit(pAppData);
1011 static void MpVideoAppCtrlExit(VideoAppData *pAppData)
1015 VideoLogInfo("No exist appdata.");
1021 if(pEcorePipeHandleForErrorMsg)
1023 ecore_pipe_del(pEcorePipeHandleForErrorMsg);
1024 pEcorePipeHandleForErrorMsg = NULL;
1027 if(pEcorePipeHandleBOF)
1029 ecore_pipe_del(pEcorePipeHandleBOF);
1030 pEcorePipeHandleBOF = NULL;
1033 if(pEcorePipeHandleEOF)
1035 ecore_pipe_del(pEcorePipeHandleEOF);
1036 pEcorePipeHandleEOF = NULL;
1039 if(pEcorePipeHandleForBuffering)
1041 ecore_pipe_del(pEcorePipeHandleForBuffering);
1042 pEcorePipeHandleForBuffering = NULL;
1045 if(pEcorePipeHandleForResumed)
1047 ecore_pipe_del(pEcorePipeHandleForResumed);
1048 pEcorePipeHandleForResumed = NULL;
1051 if(pEcorePipeHandleForInterruped)
1053 ecore_pipe_del(pEcorePipeHandleForInterruped);
1054 pEcorePipeHandleForInterruped = NULL;
1057 if(pEcorePipeHandlerForSeekComplete)
1059 ecore_pipe_del(pEcorePipeHandlerForSeekComplete);
1060 pEcorePipeHandlerForSeekComplete = NULL;
1063 MpVideoAppCtrlStop(pAppData);
1064 MpVideoCtrlMgrMediaDestroy(pAppData);
1065 MpUtilDeletePopupHandle();
1066 MpVideoViewCtrlDestroy((void *)pAppData);
1068 if(MpVideoServiceCtrlGetPlayerType() == MP_STREAMING_PLAYER)
1070 MpVideoStreamingCtrlDestroy((void *)pAppData);
1073 MpExternalUgDestroyAll();
1075 elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
1080 static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData)
1084 VideoLogInfo("No exist appdata.");
1090 char *szCookie = MpVideoServiceCtrlGetCookieForStreaming();
1093 strncpy(pAppData->szCookie, szCookie, STR_LEN_MAX - 1);
1096 MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri, (void *)MpUtilGetMainWindowXID(),
1097 NULL, NULL, (void *)pAppData);
1099 MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb,
1100 MpVideoAppCtrlPlayerInterruptedCb,
1101 MpVideoAppCtrlPlayerErrorCb,
1102 MpVideoAppCtrlPlayerBufferingCb,
1103 MpVideoAppCtrlPlayerUpdateSubtitleCb,
1106 MpVideoCtrlMgrMediaRealizeAsync(MpVideoAppCtrlPlayerPrepareCb, (void *)pAppData);
1108 MpVideoAppCtrlRotateScreen(pAppData, MpUtilGetRotationState());
1111 static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData)
1115 VideoLogInfo("No exist appdata.");
1121 MpVideoAppCtrlStop(pAppData);
1122 MpVideoCtrlMgrMediaDestroy(pAppData);
1124 MpVideoViewCtrlHideVolume();
1126 int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
1127 if(nTmpPlayerType == MP_VIDEO_PLAYER ||
1128 nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
1129 nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
1130 nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
1131 nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
1133 pAppData->nSetPosition = 0;
1134 MpVideoViewCtrlChangeTitle(pAppData);
1137 if(nTmpPlayerType == MP_STREAMING_PLAYER)
1139 MpVideoAppCtrlStartStreaming(pAppData);
1143 static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData)
1147 VideoLogInfo("No exist appdata.");
1153 if(pEcorePipeHandlerForSeekComplete)
1155 ecore_pipe_del(pEcorePipeHandlerForSeekComplete);
1156 pEcorePipeHandlerForSeekComplete = NULL;
1158 pEcorePipeHandlerForSeekComplete = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlSeekCompletePipeCb, (void *)pAppData);
1160 if(pEcorePipeHandleForErrorMsg)
1162 ecore_pipe_del(pEcorePipeHandleForErrorMsg);
1163 pEcorePipeHandleForErrorMsg = NULL;
1166 pEcorePipeHandleForErrorMsg = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlErrormsgCb, (void *)pAppData);
1168 if(pEcorePipeHandleBOF)
1170 ecore_pipe_del(pEcorePipeHandleBOF);
1171 pEcorePipeHandleBOF = NULL;
1174 pEcorePipeHandleBOF = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlBeginOfPlayCb, (void *)pAppData);
1176 if(pEcorePipeHandleEOF)
1178 ecore_pipe_del(pEcorePipeHandleEOF);
1179 pEcorePipeHandleEOF = NULL;
1182 pEcorePipeHandleEOF = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlEndOfPlayCb, (void *)pAppData);
1184 if(pEcorePipeHandleForBuffering)
1186 ecore_pipe_del(pEcorePipeHandleForBuffering);
1187 pEcorePipeHandleForBuffering = NULL;
1190 pEcorePipeHandleForBuffering = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlBufferingCb, (void *)pAppData);
1192 if(pEcorePipeHandleForResumed)
1194 ecore_pipe_del(pEcorePipeHandleForResumed);
1195 pEcorePipeHandleForResumed = NULL;
1198 pEcorePipeHandleForResumed = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlResumeByRewCb, (void *)pAppData);
1200 if(pEcorePipeHandleForInterruped)
1202 ecore_pipe_del(pEcorePipeHandleForInterruped);
1203 pEcorePipeHandleForInterruped = NULL;
1206 pEcorePipeHandleForInterruped = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlPauseByInterrupteCb, (void *)pAppData);
1209 static void MpVideoAppCtrlShowVolume(VideoAppData *pAppData)
1213 MpVideoViewCtrlShowVolume();
1216 static void MpVideoAppCtrlHideVolume(VideoAppData *pAppData)
1220 MpVideoViewCtrlHideVolume();
1227 bool MpVideoAppCtrlInit(VideoAppData *pAppData)
1231 VideoLogInfo("No exist appdata.");
1237 VideoLogInfo("Get rotation state from appcore. - %d", MpUtilGetRotationStateFromAppcore());
1239 MpVideoAppCtrlFuncInit(pAppData);
1240 MpVideoAppCtrlPipeInit(pAppData);
1241 MpVideoViewCtrlInit(pAppData);
1243 evas_object_show(pAppData->pMainWindow);
1244 elm_win_activate(pAppData->pMainWindow);
1246 if(!MpUtilIsCallOff())
1248 MpUtilNotifyPopUp(pAppData, _(MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL), MpVideoAppCtrlExitCb);
1252 MpVideoAppCtrlInitCheckCallStatus();
1254 if(!MpUtilCheckBatteryStatus())
1256 MpUtilNotifyPopUp(pAppData, MP_COM_BODY_LOW_BATTERY, MpVideoAppCtrlExitCb);
1260 MpVideoAppCtrlStart(pAppData);
1265 bool MpVideoAppCtrlResetForRelaunching(VideoAppData *pAppData)
1268 VideoLogInfo("No exist appdata.");
1274 MpVideoAppCtrlStop(pAppData);
1276 MpVideoCtrlMgrMediaDestroy(pAppData);
1277 MpUtilDeletePopupHandle();
1278 MpVideoViewCtrlDestroy((void *)pAppData);
1280 MpUtilMediaSvcFinishSession();
1281 MpUtilBatteryStatusNotiIgnore();
1284 nPlayerErrorType = 0;
1285 nPlayerInterruptType = 0;
1287 pAppData->nDuration = 0;
1288 pAppData->nSetPosition = 0;
1289 pAppData->nCurPosition = 0;
1290 pAppData->nBufferingPosition = 0;
1291 pAppData->nVideoWidthResolution = 0;
1292 pAppData->nVideoHeightResolution = 0;
1294 memset(pAppData->szVideoTitle, 0, sizeof(char) * STR_LEN_MAX);
1295 memset(pAppData->szMediaUri, 0, sizeof(char) * STR_LEN_MAX);
1296 memset(pAppData->szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX);
1297 memset(pAppData->szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX);
1299 pAppData->nPrePlayerState = MP_PLAYER_STATE_CLEAR;
1300 pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
1301 pAppData->nPlayingSpeed = 0;
1303 memset(pAppData->szProxyAddress, 0, sizeof(char) * STR_LEN_MAX);
1304 memset(pAppData->szUserAgent, 0, sizeof(char) * STR_LEN_MAX);
1305 memset(pAppData->szCookie, 0, sizeof(char) * STR_LEN_MAX);
1307 MpUtilResetForRelaunching();
1309 MpVideoAppCtrlInitCheckCallStatus();
1314 bool MpVideoAppCtrlIsTopView(void* pUserData)
1318 VideoLogInfo("No exist pUserData.");
1324 return MpVideoViewCtrlIsTopView(pUserData);
1327 bool MpVideoAppCtrlIsExistPlayerHandle(void)
1331 return MpVideoCtrlMgrIsExistPlayerHandle();
1334 void MpVideoAppCtrlSetForCheckingForegroundwindow(bool bForwgroundState)
1338 bWindowForegroundState = bForwgroundState;
1341 void MpVideoAppCtrlSetRotation(int nRotateMode, void *pUserData)
1345 MpVideoViewCtrlSetRotation(nRotateMode, TRUE, pUserData);
1348 bool MpVideoAppCtrlIsCheckCallStatus(void)
1352 bool bCheckCallStatus = FALSE;
1354 if(g_nCurrentInterrupt == MP_PLAYER_INTERRUPTED_BY_CALL)
1356 bCheckCallStatus = TRUE;
1359 return bCheckCallStatus;
1362 void MpVideoAppCtrlInitCheckCallStatus(void)
1366 g_nCurrentInterrupt = MP_PLAYER_INTERRUPTED_COMPLETED;