Add out of storage handling in recorder
authorKyungYoun <ky99.won@samsung.com>
Fri, 31 May 2013 07:16:29 +0000 (16:16 +0900)
committerKyungYoun <ky99.won@samsung.com>
Fri, 31 May 2013 07:16:29 +0000 (16:16 +0900)
Change-Id: I8322f37fb343c3234e6eb90fda15f388cb933e55
Signed-off-by: KyungYoun <ky99.won@samsung.com>
src/FMedia_AudioRecorderImpl.cpp
src/FMedia_AudioRecorderImpl.h
src/FMedia_RecorderTypes.h
src/FMedia_VideoRecorderImpl.cpp
src/FMedia_VideoRecorderImpl.h

index 85e0d81..99caa69 100755 (executable)
@@ -66,8 +66,9 @@ static const _AudioCommandStateTable _AUDIO_COMMAND_STATE[] =
        {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_PAUSED, _RECORDER_STATE_REASON_NORMAL, recorder_pause, RECORDER_STATE_PAUSING },
        {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, recorder_commit, RECORDER_STATE_STOPPING },
        {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_CANCEL, recorder_cancel, RECORDER_STATE_STOPPING },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_SIZE_REACHED, recorder_commit, RECORDER_STATE_RECORDING },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_TIME_REACHED, recorder_commit, RECORDER_STATE_RECORDING },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_SIZE_REACHED, recorder_commit, RECORDER_STATE_STOPPING },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_TIME_REACHED, recorder_commit, RECORDER_STATE_STOPPING },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_OUT_OF_STORAGE, recorder_commit, RECORDER_STATE_STOPPING },
        {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_RECORDING, _RECORDER_STATE_REASON_NORMAL, recorder_start, RECORDER_STATE_STARTING },
        {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, recorder_commit, RECORDER_STATE_STOPPING },
        {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_CANCEL, recorder_cancel, RECORDER_STATE_STOPPING },
@@ -80,21 +81,21 @@ typedef struct
        recorder_state_e postState;
        _RecorderStateChangeReason reason;
        _RecorderEventType event;
-       RecorderErrorReason error;
+       result r;
 }_AudioCallbackEventTable;
 
 static const _AudioCallbackEventTable _AUDIO_CALLBACK_EVENT[] =
 {
-       {::RECORDER_STATE_READY, ::RECORDER_STATE_RECORDING, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_RECORDING_STARTED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_PAUSED, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_PAUSED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_STOPPED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_CANCEL, _RECORDER_EVENT_CANCELED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_SIZE_REACHED, _RECORDER_EVENT_ENDOF_FILESIZE, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_TIME_REACHED, _RECORDER_EVENT_ENDOF_RECTIME, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_OUT_OF_STORAGE, _RECORDER_EVENT_ERROR, RECORDER_ERROR_OUT_OF_STORAGE },
-       {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_RECORDING, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_RECORDING_STARTED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_STOPPED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_READY, ::RECORDER_STATE_CREATED, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_CLOSED, RECORDER_ERROR_NONE },
+       {::RECORDER_STATE_READY, ::RECORDER_STATE_RECORDING, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_RECORDING_STARTED, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_PAUSED, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_PAUSED, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_STOPPED, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_CANCEL, _RECORDER_EVENT_CANCELED, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_SIZE_REACHED, _RECORDER_EVENT_ENDOF_FILESIZE, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_TIME_REACHED, _RECORDER_EVENT_ENDOF_RECTIME, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_OUT_OF_STORAGE, _RECORDER_EVENT_STOPPED, E_STORAGE_FULL },
+       {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_RECORDING, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_RECORDING_STARTED, E_SUCCESS },
+       {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_STOPPED, E_SUCCESS },
+       {::RECORDER_STATE_READY, ::RECORDER_STATE_CREATED, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_CLOSED, E_SUCCESS },
 };
 
 _AudioRecorderImpl::_AudioRecorderImpl(void)
