[FFmpeg-devel] [PATCH 1/4] Implement avfilter_ref_video_buffer().

Michael Niedermayer michaelni
Fri Nov 12 20:19:08 CET 2010


On Fri, Nov 12, 2010 at 03:49:38PM +0100, Stefano Sabatini wrote:
> On date Friday 2010-11-12 13:32:37 +0100, Michael Niedermayer encoded:
> > On Thu, Nov 11, 2010 at 11:21:58PM +0100, Stefano Sabatini wrote:
> > > On date Thursday 2010-11-11 20:04:43 +0100, Michael Niedermayer encoded:
> > > > On Wed, Nov 10, 2010 at 09:16:29PM +0100, Stefano Sabatini wrote:
> > > > > On date Wednesday 2010-11-10 16:21:18 +0100, Michael Niedermayer encoded:
> > > > > > On Tue, Nov 09, 2010 at 11:28:04PM +0100, Stefano Sabatini wrote:
> > > > > > > On date Tuesday 2010-11-09 19:39:16 +0100, Michael Niedermayer encoded:
> > > > > > > > On Sat, Nov 06, 2010 at 11:09:05PM +0100, Stefano Sabatini wrote:
> > > > > > > > > ---
> > > > > > > > >  libavfilter/avfilter.c |   38 +++++++++++++++++++++++++++++++++++++
> > > > > > > > >  libavfilter/avfilter.h |   14 +++++++++++++
> > > > > > > > >  libavfilter/defaults.c |   49 ++++++++++++++---------------------------------
> > > > > > > > >  3 files changed, 67 insertions(+), 34 deletions(-)
> > > > > > > [...]
> > > > > > > > > --- a/libavfilter/avfilter.h
> > > > > > > > > +++ b/libavfilter/avfilter.h
> > > > > > > > > @@ -649,6 +649,20 @@ AVFilterBufferRef *avfilter_get_video_buffer(AVFilterLink *link, int perms,
> > > > > > > > >                                            int w, int h);
> > > > > > > > >  
> > > > > > > > >  /**
> > > > > > > > > + * Create a video buffer reference wrapped around an already allocated
> > > > > > > > > + * image.
> > > > > > > > > + *
> > > > > > > > > + * @param data pointers to the planes of the image to reference
> > > > > > > > > + * @param linesize linesizes for the planes of the image to reference
> > > > > > > > > + * @param perms the required access permissions
> > > > > > > > > + * @param w the width of the image in data
> > > > > > > > > + * @param h the height of the image in data
> > > > > > > > > + * @param format the pixel format of the image in data
> > > > > > > > > + */
> > > > > > > > > +AVFilterBufferRef *avfilter_ref_video_buffer(uint8_t *data[4], int linesize[4], int perms,
> > > > > > > > > +                                             int w, int h, enum PixelFormat format);
> > > > > > > > 
> > > > > > > > that function name is nothing but bad
> > > > > > > > 
> > > > > > > > avfilter_given_picture_to_ref() is a random better one
> > > > > > > 
> > > > > > > well we have a video buffer and we want a reference from them, and I
> > > > > > > wanted something similar to:
> > > > > > > 
> > > > > > > avfilter_get_video_buffer()
> > > > > > > so
> > > > > > > avfilter_ref_video_buffer()
> > > > > > 
> > > > > > we have avfilter_ref_buffer() with totally different semantics
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > > 
> > > > > > > Other ideas:
> > > > > > > avfilter_get_video_buffer_ref()
> > > > > > 
> > > > > > > avfilter_get_video_buffer_ref_from_image()
> > > > > > 
> > > > > > thats the only where the name is not saying something completely different from
> > > > > > what the function does.
> > > > > > 
> > > > > > i suggest:
> > > > > > avfilter_arrays_to_video_buffer_ref()
> > > > > 
> > > > > I find this name not very informative (what do the arrays contain?),
> > > > 
> > > > well, to me its quite clear but feel free to call it pixel_arrays
> > > > 
> > > > 
> > > > > so I have a preference for avfilter_get_video_buffer_ref_from_image(),
> > > > > which is a bit long but more explicative.
> > > > 
> > > > image in this context says nothing. That can be an arbitrary struct representing
> > > > an image or a AVBufferRef or whatever, it certainly does not hint toward raw
> > > > data/linesize arrays
> > > 
> > > AVBufferRef should never be referenced in that way but using
> > > avfilter_ref_buffer(), and I have no idea what else it should
> > > represent a data+linesize passed to such a function, also the idea:
> > > data[4]+linesize[4] ~ image
> > > should be clear and familiar from the imgutils.h API.
> > 
> > grep 'image[a-zA-Z0-9 _]*(' libav*/*.c
> > doesnt convince me that image means data/linesize arrays
> > 
> > but even in imgutils.h
> > void av_image_fill_max_pixsteps(int max_pixsteps[4], int max_pixstep_comps[4],
> >                                 const AVPixFmtDescriptor *pixdesc);
> > 
> > surely has neither data nor linesize arrays
> 
> Other proposals:
> 

> avfilter_get_video_buffer_ref_from_arrays

just longer than my suggestion otherwise its the same


> avfilter_ref_video_buffer_arrays

ambigous


> 
> avfilter_ref_buffer_from_video_buffer_arrays
> avfilter_get_video_buffer_ref_from_video_buffer_arrays
> avfilter_get_buffer_ref_from_video_buffer_arrays

we have no video anything array, as the thing just represents a single frame


> 
> avfilter_ref_buffer_from_image_arrays
> avfilter_get_video_buffer_ref_from_image_arrays
> avfilter_get_buffer_ref_from_image_arrays

image arrays implicates to me that there are several images

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I have never wished to cater to the crowd; for what I know they do not
approve, and what they approve I do not know. -- Epicurus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20101112/f298e2b4/attachment.pgp>



More information about the ffmpeg-devel mailing list