Skip seek to 0 in media_streamer_stop() when using custom src node 04/256204/1 accepted/tizen/unified/20210402.091032 submit/tizen/20210401.070457
authorSangchul Lee <sc11.lee@samsung.com>
Wed, 31 Mar 2021 01:18:16 +0000 (10:18 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Wed, 31 Mar 2021 01:22:53 +0000 (10:22 +0900)
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.140
[Issue type] Bug fix

Change-Id: I23aa1ac327a4abe22e06c64a4736de5c51d20dfc
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
include/media_streamer_priv.h
packaging/capi-media-streamer.spec
src/media_streamer.c
src/media_streamer_node.c
src/media_streamer_priv.c

index c31615e..3d8b6d1 100644 (file)
@@ -235,6 +235,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 */
index afd90e1..4e85ce9 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-streamer
 Summary:    A Media Streamer API
-Version:    0.1.139
+Version:    0.1.140
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index a6e9ca7..e727fbc 100644 (file)
@@ -588,12 +588,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);
index 1c135b6..816f2fe 100644 (file)
@@ -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);
index 7d3b5f2..12ae162 100644 (file)
@@ -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