summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGilbok Lee <gilbok.lee@samsung.com>2020-09-08 17:11:35 +0900
committerGilbok Lee <gilbok.lee@samsung.com>2020-09-08 17:37:58 +0900
commita86141955aeef192f6a083a4d50f8f2e03c541d2 (patch)
tree1bcd3aa88fdf88bc7739946725800be81b60e4a9
parent06408a25e0a634a12ffdc4f321545c08eabc3ca4 (diff)
downloadlibmm-player-a86141955aeef192f6a083a4d50f8f2e03c541d2.tar.gz
libmm-player-a86141955aeef192f6a083a4d50f8f2e03c541d2.tar.bz2
libmm-player-a86141955aeef192f6a083a4d50f8f2e03c541d2.zip
[0.6.238] Fix memory leak due to without unref source elementsubmit/tizen/20200909.015028
- Create __mmplayer_rtsp_src_setup() for clean code Change-Id: Ia2295f1e3d58012389f2a8edc8faa0380faa230d
-rw-r--r--packaging/libmm-player.spec2
-rw-r--r--src/mm_player_gst.c49
2 files changed, 32 insertions, 19 deletions
diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec
index db7128f..2ef3859 100644
--- a/packaging/libmm-player.spec
+++ b/packaging/libmm-player.spec
@@ -1,6 +1,6 @@
Name: libmm-player
Summary: Multimedia Framework Player Library
-Version: 0.6.237
+Version: 0.6.238
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
diff --git a/src/mm_player_gst.c b/src/mm_player_gst.c
index ccc7bbd..906be79 100644
--- a/src/mm_player_gst.c
+++ b/src/mm_player_gst.c
@@ -2823,7 +2823,7 @@ __mmplayer_gst_make_rtsp_src(mmplayer_t *player)
return element;
}
-void __mmplayer_http_src_setup(GstElement *source, gpointer data)
+static void __mmplayer_http_src_setup(GstElement *source, gpointer data)
{
#define HTTP_SOURCE_BLOCK_SIZE (64 * 1024)
@@ -2839,29 +2839,24 @@ void __mmplayer_http_src_setup(GstElement *source, gpointer data)
LOGD("source element %s", GST_ELEMENT_NAME(source));
- /* get profile attribute */
attrs = MMPLAYER_GET_ATTRS(player);
if (!attrs) {
LOGE("failed to get content attribute");
return;
}
- /* get attribute */
mm_attrs_get_string_by_name(attrs, "streaming_cookie", &cookies);
mm_attrs_get_string_by_name(attrs, "streaming_user_agent", &user_agent);
if (player->ini.http_timeout != DEFAULT_HTTP_TIMEOUT)
http_timeout = player->ini.http_timeout;
- /* get attribute */
SECURE_LOGD("cookies : %s", cookies);
SECURE_LOGD("user_agent : %s", user_agent);
LOGD("timeout : %d", http_timeout);
- /* setting property to streaming source */
g_object_set(G_OBJECT(source), "timeout", http_timeout, "blocksize", (unsigned long)(HTTP_SOURCE_BLOCK_SIZE), NULL);
- /* parsing cookies */
if ((cookie_list = _mmplayer_get_cookie_list((const char *)cookies))) {
g_object_set(G_OBJECT(source), "cookies", cookie_list, NULL);
g_strfreev(cookie_list);
@@ -2874,6 +2869,31 @@ void __mmplayer_http_src_setup(GstElement *source, gpointer data)
return;
}
+static void __mmplayer_rtsp_src_setup(GstElement *source, gpointer data)
+{
+ mmplayer_t *player = (mmplayer_t *)data;
+ gchar *user_agent = NULL;
+ MMHandleType attrs = 0;
+
+ MMPLAYER_FENTER();
+ MMPLAYER_RETURN_IF_FAIL(player);
+
+ attrs = MMPLAYER_GET_ATTRS(player);
+ if (!attrs) {
+ LOGE("failed to get content attribute");
+ return;
+ }
+
+ mm_attrs_get_string_by_name(attrs, "streaming_user_agent", &user_agent);
+
+ SECURE_LOGD("user_agent : %s", user_agent);
+
+ if (user_agent)
+ g_object_set(G_OBJECT(source), "user-agent", user_agent, NULL);
+
+ MMPLAYER_FLEAVE();
+}
+
static void
__mmplayer_gst_found_source(GObject *object, GObject *orig, GParamSpec *pspec, gpointer data)
{
@@ -2891,16 +2911,7 @@ __mmplayer_gst_found_source(GObject *object, GObject *orig, GParamSpec *pspec, g
if (MMPLAYER_IS_HTTP_STREAMING(player)) {
__mmplayer_http_src_setup(source, data);
} else if (MMPLAYER_IS_RTSP_STREAMING(player)) {
- gchar *user_agent = NULL;
-
- /* get attribute */
- mm_attrs_get_string_by_name(player->attrs, "streaming_user_agent", &user_agent);
-
- SECURE_LOGD("user_agent : %s", user_agent);
-
- /* setting property to streaming source */
- if (user_agent)
- g_object_set(G_OBJECT(source), "user-agent", user_agent, NULL);
+ __mmplayer_rtsp_src_setup(source, data);
} else if (MMPLAYER_IS_SMOOTH_STREAMING(player)) {
g_object_set(G_OBJECT(source), "timeout", DEFAULT_HTTP_TIMEOUT, NULL);
} else if (player->profile.uri_type == MM_PLAYER_URI_TYPE_MEM) {
@@ -2908,10 +2919,12 @@ __mmplayer_gst_found_source(GObject *object, GObject *orig, GParamSpec *pspec, g
"size", (gint64)player->profile.input_mem.len, "blocksize", 20480, NULL);
_mmplayer_add_signal_connection(player, G_OBJECT(source), MM_PLAYER_SIGNAL_TYPE_OTHERS, "seek-data",
- G_CALLBACK(__mmplayer_gst_appsrc_seek_data_mem), (gpointer)&player->profile.input_mem);
+ G_CALLBACK(__mmplayer_gst_appsrc_seek_data_mem), (gpointer)&player->profile.input_mem);
_mmplayer_add_signal_connection(player, G_OBJECT(source), MM_PLAYER_SIGNAL_TYPE_OTHERS, "need-data",
- G_CALLBACK(__mmplayer_gst_appsrc_feed_data_mem), (gpointer)&player->profile.input_mem);
+ G_CALLBACK(__mmplayer_gst_appsrc_feed_data_mem), (gpointer)&player->profile.input_mem);
}
+ gst_object_unref (source);
+
MMPLAYER_FLEAVE();
}