[FFmpeg-devel] [PATCH 0/2]: allow hwaccel vda module to manage its buffers lifetime.
Xidorn Quan
quanxunzhen at gmail.com
Thu May 23 09:21:47 CEST 2013
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.
>
> 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
--
Xidorn Quan
GnuPG fingerprint: 6F1E DF9A D250 7505 63E2 345E 7570 8D3F 7C9A 1209
More information about the ffmpeg-devel
mailing list