g_object_set(player->pipeline->mainbin[MMPLAYER_M_SRC].gst, "pending-start-position", pos_nsec, NULL);
LOGD("[%s] set position =%"GST_TIME_FORMAT,
- gst_element_get_name(player->pipeline->mainbin[MMPLAYER_M_SRC].gst), GST_TIME_ARGS(pos_nsec));
+ GST_ELEMENT_NAME(player->pipeline->mainbin[MMPLAYER_M_SRC].gst), GST_TIME_ARGS(pos_nsec));
player->doing_seek = FALSE;
MMPLAYER_POST_MSG(player, MM_MESSAGE_SEEK_COMPLETED, NULL);
} else {
return MM_ERROR_NONE;
}
-int _mmplayer_remove_audio_parser_decoder(mm_player_t* player, GstPad *inpad)
-{
- int result = MM_ERROR_NONE;
- GstPad *peer = NULL, *pad = NULL;
- GstElement *Element = NULL;
- MMPlayerGstElement* mainbin = NULL;
- mainbin = player->pipeline->mainbin;
-
- #if 0
- if (!gst_pad_set_blocked(inpad, TRUE)) {
- result = MM_ERROR_PLAYER_INTERNAL;
- goto EXIT;
- }
- #endif
- gst_pad_add_probe(inpad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,
- NULL, NULL, NULL);
-
- /*Getting pad connected to demuxer audio pad */
- peer = gst_pad_get_peer(inpad);
- /* Disconnecting Demuxer and its peer plugin [audio] */
- if (peer) {
- if (!gst_pad_unlink(inpad, peer)) {
- result = MM_ERROR_PLAYER_INTERNAL;
- goto EXIT;
- }
- } else {
- result = MM_ERROR_PLAYER_INTERNAL;
- goto EXIT;
- }
- /*Removing elements between Demuxer and audiobin*/
- while (peer != NULL) {
- gchar *Element_name = NULL;
- gchar *factory_name = NULL;
- GList *elements = NULL;
- GstElementFactory *factory = NULL;
- /*Getting peer element*/
- Element = gst_pad_get_parent_element(peer);
- if (Element == NULL) {
- gst_object_unref(peer);
- result = MM_ERROR_PLAYER_INTERNAL;
- break;
- }
-
- Element_name = gst_element_get_name(Element);
- factory = gst_element_get_factory(Element);
- /*checking the element is audio bin*/
- if (!strcmp(Element_name, "audiobin")) {
- gst_object_unref(peer);
- result = MM_ERROR_NONE;
- g_free(Element_name);
- break;
- }
- factory_name = GST_OBJECT_NAME(factory);
- pad = gst_element_get_static_pad(Element, "src");
- if (pad == NULL) {
- result = MM_ERROR_PLAYER_INTERNAL;
- g_free(Element_name);
- break;
- }
- gst_object_unref(peer);
- peer = gst_pad_get_peer(pad);
- if (peer) {
- if (!gst_pad_unlink(pad, peer)) {
- gst_object_unref(peer);
- gst_object_unref(pad);
- result = MM_ERROR_PLAYER_INTERNAL;
- g_free(Element_name);
- break;
- }
- }
- elements = player->parsers;
- /* Removing the element form the list*/
- for (; elements; elements = g_list_next(elements)) {
- Element_name = elements->data;
- if (g_strrstr(Element_name, factory_name))
- player->parsers = g_list_remove(player->parsers, elements->data);
- }
- gst_element_set_state(Element, GST_STATE_NULL);
- gst_bin_remove(GST_BIN(mainbin[MMPLAYER_M_PIPE].gst), Element);
- gst_object_unref(pad);
- if (Element == mainbin[MMPLAYER_M_Q1].gst)
- mainbin[MMPLAYER_M_Q1].gst = NULL;
- else if (Element == mainbin[MMPLAYER_M_Q2].gst)
- mainbin[MMPLAYER_M_Q2].gst = NULL;
- else if (Element == mainbin[MMPLAYER_M_DEC1].gst)
- mainbin[MMPLAYER_M_DEC1].gst = NULL;
- else if (Element == mainbin[MMPLAYER_M_DEC2].gst)
- mainbin[MMPLAYER_M_DEC2].gst = NULL;
-
- gst_object_unref(Element);
- }
-EXIT:
- return result;
-}
-
int _mmplayer_sync_subtitle_pipeline(mm_player_t* player)
{
MMPlayerGstElement* mainbin = NULL;