[0.6.145] remove dead path - group play 94/192794/3
authorEunhae Choi <eunhae1.choi@samsung.com>
Fri, 9 Nov 2018 10:08:19 +0000 (19:08 +0900)
committerEunhae Choi <eunhae1.choi@samsung.com>
Fri, 9 Nov 2018 10:18:21 +0000 (19:18 +0900)
Change-Id: I3fb5f76fb9716045a876612211da1526235f3251

src/include/mm_player.h
src/include/mm_player_priv.h
src/mm_player.c
src/mm_player_priv.c

index 67341a5..eea2322 100644 (file)
@@ -1274,29 +1274,6 @@ int mm_player_get_current_track(MMHandleType hplayer, MMPlayerTrackType type, in
 int mm_player_set_external_subtitle_path(MMHandleType player, const char* path);
 
 /**
- * This function is to set the clock which is from master player
- *
- * @param       player  [in]    handle of player
- * @param       clock  [in]    clock of master player
- * @param       clock_delta [in]       clock difference between master and slave
- * @param       video_time     [in]    current playing position
- * @param       media_clock    [in]    media clock information
- * @param       audio_time     [in]    audio timestamp information
- * @return      This function returns zero on success, or negative value with error code.
- */
-int mm_player_set_video_share_master_clock(MMHandleType player, int64_t clock, int64_t clock_delta, int64_t video_time, int64_t media_clock, int64_t audio_time);
-/**
- * This function is to get the master clock
- *
- * @param       player         [in]    handle of player
- * @param       video_time     [out]   current playing position
- * @param       media_clock    [out]   media clock information
- * @param       audio_time     [out]   audio timestamp information
- * @return      This function returns zero on success, or negative value with error code.
- */
-int mm_player_get_video_share_master_clock(MMHandleType player, int64_t *video_time, int64_t *media_clock, int64_t *audio_time);
-
-/**
  * This function is to set download mode of video hub
  *
  * @param       player         [in]    handle of player
index dc3e0b6..a1ddc2d 100644 (file)
@@ -174,13 +174,8 @@ enum MainElementID {
        MMPLAYER_M_AUTOPLUG_V_DEC,
        MMPLAYER_M_AUTOPLUG_A_DEC,
 
-       /* NOTE : we need two fakesink to autoplug without decodebin.
-        * first one will hold whole pipeline state. and second one will hold state of
-        * a sink-decodebin for an elementary stream. no metter if there's more then one
-        * elementary streams because MSL reuse it.
-        */
+       /*fakesink will hold whole pipeline state. */
        MMPLAYER_M_SRC_FAKESINK,
-       MMPLAYER_M_SRC_2ND_FAKESINK,
 
        /* streaming plugin */
        MMPLAYER_M_MUXED_S_BUFFER,
@@ -204,22 +199,12 @@ enum MainElementID {
        MMPLAYER_M_V_INPUT_SELECTOR,    // video input_select
        MMPLAYER_M_A_INPUT_SELECTOR,    // audio input_select
        MMPLAYER_M_T_INPUT_SELECTOR,    // text input_select
-       MMPLAYER_M_A_TEE,
-       MMPLAYER_M_A_Q1,
-       MMPLAYER_M_A_Q2,
-       MMPLAYER_M_A_CONV,
-       MMPLAYER_M_A_FILTER,
-       MMPLAYER_M_A_DEINTERLEAVE,
-       MMPLAYER_M_A_SELECTOR,
-       MMPLAYER_M_V_SINK,
-       MMPLAYER_M_V_CONV,
        MMPLAYER_M_NUM
 };
 
 /* audio pipeline's element id */
 enum AudioElementID {
        MMPLAYER_A_BIN = 0, /* NOTE : MMPLAYER_A_BIN should be zero */
-       MMPLAYER_A_TP,
        MMPLAYER_A_CONV,
        MMPLAYER_A_VOL,
        MMPLAYER_A_FILTER,
@@ -239,7 +224,6 @@ enum VideoElementID {
        MMPLAYER_V_BIN = 0, /* NOTE : MMPLAYER_V_BIN should be zero */
        MMPLAYER_V_FLIP,
        MMPLAYER_V_CONV,
-       MMPLAYER_V_SCALE,
        MMPLAYER_V_CAPS,
        MMPLAYER_V_SINK,
        MMPLAYER_V_360,
@@ -786,9 +770,6 @@ typedef struct {
        gint demux_pad_index;
 
        mm_player_selector_t selector[MM_PLAYER_TRACK_TYPE_MAX];
-       mm_player_selector_t audio_mode;
-       gboolean use_deinterleave;
-       guint max_audio_channels;
 
        guint internal_text_idx;
        guint external_text_idx;
@@ -798,10 +779,6 @@ typedef struct {
        /* initialize values */
        mm_player_ini_t ini;
 
-       /* video share sync */
-       gint64 video_share_api_delta;
-       gint64 video_share_clock_delta;
-
        /* just for native app (video hub) */
        gboolean video_hub_download_mode;
        gboolean sync_handler;
@@ -912,8 +889,6 @@ int _mmplayer_change_track_language(MMHandleType hplayer, MMPlayerTrackType type
 int _mmplayer_sync_subtitle_pipeline(mm_player_t *player);
 int _mmplayer_set_video_hub_download_mode(MMHandleType hplayer, bool mode);
 int _mmplayer_use_system_clock(MMHandleType hplayer);
-int _mmplayer_set_video_share_master_clock(MMHandleType hplayer, gint64 clock, gint64 clock_delta, gint64 video_time, gint64 media_clock, gint64 audio_time);
-int _mmplayer_get_video_share_master_clock(MMHandleType hplayer, gint64 *video_time, gint64 *media_clock, gint64 *audio_time);
 int _mmplayer_enable_sync_handler(MMHandleType hplayer, bool enable);
 int _mmplayer_set_file_buffering_path(MMHandleType hplayer, const char *file_path);
 int _mmplayer_set_uri(MMHandleType hplayer, const char *uri);
index 5510447..e131642 100644 (file)
@@ -686,40 +686,6 @@ int mm_player_get_track_language_code(MMHandleType player,  MMPlayerTrackType ty
        return result;
 }
 
-int mm_player_set_video_share_master_clock(MMHandleType player, int64_t clock, int64_t clock_delta,
-                                                                                       int64_t video_time, int64_t media_clock, int64_t audio_time)
-{
-       int result = MM_ERROR_NONE;
-
-       MMPLAYER_RETURN_VAL_IF_FAIL(player, MM_ERROR_PLAYER_NOT_INITIALIZED);
-
-       MMPLAYER_CMD_LOCK(player);
-
-       result = _mmplayer_set_video_share_master_clock(player, clock, clock_delta, video_time, media_clock, audio_time);
-
-       MMPLAYER_CMD_UNLOCK(player);
-
-       return result;
-}
-
-int mm_player_get_video_share_master_clock(MMHandleType player, int64_t *video_time, int64_t *media_clock, int64_t *audio_time)
-{
-       int result = MM_ERROR_NONE;
-
-       MMPLAYER_RETURN_VAL_IF_FAIL(player, MM_ERROR_PLAYER_NOT_INITIALIZED);
-       MMPLAYER_RETURN_VAL_IF_FAIL(video_time, MM_ERROR_COMMON_INVALID_ARGUMENT);
-       MMPLAYER_RETURN_VAL_IF_FAIL(media_clock, MM_ERROR_COMMON_INVALID_ARGUMENT);
-       MMPLAYER_RETURN_VAL_IF_FAIL(audio_time, MM_ERROR_COMMON_INVALID_ARGUMENT);
-
-       MMPLAYER_CMD_LOCK(player);
-
-       result = _mmplayer_get_video_share_master_clock(player, video_time, media_clock, audio_time);
-
-       MMPLAYER_CMD_UNLOCK(player);
-
-       return result;
-}
-
 int mm_player_set_video_hub_download_mode(MMHandleType player, bool mode)
 {
        int result = MM_ERROR_NONE;
index ba89135..8e1edcc 100644 (file)
@@ -176,7 +176,6 @@ static int          __mmplayer_gst_realize(mm_player_t* player);
 static int             __mmplayer_gst_unrealize(mm_player_t* player);
 static int             __mmplayer_gst_adjust_subtitle_position(mm_player_t* player, int format, int position);
 static int             __mmplayer_gst_set_message_callback(mm_player_t* player, MMMessageCallback callback, gpointer user_param);
-static void            __mmplayer_gst_build_deinterleave_path(GstElement *elem, GstPad *pad, gpointer data);
 
 /* util */
 static int __mmplayer_realize_streaming_ext(mm_player_t* player);
@@ -188,7 +187,6 @@ static void __mmplayer_activate_next_source(mm_player_t *player, GstState target
 static void __mmplayer_check_pipeline(mm_player_t* player);
 static gboolean __mmplayer_deactivate_selector(mm_player_t *player, MMPlayerTrackType type);
 static void __mmplayer_deactivate_old_path(mm_player_t *player);
-static GstElement *__mmplayer_element_create_and_link(mm_player_t *player, GstPad* pad, const char* name);
 static int __mmplayer_gst_create_plain_text_elements(mm_player_t* player);
 static guint32 _mmplayer_convert_fourcc_string_to_value(const gchar* format_name);
 static void            __mmplayer_gst_caps_notify_cb(GstPad * pad, GParamSpec * unused, gpointer data);
@@ -1373,8 +1371,6 @@ static void __mmplayer_set_decode_track_info(mm_player_t* player, MMPlayerTrackT
 
 static gboolean __mmplayer_create_audio_decode_path(mm_player_t* player, GstElement* audio_selector)
 {
-       GstPad* srcpad = NULL;
-
        MMPLAYER_FENTER();
        MMPLAYER_RETURN_VAL_IF_FAIL(player && player->pipeline, FALSE);
 
@@ -1402,28 +1398,9 @@ static gboolean __mmplayer_create_audio_decode_path(mm_player_t* player, GstElem
        __mmplayer_set_decode_track_info(player, MM_PLAYER_TRACK_TYPE_AUDIO);
 
        /* create audio decode path */
-       if ((player->use_deinterleave) && (player->max_audio_channels >= 2)) {
-               srcpad = gst_element_get_static_pad(audio_selector, "src");
-               if (!srcpad) {
-                       LOGE("failed to get srcpad from selector");
-                       return FALSE;
-               }
-
-               LOGD("unblocking %s:%s", GST_DEBUG_PAD_NAME(srcpad));
-               if (player->selector[MM_PLAYER_TRACK_TYPE_AUDIO].block_id) {
-                       gst_pad_remove_probe(srcpad, player->selector[MM_PLAYER_TRACK_TYPE_AUDIO].block_id);
-                       player->selector[MM_PLAYER_TRACK_TYPE_AUDIO].block_id = 0;
-               }
-
-               __mmplayer_gst_build_deinterleave_path(audio_selector, srcpad, player);
-
-               gst_object_unref(GST_OBJECT(srcpad));
-
-       } else {
-               if (!__mmplayer_create_decode_path(player, audio_selector, MM_PLAYER_TRACK_TYPE_AUDIO)) {
-                       LOGE("failed to create audio decode path");
-                       return FALSE;
-               }
+       if (!__mmplayer_create_decode_path(player, audio_selector, MM_PLAYER_TRACK_TYPE_AUDIO)) {
+               LOGE("failed to create audio decode path");
+               return FALSE;
        }
 
        MMPLAYER_FLEAVE();
@@ -1458,340 +1435,6 @@ static gboolean __mmplayer_create_text_decode_path(mm_player_t* player, GstEleme
        return TRUE;
 }
 
-static void
-__mmplayer_gst_deinterleave_pad_added(GstElement *elem, GstPad *pad, gpointer data)
-{
-       mm_player_t* player = (mm_player_t*)data;
-       GstElement* selector = NULL;
-       GstElement* queue = NULL;
-
-       GstPad* srcpad = NULL;
-       GstPad* sinkpad = NULL;
-       GstCaps* caps = NULL;
-       gchar* caps_str = NULL;
-
-       MMPLAYER_FENTER();
-       MMPLAYER_RETURN_IF_FAIL(player && player->pipeline && player->pipeline->mainbin);
-
-       caps = gst_pad_get_current_caps(pad);
-       caps_str = gst_caps_to_string(caps);
-       LOGD("deinterleave new caps : %s\n", caps_str);
-       MMPLAYER_FREEIF(caps_str);
-       gst_caps_unref(caps);
-
-       if ((queue = __mmplayer_element_create_and_link(player, pad, "queue")) == NULL) {
-               LOGE("ERROR : queue create error\n");
-               goto ERROR;
-       }
-
-       g_object_set(G_OBJECT(queue),
-                               "max-size-buffers", 10,
-                               "max-size-bytes", 0,
-                               "max-size-time", (guint64)0,
-                               NULL);
-
-       selector = player->pipeline->mainbin[MMPLAYER_M_A_SELECTOR].gst;
-
-       if (!selector) {
-               LOGE("there is no audio channel selector.\n");
-               goto ERROR;
-       }
-
-       srcpad = gst_element_get_static_pad(queue, "src");
-       sinkpad = gst_element_get_request_pad(selector, "sink_%u");
-
-       LOGD("link(%s:%s - %s:%s)\n", GST_DEBUG_PAD_NAME(srcpad), GST_DEBUG_PAD_NAME(sinkpad));
-
-       if (GST_PAD_LINK_OK != gst_pad_link(srcpad, sinkpad)) {
-               LOGW("failed to link deinterleave - selector\n");
-               goto ERROR;
-       }
-
-       gst_element_set_state(queue, GST_STATE_PAUSED);
-       player->audio_mode.total_track_num++;
-
-ERROR:
-
-       if (srcpad) {
-               gst_object_unref(GST_OBJECT(srcpad));
-               srcpad = NULL;
-       }
-
-       if (sinkpad) {
-               gst_object_unref(GST_OBJECT(sinkpad));
-               sinkpad = NULL;
-       }
-
-       MMPLAYER_FLEAVE();
-       return;
-}
-
-static void
-__mmplayer_gst_deinterleave_no_more_pads(GstElement *elem, gpointer data)
-{
-       mm_player_t* player = NULL;
-       GstElement* selector = NULL;
-       GstPad* sinkpad = NULL;
-       gint active_index = 0;
-       gchar* change_pad_name = NULL;
-       GstCaps* caps = NULL;   // no need to unref
-       gint default_audio_ch = 0;
-
-       MMPLAYER_FENTER();
-       player = (mm_player_t*) data;
-
-       selector = player->pipeline->mainbin[MMPLAYER_M_A_SELECTOR].gst;
-
-       if (!selector) {
-               LOGE("there is no audio channel selector.\n");
-               goto ERROR;
-       }
-
-       active_index = player->audio_mode.active_pad_index;
-
-       if (active_index != default_audio_ch) {
-               gint audio_ch = default_audio_ch;
-
-               /*To get the new pad from the selector*/
-               change_pad_name = g_strdup_printf("sink%d", active_index);
-               if (change_pad_name != NULL) {
-                       sinkpad = gst_element_get_static_pad(selector, change_pad_name);
-                       if (sinkpad != NULL) {
-                               LOGD("Set Active Pad - %s:%s\n", GST_DEBUG_PAD_NAME(sinkpad));
-                               g_object_set(selector, "active-pad", sinkpad, NULL);
-
-                               audio_ch = active_index;
-
-                               caps = gst_pad_get_current_caps(sinkpad);
-                               MMPLAYER_LOG_GST_CAPS_TYPE(caps);
-
-                               __mmplayer_set_audio_attrs(player, caps);
-                               gst_caps_unref(caps);
-                       }
-                       MMPLAYER_FREEIF(change_pad_name);
-               }
-
-               player->audio_mode.active_pad_index = audio_ch;
-               LOGD("audio LR info(0:stereo) = %d\n", player->audio_mode.active_pad_index);
-       }
-
-ERROR:
-
-       if (sinkpad)
-               gst_object_unref(sinkpad);
-
-       MMPLAYER_FLEAVE();
-       return;
-}
-
-static void
-__mmplayer_gst_build_deinterleave_path(GstElement *elem, GstPad *pad, gpointer data)
-{
-       mm_player_t* player = NULL;
-       MMPlayerGstElement *mainbin = NULL;
-
-       GstElement* tee = NULL;
-       GstElement* stereo_queue = NULL;
-       GstElement* mono_queue = NULL;
-       GstElement* conv = NULL;
-       GstElement* filter = NULL;
-       GstElement* deinterleave = NULL;
-       GstElement* selector = NULL;
-
-       GstPad* srcpad = NULL;
-       GstPad* selector_srcpad = NULL;
-       GstPad* sinkpad = NULL;
-       GstCaps* caps = NULL;
-       gulong block_id = 0;
-
-       MMPLAYER_FENTER();
-
-       /* check handles */
-       player = (mm_player_t*) data;
-
-       MMPLAYER_RETURN_IF_FAIL(elem && pad);
-       MMPLAYER_RETURN_IF_FAIL(player && player->pipeline && player->pipeline->mainbin);
-
-       mainbin = player->pipeline->mainbin;
-
-       /* tee */
-       if ((tee = __mmplayer_element_create_and_link(player, pad, "tee")) == NULL) {
-               LOGE("ERROR : tee create error\n");
-               goto ERROR;
-       }
-
-       mainbin[MMPLAYER_M_A_TEE].id = MMPLAYER_M_A_TEE;
-       mainbin[MMPLAYER_M_A_TEE].gst = tee;
-
-       gst_element_set_state(tee, GST_STATE_PAUSED);
-
-       /* queue */
-       srcpad = gst_element_get_request_pad(tee, "src_%u");
-       if ((stereo_queue = __mmplayer_element_create_and_link(player, srcpad, "queue")) == NULL) {
-               LOGE("ERROR : stereo queue create error\n");
-               goto ERROR;
-       }
-
-       g_object_set(G_OBJECT(stereo_queue),
-                               "max-size-buffers", 10,
-                               "max-size-bytes", 0,
-                               "max-size-time", (guint64)0,
-                               NULL);
-
-       player->pipeline->mainbin[MMPLAYER_M_A_Q1].id = MMPLAYER_M_A_Q1;
-       player->pipeline->mainbin[MMPLAYER_M_A_Q1].gst = stereo_queue;
-
-       if (srcpad) {
-               gst_object_unref(GST_OBJECT(srcpad));
-               srcpad = NULL;
-       }
-
-       srcpad = gst_element_get_request_pad(tee, "src_%u");
-
-       if ((mono_queue = __mmplayer_element_create_and_link(player, srcpad, "queue")) == NULL) {
-               LOGE("ERROR : mono queue create error\n");
-               goto ERROR;
-       }
-
-       g_object_set(G_OBJECT(mono_queue),
-                               "max-size-buffers", 10,
-                               "max-size-bytes", 0,
-                               "max-size-time", (guint64)0,
-                               NULL);
-
-       player->pipeline->mainbin[MMPLAYER_M_A_Q2].id = MMPLAYER_M_A_Q2;
-       player->pipeline->mainbin[MMPLAYER_M_A_Q2].gst = mono_queue;
-
-       gst_element_set_state(stereo_queue, GST_STATE_PAUSED);
-       gst_element_set_state(mono_queue, GST_STATE_PAUSED);
-
-       /* audioconvert */
-       srcpad = gst_element_get_static_pad(mono_queue, "src");
-       if ((conv = __mmplayer_element_create_and_link(player, srcpad, "audioconvert")) == NULL) {
-               LOGE("ERROR : audioconvert create error\n");
-               goto ERROR;
-       }
-
-       player->pipeline->mainbin[MMPLAYER_M_A_CONV].id = MMPLAYER_M_A_CONV;
-       player->pipeline->mainbin[MMPLAYER_M_A_CONV].gst = conv;
-
-       /* caps filter */
-       if (srcpad) {
-               gst_object_unref(GST_OBJECT(srcpad));
-               srcpad = NULL;
-       }
-       srcpad = gst_element_get_static_pad(conv, "src");
-
-       if ((filter = __mmplayer_element_create_and_link(player, srcpad, "capsfilter")) == NULL) {
-               LOGE("ERROR : capsfilter create error\n");
-               goto ERROR;
-       }
-
-       player->pipeline->mainbin[MMPLAYER_M_A_FILTER].id = MMPLAYER_M_A_FILTER;
-       player->pipeline->mainbin[MMPLAYER_M_A_FILTER].gst = filter;
-
-       caps = gst_caps_from_string("audio/x-raw-int, "
-                               "width = (int) 16, "
-                               "depth = (int) 16, "
-                               "channels = (int) 2");
-
-       g_object_set(GST_ELEMENT(player->pipeline->mainbin[MMPLAYER_M_A_FILTER].gst), "caps", caps, NULL);
-       gst_caps_unref(caps);
-
-       gst_element_set_state(conv, GST_STATE_PAUSED);
-       gst_element_set_state(filter, GST_STATE_PAUSED);
-
-       /* deinterleave */
-       if (srcpad) {
-               gst_object_unref(GST_OBJECT(srcpad));
-               srcpad = NULL;
-       }
-       srcpad = gst_element_get_static_pad(filter, "src");
-
-       if ((deinterleave = __mmplayer_element_create_and_link(player, srcpad, "deinterleave")) == NULL) {
-               LOGE("ERROR : deinterleave create error\n");
-               goto ERROR;
-       }
-
-       g_object_set(deinterleave, "keep-positions", TRUE, NULL);
-
-       __mmplayer_add_signal_connection(player, G_OBJECT(deinterleave), MM_PLAYER_SIGNAL_TYPE_AUTOPLUG, "pad-added",
-                                                       G_CALLBACK(__mmplayer_gst_deinterleave_pad_added), (gpointer)player);
-
-       __mmplayer_add_signal_connection(player, G_OBJECT(deinterleave), MM_PLAYER_SIGNAL_TYPE_AUTOPLUG, "no-more-pads",
-                                                       G_CALLBACK(__mmplayer_gst_deinterleave_no_more_pads), (gpointer)player);
-
-       player->pipeline->mainbin[MMPLAYER_M_A_DEINTERLEAVE].id = MMPLAYER_M_A_DEINTERLEAVE;
-       player->pipeline->mainbin[MMPLAYER_M_A_DEINTERLEAVE].gst = deinterleave;
-
-       /* selector */
-       selector = gst_element_factory_make("input-selector", "audio-channel-selector");
-       if (selector == NULL) {
-               LOGE("ERROR : audio-selector create error\n");
-               goto ERROR;
-       }
-
-       g_object_set(selector, "sync-streams", TRUE, NULL);
-       gst_bin_add(GST_BIN(mainbin[MMPLAYER_M_PIPE].gst), selector);
-
-       player->pipeline->mainbin[MMPLAYER_M_A_SELECTOR].id = MMPLAYER_M_A_SELECTOR;
-       player->pipeline->mainbin[MMPLAYER_M_A_SELECTOR].gst = selector;
-
-       selector_srcpad = gst_element_get_static_pad(selector, "src");
-
-       LOGD("blocking %s:%s", GST_DEBUG_PAD_NAME(selector_srcpad));
-       block_id =
-               gst_pad_add_probe(selector_srcpad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,
-                       __mmplayer_gst_selector_blocked, NULL, NULL);
-
-       if (srcpad) {
-               gst_object_unref(GST_OBJECT(srcpad));
-               srcpad = NULL;
-       }
-
-       srcpad = gst_element_get_static_pad(stereo_queue, "src");
-       sinkpad = gst_element_get_request_pad(selector, "sink_%u");
-
-       if (GST_PAD_LINK_OK != gst_pad_link(srcpad, sinkpad)) {
-               LOGW("failed to link queue_stereo - selector\n");
-               goto ERROR;
-       }
-
-       player->audio_mode.total_track_num++;
-
-       g_object_set(selector, "active-pad", sinkpad, NULL);
-       gst_element_set_state(deinterleave, GST_STATE_PAUSED);
-       gst_element_set_state(selector, GST_STATE_PAUSED);
-
-       __mmplayer_gst_decode_callback(selector, selector_srcpad, player);
-
-ERROR:
-
-       LOGD("unblocking %s:%s", GST_DEBUG_PAD_NAME(selector_srcpad));
-       if (block_id != 0) {
-               gst_pad_remove_probe(selector_srcpad, block_id);
-               block_id = 0;
-       }
-
-       if (sinkpad) {
-               gst_object_unref(GST_OBJECT(sinkpad));
-               sinkpad = NULL;
-       }
-
-       if (srcpad) {
-               gst_object_unref(GST_OBJECT(srcpad));
-               srcpad = NULL;
-       }
-
-       if (selector_srcpad) {
-               gst_object_unref(GST_OBJECT(selector_srcpad));
-               selector_srcpad = NULL;
-       }
-
-       MMPLAYER_FLEAVE();
-       return;
-}
-
 static gboolean
 __mmplayer_gst_set_queue2_buffering(mm_player_t *player)
 {
@@ -4555,10 +4198,6 @@ __mmplayer_gst_destroy_pipeline(mm_player_t* player)
        player->no_more_pad = FALSE;
        player->num_dynamic_pad = 0;
        player->demux_pad_index = 0;
-       player->use_deinterleave = FALSE;
-       player->max_audio_channels = 0;
-       player->video_share_api_delta = 0;
-       player->video_share_clock_delta = 0;
        player->video_hub_download_mode = 0;
 
        MMPLAYER_SUBTITLE_INFO_LOCK(player);
@@ -5012,10 +4651,6 @@ _mmplayer_create_player(MMHandleType handle)
        player->playback_rate = DEFAULT_PLAYBACK_RATE;
 
        player->play_subtitle = FALSE;
-       player->use_deinterleave = FALSE;
-       player->max_audio_channels = 0;
-       player->video_share_api_delta = 0;
-       player->video_share_clock_delta = 0;
        player->has_closed_caption = FALSE;
        player->video_num_buffers = DEFAULT_NUM_OF_V_OUT_BUFFER;
        player->video_extra_num_buffers = DEFAULT_NUM_OF_V_OUT_BUFFER;
@@ -6954,7 +6589,6 @@ __mmplayer_initialize_gapless_play(mm_player_t *player)
        player->no_more_pad = FALSE;
        player->not_found_demuxer = 0;
        player->seek_state = MMPLAYER_SEEK_NONE;
-       player->max_audio_channels = 0;
        player->is_subtitle_force_drop = FALSE;
        player->play_subtitle = FALSE;
        player->adjust_subtitle_pos = 0;
@@ -7469,8 +7103,6 @@ __mmplayer_check_codec_info(mm_player_t* player, const char* klass, GstCaps* cap
        int codec_type = MM_PLAYER_CODEC_TYPE_DEFAULT;
 
        if ((g_strrstr(klass, "Codec/Decoder/Audio"))) {
-               GstStructure* str = NULL;
-               gint channels = 0;
                mm_attrs_get_int_by_name(player->attrs, "audio_codec_type", &codec_type);
 
                LOGD("audio codec type: %d", codec_type);
@@ -7493,14 +7125,6 @@ __mmplayer_check_codec_info(mm_player_t* player, const char* klass, GstCaps* cap
                        }
                }
 
-               str = gst_caps_get_structure(caps, 0);
-               if (str) {
-                       gst_structure_get_int(str, "channels", &channels);
-
-                       LOGD("check audio ch : %d %d\n", player->max_audio_channels, channels);
-                       if (player->max_audio_channels < channels)
-                               player->max_audio_channels = channels;
-               }
                /* set stream information */
                if (!player->audiodec_linked)
                        __mmplayer_set_audio_attrs(player, caps);
@@ -7747,11 +7371,6 @@ __mmplayer_gst_decode_drained(GstElement *bin, gpointer data)
 
        LOGD("__mmplayer_gst_decode_drained");
 
-       if (player->use_deinterleave == TRUE) {
-               LOGD("group playing mode.");
-               return;
-       }
-
        if (!MMPLAYER_CMD_TRYLOCK(player)) {
                LOGW("Fail to get cmd lock");
                return;
@@ -7958,9 +7577,6 @@ __mmplayer_release_misc(mm_player_t* player)
        player->pending_seek.pos = 0;
        player->msg_posted = FALSE;
        player->has_many_types = FALSE;
-       player->max_audio_channels = 0;
-       player->video_share_api_delta = 0;
-       player->video_share_clock_delta = 0;
        player->is_subtitle_force_drop = FALSE;
        player->play_subtitle = FALSE;
        player->adjust_subtitle_pos = 0;
@@ -8095,47 +7711,6 @@ __mmplayer_release_misc_post(mm_player_t* player)
        MMPLAYER_FLEAVE();
 }
 
-static GstElement *__mmplayer_element_create_and_link(mm_player_t *player, GstPad* pad, const char* name)
-{
-       GstElement *element = NULL;
-       GstPad *sinkpad;
-
-       LOGD("creating %s to plug\n", name);
-
-       element = gst_element_factory_make(name, NULL);
-       if (!element) {
-               LOGE("failed to create queue\n");
-               return NULL;
-       }
-
-       if (GST_STATE_CHANGE_FAILURE == gst_element_set_state(element, GST_STATE_READY)) {
-               LOGE("failed to set state READY to %s\n", name);
-               gst_object_unref(element);
-               return NULL;
-       }
-
-       if (!gst_bin_add(GST_BIN(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst), element)) {
-               LOGE("failed to add %s\n", name);
-               gst_object_unref(element);
-               return NULL;
-       }
-
-       sinkpad = gst_element_get_static_pad(element, "sink");
-
-       if (GST_PAD_LINK_OK != gst_pad_link(pad, sinkpad)) {
-               LOGE("failed to link %s\n", name);
-               gst_object_unref(sinkpad);
-               gst_object_unref(element);
-               return NULL;
-       }
-
-       LOGD("linked %s to pipeline successfully\n", name);
-
-       gst_object_unref(sinkpad);
-
-       return element;
-}
-
 gboolean
 __mmplayer_check_subtitle(mm_player_t* player)
 {
@@ -8853,178 +8428,6 @@ _mmplayer_enable_sync_handler(MMHandleType hplayer, bool enable)
        return MM_ERROR_NONE;
 }
 
-int
-_mmplayer_set_video_share_master_clock(MMHandleType hplayer, gint64 clock, gint64 clock_delta,
-                                                                               gint64 video_time, gint64 media_clock, gint64 audio_time)
-{
-       mm_player_t* player = (mm_player_t*) hplayer;
-       MMPlayerGstElement* mainbin = NULL;
-       GstClockTime start_time_audio = 0, start_time_video = 0;
-       GstClockTimeDiff base_time = 0, new_base_time = 0;
-       MMPlayerStateType current_state = MM_PLAYER_STATE_NONE;
-       gint64 api_delta = 0;
-       gint64 position = 0, position_delta = 0;
-       gint64 adj_base_time = 0;
-       GstClock *curr_clock = NULL;
-       GstClockTime curr_time = 0;
-       gboolean query_ret = TRUE;
-       int result = MM_ERROR_NONE;
-
-       MMPLAYER_FENTER();
-
-       MMPLAYER_RETURN_VAL_IF_FAIL(player && player->pipeline, MM_ERROR_PLAYER_NOT_INITIALIZED);
-       MMPLAYER_RETURN_VAL_IF_FAIL(player->pipeline->mainbin, MM_ERROR_PLAYER_NOT_INITIALIZED);
-       MMPLAYER_RETURN_VAL_IF_FAIL(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, MM_ERROR_PLAYER_NOT_INITIALIZED);
-
-       /* LOGD("in(us) : %"G_GINT64_FORMAT", %"G_GINT64_FORMAT", %"G_GINT64_FORMAT", %"G_GINT64_FORMAT", %"G_GINT64_FORMAT,
-                                                                       clock, clock_delta, video_time, media_clock, audio_time); */
-
-       if ((video_time < 0) || (player->seek_state != MMPLAYER_SEEK_NONE)) {
-               LOGD("skip setting master clock. %lld", video_time);
-               goto EXIT;
-       }
-
-       mainbin = player->pipeline->mainbin;
-
-       curr_clock = gst_pipeline_get_clock(GST_PIPELINE_CAST(mainbin[MMPLAYER_M_PIPE].gst));
-       curr_time = gst_clock_get_time(curr_clock);
-
-       current_state = MMPLAYER_CURRENT_STATE(player);
-
-       if (current_state == MM_PLAYER_STATE_PLAYING)
-               query_ret = gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &position);
-
-       if ((current_state != MM_PLAYER_STATE_PLAYING) ||
-               (!query_ret)) {
-               position = player->last_position;
-               LOGD("query fail. %"G_GINT64_FORMAT, position);
-       }
-
-       clock *= GST_USECOND;
-       clock_delta *= GST_USECOND;
-
-       api_delta = clock - curr_time;
-       if ((player->video_share_api_delta == 0) || (player->video_share_api_delta > api_delta))
-               player->video_share_api_delta = api_delta;
-       else
-               clock_delta += (api_delta - player->video_share_api_delta);
-
-       if ((player->video_share_clock_delta == 0) || (player->video_share_clock_delta > clock_delta)) {
-               player->video_share_clock_delta = (gint64)clock_delta;
-
-               position_delta = (position/GST_USECOND) - video_time;
-               position_delta *= GST_USECOND;
-
-               adj_base_time = position_delta;
-               LOGD("video_share_clock_delta = %"G_GINT64_FORMAT", adj = %"G_GINT64_FORMAT, player->video_share_clock_delta, adj_base_time);
-
-       } else {
-               gint64 new_play_time = 0;
-               gint64 network_delay = 0;
-
-               video_time *= GST_USECOND;
-
-               network_delay = clock_delta - player->video_share_clock_delta;
-               new_play_time = video_time + network_delay;
-
-               adj_base_time = position - new_play_time;
-
-               LOGD("%"G_GINT64_FORMAT"(delay) = %"G_GINT64_FORMAT" - %"G_GINT64_FORMAT" / %"G_GINT64_FORMAT
-                        "(adj) = %"G_GINT64_FORMAT"(slave_pos) - %"G_GINT64_FORMAT"(master_pos) - %"G_GINT64_FORMAT"(delay)",
-                       network_delay, clock_delta, player->video_share_clock_delta, adj_base_time, position, video_time, network_delay);
-       }
-
-       /* Adjust Current Stream Time with base_time of sink
-        * 1. Set Start time to CLOCK NONE, to control the base time by MSL
-        * 2. Set new base time
-        *    if adj_base_time is positive value, the stream time will be decreased.
-        * 3. If seek event is occurred, the start time will be reset. */
-       if ((player->pipeline->audiobin) &&
-               (player->pipeline->audiobin[MMPLAYER_A_SINK].gst)) {
-               start_time_audio = gst_element_get_start_time(player->pipeline->audiobin[MMPLAYER_A_SINK].gst);
-
-               if (start_time_audio != GST_CLOCK_TIME_NONE) {
-                       LOGD("audio sink : gst_element_set_start_time -> NONE");
-                       gst_element_set_start_time(player->pipeline->audiobin[MMPLAYER_A_SINK].gst, GST_CLOCK_TIME_NONE);
-               }
-
-               base_time = gst_element_get_base_time(player->pipeline->audiobin[MMPLAYER_A_SINK].gst);
-       }
-
-       if ((player->pipeline->videobin) &&
-               (player->pipeline->videobin[MMPLAYER_V_SINK].gst)) {
-               start_time_video = gst_element_get_start_time(player->pipeline->videobin[MMPLAYER_V_SINK].gst);
-
-               if (start_time_video != GST_CLOCK_TIME_NONE) {
-                       LOGD("video sink : gst_element_set_start_time -> NONE");
-                       gst_element_set_start_time(player->pipeline->videobin[MMPLAYER_V_SINK].gst, GST_CLOCK_TIME_NONE);
-               }
-
-               // if videobin exist, get base_time from videobin.
-               base_time = gst_element_get_base_time(player->pipeline->videobin[MMPLAYER_V_SINK].gst);
-       }
-
-       new_base_time = base_time + adj_base_time;
-
-       if ((player->pipeline->audiobin) &&
-               (player->pipeline->audiobin[MMPLAYER_A_SINK].gst))
-               gst_element_set_base_time(GST_ELEMENT_CAST(player->pipeline->audiobin[MMPLAYER_A_SINK].gst), (GstClockTime)new_base_time);
-
-       if ((player->pipeline->videobin) &&
-               (player->pipeline->videobin[MMPLAYER_V_SINK].gst))
-               gst_element_set_base_time(GST_ELEMENT_CAST(player->pipeline->videobin[MMPLAYER_V_SINK].gst), (GstClockTime)new_base_time);
-
-EXIT:
-       MMPLAYER_FLEAVE();
-
-       return result;
-}
-
-int
-_mmplayer_get_video_share_master_clock(MMHandleType hplayer, gint64 *video_time, gint64 *media_clock, gint64 *audio_time)
-{
-       mm_player_t* player = (mm_player_t*) hplayer;
-       MMPlayerGstElement* mainbin = NULL;
-       GstClock *curr_clock = NULL;
-       MMPlayerStateType current_state = MM_PLAYER_STATE_NONE;
-       gint64 position = 0;
-       gboolean query_ret = TRUE;
-
-       MMPLAYER_FENTER();
-
-       MMPLAYER_RETURN_VAL_IF_FAIL(player && player->pipeline, MM_ERROR_PLAYER_NOT_INITIALIZED);
-       MMPLAYER_RETURN_VAL_IF_FAIL(player->pipeline->mainbin, MM_ERROR_PLAYER_NOT_INITIALIZED);
-       MMPLAYER_RETURN_VAL_IF_FAIL(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, MM_ERROR_PLAYER_NOT_INITIALIZED);
-
-       MMPLAYER_RETURN_VAL_IF_FAIL(video_time, MM_ERROR_COMMON_INVALID_ARGUMENT);
-       MMPLAYER_RETURN_VAL_IF_FAIL(media_clock, MM_ERROR_COMMON_INVALID_ARGUMENT);
-       MMPLAYER_RETURN_VAL_IF_FAIL(audio_time, MM_ERROR_COMMON_INVALID_ARGUMENT);
-
-       mainbin = player->pipeline->mainbin;
-
-       curr_clock = gst_pipeline_get_clock(GST_PIPELINE_CAST(mainbin[MMPLAYER_M_PIPE].gst));
-
-       current_state = MMPLAYER_CURRENT_STATE(player);
-
-       if (current_state != MM_PLAYER_STATE_PAUSED)
-               query_ret = gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &position);
-
-       if ((current_state == MM_PLAYER_STATE_PAUSED) ||
-               (!query_ret))
-               position = player->last_position;
-
-       *media_clock = *video_time = *audio_time = (position/GST_USECOND);
-
-       LOGD("media_clock: %"G_GINT64_FORMAT", video_time: %"G_GINT64_FORMAT"(us)", *media_clock, *video_time);
-
-       if (curr_clock)
-               gst_object_unref(curr_clock);
-
-       MMPLAYER_FLEAVE();
-
-       return MM_ERROR_NONE;
-}
-
 static gboolean
 __mmplayer_add_dump_buffer_probe(mm_player_t *player, GstElement *element)
 {