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.
* @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()
* @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.
* */
* @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()
* @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()
* @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()
* @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()
* @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()
* @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()
* @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()
* @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()
* @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()
* @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()
* @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()
/**
* @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
* @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()
* @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);
* @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()
* @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);
#include <stdlib.h>
#include <string.h>
#include <dlog.h>
-#include <mm.h>
-#include <mm_types.h>
#include <mediademuxer.h>
#include <mediademuxer_private.h>
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)
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;
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;
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)
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;
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;
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;
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;
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)
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)