[FFmpeg-devel] [PATCH 1/4] fftools/cmdutils: Fix undefined 1 << 31

Anton Khirnov anton at khirnov.net
Fri Nov 19 15:12:49 EET 2021


Quoting Andreas Rheinhardt (2021-11-18 21:15:05)
> Michael Niedermayer:
> > On Thu, Nov 18, 2021 at 10:07:36AM +0100, Andreas Rheinhardt wrote:
> >> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> >> ---
> >>  fftools/cmdutils.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c
> >> index 594eeef379..f80c361eba 100644
> >> --- a/fftools/cmdutils.c
> >> +++ b/fftools/cmdutils.c
> >> @@ -1823,7 +1823,7 @@ int show_sample_fmts(void *optctx, const char *opt, const char *arg)
> >>  int show_dispositions(void *optctx, const char *opt, const char *arg)
> >>  {
> >>      for (int i = 0; i < 32; i++) {
> >> -        const char *str = av_disposition_to_string(1 << i);
> >> +        const char *str = av_disposition_to_string(1U << i);
> > 
> > is it intended to have 1U<<31 cast to int and then checked as in
> >     if (disposition <= 0)
> >         return NULL;
> > 
> >  ?
> >  
> 
> I agree that the types here (and also in ff_ctz (the relevant GCC
> builtins use unsigned types) are unfortunate and AVStream.disposition as
> well as the other types involved here should be unsigned. Shall I change
> av_disposition_to_string to unsigned and schedule AVStream.disposition
> to unsigned on the next bump? Or shall I just use "i < 31" above?

That's actually a typo, I remember intending to write i < 31, but
apparently failed.

If you want to change the type then that's fine too, I think uint64_t
would be appropriate, given that over half the space is already used.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list