On Sat, 7 Dec 2013 22:16:41 -0800 Bruce Wheaton <[email protected]> wrote:
> On Dec 6, 2013, at 4:39 PM, wm4 <[email protected]> wrote: > > > On Thu, 5 Dec 2013 10:53:37 -0800 > > Bruce Wheaton <[email protected]> wrote: > > > >> On Dec 5, 2013, at 3:41 AM, Paul B Mahol <[email protected]> wrote: > >> > >>> On 12/5/13, Eric Beuque <[email protected]> wrote: > >>>> How i can tell libavcodec that i want to become the owner of the data and > >>>> be able to free it, to without codec context instance? I was thinking > >>>> about > >>>> using get/release_buffer functions, but i don't know how to compute size > >>>> of > >>>> the data. > >>>> > >>>> Is data memcpy the only way to do this? > >>>> > >>>> Note, that i also can't upgrade to new version of FFMPEG. > >>>> > >>>> Thanks for your help. > >>>> > >>> > >>> Use reference counting system. > >>> They you need to manually free frame once you will not need it > >>> (otherwise you leak memory), so you do not need to do copy. > >> > >> > >> In my recent experiments, it seemed that closing the codec actually frees > >> all buffers, regardless of reference count. That makes sense - if the > >> codec is gone, what would detect the decreased reference count? > > > > Did you set AVCodecContext.refcounted_frames to 1? There are other > > weird requirements to use refcounting, such as allocating AVFrames with > > av_frame_alloc() instead of avcodec_frame_alloc() (or whatever it was). > > Yes, I followed all the directions I could find, including those two. In the > end, memory kept increasing, and I found that I couldn't keep buffers longer > than i had the codec and context open. > > It was also quite a memory hog. Saving the copy turned out to have some > downsides. This should not happen. Others (including myself) are using refcounting successfully. Are you unreffing the AVFrame before passing it do the decoder? Are you sure you're not using avcodec_free_frame() etc.? _______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
