[Libav-user] How to cleanup libavcodec buffers when release is called during decode?

Ratin ratin3 at gmail.com
Tue May 29 07:01:51 CEST 2012

On Sat, May 26, 2012 at 1:03 PM, Carl Eugen Hoyos <cehoyos at ag.or.at> wrote:
> Ratin <ratin3 at ...> writes:
>> Hi,  for h.264 decode with hardware like Nvidia's VDPAU decoding, what
>> should I do to cleanup the resources when avcodec_release callback is
>> called?
>> It seems that there are are some memory leaks when running
>> decode for long period of time.
> I am only guessing since you did not provide any valgrind output,
> but did you see the comment for vdpau_render_state.bitstream_buffers?
> Also see MPlayer r29793
> Carl Eugen

Hi Carl,
   According to valgrind there is no leak, the leak seems to be kernel
memory leak (SUnreclaim  in /proc/meminfo grows incrementally). Also
mplayer is kind of hard to follow for me, since the release happens
elsewhere, not very straight forward. I am doing the following in


         for(i=0; i<4; i++){
                pic->data[i]= NULL;

  I allocate the video surfaces in the beginning and keep reusing
them. So there is not surface release while packets are being decoded.
I am kind of clueless whats causing this kernel memory leak.



More information about the Libav-user mailing list