<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt">Hello Martin,<br><br>Thanks for your reply. I will try to install the appsrc library and see. I will now mix QtGstreamer libraries and gst libraries and see. As you mentioned, QtGstreamer is only a wrapper around the gstreamer library. As I had mentioned in my earlier mail QGst::Buffer::create() is creating and allocating but did not notice any g_free mentioned in that function.  The appsrc library I was using was in Qt gstreamer utils. now I have to see how to get this gst/appsrc. <br><br>I wish someone doing the QtGstreamer wrapper library responds to the question.<br><br>Many thanks<br>Trinadh.<br><div><span><br></span></div><div><br></div>  <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div
 dir="ltr"> <hr size="1">  <font face="Arial" size="2"> <b><span style="font-weight:bold;">From:</span></b> Angel Martin <amartin@vicomtech.org><br> <b><span style="font-weight: bold;">To:</span></b> trinadh Pala <me_wavelet@yahoo.co.uk>; Discussion of the development of and with GStreamer <gstreamer-devel@lists.freedesktop.org> <br> <b><span style="font-weight: bold;">Sent:</span></b> Wednesday, 26 June 2013, 8:06<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: how to release the GstBuffer memory<br> </font> </div> <div class="y_msg_container"><br>As far as i understood you can mix gstreamer baseline code with QT and<br>use QT Objects as sinks but I've never used QT wrapper of gstreamer.<br>The code that I posted fixes the memory leak for sure.<br><br>2013/6/25 trinadh Pala <<a ymailto="mailto:me_wavelet@yahoo.co.uk" href="mailto:me_wavelet@yahoo.co.uk">me_wavelet@yahoo.co.uk</a>>:<br>> Hello Angel Martin &
 all,<br>><br>> I have gone through the program that was in the link below. This program is<br>> playing some 300 video frames and after that it stops. So if there is any<br>> memory leak, it may not be able to indicate. So I am not sure whether this<br>> program has been tested for memory leak. It is not clear to me how the<br>> buffer release was implemented. If I call g_free(pointer). or<br>> m_buffer->clear in my program after pushing the buffer to the pipeline, the<br>> program exits. if I do not use g_free or m_buffer->clear then the program<br>> continues to send the ts data to the down stream elemets and decoding<br>> happens properly except for the problem of leaking memory. I am stuck with<br>> the problem for a couple of day, the application is no use without fixing<br>> this memory leak. Please help.<br>><br>> Thanks and regards<br>> Trinadh<br>><br>><br>>
 ________________________________<br>> From: Angel Martin <<a ymailto="mailto:amartin@vicomtech.org" href="mailto:amartin@vicomtech.org">amartin@vicomtech.org</a>><br>> To: trinadh Pala <<a ymailto="mailto:me_wavelet@yahoo.co.uk" href="mailto:me_wavelet@yahoo.co.uk">me_wavelet@yahoo.co.uk</a>>; Discussion of the development of<br>> and with GStreamer <<a ymailto="mailto:gstreamer-devel@lists.freedesktop.org" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>><br>> Sent: Tuesday, 25 June 2013, 16:21<br>> Subject: Re: how to release the GstBuffer memory<br>><br>> Hi,<br>><br>> Here you will find the proper way:<br>><br>> <a href="http://users.design.ucla.edu/~acolubri/test/gstreamer/appsrc_filesink.c" target="_blank">http://users.design.ucla.edu/~acolubri/test/gstreamer/appsrc_filesink.c</a><br>> /* used to inject a new buffer into the pipeline */<br>>
 static void<br>> inject_new_buffer_into_pipeline (ProgramData * data)<br>> {<br>>   guint size;<br>>   gpointer raw_buffer;<br>>   GstBuffer *app_buffer;<br>>   GstElement *source;<br>><br>>   size = 80 * 60 * 4; // 80x60 pixels, 32 bpp.<br>>   g_print ("Pushing a buffer of size %d\n", size);<br>><br>>   // Allocating the memory for the buffer.<br>>   raw_buffer = g_malloc0 (size);<br>><br>>   app_buffer = gst_app_buffer_new (raw_buffer, size, g_free, raw_buffer);<br>><br>>   /* newer basesrc will set caps for use automatically but it does not<br>> really<br>>   * hurt to set it on the buffer again */<br>>   gst_buffer_set_caps (app_buffer, gst_caps_from_string (video_caps));<br>><br>>   /* get source an push new buffer */<br>>   source = gst_bin_get_by_name (GST_BIN (data->sink), "testsource");<br>>  
 gst_app_src_push_buffer (GST_APP_SRC (source), app_buffer);<br>> }<br>><br>> 2013/6/25 trinadh Pala <<a ymailto="mailto:me_wavelet@yahoo.co.uk" href="mailto:me_wavelet@yahoo.co.uk">me_wavelet@yahoo.co.uk</a>>:<br>>> Hello,<br>>><br>>> I am writing an application using QtGstreamer library.<br>>><br>>> I am implemeting a media player application. i am using Appsource for<br>>> linking the source. The data is available in a char *buffer.<br>>><br>>> I created  a buffer using  QGst::Buffer::create(size).<br>>> // pBuf has the Transport stream data char *pBuf<br>>> // This piece of code is in a loop.<br>>><br>>>  QGst::BufferPtr m_buffer;<br>>>    m_buffer=QGst::Buffer::create(buf_size);<br>>><br>>>    quint8 *m_data_ptr=m_buffer->data();<br>>><br>>>   
 memcpy(m_data_ptr,pBuf,buf_size);<br>>><br>>>    if(this->m_player->m_pipeline);<br>>><br>>>          ret = this->m_player->m_appsrc.pushBuffer(m_buffer);<br>>><br>>>        if (!m_buffer.isNull())<br>>>            {<br>>>        if (ret != QGst::FlowOk)<br>>>                {<br>>>        /* some error, stop sending data */<br>>>                qDebug("some error");<br>>>                }<br>>>            else<br>>>                {<br>>>                qDebug("pushed a buffer
 successfully");<br>>><br>>>                }<br>>>            }<br>>><br>>><br>>> The method works, i am able to display the video. However, I did not know<br>>> how to release the buffer created. so the application leaks memory. How to<br>>> release the Buffer, after pushBuffer. Please help.<br>>><br>>> Thanks and regards<br>>> Trinadh<br>>><br>>> _______________________________________________<br>>> gstreamer-devel mailing list<br>>> <a ymailto="mailto:gstreamer-devel@lists.freedesktop.org" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>>> <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>>><br>>
 _______________________________________________<br>> gstreamer-devel mailing list<br>> <a ymailto="mailto:gstreamer-devel@lists.freedesktop.org" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>> <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>><br>><br>><br>> _______________________________________________<br>> gstreamer-devel mailing list<br>> <a ymailto="mailto:gstreamer-devel@lists.freedesktop.org" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>> <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>><br>_______________________________________________<br>gstreamer-devel mailing list<br><a
 ymailto="mailto:gstreamer-devel@lists.freedesktop.org" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br><a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br><br><br></div> </div> </div>  </div></body></html>