[FFmpeg-devel] [PATCH] Make the scale filter only declare the supported formats
Michael Niedermayer
michaelni
Thu Jan 7 00:07:50 CET 2010
On Wed, Jan 06, 2010 at 09:56:30PM +0100, Stefano Sabatini wrote:
> On date Tuesday 2010-01-05 00:18:50 +0100, Michael Niedermayer encoded:
> > On Mon, Jan 04, 2010 at 01:54:24AM +0100, Stefano Sabatini wrote:
> [...]
> > > + avfilter_formats_ref(in_formats, &ctx->inputs[0]->out_formats);
> > > }
> > > if (ctx->outputs[0]) {
> > > - formats = avfilter_all_colorspaces();
> > > - avfilter_formats_ref(formats, &ctx->outputs[0]->in_formats);
> > > + if (!(out_formats = av_mallocz(sizeof(AVFilterFormats)))) {
> > > + ret = AVERROR(ENOMEM);
> > > + goto fail;
> > > + }
> > > +
> > > + for (pix_fmt = 0; pix_fmt < PIX_FMT_NB; pix_fmt++)
> > > + if (sws_isSupportedOutput(pix_fmt))
> > > + if ((ret = avfilter_add_colorspace(out_formats, pix_fmt)) < 0)
> > > + goto fail;
> > > + avfilter_formats_ref(out_formats, &ctx->outputs[0]->in_formats);
> > > }
> > >
> > > return 0;
> > > +
> > > +fail:
> >
> > > + if (in_formats)
> > > + avfilter_formats_unref(&in_formats);
> > > + if (out_formats)
> > > + avfilter_formats_unref(&out_formats);
> >
> > do we need this freeing here?
> > it seems more logic to let the common calling code do the cleanup
>
> I agree (I didn't understood what you meant here with "calling code").
>
> Note that currently all the filter formats in case of query_formats
> failure got freed when calling avfilter_graph_destroy().
>
> Also maybe is also a good idea to extend the documentation of
> query_formats() like in the attached patch.
>
> Regards.
> --
> FFmpeg = Fundamentalist and Fantastic Minimalistic Puritan Exxagerate Gem
> avfilter.h | 4 ++++
> 1 file changed, 4 insertions(+)
> 10a2cd10a15a46fe552a40dd79710f3491d8486f extend-query-formats-doxy.patch
> Index: libavfilter-soc/ffmpeg/libavfilter/avfilter.h
> ===================================================================
> --- libavfilter-soc.orig/ffmpeg/libavfilter/avfilter.h 2010-01-06 21:13:21.000000000 +0100
> +++ libavfilter-soc/ffmpeg/libavfilter/avfilter.h 2010-01-06 21:15:26.000000000 +0100
> @@ -423,6 +423,10 @@
> * in_formats for links connected to its output pads, and out_formats
> * for links connected to its input pads.
> *
> + * In case of unsuccess the calling code should free all the
> + * in_formats and out_formats eventually allocated by the
> + * function.
> + *
> * @return zero on success, a negative value corresponding to an
> * AVERROR code otherwise.
> */
ok, also we maybe should clarify that AVFilter.*() should not be called by
applications using lavfi but rather use the *() functions which then do
in this case contain the cleanup in a central place
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Good people do not need laws to tell them to act responsibly, while bad
people will find a way around the laws. -- Plato
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100107/82da96ef/attachment.pgp>
More information about the ffmpeg-devel
mailing list