From: Sangchul Lee Date: Wed, 31 Mar 2021 01:18:16 +0000 (+0900) Subject: Skip seek to 0 in media_streamer_stop() when using custom src node X-Git-Tag: submit/tizen_6.0/20210402.080422^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen_6.0;p=platform%2Fcore%2Fapi%2Fmediastreamer.git Skip seek to 0 in media_streamer_stop() when using custom src node Currently, seek is not available on a custom src node. It occurs an error when calling the stop API. It is now fixed. [Version] 0.1.139 [Issue type] Bug fix Change-Id: I23aa1ac327a4abe22e06c64a4736de5c51d20dfc Signed-off-by: Sangchul Lee --- diff --git a/include/media_streamer_priv.h b/include/media_streamer_priv.h index d6b2206..dbf706f 100644 --- a/include/media_streamer_priv.h +++ b/include/media_streamer_priv.h @@ -223,6 +223,8 @@ void ms_trigger_state_cb(media_streamer_s *ms_streamer, media_streamer_state_e o gboolean ms_has_adaptive_sink_node(media_streamer_s *ms_streamer); +gboolean ms_has_custom_src_node(media_streamer_s *ms_streamer); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/packaging/capi-media-streamer.spec b/packaging/capi-media-streamer.spec index 3223089..afd90e1 100644 --- a/packaging/capi-media-streamer.spec +++ b/packaging/capi-media-streamer.spec @@ -1,6 +1,6 @@ Name: capi-media-streamer Summary: A Media Streamer API -Version: 0.1.138 +Version: 0.1.139 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/media_streamer.c b/src/media_streamer.c index 9242feb..1b24543 100644 --- a/src/media_streamer.c +++ b/src/media_streamer.c @@ -583,12 +583,13 @@ int media_streamer_stop(media_streamer_h streamer) g_mutex_lock(&ms_streamer->mutex_lock); - ret = ms_seek(streamer, 0, FALSE); - - if (ret != MEDIA_STREAMER_ERROR_NONE) - ms_error("Error while putting media streamer to zero playing position"); - else + if (ms_has_custom_src_node(streamer)) { ret = ms_set_state(ms_streamer, MEDIA_STREAMER_STATE_PAUSED); + } else { + ret = ms_seek(streamer, 0, FALSE); + if (ret == MEDIA_STREAMER_ERROR_NONE) + ret = ms_set_state(ms_streamer, MEDIA_STREAMER_STATE_PAUSED); + } if (ms_has_adaptive_sink_node(ms_streamer)) ms_http_server_stop(ms_streamer->http_server); diff --git a/src/media_streamer_node.c b/src/media_streamer_node.c index 1c135b6..816f2fe 100644 --- a/src/media_streamer_node.c +++ b/src/media_streamer_node.c @@ -1117,7 +1117,7 @@ int ms_src_node_create(media_streamer_node_s *node) break; case MEDIA_STREAMER_NODE_SRC_TYPE_CUSTOM: plugin_name = ms_ini_get_string("node type 1:custom", DEFAULT_APP_SOURCE); - node->gst_element = ms_element_create(plugin_name, NULL); + node->gst_element = ms_element_create(plugin_name, "custom_src"); g_object_set(G_OBJECT(node->gst_element), "emit-signals", TRUE, NULL); ms_signal_create(&node->sig_list, node->gst_element, "need-data", G_CALLBACK(__ms_src_start_feed_cb), node); ms_signal_create(&node->sig_list, node->gst_element, "enough-data", G_CALLBACK(__ms_src_stop_feed_cb), node); diff --git a/src/media_streamer_priv.c b/src/media_streamer_priv.c index 7d3b5f2..12ae162 100644 --- a/src/media_streamer_priv.c +++ b/src/media_streamer_priv.c @@ -213,8 +213,6 @@ int ms_seek(media_streamer_s *ms_streamer, int g_time, bool flag) { GstSeekFlags seek_flag; - ms_debug_fenter(); - ms_retvm_if(ms_streamer == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "ms_streamer is NULL"); if (flag) @@ -229,9 +227,7 @@ int ms_seek(media_streamer_s *ms_streamer, int g_time, bool flag) ms_streamer->is_seeking = TRUE; } - ms_info("Media streamer pipeline seeked successfully to [%d] position", g_time); - - ms_debug_fleave(); + ms_info("media streamer pipeline seeked successfully to [%d] position", g_time); return MEDIA_STREAMER_ERROR_NONE; } @@ -480,4 +476,11 @@ gboolean ms_has_adaptive_sink_node(media_streamer_s *ms_streamer) ms_retvm_if(ms_streamer == NULL, FALSE, "ms_streamer is NULL"); return g_hash_table_contains(ms_streamer->nodes_table, "adaptive_sink"); +} + +gboolean ms_has_custom_src_node(media_streamer_s *ms_streamer) +{ + ms_retvm_if(ms_streamer == NULL, FALSE, "ms_streamer is NULL"); + + return g_hash_table_contains(ms_streamer->nodes_table, "custom_src"); } \ No newline at end of file