<div dir="ltr"><div>Hello,</div><div><br></div><div>I'm trying to write a simple plugin that only inserts data as meta data to the stream.</div><div>My plugin is derived from GstBaseTransform</div><div><br></div><div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;line-height:18px;white-space:pre"><div><span style="color:rgb(86,156,214)">typedef</span> <span style="color:rgb(86,156,214)">struct</span> <span style="color:rgb(78,201,176)">GstMtdataMetaInject</span></div><div>{</div><div>  GstBaseTransform base_mtdataplugins;</div></div></div><div><br></div><div>and i've created a simple meta data like: (see attached files)</div><div><br></div><div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;line-height:18px;white-space:pre"><div><span style="color:rgb(86,156,214)">struct</span> <span style="color:rgb(78,201,176)">_MtdataMeta</span></div><div>{</div><div>    GstMeta meta;</div><div>    gchar <span style="color:rgb(180,180,180)">*</span>jsonstring;</div><div>};</div><br></div></div><div><br></div><div>and to insert the meta data (on every frame for now)</div><div><br></div><div><div><div id="gmail-:13s" class="gmail-Ar gmail-Au gmail-Ao"><div id="gmail-:13o" class="gmail-Am gmail-Al editable gmail-LW-avf gmail-tS-tW gmail-tS-tY" aria-label="Message Body" role="textbox" aria-multiline="true" tabindex="1" style="direction:ltr;min-height:700px"><div dir="ltr" class="gmail_signature"><div dir="ltr"><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;line-height:18px;white-space:pre"><div><span style="color:rgb(86,156,214)"><br></span></div><div><span style="color:rgb(86,156,214)">static</span> <span style="color:rgb(78,201,176)">GstFlowReturn</span></div><div><span style="color:rgb(200,200,200)">gst_mtdata_meta_inject_prepare_output_buffer</span>(<span style="color:rgb(78,201,176)">GstBaseTransform</span> <span style="color:rgb(180,180,180)">*</span><span style="color:rgb(127,127,127)">trans</span>, <span style="color:rgb(78,201,176)">GstBuffer</span> <span style="color:rgb(180,180,180)">*</span><span style="color:rgb(127,127,127)">input</span>, <span style="color:rgb(78,201,176)">GstBuffer</span> <span style="color:rgb(180,180,180)">**</span><span style="color:rgb(127,127,127)">outbuf</span>)</div><div>{</div><div>  <span style="color:rgb(78,201,176)">GstMtdataMetaInject</span> <span style="color:rgb(180,180,180)">*</span><span style="color:rgb(200,200,200)">self</span> <span style="color:rgb(180,180,180)">=</span> <span style="color:rgb(189,99,197)">GST_MTDMETAINJECT</span>(<span style="color:rgb(127,127,127)">trans</span>);</div><div>  <span style="color:rgb(78,201,176)">GstFlowReturn</span> <span style="color:rgb(200,200,200)">ret</span>;<br></div><div>  <span style="color:rgb(200,200,200)">ret</span> <span style="color:rgb(180,180,180)">=</span> <span style="color:rgb(189,99,197)">GST_BASE_TRANSFORM_CLASS</span>(<span style="color:rgb(200,200,200)">gst_mtdata_meta_inject_parent_class</span>)-><span style="color:rgb(218,218,218)">prepare_output_buffer</span>(<span style="color:rgb(127,127,127)">trans</span>, <span style="color:rgb(127,127,127)">input</span>, <span style="color:rgb(127,127,127)">outbuf</span>);</div><div>  <span style="color:rgb(86,156,214)">if</span> (<span style="color:rgb(200,200,200)">ret</span> <span style="color:rgb(180,180,180)">!=</span> <span style="color:rgb(184,215,163)">GST_FLOW_OK</span>)</div><div>    <span style="color:rgb(86,156,214)">return</span> <span style="color:rgb(200,200,200)">ret</span>;</div><div>  <span style="color:rgb(180,180,180)">*</span><span style="color:rgb(127,127,127)">outbuf</span> <span style="color:rgb(180,180,180)">=</span> <span style="color:rgb(189,99,197)">gst_buffer_make_writable</span>(<span style="color:rgb(127,127,127)">input</span>);<br></div><div>  <span style="color:rgb(86,156,214)">if</span> (<span style="color:rgb(180,180,180)">*</span><span style="color:rgb(127,127,127)">outbuf</span> <span style="color:rgb(180,180,180)">!=</span> <span style="color:rgb(189,99,197)">NULL</span>)<br></div><div>  {</div><div><span style="color:rgb(87,166,74)">    // string hello = StringUtils::current_date_time_string();</span></div><div><span style="color:rgb(87,166,74)">    // string hello = "12345678901234";</span></div><div>    <span style="color:rgb(78,201,176)">string</span> <span style="color:rgb(200,200,200)">hello</span> <span style="color:rgb(180,180,180)">=</span> <span style="color:rgb(78,201,176)">StringUtils</span>::<span style="color:rgb(200,200,200)">random_string</span>(<span style="color:rgb(181,206,168)">14</span>);</div><br><div>    <span style="color:rgb(78,201,176)">MtdataMeta</span> <span style="color:rgb(180,180,180)">*</span><span style="color:rgb(200,200,200)">in</span> <span style="color:rgb(180,180,180)">=</span> <span style="color:rgb(200,200,200)">gst_buffer_add_mtdata_meta</span>(<span style="color:rgb(180,180,180)">*</span><span style="color:rgb(127,127,127)">outbuf</span>, (<span style="color:rgb(78,201,176)">gchar</span> <span style="color:rgb(180,180,180)">*</span>)<span style="color:rgb(200,200,200)">hello</span>.<span style="color:rgb(200,200,200)">c_str</span>());</div><br><div>    <span style="color:rgb(189,99,197)">GST_WARNING</span>(<span style="color:rgb(214,157,133)">"Added metdata: %s"</span>, <span style="color:rgb(200,200,200)">in</span>-><span style="color:rgb(218,218,218)">jsonstring</span>);</div><div>  }</div><div>  <span style="color:rgb(86,156,214)">return</span> <span style="color:rgb(200,200,200)">ret</span>;</div><div>}</div></div></div></div></div></div></div></div><div>however i'm getting a quite fast memory leak that i can see in gst-launch-1.0 where it goes from 30% memory up to 60% in a matter of a minute.<br>the funny think is that if i change the meta data string to be something constant like "12345678901234" with the same length, there is no memory leak and it stays on 28% forever.</div><div><br>Do I need to go to the last element in the stream and 'free' the meta data so it doesn't add up ?</div><div>Kind regards,</div><div>Tom</div><div><br></div></div>