}
if (type == MM_PLAYER_STREAM_TYPE_TEXT) {
- __mmplayer_gst_create_decoder(player, gst_element_get_static_pad(mainbin[queue_id].gst, "src"), caps);
+ __mmplayer_gst_create_decoder(player, srcpad, caps);
} else {
if (!__mmplayer_gst_create_es_decoder(player, type, srcpad)) {
LOGE("failed to create decoder");
pipeline = player->pipeline->mainbin[MMPLAYER_M_PIPE].gst;
gst_bin_add(GST_BIN(pipeline), selector);
+ gst_object_unref(GST_OBJECT(srcpad));
+
MMPLAYER_FLEAVE();
return selector;
}
if (async && player->msg_posted == FALSE)
__mmplayer_handle_missed_plugin(player);
- goto DONE;
}
-DONE:
gst_object_unref(GST_OBJECT(pad));
MMPLAYER_FLEAVE();
gst_object_unref(GST_OBJECT(sinkpad));
sinkpad = NULL;
+ gst_object_unref(GST_OBJECT(qsrcpad));
+ qsrcpad = NULL;
mainbin[MMPLAYER_M_AUTOPLUG].id = MMPLAYER_M_AUTOPLUG;
mainbin[MMPLAYER_M_AUTOPLUG].gst = decodebin;
if (sinkpad)
gst_object_unref(GST_OBJECT(sinkpad));
+ if (qsrcpad)
+ gst_object_unref(GST_OBJECT(qsrcpad));
+
if (queue2) {
/* NOTE : Trying to dispose element queue0, but it is in READY instead of the NULL state.
* You need to explicitly set elements to the NULL state before
if (dump_s->dump_pad) {
if (dump_s->probe_handle_id)
gst_pad_remove_probe(dump_s->dump_pad, dump_s->probe_handle_id);
+ gst_object_unref(GST_OBJECT(dump_s->dump_pad));
}
if (dump_s->dump_element_file) {
fclose(dump_s->dump_element_file);