[FFmpeg-devel] [PATCH 0/2]: allow hwaccel vda module to manage its buffers lifetime.
Sebastien Zwickert
dilaroga at gmail.com
Fri May 24 11:38:59 CEST 2013
2013/5/24 Xidorn Quan <quanxunzhen at gmail.com>
> On Fri, May 24, 2013 at 6:42 AM, Sebastien Zwickert <dilaroga at gmail.com
> >wrote:
>
> >
> > On May 23, 2013, at 9:21 AM, Xidorn Quan <quanxunzhen at gmail.com> wrote:
> >
> > > On Thu, May 23, 2013 at 3:19 PM, Hendrik Leppkes <h.leppkes at gmail.com
> > >wrote:
> > >
> > >> On Thu, May 23, 2013 at 9:14 AM, Sebastien Zwickert <
> dilaroga at gmail.com
> > >
> > >> wrote:
> > >>> On May 23, 2013, at 8:29 AM, Hendrik Leppkes <h.leppkes at gmail.com>
> > >> wrote:
> > >>>> On Wed, May 22, 2013 at 9:53 PM, Sebastien Zwickert <
> > dilaroga at gmail.com>
> > >> wrote:
> > >>>>> This patchset fixes memory leaks of vda core video buffers while
> > >> seeking.
> > >>>>> It allows hwaccel modules to set a custom callback for freeing av
> > >> buffers.
> > >>>>> Then vda decoder can flush correctly dropped frames.
> > >>>>>
> > >>>>> Thanks to Xidorn Quan who gives me good feebacks about the patch I
> > >> shared
> > >>>>> with him in private.
> > >>>>>
> > >>>>> Sebastien Zwickert (2):
> > >>>>> hwaccel: allow to set a user-defined callback for releasing private
> > >>>>> av buffer.
> > >>>>> vda: use hwaccel custom callback for releasing private picture
> > >>>>> context.
> > >>>>>
> > >>>>> libavcodec/avcodec.h | 12 ++++++++++++
> > >>>>> libavcodec/h264.c | 9 ++++++++-
> > >>>>> libavcodec/mpegvideo.c | 9 ++++++++-
> > >>>>> libavcodec/vda.h | 12 +++++++++++-
> > >>>>> libavcodec/vda_h264.c | 18 ++++++++++++++++++
> > >>>>> 5 files changed, 57 insertions(+), 3 deletions(-)
> > >>>>>
> > >>>>> --
> > >>>>> 1.7.9.6 (Apple Git-31.1)
> > >>>>>
> > >>>>> _______________________________________________
> > >>>>> ffmpeg-devel mailing list
> > >>>>> ffmpeg-devel at ffmpeg.org
> > >>>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> > >>>>
> > >>>> You set frame->data[3] to the same buffer that needs freeing, why
> not
> > >>>> simply also set frame->buf appropriately to a AVBufferRef you
> create,
> > >>>> so that it gets free'ed with a callback there?
> > >>>> No extra release buffer callback needed from where i stand.
> > >>>
> > >>> I'm not sure to understand correctly but the vda buffer is part of
> > >>> Core Video SDK which is based on a ref counted memory management
> > >>> and must be released with CVPixelBufferRelease().
> > >>> So custom callback for freeing Core Video types is necessary.
> > >>>
> > >>
> > >> You can do that if you just create a AVBufferRef around your buffer
> > >> (you can specify a release callback for AVBufferRefs) and put it
> > >> somewhere in frame->buf, it'll be free'ed with the frame then.
> > >> I'm not really liking the new function in AVHWAccel, because its not
> > >> really required with the new buffer management functions.
> > Ok it makes sense.
> >
> > >>
> > >> Considering frame->data[3] is set by the code, i think its safe to
> > >> also set frame->buf[3] to the AVBufferRef managing this buffer without
> > >> worrying about user-code.
> > >>
> > >
> > > So you may like to have a look at my solution here:
> > > http://ffmpeg.org/pipermail/ffmpeg-devel/2013-May/143988.html
> >
> > This patch applies what you explain here and works fine.
> >
>
> I have an idea: we can drop the first patch of your patchset and use
> hwaccel_priv_buf directly like how I use frame->buf in my patch.
> What do you think?
> <http://ffmpeg.org/mailman/listinfo/ffmpeg-devel>
>
Well, I'm fine with your current patch that puts av buffer in frame->buf.
More information about the ffmpeg-devel
mailing list