{::RECORDER_STATE_READY, ::RECORDER_STATE_CREATED, _RECORDER_STATE_REASON_NORMAL, _RECORDER_EVENT_CLOSED, E_SUCCESS },
};
+typedef struct
+{
+ recorder_state_e prevState;
+ recorder_state_e postState;
+ result ex;
+ RecorderErrorReason error;
+}_AudioExceptionToErrorTable;
+
+static const _AudioExceptionToErrorTable _AUDIO_EXCEPTION_TO_ERROR[] =
+{
+ {::RECORDER_STATE_READY, ::RECORDER_STATE_RECORDING, E_STORAGE_FULL, RECORDER_ERROR_OUT_OF_STORAGE},
+ {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_RECORDING, E_STORAGE_FULL, RECORDER_ERROR_OUT_OF_STORAGE},
+};
+
_AudioRecorderImpl::_AudioRecorderImpl(void)
: __pRecorderRef(null)
, __pAudioRecorderEvent(null)
r = pAudioCodecList->Add((CodecType)pInteger->ToInt());
SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
- SysLog(NID_MEDIA, "Pixel format : %d was added.", pInteger->ToInt());
+ SysLog(NID_MEDIA, "Codec : 0x%x was added.", pInteger->ToInt());
}
return pAudioCodecList.release();
r = pContainerList->Add((MediaContainerType)pInteger->ToInt());
SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
- SysLog(NID_MEDIA, "Pixel format : %d was added.", pInteger->ToInt());
+ SysLog(NID_MEDIA, "Container : 0x%x was added.", pInteger->ToInt());
}
return pContainerList.release();
SysTryReturn(NID_MEDIA, state == RECORDER_STATE_INITIALIZED
|| state == RECORDER_STATE_OPENED || state == RECORDER_STATE_ENDOF_FILE || state == RECORDER_STATE_CLOSED
|| state == RECORDER_STATE_STOPPED || state == RECORDER_STATE_PAUSED || state == RECORDER_STATE_RECORDING
- , E_INVALID_STATE, r, "[E_INVALID_STATE] state:%d, AudioRecorder is in an invalid state. AudioRecorder state is %d.", state);
+ , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] State:%d.", state);
err = recorder_attr_set_mute(__handle, mute);
r = ConvertResult(err);
{
r = E_OUT_OF_MEMORY;
}
- else if (err == ::RECORDER_ERROR_DEVICE)
+ else if (err == ::RECORDER_ERROR_DEVICE
+ || err == ::RECORDER_ERROR_ESD)
{
r = E_DEVICE_FAILED;
}
{
r = E_DEVICE_BUSY;
}
+ else if (err == ::RECORDER_ERROR_OUT_OF_STORAGE)
+ {
+ r = E_STORAGE_FULL;
+ }
else
{
r = E_UNKNOWN;
{
r = RECORDER_ERROR_NONE;
}
- else if (err == 0x80000006) //temporary code. until out of storage error type is added.
+ else if (err == ::RECORDER_ERROR_OUT_OF_STORAGE)
{
r = RECORDER_ERROR_OUT_OF_STORAGE;
}
CATCH:
SysLog(NID_MEDIA, "[%s] Real preState:%d, param mmDestState:%d", GetErrorMessage(r), preState, mmDestState);
- return r;
+ return CheckExceptionToError(preState, mmDestState, r);
+}
+
+result
+_AudioRecorderImpl::CheckExceptionToError(recorder_state_e prevState, recorder_state_e postState, result ex)
+{
+ result r = E_SUCCESS;
+ bool findFlag = false;
+ int tableTotalCount = sizeof(_AUDIO_EXCEPTION_TO_ERROR) / sizeof(_AUDIO_EXCEPTION_TO_ERROR[0]);
+ SysLog(NID_MEDIA, "State prev:%d, post:%d, exception:%s", prevState, postState, GetErrorMessage(ex));
+
+ for (int i = 0; i < tableTotalCount; i++)
+ {
+ if (prevState == _AUDIO_EXCEPTION_TO_ERROR[i].prevState && postState == _AUDIO_EXCEPTION_TO_ERROR[i].postState && ex == _AUDIO_EXCEPTION_TO_ERROR[i].ex)
+ {
+ r = GetEvent()->SendEvent(_RECORDER_EVENT_ERROR, _AUDIO_EXCEPTION_TO_ERROR[i].error, E_SUCCESS);
+ SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating. i:%d", GetErrorMessage(r), i);
+
+ SysLog(NID_MEDIA, "Exception is changed to E_SUCCESS and it sends error event.");
+ findFlag = true;
+ break;
+ }
+ }
+ return findFlag == true ? E_SUCCESS : ex;
}
_RecorderStateChangeReason
result ChangeStateTo(recorder_state_e mmDestState, _RecorderStateChangeReason reason);
/**
+ * Check the exception to error.
+ *
+ * @return An error code
+ * @param[in] prevState recorder's previous state
+ * @param[in] postState recorder's post state
+ * @param[in] ex The exception
+ * @remarks This method checkes the the recorder's exception. @n
+ * If the managed exception is occuring in specific states, recorder makes the exception to E_SUCCESS and sends error event @n
+ * to call IAudioRecorderEventListener::OnAudioRecorderErrorOccurred().
+ */
+ result CheckExceptionToError(recorder_state_e prevState, recorder_state_e postState, result ex);
+
+ /**
* Checks the operation is for completing.
*
* @return The state change reason
_CameraCoordinator::ConvertResult(int err) const
{
result r = E_SYSTEM;
- if (err != CAMERA_ERROR_NONE)
+ if (err != ::CAMERA_ERROR_NONE)
{
SysLog(NID_MEDIA, "MM Err:0x%x", err);
}
// Global error
- if (err == CAMERA_ERROR_NONE || err == RECORDER_ERROR_NONE)
+ if (err == ::CAMERA_ERROR_NONE || err == ::RECORDER_ERROR_NONE)
{
r = E_SUCCESS;
}
- else if (err == CAMERA_ERROR_INVALID_PARAMETER || err == RECORDER_ERROR_INVALID_PARAMETER)
+ else if (err == ::CAMERA_ERROR_INVALID_PARAMETER || err == ::RECORDER_ERROR_INVALID_PARAMETER)
{
r = E_INVALID_ARG;
}
- else if (err == CAMERA_ERROR_INVALID_STATE || err == RECORDER_ERROR_INVALID_STATE)
+ else if (err == ::CAMERA_ERROR_INVALID_STATE || err == ::RECORDER_ERROR_INVALID_STATE)
{
r = E_INVALID_STATE;
}
- else if (err == CAMERA_ERROR_OUT_OF_MEMORY || err == RECORDER_ERROR_OUT_OF_MEMORY)
+ else if (err == ::CAMERA_ERROR_OUT_OF_MEMORY || err == ::RECORDER_ERROR_OUT_OF_MEMORY)
{
r = E_OUT_OF_MEMORY;
}
- else if (err == CAMERA_ERROR_DEVICE || err == RECORDER_ERROR_DEVICE)
+ else if (err == ::CAMERA_ERROR_DEVICE
+ || err == ::RECORDER_ERROR_DEVICE
+ || err == ::RECORDER_ERROR_ESD)
{
r = E_DEVICE_FAILED;
}
- else if (err == CAMERA_ERROR_INVALID_OPERATION
- || err == CAMERA_ERROR_SECURITY_RESTRICTED
- || err == RECORDER_ERROR_INVALID_OPERATION
- || err == RECORDER_ERROR_SECURITY_RESTRICTED)
+ else if (err == ::CAMERA_ERROR_INVALID_OPERATION
+ || err == ::CAMERA_ERROR_SECURITY_RESTRICTED
+ || err == ::RECORDER_ERROR_INVALID_OPERATION
+ || err == ::RECORDER_ERROR_SECURITY_RESTRICTED)
{
r = E_SYSTEM;
}
- else if (err == CAMERA_ERROR_DEVICE_BUSY
- || err == CAMERA_ERROR_SOUND_POLICY
- || err == RECORDER_ERROR_SOUND_POLICY)
+ else if (err == ::CAMERA_ERROR_DEVICE_BUSY
+ || err == ::CAMERA_ERROR_SOUND_POLICY
+ || err == ::RECORDER_ERROR_SOUND_POLICY)
{
r = E_DEVICE_BUSY;
}
- else if (err == CAMERA_ERROR_DEVICE_NOT_FOUND)
+ else if (err == ::CAMERA_ERROR_DEVICE_NOT_FOUND)
{
r = E_DEVICE_UNAVAILABLE;
}
+ else if (err == ::RECORDER_ERROR_OUT_OF_STORAGE)
+ {
+ r = E_STORAGE_FULL;
+ }
else
{
r = E_UNKNOWN;
{null, CODEC_NONE, CODEC_NONE, MEDIA_CONTAINER_NONE}
};
+typedef struct
+{
+ recorder_state_e prevState;
+ recorder_state_e postState;
+ result ex;
+ RecorderErrorReason error;
+}_VideoExceptionToErrorTable;
+
+static const _VideoExceptionToErrorTable _VIDEO_EXCEPTION_TO_ERROR[] =
+{
+ {::RECORDER_STATE_READY, ::RECORDER_STATE_RECORDING, E_STORAGE_FULL, RECORDER_ERROR_OUT_OF_STORAGE},
+ {::RECORDER_STATE_PAUSED, ::RECORDER_STATE_RECORDING, E_STORAGE_FULL, RECORDER_ERROR_OUT_OF_STORAGE},
+};
+
_VideoRecorderImpl::_VideoRecorderImpl(void)
: __pCoordinator(null)
, __pRecorderRef(null)
CATCH:
- return r;
+ return CheckExceptionToError(mmState, ::RECORDER_STATE_RECORDING, r);
}
result
{
r = E_OUT_OF_MEMORY;
}
- else if (err == ::RECORDER_ERROR_DEVICE)
+ else if (err == ::RECORDER_ERROR_DEVICE
+ || err == ::RECORDER_ERROR_ESD)
{
r = E_DEVICE_FAILED;
}
{
r = E_DEVICE_BUSY;
}
+ else if (err == ::RECORDER_ERROR_OUT_OF_STORAGE)
+ {
+ r = E_STORAGE_FULL;
+ }
else
{
r = E_UNKNOWN;
{
r = RECORDER_ERROR_NONE;
}
- else if (err == 0x80000006) //temporary code. until out of storage error type is added.
+ else if (err == ::RECORDER_ERROR_OUT_OF_STORAGE)
{
r = RECORDER_ERROR_OUT_OF_STORAGE;
}
CATCH:
SysLog(NID_MEDIA, "[%s] Real mmState:%d, param mmState:%d", GetErrorMessage(r), preState, mmDestState);
- return r;
+ return CheckExceptionToError(preState, mmDestState, r);
+}
+
+result
+_VideoRecorderImpl::CheckExceptionToError(recorder_state_e prevState, recorder_state_e postState, result ex)
+{
+ result r = E_SUCCESS;
+ bool findFlag = false;
+ int tableTotalCount = sizeof(_VIDEO_EXCEPTION_TO_ERROR) / sizeof(_VIDEO_EXCEPTION_TO_ERROR[0]);
+ SysLog(NID_MEDIA, "State prev:%d, post:%d, exception:%s", prevState, postState, GetErrorMessage(ex));
+
+ for (int i = 0; i < tableTotalCount; i++)
+ {
+ if (prevState == _VIDEO_EXCEPTION_TO_ERROR[i].prevState && postState == _VIDEO_EXCEPTION_TO_ERROR[i].postState && ex == _VIDEO_EXCEPTION_TO_ERROR[i].ex)
+ {
+ r = GetEvent()->SendEvent(_RECORDER_EVENT_ERROR, _VIDEO_EXCEPTION_TO_ERROR[i].error, E_SUCCESS);
+ SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating. i:%d", GetErrorMessage(r), i);
+
+ SysLog(NID_MEDIA, "Exception is changed to E_SUCCESS and it sends error event.");
+ findFlag = true;
+ break;
+ }
+ }
+ return findFlag == true ? E_SUCCESS : ex;
}
_RecorderStateChangeReason
RecorderErrorReason ConvertErrorReason(int err) const;
/**
+ * Check the exception to error.
+ *
+ * @return An error code
+ * @param[in] prevState recorder's previous state
+ * @param[in] postState recorder's post state
+ * @param[in] ex The exception
+ * @remarks This method checkes the the recorder's exception. @n
+ * If the managed exception is occuring in specific states, recorder makes the exception to E_SUCCESS and sends error event @n
+ * to call IAudioRecorderEventListener::OnAudioRecorderErrorOccurred().
+ */
+ result CheckExceptionToError(recorder_state_e prevState, recorder_state_e postState, result ex);
+
+ /**
* Converts codecType to String
*
* @return void