I investigated further and found I made a basic error : the releasing code was 
not called as it should !

So, the code was correct (bar the avpicture_free call) and doesn't leak at all.

Sorry for the noise...


Fulbert.


On Sep 12, 2013, at 14:46, Fulbert <[email protected]> wrote:

> Hi everyone,
> 
> I use FFMpeg on iOS/armv7 (I just cloned the repository yesterday) and even 
> though I easily managed to make a basic video player (thanks to all the devs 
> by the way, the project is really a technical achievement !), I still have a 
> frustrating memory leak problem.
> 
> Short version : some memory is not released each time I play (switch to) a 
> new movie in the same run. The amount of leaking memory depends on the movie, 
> the order is 500KB-5MB.
> 
> In order to better explain the situation, here are the operations I execute 
> to open a new movie (The code is slightly modified to keep only the relevant 
> calls) :
> 
> AVFormatContext*      Ctx;
> avformat_open_input(&Ctx, <...>, NULL, &Options);
> avformat_find_stream_info(Ctx, NULL);
> AVCodecContext* VCodecCtx = Ctx->streams[0]->codec;
> AVCodec* TargetVideoCodec = avcodec_find_decoder(VCodecCtx->codec_id);
> avcodec_open2(VCodecCtx, TargetVideoCodec, NULL);
> AVFrame* TargetFrame = avcodec_alloc_frame();
> AVFrame* TargetFrameRGB = avcodec_alloc_frame();
> int FrameSizeInBytes = avpicture_get_size(PIX_FMT_RGB24, VCodecCtx->width, 
> VCodecCtx->height);
> uint8_t* FrameBuffer = (uint8_t*) av_malloc(FrameSizeInBytes);
> avpicture_fill((AVPicture*) TargetFrameRGB, FrameBuffer, PIX_FMT_RGB24, 
> VCodecCtx->width, VCodecCtx->height);
> struct SwsContext* ScaleCtx = sws_getContext(VCodecCtx->width, 
> VCodecCtx->height, VCodecCtx->pix_fmt, VCodecCtx->width, VCodecCtx->height, 
> PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL);
> 
> And here are the functions I call to release all the previous structures :
> 
> sws_freeContext(ScaleCtx);
> avpicture_free((AVPicture*)TargetFrameRGB);
> av_free(FrameBuffer);
> avcodec_free_frame(&TargetFrame);
> avcodec_free_frame(&TargetFrameRGB);
> avcodec_close(VCodecCtx);
> avformat_close_input(&Ctx);
> 
> There's no AVPacket management, picture scaling or anything graphical here 
> because I tried to present you the minimal pieces of code for which the 
> problem occurs.
> 
> Obviously, I didn't release something I asked to be allocated so I'm sure 
> I've forgot to call a avXXX_free_something but I can't find anything in the 
> sources and I'm quite stuck.
> 
> Is there anybody who can see what the problem is ?
> 
> 
> Thanks.
> 
> Fulbert.
> _______________________________________________
> Libav-user mailing list
> [email protected]
> http://ffmpeg.org/mailman/listinfo/libav-user

_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to