trying to unref buffer in appsink

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

trying to unref buffer in appsink

killerrats
Administrator
No matter what order I put the unref buffer and sample the last one seems to error out. Any ideas?
I tried exactly what the function looks like nothing assign at all to see if there something else that messed it up but no avail. it seems to be the gst_buffer_unref(buffer) but if I dont gst_buffer_unref then the method is okay with everything.

GstFlowReturn PipelineClass::appsink_ToFile (GstElement* object,gpointer user_data)
{
        GstSample* sample = NULL;
        GstBuffer* buffer;
        GstMapInfo map;
        GstFlowReturn flow;
        std::string TheFile = "";

        flow = GST_FLOW_OK;
        //g_signal_emit_by_name(object,"pull-sample",&sample);
        sample = gst_app_sink_pull_sample ((GstAppSink*)object);
        if(sample != NULL)
        {
                buffer = gst_sample_get_buffer(sample);

                if(gst_buffer_map (buffer, &map, GST_MAP_READ))
                {
                        ......
               
                }
        }
        else
        {
                AddToConsoleOutputList("no sample");
        }
        if(map.data != NULL)
        {
                AddToConsoleOutputList("unmap map to buffer");
                gst_buffer_unmap (buffer, &map);
        }
        if(buffer != NULL)
        {
                AddToConsoleOutputList("Buffer Unref");
                gst_buffer_unref(buffer);
        }
        if(sample != NULL)
        {
                AddToConsoleOutputList("sample Unref");
                gst_sample_unref(sample);
        }
       
        if(gst_app_sink_is_eos ((GstAppSink*)object))
        {
                AddToConsoleOutputList("------------- EOS Recieved --------------");
                return GST_FLOW_EOS;
        }

        return flow;    
}
------------------------------
Gstreamer 1.16.2
------------------------------
Windows
Reply | Threaded
Open this post in threaded view
|

Re: trying to unref buffer in appsink

killerrats
Administrator
figured out I can replace gst_sample_get_buffer(sample); => gst_sample_get_buffer(gst_sample_copy (sample)); then in the end it will work.
------------------------------
Gstreamer 1.16.2
------------------------------
Windows