We are using gstreamer dynamic changing pipeline. Using the imxv4l2sink works fine when one does not want to remove or change the sink on the fly.
A simple test when the pipe is running, we put the sink to NULL and back to PLAYING the whole pipe crashes and the last output on the debug shows the following error
imxv4l2 gstimxv4l2.c:1686:gst_imx_v4l2_free_buffer: freed buffer more than allocated.
A quick look at the code seems like when allocating memory the function returns (not performing anything) and printing to debug
GST_INFO ("USERPTR mode, needn't allocate memory.\n");
When looking at the free_buffer function, it seems to try and free things that have not been allocated.
Has this been taken care of in some version or is there a work around?
GStreamer Core Library version 1.4.5
Linux imx6qsabresd 3.14.52-g29edc48-dirty #67 SMP PREEMPT
Looks like this issue is due to the buffer type is not supported, or the index is out of bounds, or there is no buffer allocated at all. I suggest try gstreamer 1.6.0
As mentioned the imxv4l2sink uses user-pointer allocation, thus no buffer is supposed to be allocated or freed. The allocation correctly does not allocate anything, just returns from the allocation function (as mentioned). The de-allocate function though tries to free what is not allocated.
Also if buffer type is not supported how could the application run, displaying video, only crashing when one does a state change to NULL?
However we would have a look at gstreamer 1.6.0