[FFmpeg-devel] [PATCH 1/7] ffprobe: Change string_validation to int, its accessed via AVOption as int

Michael Niedermayer michaelni at gmx.at
Thu Feb 5 23:03:56 CET 2015


On Thu, Feb 05, 2015 at 12:10:12PM +0100, Stefano Sabatini wrote:
> On date Wednesday 2015-02-04 16:10:03 +0100, Michael Niedermayer encoded:
> > On Wed, Feb 04, 2015 at 03:23:59PM +0100, Michael Niedermayer wrote:
> > > On Wed, Feb 04, 2015 at 12:34:53PM +0100, Stefano Sabatini wrote:
> > > > On date Monday 2015-02-02 23:22:09 +0100, Michael Niedermayer encoded:
> > > > > Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> > > > > ---
> > > > >  ffprobe.c |    2 +-
> > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/ffprobe.c b/ffprobe.c
> > > > > index d352bb6b..30f9cba 100644
> > > > > --- a/ffprobe.c
> > > > > +++ b/ffprobe.c
> > > > > @@ -338,7 +338,7 @@ struct WriterContext {
> > > > >      unsigned int nb_section_frame;  ///< number of the frame  section in case we are in "packets_and_frames" section
> > > > >      unsigned int nb_section_packet_frame; ///< nb_section_packet or nb_section_frame according if is_packets_and_frames
> > > > >  
> > > > > -    StringValidation string_validation;
> > > > > +    int string_validation;
> > > > >      char *string_validation_replacement;
> > > > >      unsigned int string_validation_utf8_flags;
> > > > >  };
> > > > 
> > > > What's the problem with the enum and av_opt()?
> > > > 
> > > > Enums help with debugging.
> > > 
> 
> > > the enum might be a different data type than int, it might have
> > > a different sizeof() than sizeof(int), av_opt accessing it could
> > > fail.
> 
> Is it a theoretical difference or does it affect some
> platform/compiler? In that case, could be a defect in the
> platform/compiler?

gcc on some embeded platforms seems to use types smaller than int
when it can by default. You can get the same behavior with
-fshort-enums on x86 if you like to try,

gcc on linux x86  will also use int64_t if a enum constant is too
large for 32bit idependant of the short enum flag


> 
> From my reading of the C spec, enums and int should be treated in the
> same way by the compiler, but I'm probably wrong.

6.7.2.2 Enumeration specifiers
...
4 Each enumerated type shall be compatible with char, a signed integer type, or an
  unsigned integer type. The choice of type is implementation-defined,110) but shall be
  capable of representing the values of all the members of the enumeration. The
  enumerated type is incomplete until after the } that terminates the list of enumerator
  declarations.

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

While the State exists there can be no freedom; when there is freedom there
will be no State. -- Vladimir Lenin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150205/a76ec6ef/attachment.asc>


More information about the ffmpeg-devel mailing list