On Thursday 09 June 2011 18:58:19 Mike Scheutzow wrote: > Stefano Sabatini wrote: > > On date Thursday 2011-06-09 13:25:25 +0300, Mina Nagy Zaki encoded: > >> The list type was changed to int64_t to be able to hold > >> channel layouts. > >> > >> Usage of avfilter_make_format_list for PixelFromats/[AV]SampleFormats > >> had to be changed to use int64_t[] instead of enums, as they are 32bit. > > > > I discussed this with Mina and this looked like the best solution for > > avoiding separate int/int64_t functions. If you have reasons to think > > there are better solutions, please comment. > > This change appears to make things much less type-safe. > > What was the original reason to change 'enum SampleFormat' to int64_t?
This change is to facilitate adding channel layout negotiation between different filters to do some auto-conversions when need. To do that, I reused the sample format negotiation code along with the AVFilterFormats struct. Now for some reason, channel layouts in ffmpeg are stored as int64_t and changing that to int32 would break the api all over the place (though frankly I don't really see the reason it's int64_t in the first place). Now enums are 32bit, and passing in an array of enums to avfilter_make_format_list() wouldn't work anymore, and so here we are. The other option was to duplicate the avfilter_make_formats function and create a 64bit version and a 32bit version. -- Mina _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
