[Libav-user] FFPlay input_filter and ffsink question

Stefano Sabatini stefano.sabatini-lala at poste.it
Tue Jun 14 10:28:24 CEST 2011


On date Friday 2011-06-10 10:52:44 +0300, Farkas Szilard Levente encoded:
> Hello,
> 
> In FFplay method configure_video_filters there are two filters used:
> 
> 1. ffplay input
> 
> static AVFilter input_filter =
> {
>     .name      = "ffplay_input",
> 
>     .priv_size = sizeof(FilterPriv),
> 
>     .init      = input_init,
>     .uninit    = input_uninit,
> 
>     .query_formats = input_query_formats,
> 
>     .inputs    = (AVFilterPad[]) {{ .name = NULL }},
>     .outputs   = (AVFilterPad[]) {{ .name = "default",
>                                     .type = AVMEDIA_TYPE_VIDEO,
>                                     .request_frame = input_request_frame,
>                                     .config_props  = input_config_props, },
>                                   { .name = NULL }},
> };
> 
> 2. ffsink from cmdutils.c
> 
> AVFilter ffsink = {
>     .name      = "ffsink",
>     .priv_size = sizeof(FFSinkContext),
>     .init      = ffsink_init,
> 
>     .query_formats = ffsink_query_formats,
> 
>     .inputs    = (AVFilterPad[]) {{ .name          = "default",
>                                     .type          = AVMEDIA_TYPE_VIDEO,
>                                     .end_frame     = null_end_frame,
>                                     .min_perms     = AV_PERM_READ, },
>                                   { .name = NULL }},
>     .outputs   = (AVFilterPad[]) {{ .name = NULL }},
> };
> 
> Why are they used only in ffplay? What filter combination should I use
> to do what ffplay does in configure_video_filters?

ffsink will be made public soon, so you will be able to use it
directly in your app.

The ffplay_input source is a variant of vsrc_buffer which allows
strict integration with libavcodec (thus allowing direct rendering),
but it is still unusable in ffmpeg due to some issues which need yet
to be fixed.
 
> Right now I am using BUFFER filter as SRC, insert NULLSINK as the last
> filter and use its input pin as my output.
> 
> input --> .. --> last_filter --> [in] nullsink [null]     [in] --> output
>                                              |                              |
>                                              |                              |
>                                             +------------------------+
> 
> Any other way to do what ffplay does?


More information about the Libav-user mailing list