[Libav-user] Correct way of freeing an AVFrame coming from avcodec_decode_video2

Info || Non-Lethal Applications info at non-lethal-applications.com
Fri Jul 4 16:09:53 CEST 2014


Hey guys, 

I’m creating a recording application and I have an incoming frame which I’d like to convert to JPEG without writing it to a movie file.
However, I need to use libav’s V210 decoder before creating the JPEG data.

I’m getting a memory leak in this code:

AVPacket pkt;
av_init_packet(&pkt);
            
pkt.flags |= AV_PKT_FLAG_KEY;
pkt.stream_index  = 0;
pkt.data = imgData;
pkt.size = ...
    
int gotPctr = 0;
    
AVFrame* frameGrabFrame = av_frame_alloc();
avcodec_decode_video2(_pV210CodecCtxFrameGrab, frameGrabFrame, &gotPctr, &pkt);
    
I get a memory consumption increase of about 13 MB after the avcodec_decode call.
However, I can’t manage to free the memory. I already tried without success:

    av_free_packet(&pkt);
    av_frame_unref(frameGrabFrame);
    av_frame_free(&frameGrabFrame);


I’m not using reference counting by the way.
I’m sure that’s a dumb one … sorry for that.

Any advice appreciated!
Thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20140704/22ff56dd/attachment.html>


More information about the Libav-user mailing list