From a589d1fe437a33cf9bb8194ed48ec757cb1a5f1c Mon Sep 17 00:00:00 2001 From: Eunhae Choi Date: Thu, 16 Jun 2016 21:31:21 +0900 Subject: [PATCH] fix svace issue and remove hard coded path Change-Id: I4a9531ca374ab0c891953f2d5d25df92296b2d5b --- configure.ac | 2 + packaging/libmm-player.spec | 3 +- src/Makefile.am | 3 ++ src/include/mm_player_streaming.h | 2 - src/mm_player_priv.c | 100 +++++++++++++++++++------------------- src/mm_player_streaming.c | 9 ++-- 6 files changed, 62 insertions(+), 57 deletions(-) diff --git a/configure.ac b/configure.ac index b2a745d..78b7204 100644 --- a/configure.ac +++ b/configure.ac @@ -133,6 +133,8 @@ PKG_CHECK_MODULES(DLOG, dlog) AC_SUBST(DLOG_CFLAGS) AC_SUBST(DLOG_LIBS) +PKG_CHECK_MODULES(TZPLATFORM_CONFIG, libtzplatform-config) + AC_ARG_ENABLE(sdk, AC_HELP_STRING([--enable-sdk], [sdk build]), [ case "${enableval}" in diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index 6aa96af..6bc7031 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.5.82 +Version: 0.5.83 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 @@ -27,6 +27,7 @@ BuildRequires: pkgconfig(icu-i18n) BuildRequires: pkgconfig(capi-media-tool) BuildRequires: pkgconfig(murphy-resource) BuildRequires: pkgconfig(murphy-glib) +BuildRequires: pkgconfig(libtzplatform-config) %description Multimedia Framework Player Library files. diff --git a/src/Makefile.am b/src/Makefile.am index 975dae4..de09303 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -79,3 +79,6 @@ if WAYLAND_SUPPORT libmmfplayer_la_CFLAGS += $(GST_WAYLAND_CFLAGS) libmmfplayer_la_LIBADD += $(GST_WAYLAND_LIBS) endif + +libmmfplayer_la_CFLAGS += $(TZPLATFORM_CONFIG_CFLAGS) +libmmfplayer_la_LIBADD += $(TZPLATFORM_CONFIG_LIBS) \ No newline at end of file diff --git a/src/include/mm_player_streaming.h b/src/include/mm_player_streaming.h index 31b0bf5..aabc508 100644 --- a/src/include/mm_player_streaming.h +++ b/src/include/mm_player_streaming.h @@ -50,8 +50,6 @@ #define DEFAULT_BUFFER_LOW_PERCENT 1.0 /* 1% */ #define DEFAULT_BUFFER_HIGH_PERCENT 99.0 /* 15% */ -#define DEFAULT_FILE_BUFFER_PATH "/opt/media" - #define STREAMING_USE_FILE_BUFFER #define STREAMING_USE_MEMORY_BUFFER diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index 8d7fa44..9c5a897 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -1306,26 +1306,28 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @ break; } - if ( player->pipeline && player->pipeline->textbin) - __mmplayer_drop_subtitle(player, TRUE); - - if ( (player->audio_stream_cb) && (player->set_mode.pcm_extraction) && (!player->audio_stream_render_cb_ex)) + if (player->pipeline) { - GstPad *pad = NULL; + if (player->pipeline->textbin) + __mmplayer_drop_subtitle(player, TRUE); - pad = gst_element_get_static_pad (player->pipeline->audiobin[MMPLAYER_A_SINK].gst, "sink"); + if ( (player->audio_stream_cb) && (player->set_mode.pcm_extraction) && (!player->audio_stream_render_cb_ex)) + { + GstPad *pad = NULL; - LOGD("release audio callback\n"); + pad = gst_element_get_static_pad (player->pipeline->audiobin[MMPLAYER_A_SINK].gst, "sink"); - /* release audio callback */ - gst_pad_remove_probe (pad, player->audio_cb_probe_id); - player->audio_cb_probe_id = 0; - /* audio callback should be free because it can be called even though probe remove.*/ - player->audio_stream_cb = NULL; - player->audio_stream_cb_user_param = NULL; + LOGD("release audio callback\n"); - } + /* release audio callback */ + gst_pad_remove_probe (pad, player->audio_cb_probe_id); + player->audio_cb_probe_id = 0; + /* audio callback should be free because it can be called even though probe remove.*/ + player->audio_stream_cb = NULL; + player->audio_stream_cb_user_param = NULL; + } + } if ((player->audio_stream_render_cb_ex) && (!player->audio_stream_sink_sync)) { __mmplayer_audio_stream_clear_buffer(player, TRUE); } @@ -1389,7 +1391,8 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @ } } - MMPLAYER_GENERATE_DOT_IF_ENABLED ( player, "pipeline-status-eos" ); + if (player->pipeline) + MMPLAYER_GENERATE_DOT_IF_ENABLED ( player, "pipeline-status-eos" ); /* post eos message to application */ __mmplayer_handle_eos_delay( player, player->ini.eos_delay ); @@ -1526,7 +1529,9 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @ { MMPlayerGstElement *mainbin; const GValue *voldstate, *vnewstate, *vpending; - GstState oldstate, newstate, pending; + GstState oldstate = GST_STATE_NULL; + GstState newstate = GST_STATE_NULL; + GstState pending = GST_STATE_NULL; if ( ! ( player->pipeline && player->pipeline->mainbin ) ) { @@ -1545,9 +1550,15 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @ vnewstate = gst_structure_get_value (gst_message_get_structure(msg), "new-state"); vpending = gst_structure_get_value (gst_message_get_structure(msg), "pending-state"); + if (!voldstate || !vnewstate) { + LOGE("received msg has wrong format."); + break; + } + oldstate = (GstState)voldstate->data[0].v_int; newstate = (GstState)vnewstate->data[0].v_int; - pending = (GstState)vpending->data[0].v_int; + if (vpending) + pending = (GstState)vpending->data[0].v_int; LOGD("state changed [%s] : %s ---> %s final : %s\n", GST_OBJECT_NAME(GST_MESSAGE_SRC(msg)), @@ -4532,7 +4543,7 @@ __mmplayer_gst_element_link_bucket(GList* element_bucket) // @ if ( element && element->gst ) { - /* If next element is audio appsrc then make a seprate audio pipeline */ + /* If next element is audio appsrc then make a separate audio pipeline */ if (!strcmp(GST_ELEMENT_NAME(GST_ELEMENT(element->gst)),"audio_appsrc") || !strcmp(GST_ELEMENT_NAME(GST_ELEMENT(element->gst)),"subtitle_appsrc")) { @@ -4540,19 +4551,21 @@ __mmplayer_gst_element_link_bucket(GList* element_bucket) // @ continue; } - if ( GST_ELEMENT_LINK(GST_ELEMENT(prv_element->gst), GST_ELEMENT(element->gst)) ) - { - LOGD("linking [%s] to [%s] success\n", - GST_ELEMENT_NAME(GST_ELEMENT(prv_element->gst)), - GST_ELEMENT_NAME(GST_ELEMENT(element->gst)) ); - successful_link_count ++; - } - else - { - LOGD("linking [%s] to [%s] failed\n", - GST_ELEMENT_NAME(GST_ELEMENT(prv_element->gst)), - GST_ELEMENT_NAME(GST_ELEMENT(element->gst)) ); - return -1; + if (prv_element && prv_element->gst) { + if ( GST_ELEMENT_LINK(GST_ELEMENT(prv_element->gst), GST_ELEMENT(element->gst)) ) + { + LOGD("linking [%s] to [%s] success\n", + GST_ELEMENT_NAME(GST_ELEMENT(prv_element->gst)), + GST_ELEMENT_NAME(GST_ELEMENT(element->gst)) ); + successful_link_count ++; + } + else + { + LOGD("linking [%s] to [%s] failed\n", + GST_ELEMENT_NAME(GST_ELEMENT(prv_element->gst)), + GST_ELEMENT_NAME(GST_ELEMENT(element->gst)) ); + return -1; + } } } @@ -5949,7 +5962,8 @@ __mmplayer_gst_create_video_pipeline(mm_player_t* player, GstCaps* caps, MMDispl } /* get first element's sinkpad for creating ghostpad */ - first_element = (MMPlayerGstElement *)element_bucket->data; + if (element_bucket) + first_element = (MMPlayerGstElement *)element_bucket->data; if ( !first_element ) { LOGE("failed to get first element from bucket\n"); @@ -5978,7 +5992,8 @@ __mmplayer_gst_create_video_pipeline(mm_player_t* player, GstCaps* caps, MMDispl #endif /* done. free allocated variables */ - g_list_free(element_bucket); + if (element_bucket) + g_list_free(element_bucket); mm_attrs_set_int_by_name(attrs, "content_video_found", TRUE); @@ -11309,7 +11324,6 @@ __mmplayer_try_to_plug_decodebin(mm_player_t* player, GstPad *srcpad, const GstC GstPad* qsrcpad= NULL; gchar *caps_str = NULL; gint64 dur_bytes = 0L; - gchar* file_buffering_path = NULL; gboolean use_file_buffer = FALSE; guint max_buffer_size_bytes = 0; @@ -11361,14 +11375,9 @@ __mmplayer_try_to_plug_decodebin(mm_player_t* player, GstPad *srcpad, const GstC LOGD("dur_bytes = %lld\n", dur_bytes); if (dur_bytes > 0) - { use_file_buffer = MMPLAYER_USE_FILE_FOR_BUFFERING(player); - file_buffering_path = g_strdup(player->ini.http_file_buffer_path); - } else - { dur_bytes = 0; - } } /* NOTE : we cannot get any duration info from ts container in case of streaming */ @@ -11386,11 +11395,10 @@ __mmplayer_try_to_plug_decodebin(mm_player_t* player, GstPad *srcpad, const GstC 1.0, // no meaning player->ini.http_buffering_limit, // no meaning use_file_buffer, - file_buffering_path, + player->ini.http_file_buffer_path, (guint64)dur_bytes); } - MMPLAYER_FREEIF(file_buffering_path); if (GST_STATE_CHANGE_FAILURE == gst_element_sync_state_with_parent (queue2)) { LOGE("failed to sync queue2 state with parent\n"); @@ -13889,7 +13897,6 @@ const char *padname, const GList *templlist) if (MMPLAYER_IS_HTTP_STREAMING(player)) { gint64 dur_bytes = 0L; - gchar *file_buffering_path = NULL; gboolean use_file_buffer = FALSE; if ( !mainbin[MMPLAYER_M_MUXED_S_BUFFER].gst) @@ -13935,14 +13942,9 @@ const char *padname, const GList *templlist) LOGE("fail to get duration.\n"); if (dur_bytes > 0) - { use_file_buffer = MMPLAYER_USE_FILE_FOR_BUFFERING(player); - file_buffering_path = g_strdup(player->ini.http_file_buffer_path); - } else - { dur_bytes = 0; - } } /* NOTE : we cannot get any duration info from ts container in case of streaming */ @@ -13956,11 +13958,9 @@ const char *padname, const GList *templlist) 1.0, player->ini.http_buffering_limit, use_file_buffer, - file_buffering_path, + player->ini.http_file_buffer_path, (guint64)dur_bytes); } - - MMPLAYER_FREEIF(file_buffering_path); } } } diff --git a/src/mm_player_streaming.c b/src/mm_player_streaming.c index dd83d31..6f49d5a 100644 --- a/src/mm_player_streaming.c +++ b/src/mm_player_streaming.c @@ -22,6 +22,7 @@ #include #include +#include #include "mm_player_utils.h" #include "mm_player_streaming.h" @@ -388,10 +389,7 @@ streaming_set_queue2_queue_type (mm_player_streaming_t* streamer, gboolean use_f LOGD("[Queue2] use file for buffering. streaming is played on pull-based. \n"); if (!file_path || strlen(file_path) <= 0) - file_path = g_strdup(DEFAULT_FILE_BUFFER_PATH); - - g_snprintf(file_buffer_name, MM_MAX_URL_LEN, "%s/XXXXXX", file_path); - SECURE_LOGD("[Queue2] the buffering file name is %s.\n", file_buffer_name); + file_path = (gchar *)tzplatform_getenv(TZ_SYS_DATA); if (statfs((const char *)file_path, &buf) < 0) { @@ -418,6 +416,9 @@ streaming_set_queue2_queue_type (mm_player_streaming_t* streamer, gboolean use_f if (file_buffer_size>0) LOGD("[Queue2] use file ring buffer for buffering."); + g_snprintf(file_buffer_name, MM_MAX_URL_LEN, "%s/XXXXXX", file_path); + SECURE_LOGD("[Queue2] the buffering file name is %s.\n", file_buffer_name); + g_object_set (G_OBJECT(buffer_handle->buffer), "temp-template", file_buffer_name, NULL); g_object_set (G_OBJECT(buffer_handle->buffer), "ring-buffer-max-size", file_buffer_size, NULL); -- 2.7.4