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

Guo, Yejun yejun.guo at intel.com
Mon Apr 29 03:55:06 EEST 2019



> -----Original Message-----
> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On Behalf Of
> Alexander Strasser
> Sent: Sunday, April 28, 2019 11:29 PM
> 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
> 
> On 2019-04-28 07:42 +0000, Guo, Yejun wrote:
> > > -----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);
> 
> The added int() calls looks right.
> 
> 
> >         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]);
> 
> You mean it doesn't work in the way that there will be trailing spaces
> in the column before the last one which is partially empty, right?
> 
> But the output looked right and there were never trailing spaces in the
> last column, right?

suppose num_cols = 3, see below, the spaces after 'c' is trimmed, while the spaces after 'e' is still there.

a<spaces>b<spaces>c
d<spaces>e<spaces>


> 
> BTW I changed the algorithm here, because I thought it might be easier
> to unterstand. I will also try the algorithm, you implemented in shell.
> 
> 
> >             }
> >             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
> 
> Wild guess: CR LF line endings are emitted somewhere and the CRs stay in
> the input. Your terminal resets the cursor to the start of the line when
> interpreting the midline CRs.
> 
> Does it work if you extend the tr in print_in_columns like below?
> 
>      sort | tr '\r\n' '  ' | awk -v width="$ncols" '
> 

yes, it works!

> 
> > 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.
> 
> Thanks for testing and looking into it!
> 
>   Alexander
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list