[FFmpeg-devel] [PATCH V2 1/2] configure: sort decoder/encoder/filter/... names in alphabet order

Alexander Strasser eclipse7 at gmx.net
Tue Apr 23 03:40:14 EEST 2019


On 2019-04-15 21:23 +0800, Guo, Yejun wrote:
> take decoder names an example, with the default page length, shell command
> 'pr' needs two pages for all the decoder names. The names are firstly printed
> in the first page, then in the second page. So, as a whole, the names are
> sorted neither in column order nor in row order. It's a little confused.
> One method is to calculate the proper page length, so all the names are printed
> in one page by 'pr -l', and so strictly in alphabet order, column by column.
> Another method is to use command printf instead of pr, because buybox doesn't
> have pr. This patch refines print_in_columns to print the names with printf
> in alphabet order, very similar with 'pr -l', except the case when the last
> column is not fully filled with names.

Looks promising. Though this kind of change is basically
a bit difficult.

There is some risk that it won't work as expected on all
currently supported shells or perform differently.

For the performance as long as it is not grave, it should
not be a problem. Actually this implementation looks faster

If it won't work as expected the risk is kind of limited,
as long as it doesn't modify global state that matters
and it does not abort the configure script, "only" the
informative / diagnostic output will be flawed, but the
build itself will be fine.

