[FFmpeg-devel] [PATCH] Factorize code from video_thread() and put it in configure_video_filters().

Michael Niedermayer michaelni
Tue Feb 1 22:08:35 CET 2011


On Tue, Feb 01, 2011 at 08:28:09PM +0100, Stefano Sabatini wrote:
> On date Tuesday 2011-02-01 17:32:48 +0100, Michael Niedermayer encoded:
> > On Sun, Jan 30, 2011 at 07:15:29PM +0100, Stefano Sabatini wrote:
> [...]
> > > -    if(vfilters) {
> > > +    if (vfilters) {
> > >          AVFilterInOut *outputs = av_malloc(sizeof(AVFilterInOut));
> > >          AVFilterInOut *inputs  = av_malloc(sizeof(AVFilterInOut));
> > >  
> > 
> > I dont want to nitpick but this has nothing to do with factorizing the code
> > 
> > Also vgraph was a local variable before and can stay one, it doesnt need to be
> > moved to VideoState
> > AVFilterGraph *graph = avfilter_graph_alloc();
> > can stay outside configure_video_filters(graph)
> 
> Fixed&updated.
> --
> FFmpeg = Fucking and Fantastic Martial Plastic Elected Geek

>  ffplay.c |   51 ++++++++++++++++++++++++++++++++-------------------
>  1 file changed, 32 insertions(+), 19 deletions(-)
> 14f8a04cec95f5d7e01c5986429fadc859fddeea  0001-Implement-ffplay.c-configure_video_filters.patch
> From f1ddd2c6686a908ef78c8e82b165e1f6167c1814 Mon Sep 17 00:00:00 2001
> From: Stefano Sabatini <stefano.sabatini-lala at poste.it>
> Date: Sun, 30 Jan 2011 19:09:40 +0100
> Subject: [PATCH] Implement ffplay.c:configure_video_filters().
> 
> Factorize code from ffplay.c:video_thread() and put it in the new
> function configure_video_filters().
> ---
>  ffplay.c |   51 ++++++++++++++++++++++++++++++++-------------------
>  1 files changed, 32 insertions(+), 19 deletions(-)
> 
> diff --git a/ffplay.c b/ffplay.c
> index 1df3824..1fb7502 100644
> --- a/ffplay.c
> +++ b/ffplay.c
> @@ -1782,30 +1782,20 @@ static AVFilter input_filter =
>                                    { .name = NULL }},
>  };
>  
> -#endif  /* CONFIG_AVFILTER */
> -
> -static int video_thread(void *arg)
> +static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const char *vfilters)
>  {
> -    VideoState *is = arg;
> -    AVFrame *frame= avcodec_alloc_frame();
> -    int64_t pts_int;
> -    double pts;
> -    int ret;
> -
> -#if CONFIG_AVFILTER
> -    int64_t pos;
>      char sws_flags_str[128];
> +    int ret;
>      FFSinkContext ffsink_ctx = { .pix_fmt = PIX_FMT_YUV420P };
>      AVFilterContext *filt_src = NULL, *filt_out = NULL;
> -    AVFilterGraph *graph = avfilter_graph_alloc();
>      snprintf(sws_flags_str, sizeof(sws_flags_str), "flags=%d", sws_flags);
>      graph->scale_sws_opts = av_strdup(sws_flags_str);
>  
> -    if (avfilter_graph_create_filter(&filt_src, &input_filter, "src",
> -                                     NULL, is, graph) < 0)
> +    if ((ret = avfilter_graph_create_filter(&filt_src, &input_filter, "src",
> +                                            NULL, is, graph)) < 0)
>          goto the_end;
> -    if (avfilter_graph_create_filter(&filt_out, &ffsink, "out",
> -                                     NULL, &ffsink_ctx, graph) < 0)
> +    if ((ret = avfilter_graph_create_filter(&filt_out, &ffsink, "out",
> +                                            NULL, &ffsink_ctx, graph)) < 0)
>          goto the_end;
>  
>      if(vfilters) {
> @@ -1822,17 +1812,40 @@ static int video_thread(void *arg)
>          inputs->pad_idx = 0;
>          inputs->next    = NULL;
>  
> -        if (avfilter_graph_parse(graph, vfilters, inputs, outputs, NULL) < 0)
> +        if ((ret = avfilter_graph_parse(graph, vfilters, inputs, outputs, NULL)) < 0)
>              goto the_end;
>          av_freep(&vfilters);
>      } else {
> -        if(avfilter_link(filt_src, 0, filt_out, 0) < 0)          goto the_end;
> +        if ((ret = avfilter_link(filt_src, 0, filt_out, 0)) < 0)
> +            goto the_end;
>      }
>  
> -    if (avfilter_graph_config(graph, NULL) < 0)
> +    if ((ret = avfilter_graph_config(graph, NULL)) < 0)
>          goto the_end;
>  
>      is->out_video_filter = filt_out;

> +the_end:
> +    return ret;

LGTM but
you really should replace the gotos by returns at some point

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

The worst form of inequality is to try to make unequal things equal.
-- Aristotle
-------------- 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/20110201/881c0065/attachment.pgp>



More information about the ffmpeg-devel mailing list