[FFmpeg-devel] [PATCH] build: rely on pkg-config for libx264 probing / Hijacked Changelog discussion

Clément Bœsch u at pkh.me
Wed May 14 18:51:52 CEST 2014

On Tue, Dec 17, 2013 at 02:00:52PM +0000, Carl Eugen Hoyos wrote:
> Clément Bœsch <u <at> pkh.me> writes:
> > before:
> >   ./configure --enable-gpl --enable-libx264 
> > --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib"
> > after:
> >   PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure 
> > --enable-gpl --enable-libx264
> As said, I am mildly against this because I don't see 
> what it fixes (you still need a specific configure line) 

It fixes the need to add -I and -L flags. It also ease the creation of static
build: typically, with the help of --pkg-config-flags="--static" it will allow
these flags to be automatically added:

  ☭ pkg-config --libs --static x264
  -lx264 -lpthread -lm -ldl 

Note that when this kind of option is enabled, it is automatically applied to
any library where we use pkg-config. Since we use pkg-config for quite a bunch
of libraries, this should be expected (maybe the detection mechanism used for
each library could be documented).

Basically, as said in the original mail, I see pkg-config as a more reliable,
simpler and expected way for handling all the dependency needs and ease
multiple installations.

BTW, the following diff is actually simpler:

-enabled libx264           && require libx264 x264.h x264_encoder_encode -lx264 &&
-                             { check_cpp_condition x264.h "X264_BUILD >= 118" ||
-                               die "ERROR: libx264 must be installed and version must be >= 0.118."; }
+enabled libx264           && require_pkg_config "x264 >= 0.118" "stdint.h x264.h" x264_encoder_encode

> but at the same time breaks existing configure lines.
> Or doesn't it break them?

Yes, probably. Can't do much about it, these command lines are really
workarounds for a bad detection.

Now I think this is part of a real communication problem we have with our
downstreams. Typically, to overcome that kind of issue, I would suggest to
change our Changelog layout: we *NEED* a release note. We need to split
features, bugfixes (important ones only probably), and behaviour changes.

Suggestion: we wipe Changelog after every release, and replace it with
something like that:

Example inspired from i3 release notes (because it's pretty ;)):


 │ Release notes for FFmpeg 2.3 │

   2.3 was released blablabla
   It includes the following library versions:

    • libavutil      xx.yy.1zz
    • libavcodec     xx.yy.1zz
    • libavformat    xx.yy.1zz
    • libavdevice    xx.yy.1zz
    • libavfilter    xx.yy.1zz
    • libswscale     xx.yy.1zz
    • libswresample  xx.yy.1zz
    • libpostproc    xx.yy.1zz

   Please refer to the doc/APIChanges file for more information.

 │ Features                   │

  • AC3 fixed-point decoding
  • shuffleplanes filter
  • subfile protocol
  • Phantom Cine demuxer
  • replaygain data export
  • VP7 video decoder
  • Alias PIX image encoder and decoder
  • Improvments to the BRender PIX image decoder
  • Improvments to the XBM decoder
  • QTKit input device
  • improvments to OpenEXR image decoder
  • support decoding 16-bit RLE SGI images
  • GDI screen grabbing for Windows
  • alternative rendition support for HTTP Live Streaming
  • AVFoundation input device
  • Direct Stream Digital (DSD) decoder
  • Magic Lantern Video (MLV) demuxer
  • On2 AVC (Audio for Video) decoder
  • support for decoding through DXVA2 in ffmpeg
  • libbs2b-based stereo-to-binaural audio filter

 │ Bugfixes                   │

  • issue3327-libc-2.17.so is not a MP3 anymore

 │ ⚠ Behaviour changes ⚠      │

  • libx264 is now detected through pkg-config


I'm not sure for the Bugfixes section since it will probably be a pain to
maintain, and maybe irrelevant since it might be backported.

Anyway, you get the idea. I realize I should have started a new thread to
discuss this but well, deal with it.


Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140514/76422d0f/attachment.asc>

More information about the ffmpeg-devel mailing list