> Signed-off-by: Guo, Yejun <yejun.guo at intel.com>
> ---
>  configure | 34 +++++++++++++++++++++++++---------
>  1 file changed, 25 insertions(+), 9 deletions(-)
> diff --git a/configure b/configure
> index c2580b3..45a9126 100755
> --- a/configure
> +++ b/configure
> @@ -3830,14 +3830,30 @@ die_unknown(){
>  }
>  print_in_columns() {
> -    cols=$(expr $ncols / 24)
> -    cat | tr ' ' '\n' | sort | pr -r "-$cols" -w $ncols -t
> +    width=24
> +    cols=$(expr $ncols / $width)
> +    rows=$(expr $(expr $# + $cols - 1) / $cols)

> +    eval format="%-${width}s"

Why do you use eval here?

> +    for row in $(seq 1 $rows); do

I think the 1 argument to seq isn't needed here and below.

> +        index=$row
> +        line=""
> +        lfmt=""
> +        for col in $(seq 1 $cols); do
> +            if [ $index -le $# ]; then
> +                eval item=\$${index}

This will not work on all shells when trying to expand
the 10th parameter and following.

Excerpt of the relevant POSIX section:

    When a positional parameter with more than one digit is specified, the application shall enclose the digits in braces (see Parameter Expansion).

> +                line=$line" "$item
> +                lfmt=$lfmt$format
> +            fi
> +            index=$(expr $index + $rows)
> +        done
> +        printf "$lfmt\n" $line
> +    done

The function will pad the rightmost column up to the column
width. It is usually not a visual problem in itself, but it
could lead to additional line breaks. Especially considering
that the typical values are significantly less than 24 chars.

>  }
>  show_list() {
>      suffix=_$1
>      shift
> -    echo $* | sed s/$suffix//g | print_in_columns
> +    print_in_columns $(echo $* | sed s/$suffix//g | tr ' ' '\n' | sort)

You are changing the interface of the print_in_columns:
1. passing input as paramters
2. making the sort external

Point 1 makes it a bit harder to read; preprocessing + sorting
pipelines are soaked into a command expansion that gets splitted
into the individual parameters.

Point 2 makes it more flexible, so it shouldn't be a problem.
If we decide to implement it this way, it might be better to
mention that change in the commit message explicitly.


I have experimented locally, inspired by your patch, I came
up with this version:

print_in_columns() {
    cols=$(expr $ncols / $col_width)
    rows=$(expr $(expr $# + $cols - 1) / $cols)

    for idx in $(seq $rows); do
        for col in $(seq $cols); do
            if test $idx -le $#; then
                eval slice='"$slice "${'$idx'}'
            idx=$(expr $idx + $rows)
        printf "$fmt\n" $slice
    done | sed 's/ *$//'

Tested with bash, dash and mksh.


Below follows the diff for a random configure command I tested here,
compared to the current implementation.

It's equivalent to the output of your implementation, minus the
trailing spaces after the last column. Speed is nearly the same.

diff --git a/configure-z.log b/configure-b.log
index e9a1834f4a..ca0bafdeef 100644
--- a/configure-z.log
+++ b/configure-b.log
@@ -60,157 +60,157 @@ Programs:
 ffmpeg                  ffplay                  ffprobe

 Enabled decoders:
-aac			atrac1			eatqi
-aac_fixed		atrac3			eightbps
-aac_latm		atrac3al		eightsvx_exp
-aasc			atrac3p			eightsvx_fib
-ac3			atrac3pal		escape124
-ac3_fixed		atrac9			escape130
-adpcm_4xm		aura			evrc
-adpcm_adx		aura2			exr
-adpcm_afc		avrn			ffv1
-adpcm_agm		avrp			ffvhuff
-adpcm_aica		avs			ffwavesynth
-adpcm_ct		avui			fic
-adpcm_dtk		ayuv			fits
-adpcm_ea		bethsoftvid		flac
-adpcm_ea_maxis_xa	bfi			flashsv
-adpcm_ea_r1		bink			flashsv2
-adpcm_ea_r2		binkaudio_dct		flic
-adpcm_ea_r3		binkaudio_rdft		flv
-adpcm_ea_xas		bintext			fmvc
-adpcm_g722		bitpacked		fourxm
-adpcm_g726		bmp			fraps
-adpcm_g726le		bmv_audio		frwu
-adpcm_ima_amv		bmv_video		g2m
-adpcm_ima_apc		brender_pix		g723_1
-adpcm_ima_dat4		c93			g729
-adpcm_ima_dk3		cavs			gdv
-adpcm_ima_dk4		ccaption		gif
-adpcm_ima_ea_eacs	cdgraphics		gremlin_dpcm
-adpcm_ima_ea_sead	cdxl			gsm
-adpcm_ima_iss		cfhd			gsm_ms
-adpcm_ima_oki		cinepak			h261
-adpcm_ima_qt		clearvideo		h263
-adpcm_ima_rad		cljr			h263_v4l2m2m
-adpcm_ima_smjpeg	cllc			h263i
-adpcm_ima_wav		comfortnoise		h263p
-adpcm_ima_ws		cook			h264
-adpcm_ms		cpia			h264_crystalhd
-adpcm_mtaf		cscd			h264_v4l2m2m
-adpcm_psx		cyuv			hap
-adpcm_sbpro_2		dca			hcom
-adpcm_sbpro_3		dds			hevc
-adpcm_sbpro_4		dfa			hevc_v4l2m2m
-adpcm_swf		dirac			hnm4_video
-adpcm_thp		dnxhd			hq_hqa
-adpcm_thp_le		dolby_e			hqx
-adpcm_vima		dpx			huffyuv
-adpcm_xa		dsd_lsbf		hymt
-adpcm_yamaha		dsd_lsbf_planar		iac
-agm			dsd_msbf		idcin
-aic			dsd_msbf_planar		idf
-alac			dsicinaudio		iff_ilbm
-alias_pix		dsicinvideo		ilbc
-als			dss_sp			imc
-amrnb			dst			imm4
-amrwb			dvaudio			indeo2
-amv			dvbsub			indeo3
-anm			dvdsub			indeo4
-ansi			dvvideo			indeo5
-ape			dxa			interplay_acm
-apng			dxtory			interplay_dpcm
-aptx			dxv			interplay_video
-aptx_hd			eac3			jacosub
-arbc			eacmv			jpeg2000
-ass			eamad			jpegls
-asv1			eatgq			jv
-asv2			eatgv			kgv1
-kmvc			pcm_dvd			rv20
-lagarith		pcm_f16le		rv30
-loco			pcm_f24le		rv40
-lscr			pcm_f32be		s302m
-m101			pcm_f32le		sami
-mace3			pcm_f64be		sanm
-mace6			pcm_f64le		sbc
-magicyuv		pcm_lxf			scpr
-mdec			pcm_mulaw		screenpresso
-metasound		pcm_s16be		sdx2_dpcm
-microdvd		pcm_s16be_planar	sgi
-mimic			pcm_s16le		sgirle
-mjpeg			pcm_s16le_planar	sheervideo
-mjpegb			pcm_s24be		shorten
-mlp			pcm_s24daud		sipr
-mmvideo			pcm_s24le		smackaud
-motionpixels		pcm_s24le_planar	smacker
-movtext			pcm_s32be		smc
-mp1			pcm_s32le		smvjpeg
-mp1float		pcm_s32le_planar	snow
-mp2			pcm_s64be		sol_dpcm
-mp2float		pcm_s64le		sonic
-mp3			pcm_s8			sp5x
-mp3adu			pcm_s8_planar		speedhq
-mp3adufloat		pcm_u16be		srgc
-mp3float		pcm_u16le		srt
-mp3on4			pcm_u24be		ssa
-mp3on4float		pcm_u24le		stl
-mpc7			pcm_u32be		subrip
-mpc8			pcm_u32le		subviewer
-mpeg1_v4l2m2m		pcm_u8			subviewer1
-mpeg1video		pcm_vidc		sunrast
-mpeg2_crystalhd		pcm_zork		svq1
-mpeg2_v4l2m2m		pcx			svq3
-mpeg2video		pgm			tak
-mpeg4			pgmyuv			targa
-mpeg4_crystalhd		pgssub			targa_y216
-mpeg4_v4l2m2m		pictor			tdsc
-mpegvideo		pixlet			text
-mpl2			pjs			theora
-msa1			png			thp
-mscc			ppm			tiertexseqvideo
-msmpeg4_crystalhd	prores			tiff
-msmpeg4v1		prosumer		tmv
-msmpeg4v2		psd			truehd
-msmpeg4v3		ptx			truemotion1
-msrle			qcelp			truemotion2
-mss1			qdm2			truemotion2rt
-mss2			qdmc			truespeech
-msvideo1		qdraw			tscc
-mszh			qpeg			tscc2
-mts2			qtrle			tta
-mvc1			r10k			twinvq
-mvc2			r210			txd
-mwsc			ra_144			ulti
-mxpeg			ra_288			utvideo
-nellymoser		ralf			v210
-nuv			rasc			v210x
-on2avc			rawvideo		v308
-opus			realtext		v408
-paf_audio		rl2			v410
-paf_video		roq			vb
-pam			roq_dpcm		vble
-pbm			rpza			vc1
-pcm_alaw		rscc			vc1_crystalhd
-pcm_bluray		rv10			vc1_v4l2m2m
-vc1image		wcmv			xan_wc4
-vcr1			webp			xbin
-vmdaudio		webvtt			xbm
-vmdvideo		wmalossless		xface
-vmnc			wmapro			xl
-vorbis			wmav1			xma1
-vp3			wmav2			xma2
-vp5			wmavoice		xpm
-vp6			wmv1			xsub
-vp6a			wmv2			xwd
-vp6f			wmv3			y41p
-vp7			wmv3_crystalhd		ylc
-vp8			wmv3image		yop
-vp8_v4l2m2m		wnv1			yuv4
-vp9			wrapped_avframe		zero12v
-vp9_v4l2m2m		ws_snd1			zerocodec
-vplayer			xan_dpcm		zlib
-vqa			xan_wc3			zmbv
+aac                     fourxm                  pixlet
+aac_fixed               fraps                   pjs
+aac_latm                frwu                    png
+aasc                    g2m                     ppm
+ac3                     g723_1                  prores
+ac3_fixed               g729                    prosumer
+adpcm_4xm               gdv                     psd
+adpcm_adx               gif                     ptx
+adpcm_afc               gremlin_dpcm            qcelp
+adpcm_agm               gsm                     qdm2
+adpcm_aica              gsm_ms                  qdmc
+adpcm_ct                h261                    qdraw
+adpcm_dtk               h263                    qpeg
+adpcm_ea                h263_v4l2m2m            qtrle
+adpcm_ea_maxis_xa       h263i                   r10k
+adpcm_ea_r1             h263p                   r210
+adpcm_ea_r2             h264                    ra_144
+adpcm_ea_r3             h264_crystalhd          ra_288
+adpcm_ea_xas            h264_v4l2m2m            ralf
+adpcm_g722              hap                     rasc
+adpcm_g726              hcom                    rawvideo
+adpcm_g726le            hevc                    realtext
+adpcm_ima_amv           hevc_v4l2m2m            rl2
+adpcm_ima_apc           hnm4_video              roq
+adpcm_ima_dat4          hq_hqa                  roq_dpcm
+adpcm_ima_dk3           hqx                     rpza
+adpcm_ima_dk4           huffyuv                 rscc
+adpcm_ima_ea_eacs       hymt                    rv10
+adpcm_ima_ea_sead       iac                     rv20
+adpcm_ima_iss           idcin                   rv30
+adpcm_ima_oki           idf                     rv40
+adpcm_ima_qt            iff_ilbm                s302m
+adpcm_ima_rad           ilbc                    sami
+adpcm_ima_smjpeg        imc                     sanm
+adpcm_ima_wav           imm4                    sbc
+adpcm_ima_ws            indeo2                  scpr
+adpcm_ms                indeo3                  screenpresso
+adpcm_mtaf              indeo4                  sdx2_dpcm
+adpcm_psx               indeo5                  sgi
+adpcm_sbpro_2           interplay_acm           sgirle
+adpcm_sbpro_3           interplay_dpcm          sheervideo
+adpcm_sbpro_4           interplay_video         shorten
+adpcm_swf               jacosub                 sipr
+adpcm_thp               jpeg2000                smackaud
+adpcm_thp_le            jpegls                  smacker
+adpcm_vima              jv                      smc
+adpcm_xa                kgv1                    smvjpeg
+adpcm_yamaha            kmvc                    snow
+agm                     lagarith                sol_dpcm
+aic                     loco                    sonic
+alac                    lscr                    sp5x
+alias_pix               m101                    speedhq
+als                     mace3                   srgc
+amrnb                   mace6                   srt
+amrwb                   magicyuv                ssa
+amv                     mdec                    stl
+anm                     metasound               subrip
+ansi                    microdvd                subviewer
+ape                     mimic                   subviewer1
+apng                    mjpeg                   sunrast
+aptx                    mjpegb                  svq1
+aptx_hd                 mlp                     svq3
+arbc                    mmvideo                 tak
+ass                     motionpixels            targa
+asv1                    movtext                 targa_y216
+asv2                    mp1                     tdsc
+atrac1                  mp1float                text
+atrac3                  mp2                     theora
+atrac3al                mp2float                thp
+atrac3p                 mp3                     tiertexseqvideo
+atrac3pal               mp3adu                  tiff
+atrac9                  mp3adufloat             tmv
+aura                    mp3float                truehd
+aura2                   mp3on4                  truemotion1
+avrn                    mp3on4float             truemotion2
+avrp                    mpc7                    truemotion2rt
+avs                     mpc8                    truespeech
+avui                    mpeg1_v4l2m2m           tscc
+ayuv                    mpeg1video              tscc2
+bethsoftvid             mpeg2_crystalhd         tta
+bfi                     mpeg2_v4l2m2m           twinvq
+bink                    mpeg2video              txd
+binkaudio_dct           mpeg4                   ulti
+binkaudio_rdft          mpeg4_crystalhd         utvideo
+bintext                 mpeg4_v4l2m2m           v210
+bitpacked               mpegvideo               v210x
+bmp                     mpl2                    v308
+bmv_audio               msa1                    v408
+bmv_video               mscc                    v410
+brender_pix             msmpeg4_crystalhd       vb
+c93                     msmpeg4v1               vble
+cavs                    msmpeg4v2               vc1
+ccaption                msmpeg4v3               vc1_crystalhd
+cdgraphics              msrle                   vc1_v4l2m2m
+cdxl                    mss1                    vc1image
+cfhd                    mss2                    vcr1
+cinepak                 msvideo1                vmdaudio
+clearvideo              mszh                    vmdvideo
+cljr                    mts2                    vmnc
+cllc                    mvc1                    vorbis
+comfortnoise            mvc2                    vp3
+cook                    mwsc                    vp5
+cpia                    mxpeg                   vp6
+cscd                    nellymoser              vp6a
+cyuv                    nuv                     vp6f
+dca                     on2avc                  vp7
+dds                     opus                    vp8
+dfa                     paf_audio               vp8_v4l2m2m
+dirac                   paf_video               vp9
+dnxhd                   pam                     vp9_v4l2m2m
+dolby_e                 pbm                     vplayer
+dpx                     pcm_alaw                vqa
+dsd_lsbf                pcm_bluray              wavpack
+dsd_lsbf_planar         pcm_dvd                 wcmv
+dsd_msbf                pcm_f16le               webp
+dsd_msbf_planar         pcm_f24le               webvtt
+dsicinaudio             pcm_f32be               wmalossless
+dsicinvideo             pcm_f32le               wmapro
+dss_sp                  pcm_f64be               wmav1
+dst                     pcm_f64le               wmav2
+dvaudio                 pcm_lxf                 wmavoice
+dvbsub                  pcm_mulaw               wmv1
+dvdsub                  pcm_s16be               wmv2
+dvvideo                 pcm_s16be_planar        wmv3
+dxa                     pcm_s16le               wmv3_crystalhd
+dxtory                  pcm_s16le_planar        wmv3image
+dxv                     pcm_s24be               wnv1
+eac3                    pcm_s24daud             wrapped_avframe
+eacmv                   pcm_s24le               ws_snd1
+eamad                   pcm_s24le_planar        xan_dpcm
+eatgq                   pcm_s32be               xan_wc3
+eatgv                   pcm_s32le               xan_wc4
+eatqi                   pcm_s32le_planar        xbin
+eightbps                pcm_s64be               xbm
+eightsvx_exp            pcm_s64le               xface
+eightsvx_fib            pcm_s8                  xl
+escape124               pcm_s8_planar           xma1
+escape130               pcm_u16be               xma2
+evrc                    pcm_u16le               xpm
+exr                     pcm_u24be               xsub
+ffv1                    pcm_u24le               xwd
+ffvhuff                 pcm_u32be               y41p
+ffwavesynth             pcm_u32le               ylc
+fic                     pcm_u8                  yop
+fits                    pcm_vidc                yuv4
+flac                    pcm_zork                zero12v
+flashsv                 pcx                     zerocodec
+flashsv2                pgm                     zlib
+flic                    pgmyuv                  zmbv
+flv                     pgssub
+fmvc                    pictor

 Enabled encoders:
 a64multi                jpegls                  pgmyuv
@@ -271,13 +271,13 @@ huffyuv			pcx			zlib
 jpeg2000                pgm                     zmbv

 Enabled hwaccels:
-h263_vaapi		mpeg1_xvmc		vc1_vaapi
-h264_vaapi		mpeg2_vaapi		vc1_vdpau
-h264_vdpau		mpeg2_vdpau		vp8_vaapi
-hevc_vaapi		mpeg2_xvmc		vp9_vaapi
-hevc_vdpau		mpeg4_vaapi		wmv3_vaapi
-mjpeg_vaapi		mpeg4_vdpau		wmv3_vdpau
+h263_vaapi              mpeg1_xvmc              vc1_vdpau
+h264_vaapi              mpeg2_vaapi             vp8_vaapi
+h264_vdpau              mpeg2_vdpau             vp9_vaapi
+hevc_vaapi              mpeg2_xvmc              wmv3_vaapi
+hevc_vdpau              mpeg4_vaapi             wmv3_vdpau
+mjpeg_vaapi             mpeg4_vdpau
+mpeg1_vdpau             vc1_vaapi

 Enabled parsers:
 aac                     dvd_nav                 mpegvideo
@@ -297,104 +297,104 @@ dvaudio			mpeg4video		vp9
 dvbsub                  mpegaudio               xma

 Enabled demuxers:
-aa			ea			ircam
-aac			ea_cdata		iss
-ac3			eac3			iv8
-acm			epaf			ivf
-act			ffmetadata		ivr
-adf			filmstrip		jacosub
-adp			fits			jv
-ads			flac			kux
-adx			flic			live_flv
-aea			flv			lmlm4
-afc			fourxm			loas
-aiff			frm			lrc
-aix			fsb			lvf
-amr			g722			lxf
-amrnb			g723_1			m4v
-amrwb			g726			matroska
-anm			g726le			mgsts
-apc			g729			microdvd
-ape			gdv			mjpeg
-apng			genh			mjpeg_2000
-aptx			gif			mlp
-aptx_hd			gsm			mlv
-aqtitle			gxf			mm
-asf			h261			mmf
-asf_o			h263			mov
-ass			h264			mp3
-ast			hcom			mpc
-au			hevc			mpc8
-avi			hls			mpegps
-avr			hnm			mpegts
-avs			ico			mpegtsraw
-avs2			idcin			mpegvideo
-bethsoftvid		idf			mpjpeg
-bfi			iff			mpl2
-bfstm			ilbc			mpsub
-bink			image2			msf
-bintext			image2_alias_pix	msnwc_tcp
-bit			image2_brender_pix	mtaf
-bmv			image2pipe		mtv
-boa			image_bmp_pipe		musx
-brstm			image_dds_pipe		mv
-c93			image_dpx_pipe		mvi
-caf			image_exr_pipe		mxf
-cavsvideo		image_gif_pipe		mxg
-cdg			image_j2k_pipe		nc
-cdxl			image_jpeg_pipe		nistsphere
-cine			image_jpegls_pipe	nsp
-codec2			image_pam_pipe		nsv
-codec2raw		image_pbm_pipe		nut
-concat			image_pcx_pipe		nuv
-data			image_pgm_pipe		ogg
-daud			image_pgmyuv_pipe	oma
-dcstr			image_pictor_pipe	paf
-dfa			image_png_pipe		pcm_alaw
-dhav			image_ppm_pipe		pcm_f32be
-dirac			image_psd_pipe		pcm_f32le
-dnxhd			image_qdraw_pipe	pcm_f64be
-dsf			image_sgi_pipe		pcm_f64le
-dsicin			image_sunrast_pipe	pcm_mulaw
-dss			image_svg_pipe		pcm_s16be
-dts			image_tiff_pipe		pcm_s16le
-dtshd			image_webp_pipe		pcm_s24be
-dv			image_xpm_pipe		pcm_s24le
-dvbsub			image_xwd_pipe		pcm_s32be
-dvbtxt			ingenient		pcm_s32le
-dxa			ipmovie			pcm_s8
-pcm_u16be		sdr2			ty
-pcm_u16le		sds			v210
-pcm_u24be		sdx			v210x
-pcm_u24le		segafilm		vag
-pcm_u32be		ser			vc1
-pcm_u32le		shorten			vc1t
-pcm_u8			siff			vividas
-pcm_vidc		sln			vivo
-pjs			smacker			vmd
-pmp			smjpeg			vobsub
-pva			smush			voc
-pvf			sol			vpk
-qcp			sox			vplayer
-r3d			spdif			vqf
-rawvideo		srt			w64
-realtext		stl			wav
-redspark		str			wc3
-rl2			subviewer		webm_dash_manifest
-rm			subviewer1		webvtt
-roq			sup			wsaud
-rpl			svag			wsd
-rsd			swf			wsvqa
-rso			tak			wtv
-rtp			tedcaptions		wv
-rtsp			thp			wve
-s337m			threedostr		xa
-sami			tiertexseq		xbin
-sap			tmv			xmv
-sbc			truehd			xvag
-sbg			tta			xwma
-scc			tty			yop
-sdp			txd			yuv4mpegpipe
+aa                      idf                     pcm_s32le
+aac                     iff                     pcm_s8
+ac3                     ilbc                    pcm_u16be
+acm                     image2                  pcm_u16le
+act                     image2_alias_pix        pcm_u24be
+adf                     image2_brender_pix      pcm_u24le
+adp                     image2pipe              pcm_u32be
+ads                     image_bmp_pipe          pcm_u32le
+adx                     image_dds_pipe          pcm_u8
+aea                     image_dpx_pipe          pcm_vidc
+afc                     image_exr_pipe          pjs
+aiff                    image_gif_pipe          pmp
+aix                     image_j2k_pipe          pva
+amr                     image_jpeg_pipe         pvf
+amrnb                   image_jpegls_pipe       qcp
+amrwb                   image_pam_pipe          r3d
+anm                     image_pbm_pipe          rawvideo
+apc                     image_pcx_pipe          realtext
+ape                     image_pgm_pipe          redspark
+apng                    image_pgmyuv_pipe       rl2
+aptx                    image_pictor_pipe       rm
+aptx_hd                 image_png_pipe          roq
+aqtitle                 image_ppm_pipe          rpl
+asf                     image_psd_pipe          rsd
+asf_o                   image_qdraw_pipe        rso
+ass                     image_sgi_pipe          rtp
+ast                     image_sunrast_pipe      rtsp
+au                      image_svg_pipe          s337m
+avi                     image_tiff_pipe         sami
+avr                     image_webp_pipe         sap
+avs                     image_xpm_pipe          sbc
+avs2                    image_xwd_pipe          sbg
+bethsoftvid             ingenient               scc
+bfi                     ipmovie                 sdp
+bfstm                   ircam                   sdr2
+bink                    iss                     sds
+bintext                 iv8                     sdx
+bit                     ivf                     segafilm
+bmv                     ivr                     ser
+boa                     jacosub                 shorten
+brstm                   jv                      siff
+c93                     kux                     sln
+caf                     live_flv                smacker
+cavsvideo               lmlm4                   smjpeg
+cdg                     loas                    smush
+cdxl                    lrc                     sol
+cine                    lvf                     sox
+codec2                  lxf                     spdif
+codec2raw               m4v                     srt
+concat                  matroska                stl
+data                    mgsts                   str
+daud                    microdvd                subviewer
+dcstr                   mjpeg                   subviewer1
+dfa                     mjpeg_2000              sup
+dhav                    mlp                     svag
+dirac                   mlv                     swf
+dnxhd                   mm                      tak
+dsf                     mmf                     tedcaptions
+dsicin                  mov                     thp
+dss                     mp3                     threedostr
+dts                     mpc                     tiertexseq
+dtshd                   mpc8                    tmv
+dv                      mpegps                  truehd
+dvbsub                  mpegts                  tta
+dvbtxt                  mpegtsraw               tty
+dxa                     mpegvideo               txd
+ea                      mpjpeg                  ty
+ea_cdata                mpl2                    v210
+eac3                    mpsub                   v210x
+epaf                    msf                     vag
+ffmetadata              msnwc_tcp               vc1
+filmstrip               mtaf                    vc1t
+fits                    mtv                     vividas
+flac                    musx                    vivo
+flic                    mv                      vmd
+flv                     mvi                     vobsub
+fourxm                  mxf                     voc
+frm                     mxg                     vpk
+fsb                     nc                      vplayer
+g722                    nistsphere              vqf
+g723_1                  nsp                     w64
+g726                    nsv                     wav
+g726le                  nut                     wc3
+g729                    nuv                     webm_dash_manifest
+gdv                     ogg                     webvtt
+genh                    oma                     wsaud
+gif                     paf                     wsd
+gsm                     pcm_alaw                wsvqa
+gxf                     pcm_f32be               wtv
+h261                    pcm_f32le               wv
+h263                    pcm_f64be               wve
+h264                    pcm_f64le               xa
+hcom                    pcm_mulaw               xbin
+hevc                    pcm_s16be               xmv
+hls                     pcm_s16le               xvag
+hnm                     pcm_s24be               xwma
+ico                     pcm_s24le               yop
+idcin                   pcm_s32be               yuv4mpegpipe

 Enabled muxers:
 a64                     hevc                    pcm_s24le
@@ -453,142 +453,142 @@ hash			pcm_s16le		wv
 hds                     pcm_s24be               yuv4mpegpipe

 Enabled protocols:
-async			http			rtmpt
-cache			httpproxy		rtp
-concat			icecast			srtp
-crypto			md5			subfile
-data			mmsh			tcp
-ffrtmphttp		mmst			tee
-file			pipe			udp
-ftp			prompeg			udplite
-gopher			rtmp			unix
+async                   http                    rtp
+cache                   httpproxy               srtp
+concat                  icecast                 subfile
+crypto                  md5                     tcp
+data                    mmsh                    tee
+ffrtmphttp              mmst                    udp
+file                    pipe                    udplite
+ftp                     prompeg                 unix
+gopher                  rtmp
+hls                     rtmpt

 Enabled filters:
-abench			astats			detelecine
-abitscope		astreamselect		dilation
-acompressor		atadenoise		displace
-acontrast		atempo			doubleweave
-acopy			atrim			drawbox
-acrossfade		avectorscope		drawgraph
-acrossover		avgblur			drawgrid
-acrusher		azmq			drmeter
-acue			bandpass		dynaudnorm
-adeclick		bandreject		earwax
-adeclip			bass			ebur128
-adelay			bbox			edgedetect
-aderivative		bench			elbg
-adrawgraph		biquad			entropy
-aecho			bitplanenoise		eq
-aemphasis		blackdetect		equalizer
-aeval			blackframe		erosion
-aevalsrc		blend			extractplanes
-afade			bm3d			extrastereo
-afftdn			boxblur			fade
-afftfilt		bwdif			fftdnoiz
-afifo			cellauto		fftfilt
-afir			channelmap		field
-aformat			channelsplit		fieldhint
-agate			chorus			fieldmatch
-agraphmonitor		chromahold		fieldorder
-ahistogram		chromakey		fifo
-aiir			chromashift		fillborders
-aintegral		ciescope		find_rect
-ainterleave		codecview		firequalizer
-alimiter		color			flanger
-allpass			colorbalance		floodfill
-allrgb			colorchannelmixer	format
-allyuv			colorkey		fps
-aloop			colorlevels		framepack
-alphaextract		colormatrix		framerate
-alphamerge		colorspace		framestep
-amerge			compand			freezedetect
-ametadata		compensationdelay	fspp
-amix			concat			gblur
-amovie			convolution		geq
-amplify			convolve		gradfun
-amultiply		copy			graphmonitor
-anequalizer		cover_rect		greyedge
-anlmdn			crop			haas
-anoisesrc		cropdetect		haldclut
-anull			crossfeed		haldclutsrc
-anullsink		crystalizer		hdcd
-anullsrc		cue			headphone
-apad			curves			hflip
-aperms			datascope		highpass
-aphasemeter		dcshift			highshelf
-aphaser			dctdnoiz		hilbert
-apulsator		deband			histeq
-arealtime		deblock			histogram
-aresample		decimate		hqdn3d
-areverse		deconvolve		hqx
-aselect			dedot			hstack
-asendcmd		deflate			hue
-asetnsamples		deflicker		hwdownload
-asetpts			deinterlace_vaapi	hwmap
-asetrate		dejudder		hwupload
-asettb			delogo			hysteresis
-ashowinfo		denoise_vaapi		idet
-asidedata		deshake			il
-asplit			despill			inflate
-interlace		premultiply		smptebars
-interleave		prewitt			smptehdbars
-join			procamp_vaapi		sobel
-kerndeint		pseudocolor		spectrumsynth
-lenscorrection		psnr			split
-life			pullup			spp
-limiter			qp			sr
-loop			random			ssim
-loudnorm		readeia608		stereo3d
-lowpass			readvitc		stereotools
-lowshelf		realtime		stereowiden
-lumakey			remap			streamselect
-lut			removegrain		super2xsai
-lut1d			removelogo		superequalizer
-lut2			repeatfields		surround
-lut3d			replaygain		swaprect
-lutrgb			reverse			swapuv
-lutyuv			rgbashift		tblend
-mandelbrot		rgbtestsrc		telecine
-maskedclamp		roberts			testsrc
-maskedmerge		rotate			testsrc2
-maskfun			sab			threshold
-mcdeint			scale			thumbnail
-mcompand		scale2ref		tile
-mergeplanes		scale_vaapi		tinterlace
-mestimate		select			tlut2
-metadata		selectivecolor		tmix
-midequalizer		sendcmd			tonemap
-minterpolate		separatefields		tpad
-mix			setdar			transpose
-movie			setfield		transpose_vaapi
-mpdecimate		setparams		treble
-mptestsrc		setpts			tremolo
-negate			setrange		trim
-nlmeans			setsar			unpremultiply
-nnedi			settb			unsharp
-noformat		sharpness_vaapi		uspp
-noise			showcqt			vaguedenoiser
-normalize		showfreqs		vectorscope
-null			showinfo		vflip
-nullsink		showpalette		vfrdet
-nullsrc			showspectrum		vibrance
-oscilloscope		showspectrumpic		vibrato
-overlay			showvolume		vignette
-owdenoise		showwaves		vmafmotion
-pad			showwavespic		volume
-pal100bars		shuffleframes		volumedetect
-pal75bars		shuffleplanes		vstack
-palettegen		sidechaincompress	w3fdif
-paletteuse		sidechaingate		waveform
-pan			sidedata		weave
-perms			signalstats		xbr
-perspective		signature		xstack
-phase			silencedetect		yadif
-pixdesctest		silenceremove		yuvtestsrc
-pixscope		sinc			zmq
-pp			sine			zoompan
-pp7			smartblur
+abench                  deflate                 pan
+abitscope               deflicker               perms
+acompressor             deinterlace_vaapi       perspective
+acontrast               dejudder                phase
+acopy                   delogo                  pixdesctest
+acrossfade              denoise_vaapi           pixscope
+acrossover              deshake                 pp
+acrusher                despill                 pp7
+acue                    detelecine              premultiply
+adeclick                dilation                prewitt
+adeclip                 displace                procamp_vaapi
+adelay                  doubleweave             pseudocolor
+aderivative             drawbox                 psnr
+adrawgraph              drawgraph               pullup
+aecho                   drawgrid                qp
+aemphasis               drmeter                 random
+aeval                   dynaudnorm              readeia608
+aevalsrc                earwax                  readvitc
+afade                   ebur128                 realtime
+afftdn                  edgedetect              remap
+afftfilt                elbg                    removegrain
+afifo                   entropy                 removelogo
+afir                    eq                      repeatfields
+aformat                 equalizer               replaygain
+agate                   erosion                 reverse
+agraphmonitor           extractplanes           rgbashift
+ahistogram              extrastereo             rgbtestsrc
+aiir                    fade                    roberts
+aintegral               fftdnoiz                rotate
+ainterleave             fftfilt                 sab
+alimiter                field                   scale
+allpass                 fieldhint               scale2ref
+allrgb                  fieldmatch              scale_vaapi
+allyuv                  fieldorder              select
+aloop                   fifo                    selectivecolor
+alphaextract            fillborders             sendcmd
+alphamerge              find_rect               separatefields
+amerge                  firequalizer            setdar
+ametadata               flanger                 setfield
+amix                    floodfill               setparams
+amovie                  format                  setpts
+amplify                 fps                     setrange
+amultiply               framepack               setsar
+anequalizer             framerate               settb
+anlmdn                  framestep               sharpness_vaapi
+anoisesrc               freezedetect            showcqt
+anull                   fspp                    showfreqs
+anullsink               gblur                   showinfo
+anullsrc                geq                     showpalette
+apad                    gradfun                 showspectrum
+aperms                  graphmonitor            showspectrumpic
+aphasemeter             greyedge                showvolume
+aphaser                 haas                    showwaves
+apulsator               haldclut                showwavespic
+arealtime               haldclutsrc             shuffleframes
+aresample               hdcd                    shuffleplanes
+areverse                headphone               sidechaincompress
+aselect                 hflip                   sidechaingate
+asendcmd                highpass                sidedata
+asetnsamples            highshelf               signalstats
+asetpts                 hilbert                 signature
+asetrate                histeq                  silencedetect
+asettb                  histogram               silenceremove
+ashowinfo               hqdn3d                  sinc
+asidedata               hqx                     sine
+asplit                  hstack                  smartblur
+astats                  hue                     smptebars
+astreamselect           hwdownload              smptehdbars
+atadenoise              hwmap                   sobel
+atempo                  hwupload                spectrumsynth
+atrim                   hysteresis              split
+avectorscope            idet                    spp
+avgblur                 il                      sr
+azmq                    inflate                 ssim
+bandpass                interlace               stereo3d
+bandreject              interleave              stereotools
+bass                    join                    stereowiden
+bbox                    kerndeint               streamselect
+bench                   lenscorrection          super2xsai
+biquad                  life                    superequalizer
+bitplanenoise           limiter                 surround
+blackdetect             loop                    swaprect
+blackframe              loudnorm                swapuv
+blend                   lowpass                 tblend
+bm3d                    lowshelf                telecine
+boxblur                 lumakey                 testsrc
+bwdif                   lut                     testsrc2
+cellauto                lut1d                   threshold
+channelmap              lut2                    thumbnail
+channelsplit            lut3d                   tile
+chorus                  lutrgb                  tinterlace
+chromahold              lutyuv                  tlut2
+chromakey               mandelbrot              tmix
+chromashift             maskedclamp             tonemap
+ciescope                maskedmerge             tpad
+codecview               maskfun                 transpose
+color                   mcdeint                 transpose_vaapi
+colorbalance            mcompand                treble
+colorchannelmixer       mergeplanes             tremolo
+colorkey                mestimate               trim
+colorlevels             metadata                unpremultiply
+colormatrix             midequalizer            unsharp
+colorspace              minterpolate            uspp
+compand                 mix                     vaguedenoiser
+compensationdelay       movie                   vectorscope
+concat                  mpdecimate              vflip
+convolution             mptestsrc               vfrdet
+convolve                negate                  vibrance
+copy                    nlmeans                 vibrato
+cover_rect              nnedi                   vignette
+crop                    noformat                vmafmotion
+cropdetect              noise                   volume
+crossfeed               normalize               volumedetect
+crystalizer             null                    vstack
+cue                     nullsink                w3fdif
+curves                  nullsrc                 waveform
+datascope               oscilloscope            weave
+dcshift                 overlay                 xbr
+dctdnoiz                owdenoise               xstack
+deband                  pad                     yadif
+deblock                 pal100bars              yuvtestsrc
+decimate                pal75bars               zmq
+deconvolve              palettegen              zoompan
+dedot                   paletteuse

 Enabled bsfs:
 aac_adtstoasc           h264_redundant_pps      noise
@@ -604,20 +604,20 @@ h264_metadata		mpeg2_metadata		vp9_superframe
 h264_mp4toannexb        mpeg4_unpack_bframes    vp9_superframe_split

 Enabled indevs:
-alsa			oss			v4l2
-fbdev			sndio			xcbgrab
+alsa                    oss                     xcbgrab
+fbdev                   sndio
+lavfi                   v4l2

 Enabled outdevs:
-alsa			sdl2			v4l2
-fbdev			sndio			xv
+alsa                    sdl2                    xv
+fbdev                   sndio
+oss                     v4l2

 License: GPL version 2 or later
 libavfilter/filter_list.c is unchanged
 libavdevice/indev_list.c is unchanged
 libavdevice/outdev_list.c is unchanged

-real	0m24.882s
-user	0m11.817s
-sys	0m4.488s
+real	0m17.654s
+user	0m13.339s
+sys	0m4.852s

More information about the ffmpeg-devel mailing list