[FFmpeg-devel] [PATCH] vsrc_buffer: remove dependency on AVFrame

Stefano Sabatini stefano.sabatini-lala at poste.it
Sat May 14 15:05:12 CEST 2011


On date Saturday 2011-05-14 13:33:40 +0200, Michael Niedermayer encoded:
> On Sat, May 14, 2011 at 12:04:45PM +0200, Stefano Sabatini wrote:
> > On date Saturday 2011-05-14 01:37:57 +0200, Michael Niedermayer encoded:
> > > On Fri, May 13, 2011 at 10:52:46PM +0200, Stefano Sabatini wrote:
> > > > On date Friday 2011-05-13 21:12:59 +0200, Michael Niedermayer encoded:
> > > > > On Fri, May 13, 2011 at 06:42:14PM +0200, Stefano Sabatini wrote:
> > > > > > Change the interface of av_vsrc_buffer_add_frame(), make it accept in input
> > > > > > an AVFilterBufferRef rather than an AVFrame.
> > > > > > 
> > > > > > This way the interface can be used without requiring the
> > > > > > inclusion/installation of libavcodec headers.
> > > > > 
> > > > 
> > > > > theres no need for headers to be installed, struct AVFrame or even
> > > > > void * can be used.
> > > > 
> > > > but in case you want to use the function in a pure libavfilter app you
> > > > can't.
> > > > 
> > > > > [...]
> > > > > > -                    // add it to be filtered
> > > > > > -                    av_vsrc_buffer_add_frame2(ost->input_video_filter, &picture, ""); //TODO user setable params
> > > > > > +
> > > > > > +                    picref = avfilter_get_video_buffer_ref_from_arrays(
> > > > > > +                        picture.data, picture.linesize, AV_PERM_WRITE,
> > > > > > +                        picture.width, picture.height, picture.format);
> > > > > > +                    avfilter_copy_frame_props(picref, &picture);
> > > > > > +                    av_vsrc_buffer_add_frame2(ost->input_video_filter, picref, ""); //TODO user setable params
> > > > > >                  }
> > > > > >              }
> > > > > >          }
> > > > > 
> > > > > This is much more complex for user applications and not extendable
> > > > > we just added these fields days ago. more will be added and this will
> > > > > always need updating.
> > > > 
> > > > But we should only rely on fields contained in the video filter
> > > > buffer, rather than in AVFrame which contains information which can't
> > > > be propagated in the filterchain. And the AVFrame <-> A/V filter
> > > > buffer mapping can be easily extended by extending
> > > > avfilter_copy_frame_props().
> > > > 
> > > > > Iam not against this patch if you want it but i think the people
> > > > > using libavfilter & libavcodec would prefer a simple interface
> > > > > that allows passing an AVFrame.
> > > > 
> > > > What about:
> > > > 
> > > > av_vsrc_buffer_add_frame2(ost->input_video_filter, avfilter_get_video_buffer_ref_from_frame(frame, perm), "");
> > > > ?
> > > 
> > > this looks much better

I didn't consider that the picref needs to be unreffed, new patches
without memleak (and two lines of more code for freeing the allocated
picref without to free the frame data, which is managed by the
decoder).
-- 
FFmpeg = Forgiving and Formidable Magical Practical Evangelical Gem
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-vsrc_buffer-remove-dependency-on-AVFrame.patch
Type: text/x-diff
Size: 8069 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20110514/28fa6cbb/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-lavfi-add-avfilter_get_video_buffer_ref_from_frame-t.patch
Type: text/x-diff
Size: 2822 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20110514/28fa6cbb/attachment-0001.bin>


More information about the ffmpeg-devel mailing list