@@ -857,6 +858,32 @@ _AudioRecorderImpl::ConvertResult(int err) const
        return r;
 }
 
+RecorderErrorReason
+_AudioRecorderImpl::ConvertErrorReason(int err) const
+{
+       RecorderErrorReason r = RECORDER_ERROR_NONE;
+       if (err != ::RECORDER_ERROR_NONE)
+       {
+               SysLog(NID_MEDIA, "MM Err:0x%x", err);
+       }
+
+       // Global error
+       if (err == ::RECORDER_ERROR_NONE)
+       {
+               r = RECORDER_ERROR_NONE;
+       }
+       else if (err == 0x80000006)     //temporary code. until out of storage error type is added.
+       {
+               r = RECORDER_ERROR_OUT_OF_STORAGE;
+       }
+       else
+       {
+               r = RECORDER_ERROR_DEVICE_FAILED;
+       }
+
+       return r;
+}
+
 void
 _AudioRecorderImpl::SetState(RecorderState state)
 {
@@ -1049,7 +1076,7 @@ _AudioRecorderImpl::ChangeStateTo(recorder_state_e mmDestState, _RecorderStateCh
                                                   mmDestState);
                                SysLog(NID_MEDIA, "[E_SUCCESS] Found. result postState:%d, param mmDestState:%d", postState, mmDestState);
 
-                               __stateChangeReason = reason;           //for distinguish between stop and cancel and end reach.
+                               SetStateChangeReason(reason);           //for distinguish between stop and cancel
                        }
 
                        if (_AUDIO_COMMAND_STATE[i].state >= RECORDER_STATE_INITIALIZED && _AUDIO_COMMAND_STATE[i].state <= RECORDER_STATE_ERROR)
@@ -1075,6 +1102,12 @@ _AudioRecorderImpl::GetStateChangeReason(void) const
        return __stateChangeReason;
 }
 
