[gst-devel] matroskamux memory use question
Ron McOuat
rmcouat at smartt.com
Wed Nov 5 00:02:58 CET 2008
I am new to gstreamer but not to Linux/UNIX of other types.
I don't want to file a bug report if this is expected behavior, however,
if this should be reported I will be happy to follow up.
I am using Fedora 9 and have built with the latest stable gstreamer plus
base and good plugins source downloads in order to test with valgrind.
Using matroskamux from gst-plugins-good-0.10.10, also the Fedora
released versions which are older have the same behavior, I noticed the
process size increasing as buffers pass though. To make this easy to
reproduce I used this simple pipeline.
gst-launch fakesrc num-buffers=100000 ! matroskamux ! fakesink
Process starts at ~ 700k and increases to 3.1 MBytes
Repeat the same line with 200,000 buffers and the final size is 5.4 MBytes
So that is about 2.3 MBytes / 100,000 buffers through matroskamux or
about 23 or maybe 24 bytes per buffer.
If the pipeline does not contain matroskamux then the process size does
not increase, tested to 1,000,000 buffers.
With the latest stable source I compiled and used the gst-uninstall
script to launch a shell and use the local libraries under my account.
From there I ran valgrind with memtest using detailed reporting against
the above pipeline and nothing is reported as a leak. The gst-launch
spends a considerable amount of time at final size until the pipeline
shutdown messages occur. I figure the final shut down of the pipeline is
actually cleaning up this memory.
My question is should this element actually behave this way? Once a
buffer is passed through a filter there should be no held reference. I
have suspicions about the gst_buffer_new_and_alloc in function
gst_matroska_mux_create_buffer_header() is not getting unreferenced
until the program ends but I don't know this code well enough yet. It
could also be something held in the matroska libraries?
Thanks
Ron
More information about the gstreamer-devel
mailing list