Applied Error handling guidelines. 67/55767/2 accepted/tizen/mobile/20160104.055002 accepted/tizen/tv/20160104.055029 accepted/tizen/wearable/20160104.055046 submit/tizen/20160104.050911
authorDeepak Srivastava <srivastava.d@samsung.com>
Tue, 29 Dec 2015 07:27:21 +0000 (12:57 +0530)
committerDeepak Srivastava <srivastava.d@samsung.com>
Wed, 30 Dec 2015 06:10:43 +0000 (11:40 +0530)
Change-Id: I0def588aa5cec7f9a663e31106d44c206c43049f
Signed-off-by: Deepak Srivastava <srivastava.d@samsung.com>
include/mediademuxer.h
src/mediademuxer.c

index 1f52589e620235fb3790325f94bfb3373eca454f..33b9d3e09b3284b71ab5d53c75888ce7e84124a6 100755 (executable)
 extern "C" {
 #endif /* __cplusplus */
 
-#ifndef TIZEN_ERROR_MEDIA_DEMUXER
-#define TIZEN_ERROR_MEDIA_DEMUXER -0x04000000
-#endif
-
 /**
  * @file mediademuxer.h
  * @brief This file contains the capi media demuxer API.
@@ -115,6 +111,8 @@ typedef void (*mediademuxer_eos_cb) (int track_num, void *user_data);
  * @param[out] demuxer    A new handle to media demuxer
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
+ * @retval #MEDIADEMUXER_ERROR_OUT_OF_MEMORY Out of memory
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @post The media demuxer state will be #MEDIADEMUXER_STATE_IDLE.
  * @see mediademuxer_destroy()
@@ -133,7 +131,7 @@ int mediademuxer_create(mediademuxer_h *demuxer);
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
- * @retval #MEDIADEMUXER_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @retval #MEDIADEMUXER_ERROR_INVALID_PATH Invalid path
  * @pre The media muxer state will be #MEDIADEMUXER_STATE_IDLE by calling mediademuxer_create() function.
  * */
@@ -148,6 +146,7 @@ int mediademuxer_set_data_source(mediademuxer_h demuxer, const char *path);
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @pre The media demuxer state should be #MEDIADEMUXER_STATE_IDLE.
  * @post The media demuxer state will be #MEDIADEMUXER_STATE_READY.
  * @see mediademuxer_set_data_source()
@@ -163,6 +162,7 @@ int mediademuxer_prepare(mediademuxer_h demuxer);
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @pre The media demuxer state should be #MEDIADEMUXER_STATE_READY.
  * @see mediademuxer_prepare()
  * @see mediademuxer_select_track()
@@ -178,6 +178,7 @@ int mediademuxer_get_track_count(mediademuxer_h demuxer, int *count);
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @pre The media demuxer state should be #MEDIADEMUXER_STATE_READY.
  * @see mediademuxer_get_track_count()
  * @see mediademuxer_start()
@@ -193,6 +194,7 @@ int mediademuxer_select_track(mediademuxer_h demuxer, int track_index);
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @pre The media demuxer state should be #MEDIADEMUXER_STATE_READY.
  * @post The media demuxer state will be #MEDIADEMUXER_STATE_DEMUXING.
  * @see mediademuxer_prepare()
@@ -213,6 +215,7 @@ int mediademuxer_start(mediademuxer_h demuxer);
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @pre The media demuxer state must be set to #MEDIADEMUXER_STATE_DEMUXING by calling
  *      mediademuxer_start() or set to #MEDIADEMUXER_STATE_READY by calling mediademuxer_prepare().
  * @see mediademuxer_get_track_count()
@@ -235,6 +238,7 @@ int mediademuxer_get_track_info(mediademuxer_h demuxer, int track_index, media_f
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @pre The media demuxer state should be #MEDIADEMUXER_STATE_DEMUXING.
  * @see mediademuxer_start()
  * @see mediademuxer_get_track_info()
@@ -255,6 +259,7 @@ int mediademuxer_read_sample(mediademuxer_h demuxer, int track_index, media_pack
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
 * @pre The media demuxer state should be #MEDIADEMUXER_STATE_DEMUXING.
  * @see mediademuxer_read_sample()
  * @see mediademuxer_stop()
@@ -270,6 +275,7 @@ int mediademuxer_seek(mediademuxer_h demuxer, int64_t pos);
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @pre The media demuxer state must be set to #MEDIADEMUXER_STATE_DEMUXING by calling
  *      mediademuxer_read_sample() or set to #MEDIADEMUXER_STATE_READY by calling mediademuxer_select_track().
  * @see mediademuxer_select_track()
@@ -286,6 +292,7 @@ int mediademuxer_unselect_track(mediademuxer_h demuxer, int track_index);
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @pre The media demuxer state must be set to #MEDIADEMUXER_STATE_DEMUXING.
  * @post The media demuxer state will be in  #MEDIADEMUXER_READY.
  * @see mediademuxer_start()
@@ -302,6 +309,7 @@ int mediademuxer_stop(mediademuxer_h demuxer);
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @pre The media demuxer state should be #MEDIADEMUXER_STATE_READY.
  * @post The media demuxer state will be #MEDIADEMUXER_STATE_IDLE.
  * @see mediademuxer_prepare()
@@ -316,6 +324,7 @@ int mediademuxer_unprepare(mediademuxer_h demuxer);
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIADEMUXER_ERROR_INVALID_OPERATION Invalid Operation
  * @pre Create a media demuxer handle by calling mediademuxer_create() function.
  * @post The media demuxer state will be #MEDIADEMUXER_STATE_NONE.
  * @see mediademuxer_create()
@@ -338,13 +347,6 @@ int mediademuxer_get_state(mediademuxer_h demuxer, mediademuxer_state *state);
 
 /**
  * @brief Registers an error callback function to be invoked when an error occurs.
- * @details Following error codes can be delivered.
- *          #MEDIADEMUXER_ERROR_INVALID_OPERATION,
- *          #MEDIADEMUXER_ERROR_NOT_SUPPORTED,
- *          #MEDIADEMUXER_ERROR_INVALID_PATH,
- *          #MEDIADEMUXER_ERROR_RESOURCE_LIMIT,
- *          #MEDIADEMUXER_ERROR_SEEK_FAILED,
- *          #MEDIADEMUXER_ERROR_DRM_NOT_PERMITTED
  * @since_tizen 3.0
  * @param[in] demuxer   The media demuxer handle
  * @param[in] callback  Callback function pointer
@@ -354,6 +356,7 @@ int mediademuxer_get_state(mediademuxer_h demuxer, mediademuxer_state *state);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
  * @pre Create a media demuxer handle by calling mediademuxer_create() function.
  * @post mediademuxer_error_cb() will be invoked.
  * @see mediademuxer_unset_error_cb()
@@ -368,6 +371,7 @@ int mediademuxer_set_error_cb(mediademuxer_h demuxer, mediademuxer_error_cb call
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
  * @see mediademuxer_error_cb()
  * */
 int mediademuxer_unset_error_cb(mediademuxer_h demuxer);
@@ -383,6 +387,7 @@ int mediademuxer_unset_error_cb(mediademuxer_h demuxer);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
  * @pre Create a media demuxer handle by calling mediademuxer_create() function.
  * @post mediademuxer_eos_cb() will be invoked.
  * @see mediademuxer_unset_eos_cb()
@@ -397,6 +402,7 @@ int mediademuxer_set_eos_cb(mediademuxer_h demuxer, mediademuxer_eos_cb callback
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIADEMUXER_ERROR_NONE Successful
  * @retval #MEDIADEMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIADEMUXER_ERROR_INVALID_STATE Invalid state
  * @see mediademuxer_eos_cb()
  * */
 int mediademuxer_unset_eos_cb(mediademuxer_h demuxer);
index 334e182fe087391f5df9bb0f1fa9219167e09508..a48a6498b1260b7e89c8dbda8aa87b9b5213b517 100755 (executable)
@@ -18,8 +18,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <dlog.h>
-#include <mm.h>
-#include <mm_types.h>
 
 #include <mediademuxer.h>
 #include <mediademuxer_private.h>
@@ -121,7 +119,11 @@ int mediademuxer_prepare(mediademuxer_h demuxer)
        handle = (mediademuxer_s *)(demuxer);
        if (handle && handle->demux_state == MEDIADEMUXER_IDLE) {
                ret = md_prepare((MMHandleType) (handle->md_handle));
-               if (ret == MEDIADEMUXER_ERROR_NONE)
+               if (ret != MEDIADEMUXER_ERROR_NONE) {
+                       MD_E("[CoreAPI][%s] DEMUXER_ERROR_INVALID_OPERATION(0x%08x)",
+                               __FUNCTION__, MEDIADEMUXER_ERROR_INVALID_OPERATION);
+                       return MEDIADEMUXER_ERROR_INVALID_OPERATION;
+               } else
                        handle->demux_state = MEDIADEMUXER_READY;
        } else {
                if (handle->demux_state != MEDIADEMUXER_IDLE)
@@ -142,6 +144,11 @@ int mediademuxer_get_track_count(mediademuxer_h demuxer, int *count)
        handle = (mediademuxer_s *)(demuxer);
        if (handle && handle->demux_state == MEDIADEMUXER_READY) {
                ret = md_get_track_count((MMHandleType) (handle->md_handle), count);
+               if (ret != MEDIADEMUXER_ERROR_NONE) {
+                       MD_E("[CoreAPI][%s] DEMUXER_ERROR_INVALID_OPERATION(0x%08x)",
+                               __FUNCTION__, MEDIADEMUXER_ERROR_INVALID_OPERATION);
+                       return MEDIADEMUXER_ERROR_INVALID_OPERATION;
+               }
        } else {
                if (handle->demux_state != MEDIADEMUXER_READY)
                        return MEDIADEMUXER_ERROR_INVALID_STATE;
@@ -161,6 +168,11 @@ int mediademuxer_select_track(mediademuxer_h demuxer, int track_index)
        handle = (mediademuxer_s *)(demuxer);
        if (handle && handle->demux_state == MEDIADEMUXER_READY) {
                ret = md_select_track((MMHandleType) (handle->md_handle), track_index);
+               if (ret != MEDIADEMUXER_ERROR_NONE) {
+                       MD_E("[CoreAPI][%s] DEMUXER_ERROR_INVALID_OPERATION(0x%08x)",
+                               __FUNCTION__, MEDIADEMUXER_ERROR_INVALID_OPERATION);
+                       return MEDIADEMUXER_ERROR_INVALID_OPERATION;
+               }
        } else {
                if (handle->demux_state != MEDIADEMUXER_READY)
                        return MEDIADEMUXER_ERROR_INVALID_STATE;
@@ -180,7 +192,11 @@ int mediademuxer_start(mediademuxer_h demuxer)
        handle = (mediademuxer_s *)(demuxer);
        if (handle && handle->demux_state == MEDIADEMUXER_READY) {
                ret = md_start((MMHandleType) (handle->md_handle));
-               if (ret == MEDIADEMUXER_ERROR_NONE)
+               if (ret != MEDIADEMUXER_ERROR_NONE) {
+                       MD_E("[CoreAPI][%s] DEMUXER_ERROR_INVALID_OPERATION(0x%08x)",
+                               __FUNCTION__, MEDIADEMUXER_ERROR_INVALID_OPERATION);
+                       return MEDIADEMUXER_ERROR_INVALID_OPERATION;
+               } else
                        handle->demux_state = MEDIADEMUXER_DEMUXING;
        } else {
                if (handle->demux_state != MEDIADEMUXER_READY)
@@ -207,6 +223,11 @@ int mediademuxer_get_track_info(mediademuxer_h demuxer, int track_index,
        if (handle && (handle->demux_state == MEDIADEMUXER_READY
                || handle->demux_state == MEDIADEMUXER_DEMUXING)) {
                ret = md_get_track_info((MMHandleType) (handle->md_handle), track_index, format);
+               if (ret != MEDIADEMUXER_ERROR_NONE) {
+                       MD_E("[CoreAPI][%s] DEMUXER_ERROR_INVALID_OPERATION(0x%08x)",
+                               __FUNCTION__, MEDIADEMUXER_ERROR_INVALID_OPERATION);
+                       return MEDIADEMUXER_ERROR_INVALID_OPERATION;
+               }
        } else {
                if (handle->demux_state != MEDIADEMUXER_READY)
                        return MEDIADEMUXER_ERROR_INVALID_STATE;
@@ -229,6 +250,11 @@ int mediademuxer_read_sample(mediademuxer_h demuxer, int track_index,
                return MEDIADEMUXER_ERROR_INVALID_PARAMETER;
        if (handle && handle->demux_state == MEDIADEMUXER_DEMUXING) {
                ret = md_read_sample((MMHandleType) (handle->md_handle), track_index, outbuf);
+               if (ret != MEDIADEMUXER_ERROR_NONE) {
+                       MD_E("[CoreAPI][%s] DEMUXER_ERROR_INVALID_OPERATION(0x%08x)",
+                               __FUNCTION__, MEDIADEMUXER_ERROR_INVALID_OPERATION);
+                       return MEDIADEMUXER_ERROR_INVALID_OPERATION;
+               }
        } else {
                if (handle->demux_state != MEDIADEMUXER_DEMUXING)
                        return MEDIADEMUXER_ERROR_INVALID_STATE;
@@ -248,6 +274,11 @@ int mediademuxer_seek(mediademuxer_h demuxer, int64_t pos)
        handle = (mediademuxer_s *)(demuxer);
        if (handle && handle->demux_state == MEDIADEMUXER_DEMUXING) {
                ret = md_seek((MMHandleType) (handle->md_handle), pos);
+               if (ret != MEDIADEMUXER_ERROR_NONE) {
+                       MD_E("[CoreAPI][%s] DEMUXER_ERROR_INVALID_OPERATION(0x%08x)",
+                               __FUNCTION__, MEDIADEMUXER_ERROR_INVALID_OPERATION);
+                       return MEDIADEMUXER_ERROR_INVALID_OPERATION;
+               }
        } else {
                if (handle->demux_state != MEDIADEMUXER_DEMUXING)
                        return MEDIADEMUXER_ERROR_INVALID_STATE;
@@ -268,6 +299,11 @@ int mediademuxer_unselect_track(mediademuxer_h demuxer, int track_index)
        if (handle && (handle->demux_state == MEDIADEMUXER_READY
                || handle->demux_state == MEDIADEMUXER_DEMUXING)) {
                ret = md_unselect_track((MMHandleType) (handle->md_handle), track_index);
+               if (ret != MEDIADEMUXER_ERROR_NONE) {
+                       MD_E("[CoreAPI][%s] DEMUXER_ERROR_INVALID_OPERATION(0x%08x)",
+                               __FUNCTION__, MEDIADEMUXER_ERROR_INVALID_OPERATION);
+                       return MEDIADEMUXER_ERROR_INVALID_OPERATION;
+               }
        } else {
                if (handle->demux_state != MEDIADEMUXER_READY)
                        return MEDIADEMUXER_ERROR_INVALID_STATE;
@@ -287,7 +323,11 @@ int mediademuxer_stop(mediademuxer_h demuxer)
        handle = (mediademuxer_s *)(demuxer);
        if (handle && handle->demux_state == MEDIADEMUXER_DEMUXING) {
                ret = md_stop((MMHandleType) (handle->md_handle));
-               if (ret == MEDIADEMUXER_ERROR_NONE)
+               if (ret != MEDIADEMUXER_ERROR_NONE) {
+                       MD_E("[CoreAPI][%s] DEMUXER_ERROR_INVALID_OPERATION(0x%08x)",
+                               __FUNCTION__, MEDIADEMUXER_ERROR_INVALID_OPERATION);
+                       return MEDIADEMUXER_ERROR_INVALID_OPERATION;
+               } else
                        handle->demux_state = MEDIADEMUXER_READY;
        } else {
                if (handle->demux_state != MEDIADEMUXER_DEMUXING)
@@ -308,7 +348,11 @@ int mediademuxer_unprepare(mediademuxer_h demuxer)
        handle = (mediademuxer_s *)(demuxer);
        if (handle && handle->demux_state == MEDIADEMUXER_READY) {
                ret = md_unprepare((MMHandleType) (handle->md_handle));
-               if (ret == MEDIADEMUXER_ERROR_NONE)
+               if (ret != MEDIADEMUXER_ERROR_NONE) {
+                       MD_E("[CoreAPI][%s] DEMUXER_ERROR_INVALID_OPERATION(0x%08x)",
+                               __FUNCTION__, MEDIADEMUXER_ERROR_INVALID_OPERATION);
+                       return MEDIADEMUXER_ERROR_INVALID_OPERATION;
+               } else
                        handle->demux_state = MEDIADEMUXER_IDLE;
        } else {
                if (handle->demux_state != MEDIADEMUXER_READY)