+void
+_AudioRecorderImpl::SetStateChangeReason(_RecorderStateChangeReason reason)
+{
+       __stateChangeReason = reason;
+}
+
 _AudioRecorderEvent*
 _AudioRecorderImpl::GetEvent(void) const
 {
@@ -1098,7 +1131,7 @@ _AudioRecorderImpl::StateChangedCb(recorder_state_e previous, recorder_state_e c
        {
                if (previous == _AUDIO_CALLBACK_EVENT[i].prevState && current == _AUDIO_CALLBACK_EVENT[i].postState && pImpl->GetStateChangeReason() == _AUDIO_CALLBACK_EVENT[i].reason)
                {
-                       r = pImpl->GetEvent()->SendEvent(_AUDIO_CALLBACK_EVENT[i].event, _AUDIO_CALLBACK_EVENT[i].error, E_SUCCESS);
+                       r = pImpl->GetEvent()->SendEvent(_AUDIO_CALLBACK_EVENT[i].event, RECORDER_ERROR_NONE, _AUDIO_CALLBACK_EVENT[i].r);
                        SysTryReturnVoidResult(NID_MEDIA, r == E_SUCCESS, r, "[%s] Propagating. i:%d", GetErrorMessage(r), i);
                        break;
                }
@@ -1189,9 +1222,9 @@ _AudioRecorderImpl::ErrorCb(recorder_error_e error, recorder_state_e state, void
 
        SysLog(NID_MEDIA, "Error:%d, state:%d", error, state);
 
-       r = pImpl->GetEvent()->SendEvent(_RECORDER_EVENT_ERROR, RECORDER_ERROR_DEVICE_FAILED, E_SUCCESS);
+       r = pImpl->GetEvent()->SendEvent(_RECORDER_EVENT_ERROR, pImpl->ConvertErrorReason(error), E_SUCCESS);
        SysTryReturnVoidResult(NID_MEDIA, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
-
+       pImpl->SetStateChangeReason(_RECORDER_STATE_REASON_ERROR);
        return;
 }
 
index fd27e94..6937af2 100755 (executable)
@@ -557,6 +557,14 @@ private:
        result ConvertResult(int err) const;
 
        /**
+       * Converts the error from recorder to error reason.
+       *
+       * @return          An error reason
+       * @param[in]    err                      recorder error
+       */
+       RecorderErrorReason ConvertErrorReason(int err) const;
+
+       /**
        * Transfer the state.
        *
        * @return       An error code
@@ -576,6 +584,13 @@ private:
        _RecorderStateChangeReason GetStateChangeReason(void) const;
 
        /**
+       * Sets the state change reason
+       *
+       * @param[in]    reason  The state change reason
+       */
+       void SetStateChangeReason(_RecorderStateChangeReason reason);
+
+       /**
        * Re-load configuration.
        *
        * @return       An error code
index f270d54..73d0953 100755 (executable)
@@ -93,7 +93,8 @@ enum _RecorderStateChangeReason
        _RECORDER_STATE_REASON_END_SIZE_REACHED,\r
        _RECORDER_STATE_REASON_END_TIME_REACHED,\r
        _RECORDER_STATE_REASON_OUT_OF_STORAGE,\r
-};
+       _RECORDER_STATE_REASON_ERROR,\r
+};\r
 
 }}
 
index d6d9db6..6e807f9 100755 (executable)
@@ -76,8 +76,9 @@ static const _VideoCommandStateTable _VIDEO_COMMAND_STATE[] =
        {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_PAUSED, _RECORDER_STATE_REASON_NORMAL, recorder_pause, RECORDER_STATE_PAUSING },
        {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, recorder_commit, RECORDER_STATE_STOPPING },
        {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_CANCEL, recorder_cancel, RECORDER_STATE_STOPPING },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_SIZE_REACHED, recorder_commit, RECORDER_STATE_RECORDING },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_TIME_REACHED, recorder_commit, RECORDER_STATE_RECORDING },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_SIZE_REACHED, recorder_commit, RECORDER_STATE_STOPPING },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_TIME_REACHED, recorder_commit, RECORDER_STATE_STOPPING },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_OUT_OF_STORAGE, recorder_commit, RECORDER_STATE_STOPPING },
        {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_RECORDING, _RECORDER_STATE_REASON_NORMAL, recorder_start, RECORDER_STATE_STARTING },
        {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, recorder_commit, RECORDER_STATE_STOPPING },
        {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_CANCEL, recorder_cancel, RECORDER_STATE_STOPPING },
@@ -90,21 +91,21 @@ typedef struct
        recorder_state_e postState;
        _RecorderStateChangeReason reason;
        _RecorderEventType event;
-       RecorderErrorReason error;
+       result r;
 }_VideoCallbackEventTable;
 
 static const _VideoCallbackEventTable _VIDEO_CALLBACK_EVENT[] =
 {
-       {::RECORDER_STATE_READY, ::RECORDER_STATE_RECORDING, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_RECORDING_STARTED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_PAUSED, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_PAUSED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_STOPPED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_CANCEL, _RECORDER_EVENT_CANCELED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_SIZE_REACHED, _RECORDER_EVENT_ENDOF_FILESIZE, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_TIME_REACHED, _RECORDER_EVENT_ENDOF_RECTIME, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_OUT_OF_STORAGE, _RECORDER_EVENT_ERROR, RECORDER_ERROR_OUT_OF_STORAGE },
-       {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_RECORDING, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_RECORDING_STARTED, RECORDER_ERROR_NONE },
-       {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_STOPPED, RECORDER_ERROR_NONE },
-//     {::RECORDER_STATE_READY, ::RECORDER_STATE_CREATED, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_CLOSED, RECORDER_ERROR_NONE },
+       {::RECORDER_STATE_READY, ::RECORDER_STATE_RECORDING, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_RECORDING_STARTED, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_PAUSED, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_PAUSED, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_STOPPED, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_CANCEL, _RECORDER_EVENT_CANCELED, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_SIZE_REACHED, _RECORDER_EVENT_ENDOF_FILESIZE, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_END_TIME_REACHED, _RECORDER_EVENT_ENDOF_RECTIME, E_SUCCESS },
+       {::RECORDER_STATE_RECORDING, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_OUT_OF_STORAGE, _RECORDER_EVENT_STOPPED, E_STORAGE_FULL },
+       {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_RECORDING, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_RECORDING_STARTED, E_SUCCESS },
+       {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_READY, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_STOPPED, E_SUCCESS },
+//     {::RECORDER_STATE_READY, ::RECORDER_STATE_CREATED, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_CLOSED, E_SUCCESS },
 };
 
 typedef struct
@@ -405,6 +406,7 @@ _VideoRecorderImpl::Close(void)
        // Just send closed event
        r = GetEvent()->SendEvent(_RECORDER_EVENT_CLOSED, RECORDER_ERROR_NONE, E_SUCCESS);
        SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+       SetStateChangeReason(_RECORDER_STATE_REASON_NORMAL);
 
        return r;
 
@@ -465,21 +467,21 @@ _VideoRecorderImpl::Record(void)
 
                r = __pCoordinator->StartRecord();
                SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] video recorder start failed.", GetErrorMessage(r));
-               __stateChangeReason = _RECORDER_STATE_REASON_NORMAL;
+               SetStateChangeReason(_RECORDER_STATE_REASON_NORMAL);
                SetState(RECORDER_STATE_STARTING);
                break;
 
        case ::RECORDER_STATE_READY:
                r = __pCoordinator->StartRecord();
                SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] video recorder start failed.", GetErrorMessage(r));
-               __stateChangeReason = _RECORDER_STATE_REASON_NORMAL;
+               SetStateChangeReason(_RECORDER_STATE_REASON_NORMAL);
                SetState(RECORDER_STATE_STARTING);
                break;
 
        case ::RECORDER_STATE_PAUSED:
                r = __pCoordinator->StartRecord();
                SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] video recorder resume failed.", GetErrorMessage(r));
-               __stateChangeReason = _RECORDER_STATE_REASON_NORMAL;
+               SetStateChangeReason(_RECORDER_STATE_REASON_NORMAL);
                SetState(RECORDER_STATE_STARTING);
                break;
 
@@ -1316,7 +1318,7 @@ _VideoRecorderImpl::StateChangedCb(recorder_state_e previous, recorder_state_e c
        {
                if (previous == _VIDEO_CALLBACK_EVENT[i].prevState && current == _VIDEO_CALLBACK_EVENT[i].postState && pImpl->GetStateChangeReason() == _VIDEO_CALLBACK_EVENT[i].reason)                //for cancel
                {
-                       r = pImpl->GetEvent()->SendEvent(_VIDEO_CALLBACK_EVENT[i].event, _VIDEO_CALLBACK_EVENT[i].error, E_SUCCESS);
+                       r = pImpl->GetEvent()->SendEvent(_VIDEO_CALLBACK_EVENT[i].event, RECORDER_ERROR_NONE, _VIDEO_CALLBACK_EVENT[i].r);
                        SysLog(NID_MEDIA, "VIDEO_CALLBACK_EVENT(%d) is sent by StateChangedCb", _VIDEO_CALLBACK_EVENT[i].event);
                        SysTryReturnVoidResult(NID_MEDIA, r == E_SUCCESS, r, "[%s] Propagating. i:%d", GetErrorMessage(r), i);
                        break;
@@ -1397,8 +1399,9 @@ _VideoRecorderImpl::ErrorCb(recorder_error_e error, recorder_state_e state, void
        SysTryReturnVoidResult(NID_MEDIA, _CamRef::IsAlive(*pImpl), E_INVALID_OPERATION, "[E_INVALID_OPERATION] The object was already destroyed.");
        SysLog(NID_MEDIA, "Error:%d, state:%d", error, state);
 
-       r = pImpl->GetEvent()->SendEvent(_RECORDER_EVENT_ERROR, RECORDER_ERROR_DEVICE_FAILED, E_SUCCESS);
+       r = pImpl->GetEvent()->SendEvent(_RECORDER_EVENT_ERROR, pImpl->ConvertErrorReason(error), E_SUCCESS);
        SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+       pImpl->SetStateChangeReason(_RECORDER_STATE_REASON_ERROR);
 CATCH:
        return;
 }
@@ -1490,6 +1493,32 @@ _VideoRecorderImpl::ConvertResult(int err) const
        return r;
 }
 
+RecorderErrorReason
+_VideoRecorderImpl::ConvertErrorReason(int err) const
+{
+       RecorderErrorReason r = RECORDER_ERROR_NONE;
+       if (err != ::RECORDER_ERROR_NONE)
+       {
+               SysLog(NID_MEDIA, "MM Err:0x%x", err);
+       }
+
+       // Global error
+       if (err == ::RECORDER_ERROR_NONE)
+       {
+               r = RECORDER_ERROR_NONE;
+       }
+       else if (err == 0x80000006)     //temporary code. until out of storage error type is added.
+       {
+               r = RECORDER_ERROR_OUT_OF_STORAGE;
+       }
+       else
+       {
+               r = RECORDER_ERROR_DEVICE_FAILED;
+       }
+
+       return r;
+}
+
 void
 _VideoRecorderImpl::GetCodecString(const CodecType videoCodec, Tizen::Base::String& codec) const
 {
@@ -1545,7 +1574,7 @@ _VideoRecorderImpl::ChangeStateTo(recorder_state_e mmDestState, _RecorderStateCh
                                SysLog(NID_MEDIA, "[E_SUCCESS] Found. result mmState:%d, param mmDestState:%d", postState,
                                                        mmDestState);
 
-                               __stateChangeReason = reason;           //for distinguish between stop and cancel
+                               SetStateChangeReason(reason);           //for distinguish between stop and cancel
                        }
 
                        if (_VIDEO_COMMAND_STATE[i].state >= RECORDER_STATE_INITIALIZED && _VIDEO_COMMAND_STATE[i].state <= RECORDER_STATE_ERROR)
@@ -1570,6 +1599,12 @@ _VideoRecorderImpl::GetStateChangeReason(void) const
        return __stateChangeReason;
 }
 
+void
+_VideoRecorderImpl::SetStateChangeReason(_RecorderStateChangeReason reason)
+{
+       __stateChangeReason = reason;
+}
+
 recorder_state_e
 _VideoRecorderImpl::GetMmState(void) const
 {
index 1c42b4c..7ae9658 100755 (executable)
@@ -684,6 +684,14 @@ private:
        result ConvertResult(int err) const;
 
        /**
+       * Converts the error from recorder to error reason.
+       *
+       * @return          An error reason
+       * @param[in]    err                      recorder error
+       */
+       RecorderErrorReason ConvertErrorReason(int err) const;
+
+       /**
        * Converts codecType to String
        *
        * @return          void
@@ -704,7 +712,7 @@ private:
        result ChangeStateTo(recorder_state_e mmDestState, _RecorderStateChangeReason reason);
 
        /**
-       * Checks the operation is for completing.
+       * Checks the state change reason
        *
        * @return               The state change reason
        * @remarks      If the Cancel() is called, this value is false, because the Record() is not completed.
@@ -712,6 +720,13 @@ private:
        _RecorderStateChangeReason GetStateChangeReason(void) const;
 
        /**
+       * Sets the state change reason
+       *
+       * @param[in]    reason  The state change reason
+       */
+       void SetStateChangeReason(_RecorderStateChangeReason reason);
+
+       /**
        * Gets the recorder's state.
        *
        * @return                  The state