Added new SeekTo for VideoKeyFrameSeeker
authorsrinivasa.mr <srinivasa.mr@samsung.com>
Tue, 21 May 2013 09:28:23 +0000 (18:28 +0900)
committersrinivasa.mr <srinivasa.mr@samsung.com>
Tue, 21 May 2013 09:28:23 +0000 (18:28 +0900)
Change-Id: Ie6954c913281e931d8d88113539bd1e71d103def
Signed-off-by: srinivasa.mr <srinivasa.mr@samsung.com>
src/FMedia_PlayerImpl.cpp
src/inc/FMedia_PlayerImpl.h

index 85a35a0..7f446ad 100644 (file)
@@ -988,6 +988,33 @@ CATCH:
 }
 
 result
+_PlayerImpl::SeekTo(long msTime, bool useKeyFrame)
+{
+       result r = E_SUCCESS;
+       int ret = ::PLAYER_ERROR_NONE;
+
+       SysAssertf(__hPlayer !=  null, "Not yet constructed! Construct() should be called before use");
+
+       ret = player_get_state(__hPlayer, &__corePlayerCurState);
+       r = MapExceptionToResult(ret);
+       SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Failed to perform player_get_state operation with 0x%x", GetErrorMessage(r), ret);
+
+       SysTryReturn(NID_MEDIA, ((__corePlayerCurState == ::PLAYER_STATE_PLAYING ) || (__corePlayerCurState == ::PLAYER_STATE_PAUSED )
+                       || (__corePlayerCurState == ::PLAYER_STATE_READY )),    E_INVALID_STATE, E_INVALID_STATE
+                       , "[E_INVALID_STATE] Player state is in an invalid state. Current state is %d", __corePlayerCurState);
+
+       SysTryReturn(NID_MEDIA, msTime >= 0, r = E_OUT_OF_RANGE, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The msTime is not greater than 0");
+
+       ret = player_seek(__hPlayer, (int)msTime, useKeyFrame, PlayerSeekCompletedCallBack, (void *)this);
+       r = MapExceptionToResult(ret);
+       SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Failed to perform player_seek operation with [0x%x]", GetErrorMessage(r), ret);
+       return r;
+
+CATCH:
+       return r;
+}
+
+result
 _PlayerImpl::SetVolume(int volume)
 {
        result r = E_SUCCESS;
index 38c0a6f..10294c5 100644 (file)
@@ -98,6 +98,7 @@ public:
        bool IsLooping(void)const;
        long GetDuration(void);
        result SeekTo(long msTime);
+       result SeekTo(long msTime, bool useKeyFrame);
        result SetVolume(int volume);
        result SetMute(bool mute);
        result SetLooping(bool looping);