On date Tuesday 2013-06-25 03:52:41 -0700, Pradeep Karosiya encoded: > Hi > > I'm trying to encode images into video. I'm following muxing.c and scaling.c > examples. > Though I'm able to encode a video, I'm not able to get rid of memory leaks. > I tried many different things > related related to allocation of AVPicture but still memory leaks. > Specifically my code crashed when I call avpicture_free due to heap error. > Here is the snippet of code > void WriteFrame(const uchar* buf) //Input buffer contained image data > { > if(need_conversion) > { > AVPicture inpic;
> avpicture_alloc(&inpic,(PixelFormat)input_pix_fmt, width, height); Here you're allocating an image in inpic, and setting the data and linesize pointers. > avpicture_fill(&inpic, (uint8_t*)buf, (PixelFormat)input_pix_fmt, > width, height); Here you're filling inpic with the buffer in buf (assuming align = 1). Now you destroyed the reference to the previously allocated data -> leak. > struct SwsContext *img_convert_ctx = NULL; > img_convert_ctx = sws_getContext( > width, > height, > PIX_FMT_BGR24, > c->width, > c->height, > c->pix_fmt, > SWS_BICUBIC, > NULL, NULL, NULL); > > if (sws_scale( > img_convert_ctx, > inpic.data, > inpic.linesize, 0, > height, > dst_picture.data, > dst_picture.linesize) < 0 ) > { > std::cout<<"Conversion Failed "<<std::endl > } > > avpicture_free(&inpic); //Crashing here here you're freeing the buf data, which maybe does not belong to the heap? [...] _______________________________________________ Libav-user mailing list Libav-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/libav-user