<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;" class="elementToProof">Hi,</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;" class="elementToProof"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;" class="elementToProof">I am encountering a problem with the reference count for my custom GstBufferPool.</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;" class="elementToProof">What I am observing is that GstQuery increases the reference count but never seems to unref it.</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;" class="elementToProof"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;" class="elementToProof">My allocation function looks like this (simplified):</span><span style="font-family: "Courier New", monospace;" class="elementToProof"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;">gboolean _device_allocation(GstBaseSrc* base_src, GstQuery* query)</span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;">{</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;">    // my_buffer_pool_new does:</span><span style="font-family: "Courier New", monospace;"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;" class="ContentPasted3">
<div class="ContentPasted3"><span style="font-family: "Courier New", monospace;">    // GstTcamBufferPool* pool =</span></div>
<div class="ContentPasted3"><span style="font-family: "Courier New", monospace;">    //     (GstTcamBufferPool*)g_object_new(GST_TYPE_MY_BUFFER_POOL, "name", name, NULL);</span></div>
</span><span style="font-family: "Courier New", monospace;" class="ContentPasted3">    // g_object_ref_sink(pool);</span><span style="font-family: "Courier New", monospace;" class="ContentPasted3"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted1">
<span style="font-family: "Courier New", monospace;">    GstBufferPool* pool = my_buffer_pool_new(GST_ELEMENT(self), caps);</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted1">
<div class="ContentPasted1 elementToProof"><span style="font-family: "Courier New", monospace;">    GST_ERROR("Refcount: %d", pool->object.object.ref_count);</span></div>
<div class="elementToProof"><span style="font-family: "Courier New", monospace;">    // Refcount: 1</span><br class="ContentPasted1">
</div>
<div class="ContentPasted1 elementToProof"><span style="font-family: "Courier New", monospace;">    GstStructure* config = gst_buffer_pool_get_config(pool);</span></div>
<br>
<div class="ContentPasted1"><span style="font-family: "Courier New", monospace;">    gst_buffer_pool_config_set_params(config, caps, buffer_size, 10, 10);</span></div>
<div class="ContentPasted1"><span style="font-family: "Courier New", monospace;">    gst_buffer_pool_set_config(pool, config);</span></div>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted1">
<span style="font-family: "Courier New", monospace;">    gst_query_add_allocation_pool(query, pool, size, 10, 0);</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted1">
<div class="ContentPasted1"><span style="font-family: "Courier New", monospace;"><br>
</span></div>
<div class="ContentPasted2 elementToProof"><span style="font-family: "Courier New", monospace;">    GST_ERROR("Refcount: %d", pool->object.object.ref_count);</span></div>
<div class="ContentPasted2 elementToProof"><span style="font-family: "Courier New", monospace;">    // Refcount: 2</span></div>
<div class="ContentPasted2"><span style="font-family: "Courier New", monospace;"><br>
</span></div>
<div class="ContentPasted2 elementToProof"><span style="font-family: "Courier New", monospace;">    // store pool pointer for later cleanup</span></div>
<div class="ContentPasted2 elementToProof"><span style="font-family: "Courier New", monospace;">    ...</span><span style="font-family: "Courier New", monospace;"><br>
</span></div>
<div class="ContentPasted2"><span style="font-family: "Courier New", monospace;"><br>
</span></div>
<div class="ContentPasted2 elementToProof"><span style="font-family: "Courier New", monospace;">    return GST_BASE_SRC_CLASS(gst_tcam_mainsrc_parent_class)->decide_allocation(base_src, query);</span></div>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<span style="font-family: "Courier New", monospace;">}</span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4">
<span style="font-family: "Courier New", monospace;">It remains at two even when I reach state change paused->ready where I want to reset the pool:</span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">_change_state(GstElement* element,</span><br class="ContentPasted5">
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">              GstStateChange change)</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">{</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">....</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">case GST_STATE_CHANGE_PAUSED_TO_READY:</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">{<br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">    GstBufferPool* pool = ...;<br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">    if (pool)</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<div class="ContentPasted4 elementToProof"><span style="font-family: "Courier New", monospace;">    {</span></div>
<div class="ContentPasted4 elementToProof"><span style="font-family: "Courier New", monospace;">        gst_buffer_pool_set_active(pool, FALSE);</span></div>
<div class="ContentPasted4 elementToProof"><span style="font-family: "Courier New", monospace;">        GST_ERROR("Freeing pool %d", pool->object.object.ref_count);</span></div>
<div class="ContentPasted4 elementToProof"><span style="font-family: "Courier New", monospace;">        // Refcount: 2<br>
</span></div>
<div class="ContentPasted4 elementToProof"><span style="font-family: "Courier New", monospace;">        gst_object_unref(pool);</span></div>
<div class="elementToProof"><br>
</div>
<div class="ContentPasted4 elementToProof"><span style="font-family: "Courier New", monospace;">        pool = NULL;</span></div>
<div class="ContentPasted4 elementToProof"><span style="font-family: "Courier New", monospace;">        // BufferPool not freed<br>
</span></div>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">    }</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">...</span></div>
<br>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">Am I doing something wrong?</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">Do I need to execute additional steps or is this a bug with GstQuery?<br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">Thanks,</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted4 ContentPasted5">
<span style="font-family: "Courier New", monospace;">Edgar<br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<br>
</div>
</body>
</html>