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

Guo, Yejun yejun.guo at intel.com
Sun Apr 28 10:42:50 EEST 2019



> -----Original Message-----
> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On Behalf Of
> Alexander Strasser
> Sent: Sunday, April 28, 2019 9:18 AM
> To: FFmpeg development discussions and patches <ffmpeg-devel at ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [PATCH V5 1/2] configure: sort
> decoder/encoder/filter/... names in alphabet order
> 
> 
> What do you think about using awk instead of shell?
> 
> I have 2 POC patches attached. It's probably not 100% correct yet,
> but it kind of demonstrates what it would look like.
> 
> The main advantage of using awk, is that it's more elegant and
> shorter. It's probably also less risky, because it's more isolated,
> e.g. as it was explained by avih, there is no widely supported way
> for locals across shells. We already use awk in configure for
> mandatory functions, so it's no new dependency.
> 
> Please comment on the awk approach.

I did some change to make it correct on ubuntu 16.04, but looks issue on windows mingw.

print_in_columns() {
    sort | tr '\n' ' ' | awk -v width="$ncols" '
    {
        #add int()
        num_cols = int(width / 24); num_rows = int((NF + num_cols-1) / num_cols);
        y = x = 1;
        for (i = 1; i <= NF; i++) {
            if (y > num_rows) {
                y = 1; x++;
            }
            d[x,y] = $i;
            y++;
        }
		
		print width
		print num_cols
		print num_rows
		print NF
		
        for (y = 1; y <= num_rows; y++) {
            for (x = 1; x <= num_cols; x++) {
                # it does not work for the case that the last column is not fully filled
                #line = sprintf(x != num_cols ? "%s%-24s" : "%s%s", line, d[x,y]);
                line = sprintf("%s%-24s", line, d[x,y]);
            }
            print line;
            line = "";
        }
    }' | sed 's/ *$//'
}

on ubuntu 16.04, the output is:
Enabled bsfs:
135
5
7
33
aac_adtstoasc           extract_extradata       hevc_mp4toannexb        mpeg4_unpack_bframes    truehd_core
av1_frame_split         filter_units            imx_dump_header         noise                   vp9_metadata
av1_metadata            h264_metadata           mjpeg2jpeg              null                    vp9_raw_reorder
chomp                   h264_mp4toannexb        mjpega_dump_header      prores_metadata         vp9_superframe
dca_core                h264_redundant_pps      mov2textsub             remove_extradata        vp9_superframe_split
dump_extradata          hapqa_extract           mp3_header_decompress   text2movsub
eac3_core               hevc_metadata           mpeg2_metadata          trace_headers

while on windows, the output is:
Enabled bsfs:
72
3
11
33
     noiseh264_redundant_pps
          nullextract
          prores_metadata
       remove_extradatamp4toannexb
        text2movsubdump_header
             trace_headers
     truehd_corepega_dump_header
            vp9_metadata
  vp9_raw_reorderader_decompress
         vp9_superframea
   vp9_superframe_splitames


I did a quick check, but has not found the root cause yet.


> 
> I'm not against the shell way, or a mixed approach, but before going
> either way and pushing I would rather have some more testing;
> especially on more exotic platforms.
> 
> 
> Thank you
>   Alexander


More information about the ffmpeg-devel mailing list