MEDIADEMUXER_FLEAVE();
return ret;
-ERROR:
- ret = MD_ERROR_INVALID_ARGUMENT;
- MEDIADEMUXER_FLEAVE();
- return ret;
}
static int gst_demuxer_init(MMHandleType *pHandle)
MD_I("gst_demuxer_prepare Creating pipeline %p", new_mediademuxer);
ret = _gst_create_pipeline(new_mediademuxer, uri);
+ if (ret != MD_ERROR_NONE) {
+ MD_E("_gst_create_pipeline() failed. returned %d\n", ret);
+ goto ERROR;
+ }
MEDIADEMUXER_FLEAVE();
return ret;
ERROR:
(new_mediademuxer->info).num_other_track;
MEDIADEMUXER_FLEAVE();
return ret;
-ERROR:
- MEDIADEMUXER_FLEAVE();
- return MD_ERROR;
}
int _gst_set_appsink(track *temp, int index, int loop)
static int gst_demuxer_set_track(MMHandleType pHandle, int track)
{
MEDIADEMUXER_FENTER();
- int ret = MD_INVALID_ARG;
+ int ret = MD_ERROR_NONE;
MEDIADEMUXER_CHECK_NULL(pHandle);
mdgst_handle_t *new_mediademuxer = (mdgst_handle_t *) pHandle;
MD_I("total_tracks (%d) :: selected track (%d)", new_mediademuxer->total_tracks, track);
if (track >= new_mediademuxer->total_tracks || track < 0) {
MD_E("total_tracks is less then selected track, So not support this track");
+ ret = MD_ERROR_INVALID_ARGUMENT;
goto ERROR;
}
new_mediademuxer->selected_tracks[track] = true;
if (gst_element_set_state(temp->appsink, GST_STATE_PLAYING) ==
GST_STATE_CHANGE_FAILURE) {
MD_E("Failed to set into PLAYING state");
- ret = MD_ERROR_UNKNOWN;
+ ret = MD_INTERNAL_ERROR;
+ goto ERROR;
}
MD_I("set the state to playing\n");
indx++;
(new_mediademuxer->info).num_other_track;
if (index >= loop || index < 0) {
MD_E("total tracks(loop) is less then selected track(index), So not support this track");
+ ret = MD_ERROR;
goto ERROR;
}
} else
MD_W("Not supported so far (except audio and video)\n");
- *format = temp->format;
+ ret = media_format_ref(temp->format); /* increment the ref to retain the original content */
+ if (ret != MEDIA_FORMAT_ERROR_NONE) {
+ MD_E("Mediaformat reference count increment failed. returned %d\n", ret);
+ ret = MD_INTERNAL_ERROR;
+ goto ERROR;
+ }
+ ret = media_format_make_writable(temp->format, format); /* copy the content */
+ if (ret != MEDIA_FORMAT_ERROR_NONE) {
+ MD_E("Mediaformat create copy failed. returned %d\n", ret);
+ media_format_unref(temp->format);
+ ret = MD_INTERNAL_ERROR;
+ goto ERROR;
+ }
MEDIADEMUXER_FLEAVE();
return ret;
ERROR:
MEDIADEMUXER_FLEAVE();
- return MD_ERROR;
+ return ret;
}
static int _gst_copy_buf_to_media_packet(media_packet_h out_pkt,
if (!gst_element_seek(temp->appsink, rate, GST_FORMAT_TIME,
GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, pos1,
GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)) {
- g_print("Seek failed!\n");
+ MD_E("Seek failed!\n");
+ goto ERROR;
} else {
MD_I("Seek success\n");
}
static int gst_demuxer_unset_track(MMHandleType pHandle, int track)
{
MEDIADEMUXER_FENTER();
- int ret = MD_INVALID_ARG;
+ int ret = MD_ERROR_NONE;
MEDIADEMUXER_CHECK_NULL(pHandle);
mdgst_handle_t *new_mediademuxer = (mdgst_handle_t *) pHandle;
if (track >= new_mediademuxer->total_tracks || track < 0) {
MD_E("total tracks is less then unselected track, So not support this track");
+ ret = MD_ERROR_INVALID_ARGUMENT;
goto ERROR;
}
new_mediademuxer->selected_tracks[track] = false;
_gst_unset_appsink((((mdgst_handle_t *) pHandle)->info).head, track,
new_mediademuxer->total_tracks);
MEDIADEMUXER_FLEAVE();
- return MD_ERROR_NONE;
+ return ret;
ERROR:
MEDIADEMUXER_FLEAVE();
return ret;
if (gst_element_set_state(gst_handle->pipeline, GST_STATE_PAUSED) ==
GST_STATE_CHANGE_FAILURE) {
MD_E("Failed to set into PAUSE state");
- ret = MD_ERROR_UNKNOWN;
+ ret = MD_INTERNAL_ERROR;
+ goto ERROR;
}
MEDIADEMUXER_FLEAVE();
return ret;
g_free(new_mediademuxer);
MEDIADEMUXER_FLEAVE();
return ret;
-ERROR:
- MEDIADEMUXER_FLEAVE();
- return ret;
}
int gst_set_error_cb(MMHandleType pHandle,
g_print("test_mediademuxer_get_track_info\n");
for (; track < num_tracks; track++) {
media_format_h g_media_format;
+ ret = mediademuxer_get_track_info(demuxer, track, &g_media_format);
if (ret == 0) {
- g_print("g_media_format[%d] is created successfully! \n", track);
- ret = mediademuxer_get_track_info(demuxer, track, &g_media_format);
- if (ret == 0) {
- if (media_format_get_video_info(g_media_format, &v_mime,
- &w, &h, NULL, NULL) == MEDIA_FORMAT_ERROR_NONE) {
- g_print("media_format_get_video_info is sucess!\n");
- g_print("\t\t[media_format_get_video]mime:%x, width :%d, height :%d\n",
- v_mime, w, h);
- vid_track = track;
- } else if (media_format_get_audio_info(g_media_format, &a_mime,
+ if (media_format_get_video_info(g_media_format, &v_mime,
+ &w, &h, NULL, NULL) == MEDIA_FORMAT_ERROR_NONE) {
+ g_print("media_format_get_video_info is sucess!\n");
+ g_print("\t\t[media_format_get_video]mime:%x, width :%d, height :%d\n",
+ v_mime, w, h);
+ vid_track = track;
+ } else if (media_format_get_audio_info(g_media_format, &a_mime,
&channel, &samplerate, &bit, NULL) == MEDIA_FORMAT_ERROR_NONE) {
- g_print("media_format_get_audio_info is sucess!\n");
- g_print("\t\t[media_format_get_audio]mime:%x, channel :%d, samplerate :%d, bit :%d\n",
+ g_print("media_format_get_audio_info is sucess!\n");
+ g_print("\t\t[media_format_get_audio]mime:%x, channel :%d, samplerate :%d, bit :%d\n",
a_mime, channel, samplerate, bit);
- if (a_mime == MEDIA_FORMAT_AAC_LC)
- media_format_get_audio_aac_type(g_media_format, &is_adts);
- aud_track = track;
- } else {
- g_print("Not Supported YET\n");
- }
- } else {
- g_print("Error while getting mediademuxer_get_track_info\n");
- }
+ if (a_mime == MEDIA_FORMAT_AAC_LC)
+ media_format_get_audio_aac_type(g_media_format, &is_adts);
+ aud_track = track;
} else {
- g_print("Error while creating media_format_create\n");
+ g_print("Not Supported YET\n");
}
+ media_format_unref(g_media_format);
+ g_media_format = NULL;
+ } else {
+ g_print("Error while getting mediademuxer_get_track_info\n");
+ }
}
#if DEMUXER_OUTPUT_DUMP