[vlc-devel] Re: Decoder.c memory leak patch
Gildas Bazin
gbazin at altern.org
Thu Jul 29 09:19:14 CEST 2004
On Thursday 29 July 2004 01:45, Mark Moriarty wrote:
> Hi --
> I submitted an e-mail earlier today, not sure if it made it through to
> vlc-devel properly.
>
> I traced the memory leak I am seeing using the screen: input function (and
> probably the one I saw earlier with my Osprey DirectShow input device on a
> slower CPU).
>
> What's occuring is that if the raw device input is feeding data faster
than
> can be processed, memory use balloons. Need to adjust function
> input_DecoderDecode, in \src\input\decoder.c to do a release_Block on
input
> packets if the FIFO isn't being processed. Otherwise VLC consumes all
> system memory.
>
Thanks for investigating this.
The patch below is a little less intrusive because it won't drop data blocks
when we have control over the reading pace (eg. transcoding to a file with
--no-minimize-threads).
However it can't be applied like that either because the p_fifo->i_depth
check is not a reasonable one. Basically you only want to drop data blocks
when you notice that the fifo contains more than a predefined time amount
of data and not number of blocks. A block has an arbitrary size (could be a
few bytes to a few megabytes) so you can't really use that information.
We'll need to use something cleverer, unfortunately when they reach this
level, the data blocks are not necessarily timestamped :(
--- src/input/decoder.c (revision 8308)
+++ src/input/decoder.c (working copy)
@@ -207,8 +207,6 @@
{
if( p_dec->p_owner->b_own_thread )
{
- block_FifoPut( p_dec->p_owner->p_fifo, p_block );
-
if( p_dec->p_owner->p_input->b_out_pace_control )
{
/* FIXME !!!!! */
@@ -218,6 +216,13 @@
msleep( 1000 );
}
}
+ else if( p_dec->p_owner->p_fifo->i_depth > 60 )
+ {
+ block_Release( p_block );
+ return;
+ }
+
+ block_FifoPut( p_dec->p_owner->p_fifo, p_block );
}
else
{
--
Gildas
--
This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://developers.videolan.org/lists.html
If you are in trouble, please contact <postmaster at videolan.org>
More information about the vlc-devel
mailing list