[FFmpeg-devel] [RFC] print license and configuration for each lib

Diego Biurrun diego
Fri Oct 30 19:52:51 CET 2009


On Fri, Oct 30, 2009 at 07:20:38PM +0100, Stefano Sabatini wrote:
> On date Friday 2009-10-30 18:51:23 +0100, Diego Biurrun encoded:
> > On Wed, Oct 28, 2009 at 06:59:11PM +0000, M?ns Rullg?rd wrote:
> > > Diego Biurrun <diego at biurrun.de> writes:
> > > 
> > > > Here's something I started and wanted to have some feedback on before I
> > > > progress.  Sometimes it can be useful to have the exact configuration
> > > > and license string in each library and have it printed by each library.
> > > >
> > > > Here is a proof of concept patch that does it for libavutil and
> > > > libavcodec.  Once the chinks are worked out I can lather, rinse, repeat
> > > > for the others.
> > > >
> > > > I made two alternative implementations, choose the one you prefer.
> > > > Things that could possibly be improved (but might not be worth the
> > > > trouble):
> > > >
> > > > - The licensing information for each library could be more detailed.
> > > >   For example, libavutil is always LGPL, even when FFmpeg was compiled
> > > >   in GPL mode.
> > > > - Use a single function to perform the job.
> > > >
> > > > +void avutil_configuration(void)
> > > > +{
> > > > +    const char* configuration = "libavutil configuration: " FFMPEG_CONFIGURATION;
> > > > +    av_log(NULL, AV_LOG_INFO, "%s\n", configuration);
> > > > +}
> > > > +
> > > > +void avutil_license(void)
> > > > +{
> > > > +    const char* libavutil_license = "libavutil license: "FFMPEG_LICENSE;
> > > > +    av_log(NULL, AV_LOG_INFO, "%s\n", libavutil_license);
> > > > +}
> > > 
> > > Returning the string would probably be more flexible.
> > 
> > Like I have done in $attached for libavcodec?  Anything else?
> > 
> > --- libavcodec/avcodec.h	(Revision 20419)
> > +++ libavcodec/avcodec.h	(Arbeitskopie)
> > @@ -3062,6 +3062,16 @@
> >  unsigned avcodec_version(void);
> >  
> >  /**
> > + * Prints the libavcodec build-time configuration.
> > + */
> > +const char* avcodec_configuration(void);
> 
> Nit: "const char* " -> "const char *", here and below.

Hmm, any particular reason why?

> > --- cmdutils.c	(Revision 20419)
> > +++ cmdutils.c	(Arbeitskopie)
> > @@ -317,6 +317,8 @@
> >  {
> >      unsigned int version;
> >      PRINT_LIB_VERSION(outstream, avutil,   AVUTIL,   indent);
> > +    fprintf(stderr, avcodec_configuration());
> > +    fprintf(stderr, avcodec_license());
> 
> Why not to extend the PRINT_LIB_VERSION macro?
> Then it could be renamed e.g. PRINT_LIB_INFO().

I don't much like that macro.  I think I should probably just add a
print_all_lib_licenses function.

> >      PRINT_LIB_VERSION(outstream, avcodec,  AVCODEC,  indent);
> >      PRINT_LIB_VERSION(outstream, avformat, AVFORMAT, indent);
> >      PRINT_LIB_VERSION(outstream, avdevice, AVDEVICE, indent);
> 
> Anyway IMO would be better *before to apply this*, to work out some
> way to provide per-library licensing information, rather than spit-out
> wrong informations, e.g. lavu showing up a nonfree/GPL license.

That's easy enough for me to cook up in configure.  It's the rest that I
need reviewed.

Diego



More information about the ffmpeg-devel mailing list