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.
18 * @file VpVideoPlayerPresentationModel.cpp
19 * @brief This is the implementation file for PresentationModel class.
25 #include "VpVideoPlayerApp.h"
26 #include "VpVideoPlayerPresentationModel.h"
28 using namespace Tizen::App;
29 using namespace Tizen::Base;
30 using namespace Tizen::Base::Collection;
31 using namespace Tizen::Base::Runtime;
32 using namespace Tizen::Base::Utility;
33 using namespace Tizen::Content;
34 using namespace Tizen::Graphics;
35 using namespace Tizen::Io;
36 using namespace Tizen::Media;
37 using namespace Tizen::Ui::Controls;
39 static const int PROGRESS_TIMER_DURATION = 250;
40 static const int LONGKEY_TIMER_DURATION = 200;
42 static const int MILLISECOND = 1000;
43 static const int TEN_SEC = 10;
44 static const int TWO_SEC = 2;
45 static const int START_TIME = 0;
47 static const int INIT_CONTENT_INDEX = 0;
48 static const int MULTI_CONTENT_COUNT = 2;
49 static const int MAX_PROGRESS_RANGE = 100;
51 VideoPlayerPresentationModel*
52 VideoPlayerPresentationModel::__pVideoPlayerPresentationModel = null;
54 VideoPlayerPresentationModel::VideoPlayerPresentationModel(void)
56 , __pVideoPlayerEventListener(null)
57 , __pOverlayRegion(null)
58 , __pMediaPathArrayList(null)
60 , __pFastForwardTimer(null)
61 , __pFastRewindTimer(null)
62 , __playerSeekCompleted(true)
63 , __playerLastSeekCompleted(false)
64 , __playAfterSeek(true)
67 , __currentMediaIndex(INIT_CONTENT_INDEX)
68 , __nextMediaIndex(INIT_CONTENT_INDEX)
69 , __previousMediaIndex(INIT_CONTENT_INDEX)
73 VideoPlayerPresentationModel::~VideoPlayerPresentationModel(void)
79 delete __pMediaPathArrayList;
82 VideoPlayerPresentationModel*
83 VideoPlayerPresentationModel::GetInstance(void)
85 AppLogDebug("GetInstance");
87 if (__pVideoPlayerPresentationModel == null)
92 return __pVideoPlayerPresentationModel;
96 VideoPlayerPresentationModel::Construct(void)
99 bool fileExist = false;
104 String* mediaName = null;
105 wchar_t tempChar[2] = L"";
107 VideoPlayerApp* pVideoPlayerApp = static_cast<VideoPlayerApp*>(VideoPlayerApp::GetInstance());
109 String uriData = pVideoPlayerApp->GetUriData();
110 const String* pPath = null;
111 if (uriData.IsEmpty() == true)
113 const IMap* pArguments = pVideoPlayerApp->GetAppControlArguments();
114 pPath = static_cast<const String*>(pArguments->GetValue(String(APPCONTROL_KEY_PATH)));
116 __pMediaPathArrayList = new (std::nothrow) ArrayList();
117 r = __pMediaPathArrayList->Construct();
118 TryCatch(r == E_SUCCESS, , "__pMediaPathArrayList->Construct() failed:%s", GetErrorMessage(r));
122 currentPath = *pPath;
123 loopCount = currentPath.GetLength();
125 for (int i = 0; i < loopCount; ++i)
127 currentPath.GetCharAt(i, *tempChar);
129 if (delim != tempChar)
131 tempPath += tempChar;
135 fileExist = File::IsFileExist(tempPath);
136 if (fileExist == true)
138 AppLogDebug("Path : %ls", tempPath.GetPointer());
139 __pMediaPathArrayList->Add((new (std::nothrow) String(tempPath)));
144 tempPath += tempChar;
148 AppLogDebug("Path : %ls", tempPath.GetPointer());
149 __pMediaPathArrayList->Add((new (std::nothrow) String(tempPath)));
152 mediaName = static_cast<String*>(__pMediaPathArrayList->GetAt(INIT_CONTENT_INDEX));
153 __mediaPathName = *mediaName;
155 if (__pMediaPathArrayList->GetCount() < MULTI_CONTENT_COUNT)
157 __previousMediaIndex = INIT_CONTENT_INDEX;
158 __currentMediaIndex = INIT_CONTENT_INDEX;
159 __nextMediaIndex = INIT_CONTENT_INDEX;
163 __previousMediaIndex = INIT_CONTENT_INDEX;
164 __currentMediaIndex = INIT_CONTENT_INDEX;
165 __nextMediaIndex = __currentMediaIndex + 1;
170 __mediaPathName = uriData;
178 delete __pMediaPathArrayList;
179 __pMediaPathArrayList = null;
184 VideoPlayerPresentationModel::CreateInstance(void)
186 AppLogDebug("CreateInstance");
188 __pVideoPlayerPresentationModel = new (std::nothrow) VideoPlayerPresentationModel();
189 result r = __pVideoPlayerPresentationModel->Construct();
193 delete __pVideoPlayerPresentationModel;
194 __pVideoPlayerPresentationModel = null;
200 VideoPlayerPresentationModel::DestroyInstance(void)
202 delete __pVideoPlayerPresentationModel;
203 __pVideoPlayerPresentationModel = null;
207 VideoPlayerPresentationModel::GetVideoInfoN(const String& mediaLocalPath)
211 const IList* pInfoList = null;
212 const VideoStreamInfo* pInfo = null;
213 MediaStreamInfo* pStreamInfo = null;
215 if (__pPlayer->GetState() == PLAYER_STATE_PLAYING)
217 pStreamInfo = __pPlayer->GetCurrentMediaStreamInfoN();
218 pInfoList = pStreamInfo->GetVideoStreamInfoList();
220 pInfo = (const VideoStreamInfo*)pInfoList->GetAt(0);
222 rect.width = pInfo->GetWidth();
223 rect.height = pInfo->GetHeight();
225 __mediaWidth = pInfo->GetWidth();
226 __mediaHeight = pInfo->GetHeight();
232 rect.width = __mediaWidth;
233 rect.height = __mediaHeight;
240 VideoPlayerPresentationModel::ConstructPlayerInstanceWithBufferInfo(void)
242 result r = E_FAILURE;
243 BufferInfo bufferInfo;
245 r = __pOverlayRegion->GetBackgroundBufferInfo(bufferInfo);
246 TryCatch(r == E_SUCCESS, , "__pOverlayRegion->GetBackgroundBufferInfo() failed:%s", GetErrorMessage(r));
250 __pPlayer = new (std::nothrow) Player();
252 __pPlayer->Construct(*this, &bufferInfo);
254 AppLogDebug("__pPlayer [%x]", __pPlayer);
263 VideoPlayerPresentationModel::SeekTo(long msTime)
265 result r = E_FAILURE;
267 PlayerState playState = GetState();
271 case PLAYER_STATE_PLAYING:
273 case PLAYER_STATE_PAUSED:
275 r = __pPlayer->SeekTo(msTime);
276 TryCatch(r == E_SUCCESS, , "__pPlayer->SeekTo failed:%s", GetErrorMessage(r));
291 VideoPlayerPresentationModel::OnPlayerSeekCompleted(result r)
293 AppLogDebug("OnPlayerSeekCompleted");
295 __playerSeekCompleted = true;
297 if (__playerLastSeekCompleted == true)
299 if (__playAfterSeek == true)
301 result r = __pPlayer->Play();
302 TryReturnVoid(r == E_SUCCESS, "__pPlayer->Play():%s", GetErrorMessage(r));
304 CallOnPlayStateChanged(__pPlayer->GetState());
306 __pTimer->Start(PROGRESS_TIMER_DURATION);
309 __playerLastSeekCompleted = false;
314 VideoPlayerPresentationModel::SetPlayerBuffer(const BufferInfo& bufferInfo)
316 result r = E_FAILURE;
317 r = __pPlayer->SetRenderingBuffer(bufferInfo);
318 TryReturnVoid(r == E_SUCCESS, "__pPlayer->SetRenderingBuffer failed:%s", GetErrorMessage(r));
322 VideoPlayerPresentationModel::StartPlay(void)
324 result r = E_FAILURE;
326 PlayerState playState = __pPlayer->GetState();
327 AppLogDebug("StartPlay : %d", playState);
331 case PLAYER_STATE_ENDOFCLIP:
333 case PLAYER_STATE_INITIALIZED:
335 case PLAYER_STATE_CLOSED:
341 mediaPath = GetMediaPathName();
343 StringTokenizer strTok(mediaPath, delim);
345 while (strTok.HasMoreTokens())
347 strTok.GetNextToken(mediaName);
350 if (mediaPath.StartsWith(L"http://", 0) == true
351 || mediaPath.StartsWith(L"https://", 0) == true
352 || mediaPath.StartsWith(L"rtsp://", 0) == true
353 || mediaPath.StartsWith(L"rtp://", 0) == true)
356 r = mediaUri.SetUri(mediaPath);
360 r = __pPlayer->OpenUrl(mediaUri);
365 r = __pPlayer->OpenFile(mediaPath);
370 AppResource* pAppResource = Application::GetInstance()->GetAppResource();
371 String messageBoxString;
372 pAppResource->GetString(IDS_COM_POP_UNSUPPORTED_FILE_TYPE, messageBoxString);
373 MessageBox messageBox;
374 messageBox.Construct(L"", messageBoxString, MSGBOX_STYLE_OK, 3000);
376 messageBox.ShowAndWait(modalResult);
378 UiApp* pApp = UiApp::GetInstance();
383 r = __pPlayer->Play();
384 TryCatch(r == E_SUCCESS, , "__pPlayer->Play() failed:%s", GetErrorMessage(r));
386 CallOnPlayContentChanged(mediaName);
388 r = __pTimer->Start(PROGRESS_TIMER_DURATION);
389 TryCatch(r == E_SUCCESS, , "__pTimer->Start() failed:%s", GetErrorMessage(r));
394 case PLAYER_STATE_PAUSED:
396 r = __pPlayer->Play();
397 TryCatch(r == E_SUCCESS, , "__pPlayer->Play() failed:%s", GetErrorMessage(r));
399 r = __pTimer->Start(PROGRESS_TIMER_DURATION);
400 TryCatch(r == E_SUCCESS, , "__pTimer->Start() failed:%s", GetErrorMessage(r));
408 CallOnPlayStateChanged(__pPlayer->GetState());
415 VideoPlayerPresentationModel::StopPlay(void)
417 result r = E_FAILURE;
419 PlayerState playState = GetState();
420 AppLogDebug("StopPlay : %d", playState);
424 case PLAYER_STATE_PLAYING:
426 case PLAYER_STATE_PAUSED:
428 r = __pPlayer->Stop();
429 TryCatch(r == E_SUCCESS, , "__pPlayer->Stop() failed:%s", GetErrorMessage(r));
442 VideoPlayerPresentationModel::PausePlay(void)
444 result r = E_FAILURE;
445 PlayerState playState = GetState();
446 AppLogDebug("PausePlay : %d", playState);
448 if (playState == PLAYER_STATE_PLAYING)
450 r = __pPlayer->Pause();
451 TryCatch(r == E_SUCCESS, , "__pPlayer->Pause() failed:%s", GetErrorMessage(r));
455 AppLogDebug("Invalid state of player");
458 CallOnPlayStateChanged(__pPlayer->GetState());
465 VideoPlayerPresentationModel::ClosePlay(void)
467 result r = E_FAILURE;
468 PlayerState playState = GetState();
472 case PLAYER_STATE_OPENED:
474 case PLAYER_STATE_STOPPED:
476 case PLAYER_STATE_ENDOFCLIP:
478 r = __pPlayer->Close();
479 TryCatch(r == E_SUCCESS, , "__pPlayer->Close() failed:%s", GetErrorMessage(r));
492 VideoPlayerPresentationModel::GetState(void) const
494 return __pPlayer->GetState();
498 VideoPlayerPresentationModel::GetDuration(void) const
500 return __pPlayer->GetDuration();
504 VideoPlayerPresentationModel::GetPosition(void) const
506 return __pPlayer->GetPosition();
510 VideoPlayerPresentationModel::SetVideoPlayerEventListener(IVideoPlayerEventListener* pPlayerListener)
512 __pVideoPlayerEventListener = pPlayerListener;
516 VideoPlayerPresentationModel::SetOverlayRegion(OverlayRegion* pOverlay)
518 __pOverlayRegion = pOverlay;
522 VideoPlayerPresentationModel::SetRenderingBuffer(void)
524 BufferInfo bufferInfo;
526 __pOverlayRegion->GetBackgroundBufferInfo(bufferInfo);
527 __pPlayer->SetRenderingBuffer(bufferInfo);
529 if (__pPlayer->GetState() == PLAYER_STATE_PAUSED)
531 __pPlayer->SeekTo(__pPlayer->GetPosition());
536 VideoPlayerPresentationModel::OnPlayerOpened(result r)
538 AppLogDebug("OnPlayerOpened");
539 __pVideoPlayerEventListener->OnPlayOpened(r);
543 VideoPlayerPresentationModel::OnPlayerEndOfClip(void)
545 bool playNextContent = false;
547 AppLogDebug("OnPlayerEndOfClip");
550 __pFastForwardTimer->Cancel();
551 __pFastRewindTimer->Cancel();
553 __playerSeekCompleted = true;
555 if (__pMediaPathArrayList->GetCount() < MULTI_CONTENT_COUNT)
557 __previousMediaIndex = INIT_CONTENT_INDEX;
558 __currentMediaIndex = INIT_CONTENT_INDEX;
559 __nextMediaIndex = INIT_CONTENT_INDEX;
563 if (__currentMediaIndex == __pMediaPathArrayList->GetCount() - 1)
565 __previousMediaIndex = __currentMediaIndex;
566 __currentMediaIndex = INIT_CONTENT_INDEX;
567 __nextMediaIndex = __currentMediaIndex + 1;
571 __previousMediaIndex = __currentMediaIndex;
572 __currentMediaIndex = __nextMediaIndex;
573 __nextMediaIndex = __currentMediaIndex + 1;
577 if ((__currentMediaIndex > __previousMediaIndex)
578 && (__currentMediaIndex < __pMediaPathArrayList->GetCount()))
580 playNextContent = true;
584 playNextContent = false;
587 __pVideoPlayerEventListener->OnPlayEndOfClip(playNextContent);
591 VideoPlayerPresentationModel::OnPlayerBuffering(int percent)
593 AppLogDebug("OnPlayerBuffering");
594 __pVideoPlayerEventListener->OnPlayBuffering(percent);
598 VideoPlayerPresentationModel::OnPlayerErrorOccurred(PlayerErrorReason r)
600 AppLogDebug("OnPlayerErrorOccurred");
601 __pVideoPlayerEventListener->OnPlayErrorOccurred(r);
605 VideoPlayerPresentationModel::OnPlayerInterrupted(void)
607 AppLogDebug("OnPlayerInterrupted");
608 __pVideoPlayerEventListener->OnPlayInterrupted();
610 CallOnPlayStateChanged(__pPlayer->GetState());
614 VideoPlayerPresentationModel::OnPlayerAudioFocusChanged(void)
616 AppLog("OnPlayerAudioFocusChanged");
618 CallOnPlayStateChanged(__pPlayer->GetState());
622 VideoPlayerPresentationModel::OnPlayerReleased(void)
624 AppLogDebug("OnPlayerReleased");
625 __pVideoPlayerEventListener->OnPlayReleased();
629 VideoPlayerPresentationModel::CallOnPlayContentChanged(const String& fileName)
631 AppLogDebug("CallOnPlayContentChanged");
633 __pVideoPlayerEventListener->OnPlayContentChanged(fileName);
637 VideoPlayerPresentationModel::CallOnPlayTimeChanged(int currentProgressPos, String& currentPlayTime)
639 AppLogDebug("CallOnPlayTimeChanged");
641 __pVideoPlayerEventListener->OnPlayTimeChanged(currentProgressPos, currentPlayTime);
645 VideoPlayerPresentationModel::CallOnPlayStateChanged(PlayerState playState)
647 AppLogDebug("CallOnPlayStateChanged");
649 __pVideoPlayerEventListener->OnPlayStateChanged(playState);
653 VideoPlayerPresentationModel::InitTimer(void)
655 AppLogDebug("InitTimer");
657 __pTimer = new (std::nothrow) Timer();
658 __pTimer->Construct(*this);
660 __pFastForwardTimer = new (std::nothrow) Timer();
661 __pFastForwardTimer->Construct(*this);
663 __pFastRewindTimer = new (std::nothrow) Timer();
664 __pFastRewindTimer->Construct(*this);
668 VideoPlayerPresentationModel::DeleteTimer(void)
670 AppLogDebug("DeleteTimer");
676 __pFastForwardTimer->Cancel();
677 delete __pFastForwardTimer;
678 __pFastForwardTimer = null;
680 __pFastRewindTimer->Cancel();
681 delete __pFastRewindTimer;
682 __pFastRewindTimer = null;
686 VideoPlayerPresentationModel::OnTimerExpired(Timer& timer)
688 result r = E_FAILURE;
690 int currentProgressPos = 0;
692 String currentPlayTime;
694 if (timer.GetHashCode() == __pTimer->GetHashCode())
696 if (__pPlayer->GetState() == PLAYER_STATE_INITIALIZED || __pPlayer->GetState() == PLAYER_STATE_PLAYING)
698 dateTime.AddSeconds(__pPlayer->GetPosition() / MILLISECOND);
699 currentPlayTime.Format(20, L"%02d:%02d:%02d", dateTime.GetHour(), dateTime.GetMinute(), dateTime.GetSecond());
701 currentProgressPos = static_cast<int>(__pPlayer->GetPosition() / (__pPlayer->GetDuration() / MAX_PROGRESS_RANGE));
703 CallOnPlayTimeChanged(currentProgressPos, currentPlayTime);
705 __pTimer->Start(PROGRESS_TIMER_DURATION);
708 else if (timer.GetHashCode() == __pFastForwardTimer->GetHashCode())
710 msTime = __pPlayer->GetPosition();
712 msTime = msTime + (TWO_SEC * MILLISECOND);
714 if (msTime < __pPlayer->GetDuration())
716 if (__playerSeekCompleted == true)
719 TryReturnVoid(r == E_SUCCESS, "VideoPlayerPresentationModel::SeekTo() failed:%s", GetErrorMessage(r));
721 __playerSeekCompleted = false;
723 dateTime.AddSeconds(msTime / MILLISECOND);
724 currentPlayTime.Format(20, L"%02d:%02d:%02d", dateTime.GetHour(), dateTime.GetMinute(), dateTime.GetSecond());
726 currentProgressPos = static_cast<int>(__pPlayer->GetPosition() / (__pPlayer->GetDuration() / MAX_PROGRESS_RANGE));
728 CallOnPlayTimeChanged(currentProgressPos, currentPlayTime);
733 if (__playerSeekCompleted == true)
735 r = SeekTo(__pPlayer->GetDuration());
736 TryReturnVoid(r == E_SUCCESS, "VideoPlayerPresentationModel::SeekTo() failed:%s", GetErrorMessage(r));
737 __playerSeekCompleted = false;
739 dateTime.AddSeconds(__pPlayer->GetDuration() / MILLISECOND);
740 currentPlayTime.Format(20, L"%02d:%02d:%02d", dateTime.GetHour(), dateTime.GetMinute(), dateTime.GetSecond());
742 currentProgressPos = static_cast<int>(__pPlayer->GetPosition() / (__pPlayer->GetDuration() / MAX_PROGRESS_RANGE));
744 CallOnPlayTimeChanged(currentProgressPos, currentPlayTime);
747 __pFastForwardTimer->Start(LONGKEY_TIMER_DURATION);
749 else if (timer.GetHashCode() == __pFastRewindTimer->GetHashCode())
751 msTime = __pPlayer->GetPosition();
753 msTime = msTime - (TWO_SEC * MILLISECOND);
755 if (msTime > START_TIME)
757 if (__playerSeekCompleted == true)
760 TryReturnVoid(r == E_SUCCESS, "VideoPlayerPresentationModel::SeekTo() failed:%s", GetErrorMessage(r));
762 __playerSeekCompleted = false;
764 dateTime.AddSeconds(msTime / MILLISECOND);
765 currentPlayTime.Format(20, L"%02d:%02d:%02d", dateTime.GetHour(), dateTime.GetMinute(), dateTime.GetSecond());
767 currentProgressPos = static_cast<int>(__pPlayer->GetPosition() / (__pPlayer->GetDuration() / MAX_PROGRESS_RANGE));
769 CallOnPlayTimeChanged(currentProgressPos, currentPlayTime);
774 if (__playerSeekCompleted == true)
776 r = SeekTo(START_TIME);
777 TryReturnVoid(r == E_SUCCESS, "VideoPlayerPresentationModel::SeekTo() failed:%s", GetErrorMessage(r));
779 __playerSeekCompleted = false;
781 currentPlayTime.Format(20, L"%02d:%02d:%02d", START_TIME, START_TIME, START_TIME);
783 currentProgressPos = START_TIME;
785 CallOnPlayTimeChanged(currentProgressPos, currentPlayTime);
788 __pFastRewindTimer->Start(LONGKEY_TIMER_DURATION);
793 VideoPlayerPresentationModel::Forward(void)
795 result r = E_FAILURE;
798 int currentProgressPos = 0;
800 String currentPlayTime;
802 AppLogDebug("Forward");
804 if (__pPlayer->GetState() != PLAYER_STATE_ENDOFCLIP)
806 msTime = __pPlayer->GetPosition();
808 msTime = msTime + (TEN_SEC * MILLISECOND);
810 if (msTime < __pPlayer->GetDuration())
812 if (__playerSeekCompleted == true)
815 TryReturnVoid(r == E_SUCCESS, "SeekTo() failed:%s", GetErrorMessage(r));
817 dateTime.AddSeconds(msTime / MILLISECOND);
818 currentPlayTime.Format(20, L"%02d:%02d:%02d", dateTime.GetHour(), dateTime.GetMinute(), dateTime.GetSecond());
820 currentProgressPos = static_cast<int>(__pPlayer->GetPosition() / (__pPlayer->GetDuration() / MAX_PROGRESS_RANGE));
821 CallOnPlayTimeChanged(currentProgressPos, currentPlayTime);
823 __playerSeekCompleted = false;
828 if (__playerSeekCompleted == true)
830 r = SeekTo(__pPlayer->GetDuration());
831 TryReturnVoid(r == E_SUCCESS, "SeekTo() failed:%s", GetErrorMessage(r));
833 dateTime.AddSeconds(__pPlayer->GetDuration() / MILLISECOND);
834 currentPlayTime.Format(20, L"%02d:%02d:%02d", dateTime.GetHour(), dateTime.GetMinute(), dateTime.GetSecond());
836 currentProgressPos = static_cast<int>(__pPlayer->GetPosition() / (__pPlayer->GetDuration() / MAX_PROGRESS_RANGE));
837 CallOnPlayTimeChanged(currentProgressPos, currentPlayTime);
839 __playerSeekCompleted = false;
846 VideoPlayerPresentationModel::Rewind(void)
848 result r = E_FAILURE;
851 int currentProgressPos = 0;
853 String currentPlayTime;
855 AppLogDebug("Rewind");
857 if (__pPlayer->GetState() != PLAYER_STATE_ENDOFCLIP)
859 msTime = __pPlayer->GetPosition();
861 msTime = msTime - (TEN_SEC * MILLISECOND);
863 if (msTime < START_TIME)
865 if (__playerSeekCompleted == true)
867 r = SeekTo(START_TIME);
868 TryReturnVoid(r == E_SUCCESS, "SeekTo() failed:%s", GetErrorMessage(r));
870 currentPlayTime.Format(20, L"%02d:%02d:%02d", START_TIME, START_TIME, START_TIME);
872 currentProgressPos = static_cast<int>(__pPlayer->GetPosition() / (__pPlayer->GetDuration() / MAX_PROGRESS_RANGE));
873 CallOnPlayTimeChanged(currentProgressPos, currentPlayTime);
875 __playerSeekCompleted = false;
880 if (__playerSeekCompleted == true)
883 TryReturnVoid(r == E_SUCCESS, "SeekTo() failed:%s", GetErrorMessage(r));
885 dateTime.AddSeconds(msTime / MILLISECOND);
886 currentPlayTime.Format(20, L"%02d:%02d:%02d", dateTime.GetHour(), dateTime.GetMinute(), dateTime.GetSecond());
888 currentProgressPos = static_cast<int>(__pPlayer->GetPosition() / (__pPlayer->GetDuration() / MAX_PROGRESS_RANGE));
889 CallOnPlayTimeChanged(currentProgressPos, currentPlayTime);
891 __playerSeekCompleted = false;
898 VideoPlayerPresentationModel::FastForward(bool playAfterSeek)
900 AppLogDebug("FastForward");
902 if (__pPlayer->GetState() != PLAYER_STATE_ENDOFCLIP)
905 __playAfterSeek = playAfterSeek;
906 __pFastForwardTimer->Start(LONGKEY_TIMER_DURATION);
911 VideoPlayerPresentationModel::FastRewind(bool playAfterSeek)
913 AppLogDebug("FastRewind");
915 if (__pPlayer->GetState() != PLAYER_STATE_ENDOFCLIP)
918 __playAfterSeek = playAfterSeek;
919 __pFastRewindTimer->Start(LONGKEY_TIMER_DURATION);
924 VideoPlayerPresentationModel::StopFastForwardRewind(void)
926 AppLogDebug("StopFastForwardRewind");
928 if (__pPlayer->GetState() != PLAYER_STATE_ENDOFCLIP)
930 __pFastForwardTimer->Cancel();
931 __pFastRewindTimer->Cancel();
933 if (__playerSeekCompleted == true)
935 if (__playAfterSeek == true)
937 result r = __pPlayer->Play();
938 TryReturnVoid(r == E_SUCCESS, "__pPlayer->Play() failed:%s", GetErrorMessage(r));
940 CallOnPlayStateChanged(__pPlayer->GetState());
942 __pTimer->Start(PROGRESS_TIMER_DURATION);
947 __playerLastSeekCompleted = true;
953 VideoPlayerPresentationModel::GetMediaPathName(void) const
955 AppLogDebug("GetMediaPathName");
957 String* pMediaName = null;
959 pMediaName = static_cast<String*>(__pMediaPathArrayList->GetAt(__currentMediaIndex));
964 VideoPlayerPresentationModel::GetMediaCount(void) const
966 return __pMediaPathArrayList->GetCount();
970 VideoPlayerPresentationModel::GetCurrentMediaIndex(void) const
972 return __currentMediaIndex;
976 VideoPlayerPresentationModel::GetPreviousMediaIndex(void) const
978 return __previousMediaIndex;
982 VideoPlayerPresentationModel::InitializePlayer(void)
984 BufferInfo bufferInfo;
986 AppLogDebug("InitializePlayer");
989 __pOverlayRegion->GetBackgroundBufferInfo(bufferInfo);
991 __pPlayer = new (std::nothrow) Player();
992 result r = __pPlayer->Construct(*this, &bufferInfo);
994 AppLogDebug("__pPlayer [%x]", __pPlayer);