<div>I am developing a muxer plugin,where I use the request_new_pad/release_pad from GstElementClass.&nbsp; But i never saw the release_pad callback function was called in my codes thought I did see the finalize(GObjectClass) was called in the end. I am not quite sure why release_pad was no called. Will it cause the memory leakage ?</div>

<div>&nbsp;</div>
<div>The following are the request_new_pad and finalize functions. </div>
<div>&nbsp;</div>
<div>Regards,</div>
<div>&nbsp;</div>
<div>Yihe<br>/******************************************************************<br>* gst_tidmaireiszer_request_new_pad<br>*&nbsp;&nbsp;&nbsp; request a new pad<br>******************************************************************/<br>
static GstPad *gst_tidmairesizer_request_new_pad(GstElement * element,<br>&nbsp;GstPadTemplate *templ,const gchar *req_name)<br>{<br>GstTIDmaiResizer *dmairesizer;<br>GstPad *newpad;<br>GstElementClass *klass = GST_ELEMENT_GET_CLASS(element);<br>
gchar *name;</div>
<div>&nbsp;if(templ != gst_element_class_get_pad_template(klass,&quot;decimage_%d&quot;))<br>&nbsp;goto wrong_template;</div>
<div>&nbsp;dmairesizer = GST_TIDMAIRESIZER(element);&nbsp;&nbsp;<br>&nbsp;//create new pad<br>&nbsp;name = g_strdup_printf(&quot;decimage_%02d&quot;,dmairesizer-&gt;numpads);<br>&nbsp;newpad = gst_pad_new_from_template(templ,name);<br>&nbsp;g_free(name);<br>
&nbsp;GstResizerPad *resizerpad;</div>
<div>&nbsp;if(dmairesizer-&gt;numpads &gt;= MAX_INPUT_SUPPORT)<br>&nbsp;{<br>&nbsp;&nbsp;GST_ERROR(&quot;Over the max input hardware can support\n&quot;);<br>&nbsp;&nbsp;gst_object_unref(newpad);<br>&nbsp;&nbsp;return NULL;<br>&nbsp;}</div>
<div>&nbsp;resizerpad = (GstResizerPad *) gst_collect_pads_add_pad(dmairesizer-&gt;collect,newpad,sizeof(GstResizerPad));<br>&nbsp;resizerpad-&gt;x_start = dmairesizer-&gt;x_start[dmairesizer-&gt;numpads];<br>&nbsp;resizerpad-&gt;y_start = dmairesizer-&gt;y_start[dmairesizer-&gt;numpads];&nbsp;&nbsp;<br>
&nbsp;resizerpad-&gt;rsFormat = dmairesizer-&gt;rsFormat[dmairesizer-&gt;numpads];<br>&nbsp;//save a pointer to our data in the pad<br>//&nbsp;gst_pad_set_element_private(newpad,resizerpad);&nbsp;&nbsp;&nbsp;<br>&nbsp;dmairesizer-&gt;numpads++;&nbsp;&nbsp; </div>
<div>&nbsp;GST_LOG(&quot;request new pad %d\n&quot;,dmairesizer-&gt;numpads);&nbsp;<br>&nbsp;//set sink pad caps<br>&nbsp;gst_pad_set_setcaps_function (newpad,GST_DEBUG_FUNCPTR (gst_tidmairesizer_set_sink_caps));<br>&nbsp;//add pad to element<br>
&nbsp;gst_element_add_pad(element,newpad);<br>&nbsp;return newpad;</div>
<div>wrong_template:<br>&nbsp;{<br>&nbsp;&nbsp;GST_ERROR(&quot;this is not our template pad!\n&quot;);<br>&nbsp;&nbsp;return NULL;<br>&nbsp;}&nbsp;<br>}</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>static void gst_tidmairesizer_finalize(GObject *object)<br>{<br>GstTIDmaiResizer *dmairesizer = GST_TIDMAIRESIZER(object);<br></div>
<div>&nbsp;GST_LOG(&quot;finalizer being\n&quot;);</div>
<div>&nbsp;//clean up everything<br>&nbsp;gst_tidmairesizer_exit_video(dmairesizer);&nbsp;<br>&nbsp;GST_LOG(&quot;finalizer begin\n&quot;);<br>&nbsp;if(dmairesizer-&gt;collect)<br>&nbsp;{<br>&nbsp;&nbsp;gst_object_unref(dmairesizer-&gt;collect);<br>&nbsp;&nbsp;dmairesizer-&gt;collect=NULL;<br>
&nbsp;}<br>&nbsp;G_OBJECT_CLASS(parent_class)-&gt;finalize(object);<br>&nbsp;GST_LOG(&quot;finalizer Finish\n&quot;);&nbsp;<br>}</div>
<div><br>&nbsp;</div>