Applied error-handling guidelines to muxer apis 65/55765/4 accepted/tizen/mobile/20160104.054854 accepted/tizen/tv/20160104.054920 accepted/tizen/wearable/20160104.054934 submit/tizen/20160104.050846
authorMahesh Kondiparthi <kd.mahesh@samsung.com>
Tue, 29 Dec 2015 07:18:59 +0000 (12:48 +0530)
committerMahesh Kondiparthi <kd.mahesh@samsung.com>
Wed, 30 Dec 2015 03:12:07 +0000 (08:42 +0530)
Addressed review comments

Change-Id: Ic41af991c78368ee240a08c849e1ee690998e20b
Signed-off-by: Mahesh Kondiparthi <kd.mahesh@samsung.com>
include/mediamuxer.h
src/mediamuxer.c

index 296b4a2..636869d 100755 (executable)
 extern "C" {
 #endif
 
-#ifndef TIZEN_ERROR_MEDIA_MUXER
-#define TIZEN_ERROR_MEDIA_MUXER -0x05000000
-#endif
-
 /**
 * @file mediamuxer.h
 * @brief This file contains the capi media muxer API.
@@ -111,6 +107,8 @@ typedef void (*mediamuxer_error_cb)(mediamuxer_error_e error, void *user_data);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid Operation
+ * @retval #MEDIAMUXER_ERROR_OUT_OF_MEMORY Allocation Failed, Out of Memory.
  * @post The media muxer state will be #MEDIAMUXER_STATE_IDLE.
  * @see mediamuxer_destroy()
  */
@@ -128,8 +126,8 @@ int mediamuxer_create(mediamuxer_h *muxer);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
- * @retval #MEDIAMUXER_ERROR_PERMISSION_DENIED Permission denied
  * @retval #MEDIAMUXER_ERROR_INVALID_PATH Invalid path
  * @pre The media muxer state will be #MEDIAMUXER_STATE_IDLE by calling mediamuxer_create
  * @see #mediamuxer_output_format_e
@@ -145,6 +143,7 @@ int mediamuxer_set_data_sink(mediamuxer_h muxer, char *path, mediamuxer_output_f
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
  * @pre The media muxer state must be set to #MEDIAMUXER_STATE_IDLE.
  * @see #media_format_h
@@ -161,6 +160,7 @@ int mediamuxer_add_track(mediamuxer_h muxer, media_format_h media_format, int *t
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
  * @pre The media muxer state must be set to #MEDIAMUXER_STATE_IDLE.
  * @post The media muxer state will be #MEDIAMUXER_STATE_READY.
@@ -177,6 +177,7 @@ int mediamuxer_prepare(mediamuxer_h muxer);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
  * @pre The media muxer state must be set to #MEDIAMUXER_STATE_READY.
  * @post The media muxer state will be #MEDIAMUXER_STATE_MUXING.
@@ -194,6 +195,7 @@ int mediamuxer_start(mediamuxer_h muxer);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
  * @pre The media muxer state must be set to #MEDIAMUXER_STATE_READY by calling mediamuxer_prepare() or
  *      set to #MEDIAMUXER_STATE_PAUSED by calling mediamuxer_pause().
@@ -213,7 +215,9 @@ int mediamuxer_write_sample(mediamuxer_h muxer, int track_index, media_packet_h
  * @param[in] track_index the selected track index
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @pre The media muxer state must be set to #MEDIAMUXER_STATE_MUXING.
  * @see mediamuxer_write_sample()
  * @see mediamuxer_pause()
@@ -231,6 +235,7 @@ int mediamuxer_close_track(mediamuxer_h muxer, int track_index);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
  * @pre The media muxer state must be set to #MEDIAMUXER_STATE_MUXING.
  * @post The media muxer state will be #MEDIAMUXER_STATE_PAUSED.
@@ -248,6 +253,7 @@ int mediamuxer_pause(mediamuxer_h muxer);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
  * @pre The media muxer state must be set to #MEDIAMUXER_STATE_PAUSED.
  * @post The media muxer state will be #MEDIAMUXER_STATE_MUXING.
@@ -263,6 +269,7 @@ int mediamuxer_resume(mediamuxer_h muxer);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
  * @pre The media muxer state must be set to #MEDIAMUXER_STATE_MUXING
  *     or #MEDIAMUXER_STATE_PAUSED.
@@ -280,6 +287,7 @@ int mediamuxer_stop(mediamuxer_h muxer);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
  * @pre The media muxer state must be set to #MEDIAMUXER_STATE_READY or
  *      set to #MEDIAMUXER_STATE_PAUSED by calling mediamuxer_pause().
@@ -297,6 +305,7 @@ int mediamuxer_unprepare(mediamuxer_h muxer);
  * @return @c 0 on success, otherwise a negative error value
  * @retval #MEDIAMUXER_ERROR_NONE Successful
  * @retval #MEDIAMUXER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIAMUXER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #MEDIAMUXER_ERROR_INVALID_STATE Invalid state
  * @pre Create a media muxer handle by calling mediamuxer_create() function.
  * @post The media muxer state will be #MEDIAMUXER_STATE_NONE.
@@ -320,11 +329,6 @@ int mediamuxer_get_state(mediamuxer_h muxer, mediamuxer_state_e *state);
 
 /**
  * @brief Registers a error callback function to be invoked when an error occurs.
- * @details Following error codes can be delivered.
- *          #MEDIAMUXER_ERROR_INVALID_OPERATION,
- *          #MEDIAMUXER_ERROR_NOT_SUPPORTED,
- *          #MEDIAMUXER_ERROR_INVALID_PATH,
- *          #MEDIAMUXER_ERROR_RESOURCE_LIMIT
  * @since_tizen 3.0
  * @param[in] muxer   The media muxer handle
  * @param[in] callback  Callback function pointer
index ab595dc..0630115 100644 (file)
@@ -17,9 +17,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <mm.h>
 #include <mediamuxer_port.h>
-#include <mm_types.h>
 #include <mediamuxer.h>
 #include <mediamuxer_private.h>
 #include <dlog.h>
@@ -36,7 +34,7 @@ static gboolean _mediamuxer_error_cb(mediamuxer_error_e error, void *user_data);
 int mediamuxer_create(mediamuxer_h *muxer)
 {
        MX_I("mediamuxer_create\n");
-       mediamuxer_error_e ret = MM_ERROR_NONE;
+       mediamuxer_error_e ret = MEDIAMUXER_ERROR_NONE;
        MUXER_INSTANCE_CHECK(muxer);
 
        mediamuxer_s *handle;
@@ -51,7 +49,7 @@ int mediamuxer_create(mediamuxer_h *muxer)
        }
 
        ret = mx_create(&handle->mx_handle);
-       if (ret != MM_ERROR_NONE) {
+       if (ret != MEDIAMUXER_ERROR_NONE) {
                MX_E("[CoreAPI][%s] MUXER_ERROR_INVALID_OPERATION(0x%08x)",
                     __FUNCTION__, MEDIAMUXER_ERROR_INVALID_OPERATION);
                free(handle);
@@ -80,7 +78,8 @@ int mediamuxer_set_data_sink(mediamuxer_h muxer, char *path, mediamuxer_output_f
 
        if (path == NULL) {
                MX_I("Invalid uri");
-               return MEDIAMUXER_ERROR_INVALID_PARAMETER;
+               handle->muxer_state = MEDIAMUXER_STATE_NONE;
+               return MEDIAMUXER_ERROR_INVALID_PATH;
        }
 
        if (format != MEDIAMUXER_CONTAINER_FORMAT_MP4
@@ -89,6 +88,7 @@ int mediamuxer_set_data_sink(mediamuxer_h muxer, char *path, mediamuxer_output_f
                && format != MEDIAMUXER_CONTAINER_FORMAT_AMR_NB
                && format != MEDIAMUXER_CONTAINER_FORMAT_AMR_WB) {
                MX_E("Unsupported Container format: %d \n", format);
+               handle->muxer_state = MEDIAMUXER_STATE_NONE;
                return MEDIAMUXER_ERROR_INVALID_PARAMETER;
        }
        if (handle->muxer_state == MEDIAMUXER_STATE_IDLE) {
@@ -96,6 +96,7 @@ int mediamuxer_set_data_sink(mediamuxer_h muxer, char *path, mediamuxer_output_f
                if (ret != MEDIAMUXER_ERROR_NONE) {
                        MX_E("[CoreAPI][%s] MUXER_ERROR_INVALID_OPERATION(0x%08x)",
                             __FUNCTION__, MEDIAMUXER_ERROR_INVALID_OPERATION);
+                       handle->muxer_state = MEDIAMUXER_STATE_NONE;
                        ret = MEDIAMUXER_ERROR_INVALID_OPERATION;
                } else {
                        MX_I("[CoreAPI][%s] set_data_sink successful, handle : %p",
@@ -104,6 +105,7 @@ int mediamuxer_set_data_sink(mediamuxer_h muxer, char *path, mediamuxer_output_f
        } else {
                MX_E("[CoreAPI][%s] MEDIAMUXER_ERROR_INVALID_STATE(0x%08x)",
                        __FUNCTION__, MEDIAMUXER_ERROR_INVALID_STATE);
+               handle->muxer_state = MEDIAMUXER_STATE_NONE;
                ret = MEDIAMUXER_ERROR_INVALID_STATE;
        }
        return ret;