diff mbox series

[FFmpeg-devel] lib*/version: Move library version functions into files of their own

Message ID AS8PR01MB794467A492C922D9DA178B408FC59@AS8PR01MB7944.eurprd01.prod.exchangelabs.com
State Accepted
Commit f2b79c5b855b7450c8f3c15b9ec11b439cd2a294
Headers show
Series [FFmpeg-devel] lib*/version: Move library version functions into files of their own | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Andreas Rheinhardt May 6, 2022, 10:31 a.m. UTC
This avoids having to rebuild big files every time FFMPEG_VERSION
changes (which it does with every commit).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 Makefile                   |  4 ++-
 ffbuild/common.mak         |  2 --
 libavcodec/Makefile        |  1 +
 libavcodec/avcodec.c       | 25 --------------
 libavcodec/version.c       | 50 +++++++++++++++++++++++++++
 libavdevice/Makefile       |  1 +
 libavdevice/avdevice.c     | 24 -------------
 libavdevice/version.c      | 45 ++++++++++++++++++++++++
 libavfilter/Makefile       |  1 +
 libavfilter/avfilter.c     | 23 ------------
 libavfilter/version.c      | 44 +++++++++++++++++++++++
 libavformat/Makefile       |  1 +
 libavformat/utils.c        | 21 -----------
 libavformat/version.c      | 45 ++++++++++++++++++++++++
 libavutil/Makefile         |  1 +
 libavutil/utils.c          | 43 -----------------------
 libavutil/version.c        | 71 ++++++++++++++++++++++++++++++++++++++
 libpostproc/Makefile       |  3 +-
 libpostproc/postprocess.c  | 21 -----------
 libpostproc/version.c      | 44 +++++++++++++++++++++++
 libswresample/Makefile     |  1 +
 libswresample/swresample.c | 21 -----------
 libswresample/version.c    | 45 ++++++++++++++++++++++++
 libswscale/Makefile        |  1 +
 libswscale/utils.c         | 20 -----------
 libswscale/version.c       | 41 ++++++++++++++++++++++
 26 files changed, 397 insertions(+), 202 deletions(-)
 create mode 100644 libavcodec/version.c
 create mode 100644 libavdevice/version.c
 create mode 100644 libavfilter/version.c
 create mode 100644 libavformat/version.c
 create mode 100644 libavutil/version.c
 create mode 100644 libpostproc/version.c
 create mode 100644 libswresample/version.c
 create mode 100644 libswscale/version.c

Comments

Martin Storsjö May 6, 2022, 11:09 a.m. UTC | #1
On Fri, 6 May 2022, Andreas Rheinhardt wrote:

> This avoids having to rebuild big files every time FFMPEG_VERSION
> changes (which it does with every commit).
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
> Makefile                   |  4 ++-
> ffbuild/common.mak         |  2 --
> libavcodec/Makefile        |  1 +
> libavcodec/avcodec.c       | 25 --------------
> libavcodec/version.c       | 50 +++++++++++++++++++++++++++
> libavdevice/Makefile       |  1 +
> libavdevice/avdevice.c     | 24 -------------
> libavdevice/version.c      | 45 ++++++++++++++++++++++++
> libavfilter/Makefile       |  1 +
> libavfilter/avfilter.c     | 23 ------------
> libavfilter/version.c      | 44 +++++++++++++++++++++++
> libavformat/Makefile       |  1 +
> libavformat/utils.c        | 21 -----------
> libavformat/version.c      | 45 ++++++++++++++++++++++++
> libavutil/Makefile         |  1 +
> libavutil/utils.c          | 43 -----------------------
> libavutil/version.c        | 71 ++++++++++++++++++++++++++++++++++++++
> libpostproc/Makefile       |  3 +-
> libpostproc/postprocess.c  | 21 -----------
> libpostproc/version.c      | 44 +++++++++++++++++++++++
> libswresample/Makefile     |  1 +
> libswresample/swresample.c | 21 -----------
> libswresample/version.c    | 45 ++++++++++++++++++++++++
> libswscale/Makefile        |  1 +
> libswscale/utils.c         | 20 -----------
> libswscale/version.c       | 41 ++++++++++++++++++++++
> 26 files changed, 397 insertions(+), 202 deletions(-)

LGTM, thanks!

// Martin
Andreas Rheinhardt May 9, 2022, 7:14 p.m. UTC | #2
Andreas Rheinhardt:
> This avoids having to rebuild big files every time FFMPEG_VERSION
> changes (which it does with every commit).
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
>  Makefile                   |  4 ++-
>  ffbuild/common.mak         |  2 --
>  libavcodec/Makefile        |  1 +
>  libavcodec/avcodec.c       | 25 --------------
>  libavcodec/version.c       | 50 +++++++++++++++++++++++++++
>  libavdevice/Makefile       |  1 +
>  libavdevice/avdevice.c     | 24 -------------
>  libavdevice/version.c      | 45 ++++++++++++++++++++++++
>  libavfilter/Makefile       |  1 +
>  libavfilter/avfilter.c     | 23 ------------
>  libavfilter/version.c      | 44 +++++++++++++++++++++++
>  libavformat/Makefile       |  1 +
>  libavformat/utils.c        | 21 -----------
>  libavformat/version.c      | 45 ++++++++++++++++++++++++
>  libavutil/Makefile         |  1 +
>  libavutil/utils.c          | 43 -----------------------
>  libavutil/version.c        | 71 ++++++++++++++++++++++++++++++++++++++
>  libpostproc/Makefile       |  3 +-
>  libpostproc/postprocess.c  | 21 -----------
>  libpostproc/version.c      | 44 +++++++++++++++++++++++
>  libswresample/Makefile     |  1 +
>  libswresample/swresample.c | 21 -----------
>  libswresample/version.c    | 45 ++++++++++++++++++++++++
>  libswscale/Makefile        |  1 +
>  libswscale/utils.c         | 20 -----------
>  libswscale/version.c       | 41 ++++++++++++++++++++++
>  26 files changed, 397 insertions(+), 202 deletions(-)
>  create mode 100644 libavcodec/version.c
>  create mode 100644 libavdevice/version.c
>  create mode 100644 libavfilter/version.c
>  create mode 100644 libavformat/version.c
>  create mode 100644 libavutil/version.c
>  create mode 100644 libpostproc/version.c
>  create mode 100644 libswresample/version.c
>  create mode 100644 libswscale/version.c
> 
> diff --git a/Makefile b/Makefile
> index 48cfb6e240..f38b521765 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -19,6 +19,8 @@ vpath %/fate_config.sh.template $(SRC_PATH)
>  TESTTOOLS   = audiogen videogen rotozoom tiny_psnr tiny_ssim base64 audiomatch
>  HOSTPROGS  := $(TESTTOOLS:%=tests/%) doc/print_options
>  
> +ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale swresample
> +
>  # $(FFLIBS-yes) needs to be in linking order
>  FFLIBS-$(CONFIG_AVDEVICE)   += avdevice
>  FFLIBS-$(CONFIG_AVFILTER)   += avfilter
> @@ -113,7 +115,7 @@ include $(SRC_PATH)/fftools/Makefile
>  include $(SRC_PATH)/doc/Makefile
>  include $(SRC_PATH)/doc/examples/Makefile
>  
> -libavcodec/avcodec.o libavformat/utils.o libavdevice/avdevice.o libavfilter/avfilter.o libavutil/utils.o libpostproc/postprocess.o libswresample/swresample.o libswscale/utils.o : libavutil/ffversion.h
> +$(ALLFFLIBS:%=lib%/version.o): libavutil/ffversion.h
>  
>  $(PROGS): %$(PROGSSUF)$(EXESUF): %$(PROGSSUF)_g$(EXESUF)
>  ifeq ($(STRIPTYPE),direct)
> diff --git a/ffbuild/common.mak b/ffbuild/common.mak
> index 42f7b23641..24113c59eb 100644
> --- a/ffbuild/common.mak
> +++ b/ffbuild/common.mak
> @@ -29,8 +29,6 @@ $(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR))))
>  $(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL))
>  endif
>  
> -ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale swresample
> -
>  # NASM requires -I path terminated with /
>  IFLAGS     := -I. -I$(SRC_LINK)/
>  CPPFLAGS   := $(IFLAGS) $(CPPFLAGS)
> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
> index cfaa6f196a..1b60e0e1d4 100644
> --- a/libavcodec/Makefile
> +++ b/libavcodec/Makefile
> @@ -56,6 +56,7 @@ OBJS = ac3_parser.o                                                     \
>         qsv_api.o                                                        \
>         raw.o                                                            \
>         utils.o                                                          \
> +       version.o                                                        \
>         vlc.o                                                            \
>         vorbis_parser.o                                                  \
>         xiph.o                                                           \
> diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
> index d11f035481..8afb6cd62e 100644
> --- a/libavcodec/avcodec.c
> +++ b/libavcodec/avcodec.c
> @@ -40,31 +40,6 @@
>  #include "frame_thread_encoder.h"
>  #include "internal.h"
>  #include "thread.h"
> -#include "version.h"
> -
> -#include "libavutil/ffversion.h"
> -const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> -
> -unsigned avcodec_version(void)
> -{
> -    av_assert0(AV_CODEC_ID_PCM_S8_PLANAR==65563);
> -    av_assert0(AV_CODEC_ID_ADPCM_G722==69660);
> -    av_assert0(AV_CODEC_ID_SRT==94216);
> -    av_assert0(LIBAVCODEC_VERSION_MICRO >= 100);
> -
> -    return LIBAVCODEC_VERSION_INT;
> -}
> -
> -const char *avcodec_configuration(void)
> -{
> -    return FFMPEG_CONFIGURATION;
> -}
> -
> -const char *avcodec_license(void)
> -{
> -#define LICENSE_PREFIX "libavcodec license: "
> -    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> -}
>  
>  int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size)
>  {
> diff --git a/libavcodec/version.c b/libavcodec/version.c
> new file mode 100644
> index 0000000000..d7966b2015
> --- /dev/null
> +++ b/libavcodec/version.c
> @@ -0,0 +1,50 @@
> +/*
> + * Version functions.
> + *
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include "config.h"
> +
> +#include "libavutil/avassert.h"
> +#include "avcodec.h"
> +#include "codec_id.h"
> +#include "version.h"
> +
> +#include "libavutil/ffversion.h"
> +const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> +
> +unsigned avcodec_version(void)
> +{
> +    av_assert0(AV_CODEC_ID_PCM_S8_PLANAR==65563);
> +    av_assert0(AV_CODEC_ID_ADPCM_G722==69660);
> +    av_assert0(AV_CODEC_ID_SRT==94216);
> +    av_assert0(LIBAVCODEC_VERSION_MICRO >= 100);
> +
> +    return LIBAVCODEC_VERSION_INT;
> +}
> +
> +const char *avcodec_configuration(void)
> +{
> +    return FFMPEG_CONFIGURATION;
> +}
> +
> +const char *avcodec_license(void)
> +{
> +#define LICENSE_PREFIX "libavcodec license: "
> +    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> +}
> diff --git a/libavdevice/Makefile b/libavdevice/Makefile
> index 99fea7133a..bbe2f69dcc 100644
> --- a/libavdevice/Makefile
> +++ b/libavdevice/Makefile
> @@ -8,6 +8,7 @@ HEADERS = avdevice.h                                                    \
>  OBJS    = alldevices.o                                                  \
>            avdevice.o                                                    \
>            utils.o                                                       \
> +          version.o                                                     \
>  
>  OBJS-$(HAVE_LIBC_MSVCRT)                 += file_open.o
>  
> diff --git a/libavdevice/avdevice.c b/libavdevice/avdevice.c
> index 833d200054..b4fb272eb6 100644
> --- a/libavdevice/avdevice.c
> +++ b/libavdevice/avdevice.c
> @@ -17,15 +17,8 @@
>   */
>  
>  #include "libavutil/avassert.h"
> -#include "libavutil/samplefmt.h"
> -#include "libavutil/pixfmt.h"
>  #include "avdevice.h"
>  #include "internal.h"
> -#include "config.h"
> -#include "version.h"
> -
> -#include "libavutil/ffversion.h"
> -const char av_device_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
>  
>  #if FF_API_DEVICE_CAPABILITIES
>  const AVOption av_device_capabilities[] = {
> @@ -33,23 +26,6 @@ const AVOption av_device_capabilities[] = {
>  };
>  #endif
>  
> -unsigned avdevice_version(void)
> -{
> -    av_assert0(LIBAVDEVICE_VERSION_MICRO >= 100);
> -    return LIBAVDEVICE_VERSION_INT;
> -}
> -
> -const char * avdevice_configuration(void)
> -{
> -    return FFMPEG_CONFIGURATION;
> -}
> -
> -const char * avdevice_license(void)
> -{
> -#define LICENSE_PREFIX "libavdevice license: "
> -    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> -}
> -
>  int avdevice_app_to_dev_control_message(struct AVFormatContext *s, enum AVAppToDevMessageType type,
>                                          void *data, size_t data_size)
>  {
> diff --git a/libavdevice/version.c b/libavdevice/version.c
> new file mode 100644
> index 0000000000..92d7f2d159
> --- /dev/null
> +++ b/libavdevice/version.c
> @@ -0,0 +1,45 @@
> +/*
> + * Version functions.
> + *
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include "config.h"
> +
> +#include "libavutil/avassert.h"
> +#include "avdevice.h"
> +#include "version.h"
> +
> +#include "libavutil/ffversion.h"
> +const char av_device_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> +
> +unsigned avdevice_version(void)
> +{
> +    av_assert0(LIBAVDEVICE_VERSION_MICRO >= 100);
> +    return LIBAVDEVICE_VERSION_INT;
> +}
> +
> +const char * avdevice_configuration(void)
> +{
> +    return FFMPEG_CONFIGURATION;
> +}
> +
> +const char * avdevice_license(void)
> +{
> +#define LICENSE_PREFIX "libavdevice license: "
> +    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> +}
> diff --git a/libavfilter/Makefile b/libavfilter/Makefile
> index 41bab96aab..ee2ea51e69 100644
> --- a/libavfilter/Makefile
> +++ b/libavfilter/Makefile
> @@ -20,6 +20,7 @@ OBJS = allfilters.o                                                     \
>         framequeue.o                                                     \
>         graphdump.o                                                      \
>         graphparser.o                                                    \
> +       version.o                                                        \
>         video.o                                                          \
>  
>  OBJS-$(HAVE_THREADS)                         += pthread.o
> diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
> index a6d486bd66..a987dfe7b4 100644
> --- a/libavfilter/avfilter.c
> +++ b/libavfilter/avfilter.c
> @@ -29,10 +29,8 @@
>  #include "libavutil/hwcontext.h"
>  #include "libavutil/internal.h"
>  #include "libavutil/opt.h"
> -#include "libavutil/pixdesc.h"
>  #include "libavutil/rational.h"
>  #include "libavutil/samplefmt.h"
> -#include "libavutil/thread.h"
>  
>  #define FF_INTERNAL_FIELDS 1
>  #include "framequeue.h"
> @@ -43,10 +41,6 @@
>  #include "formats.h"
>  #include "framepool.h"
>  #include "internal.h"
> -#include "version.h"
> -
> -#include "libavutil/ffversion.h"
> -const char av_filter_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
>  
>  static void tlog_ref(void *ctx, AVFrame *ref, int end)
>  {
> @@ -75,23 +69,6 @@ static void tlog_ref(void *ctx, AVFrame *ref, int end)
>      ff_tlog(ctx, "]%s", end ? "\n" : "");
>  }
>  
> -unsigned avfilter_version(void)
> -{
> -    av_assert0(LIBAVFILTER_VERSION_MICRO >= 100);
> -    return LIBAVFILTER_VERSION_INT;
> -}
> -
> -const char *avfilter_configuration(void)
> -{
> -    return FFMPEG_CONFIGURATION;
> -}
> -
> -const char *avfilter_license(void)
> -{
> -#define LICENSE_PREFIX "libavfilter license: "
> -    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> -}
> -
>  void ff_command_queue_pop(AVFilterContext *filter)
>  {
>      AVFilterCommand *c= filter->command_queue;
> diff --git a/libavfilter/version.c b/libavfilter/version.c
> new file mode 100644
> index 0000000000..db1a2511e7
> --- /dev/null
> +++ b/libavfilter/version.c
> @@ -0,0 +1,44 @@
> +/*
> + * Version functions.
> + *
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include "config.h"
> +#include "libavutil/avassert.h"
> +#include "avfilter.h"
> +#include "version.h"
> +
> +#include "libavutil/ffversion.h"
> +const char av_filter_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> +
> +unsigned avfilter_version(void)
> +{
> +    av_assert0(LIBAVFILTER_VERSION_MICRO >= 100);
> +    return LIBAVFILTER_VERSION_INT;
> +}
> +
> +const char *avfilter_configuration(void)
> +{
> +    return FFMPEG_CONFIGURATION;
> +}
> +
> +const char *avfilter_license(void)
> +{
> +#define LICENSE_PREFIX "libavfilter license: "
> +    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> +}
> diff --git a/libavformat/Makefile b/libavformat/Makefile
> index f16634a418..537f5a1124 100644
> --- a/libavformat/Makefile
> +++ b/libavformat/Makefile
> @@ -25,6 +25,7 @@ OBJS = allformats.o         \
>         seek.o               \
>         url.o                \
>         utils.o              \
> +       version.o            \
>  
>  OBJS-$(HAVE_LIBC_MSVCRT)                 += file_open.o
>  
> diff --git a/libavformat/utils.c b/libavformat/utils.c
> index 3f253c2045..19f5ae720c 100644
> --- a/libavformat/utils.c
> +++ b/libavformat/utils.c
> @@ -46,10 +46,6 @@
>  #if CONFIG_NETWORK
>  #include "network.h"
>  #endif
> -#include "version.h"
> -
> -#include "libavutil/ffversion.h"
> -const char av_format_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
>  
>  static AVMutex avformat_mutex = AV_MUTEX_INITIALIZER;
>  
> @@ -58,23 +54,6 @@ static AVMutex avformat_mutex = AV_MUTEX_INITIALIZER;
>   * various utility functions for use within FFmpeg
>   */
>  
> -unsigned avformat_version(void)
> -{
> -    av_assert0(LIBAVFORMAT_VERSION_MICRO >= 100);
> -    return LIBAVFORMAT_VERSION_INT;
> -}
> -
> -const char *avformat_configuration(void)
> -{
> -    return FFMPEG_CONFIGURATION;
> -}
> -
> -const char *avformat_license(void)
> -{
> -#define LICENSE_PREFIX "libavformat license: "
> -    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> -}
> -
>  int ff_lock_avformat(void)
>  {
>      return ff_mutex_lock(&avformat_mutex) ? -1 : 0;
> diff --git a/libavformat/version.c b/libavformat/version.c
> new file mode 100644
> index 0000000000..5f321d847e
> --- /dev/null
> +++ b/libavformat/version.c
> @@ -0,0 +1,45 @@
> +/*
> + * Version functions.
> + *
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include "config.h"
> +
> +#include "libavutil/avassert.h"
> +#include "avformat.h"
> +#include "version.h"
> +
> +#include "libavutil/ffversion.h"
> +const char av_format_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> +
> +unsigned avformat_version(void)
> +{
> +    av_assert0(LIBAVFORMAT_VERSION_MICRO >= 100);
> +    return LIBAVFORMAT_VERSION_INT;
> +}
> +
> +const char *avformat_configuration(void)
> +{
> +    return FFMPEG_CONFIGURATION;
> +}
> +
> +const char *avformat_license(void)
> +{
> +#define LICENSE_PREFIX "libavformat license: "
> +    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> +}
> diff --git a/libavutil/Makefile b/libavutil/Makefile
> index 81df3b0640..234de62a4b 100644
> --- a/libavutil/Makefile
> +++ b/libavutil/Makefile
> @@ -174,6 +174,7 @@ OBJS = adler32.o                                                        \
>         tx_float.o                                                       \
>         tx_double.o                                                      \
>         tx_int32.o                                                       \
> +       version.o                                                        \
>         video_enc_params.o                                               \
>         film_grain_params.o                                              \
>  
> diff --git a/libavutil/utils.c b/libavutil/utils.c
> index ea9b5097b8..94d247bbee 100644
> --- a/libavutil/utils.c
> +++ b/libavutil/utils.c
> @@ -19,55 +19,12 @@
>  #include "config.h"
>  #include "avutil.h"
>  #include "avassert.h"
> -#include "samplefmt.h"
> -#include "internal.h"
>  
>  /**
>   * @file
>   * various utility functions
>   */
>  
> -#include "libavutil/ffversion.h"
> -const char av_util_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> -
> -const char *av_version_info(void)
> -{
> -    return FFMPEG_VERSION;
> -}
> -
> -unsigned avutil_version(void)
> -{
> -    av_assert0(AV_SAMPLE_FMT_DBLP == 9);
> -    av_assert0(AVMEDIA_TYPE_ATTACHMENT == 4);
> -    av_assert0(AV_PICTURE_TYPE_BI == 7);
> -    av_assert0(LIBAVUTIL_VERSION_MICRO >= 100);
> -    av_assert0(HAVE_MMX2 == HAVE_MMXEXT);
> -
> -    av_assert0(((size_t)-1) > 0); // C guarantees this but if false on a platform we care about revert at least b284e1ffe343d6697fb950d1ee517bafda8a9844
> -
> -    if (av_sat_dadd32(1, 2) != 5) {
> -        av_log(NULL, AV_LOG_FATAL, "Libavutil has been built with a broken binutils, please upgrade binutils and rebuild\n");
> -        abort();
> -    }
> -
> -    if (llrint(1LL<<60) != 1LL<<60) {
> -        av_log(NULL, AV_LOG_ERROR, "Libavutil has been linked to a broken llrint()\n");
> -    }
> -
> -    return LIBAVUTIL_VERSION_INT;
> -}
> -
> -const char *avutil_configuration(void)
> -{
> -    return FFMPEG_CONFIGURATION;
> -}
> -
> -const char *avutil_license(void)
> -{
> -#define LICENSE_PREFIX "libavutil license: "
> -    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> -}
> -
>  const char *av_get_media_type_string(enum AVMediaType media_type)
>  {
>      switch (media_type) {
> diff --git a/libavutil/version.c b/libavutil/version.c
> new file mode 100644
> index 0000000000..b0f4f94a7a
> --- /dev/null
> +++ b/libavutil/version.c
> @@ -0,0 +1,71 @@
> +/*
> + * Version functions.
> + *
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include <stdlib.h>
> +
> +#include "config.h"
> +#include "avassert.h"
> +#include "avutil.h"
> +#include "common.h"
> +#include "libm.h"
> +#include "log.h"
> +#include "samplefmt.h"
> +#include "version.h"
> +
> +#include "libavutil/ffversion.h"
> +const char av_util_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> +
> +const char *av_version_info(void)
> +{
> +    return FFMPEG_VERSION;
> +}
> +
> +unsigned avutil_version(void)
> +{
> +    av_assert0(AV_SAMPLE_FMT_DBLP == 9);
> +    av_assert0(AVMEDIA_TYPE_ATTACHMENT == 4);
> +    av_assert0(AV_PICTURE_TYPE_BI == 7);
> +    av_assert0(LIBAVUTIL_VERSION_MICRO >= 100);
> +    av_assert0(HAVE_MMX2 == HAVE_MMXEXT);
> +
> +    av_assert0(((size_t)-1) > 0); // C guarantees this but if false on a platform we care about revert at least b284e1ffe343d6697fb950d1ee517bafda8a9844
> +
> +    if (av_sat_dadd32(1, 2) != 5) {
> +        av_log(NULL, AV_LOG_FATAL, "Libavutil has been built with a broken binutils, please upgrade binutils and rebuild\n");
> +        abort();
> +    }
> +
> +    if (llrint(1LL<<60) != 1LL<<60) {
> +        av_log(NULL, AV_LOG_ERROR, "Libavutil has been linked to a broken llrint()\n");
> +    }
> +
> +    return LIBAVUTIL_VERSION_INT;
> +}
> +
> +const char *avutil_configuration(void)
> +{
> +    return FFMPEG_CONFIGURATION;
> +}
> +
> +const char *avutil_license(void)
> +{
> +#define LICENSE_PREFIX "libavutil license: "
> +    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> +}
> diff --git a/libpostproc/Makefile b/libpostproc/Makefile
> index f7debb8eeb..d3f3b27f35 100644
> --- a/libpostproc/Makefile
> +++ b/libpostproc/Makefile
> @@ -6,7 +6,8 @@ HEADERS = postprocess.h        \
>            version.h            \
>            version_major.h      \
>  
> -OBJS = postprocess.o
> +OBJS = postprocess.o           \
> +       version.o               \
>  
>  # Windows resource file
>  SLIBOBJS-$(HAVE_GNU_WINDRES) += postprocres.o
> diff --git a/libpostproc/postprocess.c b/libpostproc/postprocess.c
> index b954dc2eaa..383c691cb4 100644
> --- a/libpostproc/postprocess.c
> +++ b/libpostproc/postprocess.c
> @@ -89,30 +89,9 @@ try to unroll inner for(x=0 ... loop to avoid these damn if(x ... checks
>  //#define DEBUG_BRIGHTNESS
>  #include "postprocess.h"
>  #include "postprocess_internal.h"
> -#include "version.h"
>  #include "libavutil/avstring.h"
>  #include "libavutil/ppc/util_altivec.h"
>  
> -#include "libavutil/ffversion.h"
> -const char postproc_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> -
> -unsigned postproc_version(void)
> -{
> -    av_assert0(LIBPOSTPROC_VERSION_MICRO >= 100);
> -    return LIBPOSTPROC_VERSION_INT;
> -}
> -
> -const char *postproc_configuration(void)
> -{
> -    return FFMPEG_CONFIGURATION;
> -}
> -
> -const char *postproc_license(void)
> -{
> -#define LICENSE_PREFIX "libpostproc license: "
> -    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> -}
> -
>  #define GET_MODE_BUFFER_SIZE 500
>  #define OPTIONS_ARRAY_SIZE 10
>  #define BLOCK_SIZE 8
> diff --git a/libpostproc/version.c b/libpostproc/version.c
> new file mode 100644
> index 0000000000..494575ae67
> --- /dev/null
> +++ b/libpostproc/version.c
> @@ -0,0 +1,44 @@
> +/*
> + * Version functions.
> + *
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include "config.h"
> +#include "libavutil/avassert.h"
> +#include "postprocess.h"
> +#include "version.h"
> +
> +#include "libavutil/ffversion.h"
> +const char postproc_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> +
> +unsigned postproc_version(void)
> +{
> +    av_assert0(LIBPOSTPROC_VERSION_MICRO >= 100);
> +    return LIBPOSTPROC_VERSION_INT;
> +}
> +
> +const char *postproc_configuration(void)
> +{
> +    return FFMPEG_CONFIGURATION;
> +}
> +
> +const char *postproc_license(void)
> +{
> +#define LICENSE_PREFIX "libpostproc license: "
> +    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> +}
> diff --git a/libswresample/Makefile b/libswresample/Makefile
> index b74ee20987..dc80027c35 100644
> --- a/libswresample/Makefile
> +++ b/libswresample/Makefile
> @@ -14,6 +14,7 @@ OBJS = audioconvert.o                        \
>         resample_dsp.o                        \
>         swresample.o                          \
>         swresample_frame.o                    \
> +       version.o                             \
>  
>  OBJS-$(CONFIG_LIBSOXR) += soxr_resample.o
>  
> diff --git a/libswresample/swresample.c b/libswresample/swresample.c
> index be59b69b73..9b77ef65bf 100644
> --- a/libswresample/swresample.c
> +++ b/libswresample/swresample.c
> @@ -24,32 +24,11 @@
>  #include "libavutil/avassert.h"
>  #include "libavutil/channel_layout.h"
>  #include "libavutil/internal.h"
> -#include "version.h"
>  
>  #include <float.h>
>  
>  #define ALIGN 32
>  
> -#include "libavutil/ffversion.h"
> -const char swr_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> -
> -unsigned swresample_version(void)
> -{
> -    av_assert0(LIBSWRESAMPLE_VERSION_MICRO >= 100);
> -    return LIBSWRESAMPLE_VERSION_INT;
> -}
> -
> -const char *swresample_configuration(void)
> -{
> -    return FFMPEG_CONFIGURATION;
> -}
> -
> -const char *swresample_license(void)
> -{
> -#define LICENSE_PREFIX "libswresample license: "
> -    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> -}
> -
>  int swr_set_channel_mapping(struct SwrContext *s, const int *channel_map){
>      if(!s || s->in_convert) // s needs to be allocated but not initialized
>          return AVERROR(EINVAL);
> diff --git a/libswresample/version.c b/libswresample/version.c
> new file mode 100644
> index 0000000000..00f71e3393
> --- /dev/null
> +++ b/libswresample/version.c
> @@ -0,0 +1,45 @@
> +/*
> + * Version functions.
> + *
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include "config.h"
> +#include "libavutil/avassert.h"
> +#include "swresample.h"
> +#include "version.h"
> +
> +#include "libavutil/ffversion.h"
> +const char swr_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
> +
> +unsigned swresample_version(void)
> +{
> +    av_assert0(LIBSWRESAMPLE_VERSION_MICRO >= 100);
> +    return LIBSWRESAMPLE_VERSION_INT;
> +}
> +
> +const char *swresample_configuration(void)
> +{
> +    return FFMPEG_CONFIGURATION;
> +}
> +
> +const char *swresample_license(void)
> +{
> +#define LICENSE_PREFIX "libswresample license: "
> +    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> +}
> +
> diff --git a/libswscale/Makefile b/libswscale/Makefile
> index 1f02b56421..8e95f74c6b 100644
> --- a/libswscale/Makefile
> +++ b/libswscale/Makefile
> @@ -17,6 +17,7 @@ OBJS = alphablend.o                                     \
>         swscale.o                                        \
>         swscale_unscaled.o                               \
>         utils.o                                          \
> +       version.o                                        \
>         yuv2rgb.o                                        \
>         vscale.o                                         \
>  
> diff --git a/libswscale/utils.c b/libswscale/utils.c
> index e86c151f67..ffa130524a 100644
> --- a/libswscale/utils.c
> +++ b/libswscale/utils.c
> @@ -40,8 +40,6 @@
>  
>  #include "libavutil/attributes.h"
>  #include "libavutil/avassert.h"
> -#include "libavutil/avutil.h"
> -#include "libavutil/bswap.h"
>  #include "libavutil/cpu.h"
>  #include "libavutil/imgutils.h"
>  #include "libavutil/intreadwrite.h"
> @@ -59,7 +57,6 @@
>  #include "rgb2rgb.h"
>  #include "swscale.h"
>  #include "swscale_internal.h"
> -#include "version.h"
>  
>  static SwsVector *sws_getIdentityVec(void);
>  static void sws_addVec(SwsVector *a, SwsVector *b);
> @@ -68,23 +65,6 @@ static void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level);
>  
>  static void handle_formats(SwsContext *c);
>  
> -unsigned swscale_version(void)
> -{
> -    av_assert0(LIBSWSCALE_VERSION_MICRO >= 100);
> -    return LIBSWSCALE_VERSION_INT;
> -}
> -
> -const char *swscale_configuration(void)
> -{
> -    return FFMPEG_CONFIGURATION;
> -}
> -
> -const char *swscale_license(void)
> -{
> -#define LICENSE_PREFIX "libswscale license: "
> -    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> -}
> -
>  typedef struct FormatEntry {
>      uint8_t is_supported_in         :1;
>      uint8_t is_supported_out        :1;
> diff --git a/libswscale/version.c b/libswscale/version.c
> new file mode 100644
> index 0000000000..b165e2563e
> --- /dev/null
> +++ b/libswscale/version.c
> @@ -0,0 +1,41 @@
> +/*
> + * Version functions.
> + *
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include "config.h"
> +#include "libavutil/avassert.h"
> +#include "swscale.h"
> +#include "version.h"
> +
> +unsigned swscale_version(void)
> +{
> +    av_assert0(LIBSWSCALE_VERSION_MICRO >= 100);
> +    return LIBSWSCALE_VERSION_INT;
> +}
> +
> +const char *swscale_configuration(void)
> +{
> +    return FFMPEG_CONFIGURATION;
> +}
> +
> +const char *swscale_license(void)
> +{
> +#define LICENSE_PREFIX "libswscale license: "
> +    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
> +}

Will apply this patchset tomorrow unless there are objections.

- Andreas
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index 48cfb6e240..f38b521765 100644
--- a/Makefile
+++ b/Makefile
@@ -19,6 +19,8 @@  vpath %/fate_config.sh.template $(SRC_PATH)
 TESTTOOLS   = audiogen videogen rotozoom tiny_psnr tiny_ssim base64 audiomatch
 HOSTPROGS  := $(TESTTOOLS:%=tests/%) doc/print_options
 
+ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale swresample
+
 # $(FFLIBS-yes) needs to be in linking order
 FFLIBS-$(CONFIG_AVDEVICE)   += avdevice
 FFLIBS-$(CONFIG_AVFILTER)   += avfilter
@@ -113,7 +115,7 @@  include $(SRC_PATH)/fftools/Makefile
 include $(SRC_PATH)/doc/Makefile
 include $(SRC_PATH)/doc/examples/Makefile
 
-libavcodec/avcodec.o libavformat/utils.o libavdevice/avdevice.o libavfilter/avfilter.o libavutil/utils.o libpostproc/postprocess.o libswresample/swresample.o libswscale/utils.o : libavutil/ffversion.h
+$(ALLFFLIBS:%=lib%/version.o): libavutil/ffversion.h
 
 $(PROGS): %$(PROGSSUF)$(EXESUF): %$(PROGSSUF)_g$(EXESUF)
 ifeq ($(STRIPTYPE),direct)
diff --git a/ffbuild/common.mak b/ffbuild/common.mak
index 42f7b23641..24113c59eb 100644
--- a/ffbuild/common.mak
+++ b/ffbuild/common.mak
@@ -29,8 +29,6 @@  $(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR))))
 $(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL))
 endif
 
-ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale swresample
-
 # NASM requires -I path terminated with /
 IFLAGS     := -I. -I$(SRC_LINK)/
 CPPFLAGS   := $(IFLAGS) $(CPPFLAGS)
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index cfaa6f196a..1b60e0e1d4 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -56,6 +56,7 @@  OBJS = ac3_parser.o                                                     \
        qsv_api.o                                                        \
        raw.o                                                            \
        utils.o                                                          \
+       version.o                                                        \
        vlc.o                                                            \
        vorbis_parser.o                                                  \
        xiph.o                                                           \
diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
index d11f035481..8afb6cd62e 100644
--- a/libavcodec/avcodec.c
+++ b/libavcodec/avcodec.c
@@ -40,31 +40,6 @@ 
 #include "frame_thread_encoder.h"
 #include "internal.h"
 #include "thread.h"
-#include "version.h"
-
-#include "libavutil/ffversion.h"
-const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
-
-unsigned avcodec_version(void)
-{
-    av_assert0(AV_CODEC_ID_PCM_S8_PLANAR==65563);
-    av_assert0(AV_CODEC_ID_ADPCM_G722==69660);
-    av_assert0(AV_CODEC_ID_SRT==94216);
-    av_assert0(LIBAVCODEC_VERSION_MICRO >= 100);
-
-    return LIBAVCODEC_VERSION_INT;
-}
-
-const char *avcodec_configuration(void)
-{
-    return FFMPEG_CONFIGURATION;
-}
-
-const char *avcodec_license(void)
-{
-#define LICENSE_PREFIX "libavcodec license: "
-    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
-}
 
 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size)
 {
diff --git a/libavcodec/version.c b/libavcodec/version.c
new file mode 100644
index 0000000000..d7966b2015
--- /dev/null
+++ b/libavcodec/version.c
@@ -0,0 +1,50 @@ 
+/*
+ * Version functions.
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+
+#include "libavutil/avassert.h"
+#include "avcodec.h"
+#include "codec_id.h"
+#include "version.h"
+
+#include "libavutil/ffversion.h"
+const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
+
+unsigned avcodec_version(void)
+{
+    av_assert0(AV_CODEC_ID_PCM_S8_PLANAR==65563);
+    av_assert0(AV_CODEC_ID_ADPCM_G722==69660);
+    av_assert0(AV_CODEC_ID_SRT==94216);
+    av_assert0(LIBAVCODEC_VERSION_MICRO >= 100);
+
+    return LIBAVCODEC_VERSION_INT;
+}
+
+const char *avcodec_configuration(void)
+{
+    return FFMPEG_CONFIGURATION;
+}
+
+const char *avcodec_license(void)
+{
+#define LICENSE_PREFIX "libavcodec license: "
+    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
+}
diff --git a/libavdevice/Makefile b/libavdevice/Makefile
index 99fea7133a..bbe2f69dcc 100644
--- a/libavdevice/Makefile
+++ b/libavdevice/Makefile
@@ -8,6 +8,7 @@  HEADERS = avdevice.h                                                    \
 OBJS    = alldevices.o                                                  \
           avdevice.o                                                    \
           utils.o                                                       \
+          version.o                                                     \
 
 OBJS-$(HAVE_LIBC_MSVCRT)                 += file_open.o
 
diff --git a/libavdevice/avdevice.c b/libavdevice/avdevice.c
index 833d200054..b4fb272eb6 100644
--- a/libavdevice/avdevice.c
+++ b/libavdevice/avdevice.c
@@ -17,15 +17,8 @@ 
  */
 
 #include "libavutil/avassert.h"
-#include "libavutil/samplefmt.h"
-#include "libavutil/pixfmt.h"
 #include "avdevice.h"
 #include "internal.h"
-#include "config.h"
-#include "version.h"
-
-#include "libavutil/ffversion.h"
-const char av_device_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
 
 #if FF_API_DEVICE_CAPABILITIES
 const AVOption av_device_capabilities[] = {
@@ -33,23 +26,6 @@  const AVOption av_device_capabilities[] = {
 };
 #endif
 
-unsigned avdevice_version(void)
-{
-    av_assert0(LIBAVDEVICE_VERSION_MICRO >= 100);
-    return LIBAVDEVICE_VERSION_INT;
-}
-
-const char * avdevice_configuration(void)
-{
-    return FFMPEG_CONFIGURATION;
-}
-
-const char * avdevice_license(void)
-{
-#define LICENSE_PREFIX "libavdevice license: "
-    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
-}
-
 int avdevice_app_to_dev_control_message(struct AVFormatContext *s, enum AVAppToDevMessageType type,
                                         void *data, size_t data_size)
 {
diff --git a/libavdevice/version.c b/libavdevice/version.c
new file mode 100644
index 0000000000..92d7f2d159
--- /dev/null
+++ b/libavdevice/version.c
@@ -0,0 +1,45 @@ 
+/*
+ * Version functions.
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+
+#include "libavutil/avassert.h"
+#include "avdevice.h"
+#include "version.h"
+
+#include "libavutil/ffversion.h"
+const char av_device_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
+
+unsigned avdevice_version(void)
+{
+    av_assert0(LIBAVDEVICE_VERSION_MICRO >= 100);
+    return LIBAVDEVICE_VERSION_INT;
+}
+
+const char * avdevice_configuration(void)
+{
+    return FFMPEG_CONFIGURATION;
+}
+
+const char * avdevice_license(void)
+{
+#define LICENSE_PREFIX "libavdevice license: "
+    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
+}
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index 41bab96aab..ee2ea51e69 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -20,6 +20,7 @@  OBJS = allfilters.o                                                     \
        framequeue.o                                                     \
        graphdump.o                                                      \
        graphparser.o                                                    \
+       version.o                                                        \
        video.o                                                          \
 
 OBJS-$(HAVE_THREADS)                         += pthread.o
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index a6d486bd66..a987dfe7b4 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -29,10 +29,8 @@ 
 #include "libavutil/hwcontext.h"
 #include "libavutil/internal.h"
 #include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
 #include "libavutil/rational.h"
 #include "libavutil/samplefmt.h"
-#include "libavutil/thread.h"
 
 #define FF_INTERNAL_FIELDS 1
 #include "framequeue.h"
@@ -43,10 +41,6 @@ 
 #include "formats.h"
 #include "framepool.h"
 #include "internal.h"
-#include "version.h"
-
-#include "libavutil/ffversion.h"
-const char av_filter_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
 
 static void tlog_ref(void *ctx, AVFrame *ref, int end)
 {
@@ -75,23 +69,6 @@  static void tlog_ref(void *ctx, AVFrame *ref, int end)
     ff_tlog(ctx, "]%s", end ? "\n" : "");
 }
 
-unsigned avfilter_version(void)
-{
-    av_assert0(LIBAVFILTER_VERSION_MICRO >= 100);
-    return LIBAVFILTER_VERSION_INT;
-}
-
-const char *avfilter_configuration(void)
-{
-    return FFMPEG_CONFIGURATION;
-}
-
-const char *avfilter_license(void)
-{
-#define LICENSE_PREFIX "libavfilter license: "
-    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
-}
-
 void ff_command_queue_pop(AVFilterContext *filter)
 {
     AVFilterCommand *c= filter->command_queue;
diff --git a/libavfilter/version.c b/libavfilter/version.c
new file mode 100644
index 0000000000..db1a2511e7
--- /dev/null
+++ b/libavfilter/version.c
@@ -0,0 +1,44 @@ 
+/*
+ * Version functions.
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "libavutil/avassert.h"
+#include "avfilter.h"
+#include "version.h"
+
+#include "libavutil/ffversion.h"
+const char av_filter_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
+
+unsigned avfilter_version(void)
+{
+    av_assert0(LIBAVFILTER_VERSION_MICRO >= 100);
+    return LIBAVFILTER_VERSION_INT;
+}
+
+const char *avfilter_configuration(void)
+{
+    return FFMPEG_CONFIGURATION;
+}
+
+const char *avfilter_license(void)
+{
+#define LICENSE_PREFIX "libavfilter license: "
+    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
+}
diff --git a/libavformat/Makefile b/libavformat/Makefile
index f16634a418..537f5a1124 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -25,6 +25,7 @@  OBJS = allformats.o         \
        seek.o               \
        url.o                \
        utils.o              \
+       version.o            \
 
 OBJS-$(HAVE_LIBC_MSVCRT)                 += file_open.o
 
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 3f253c2045..19f5ae720c 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -46,10 +46,6 @@ 
 #if CONFIG_NETWORK
 #include "network.h"
 #endif
-#include "version.h"
-
-#include "libavutil/ffversion.h"
-const char av_format_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
 
 static AVMutex avformat_mutex = AV_MUTEX_INITIALIZER;
 
@@ -58,23 +54,6 @@  static AVMutex avformat_mutex = AV_MUTEX_INITIALIZER;
  * various utility functions for use within FFmpeg
  */
 
-unsigned avformat_version(void)
-{
-    av_assert0(LIBAVFORMAT_VERSION_MICRO >= 100);
-    return LIBAVFORMAT_VERSION_INT;
-}
-
-const char *avformat_configuration(void)
-{
-    return FFMPEG_CONFIGURATION;
-}
-
-const char *avformat_license(void)
-{
-#define LICENSE_PREFIX "libavformat license: "
-    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
-}
-
 int ff_lock_avformat(void)
 {
     return ff_mutex_lock(&avformat_mutex) ? -1 : 0;
diff --git a/libavformat/version.c b/libavformat/version.c
new file mode 100644
index 0000000000..5f321d847e
--- /dev/null
+++ b/libavformat/version.c
@@ -0,0 +1,45 @@ 
+/*
+ * Version functions.
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+
+#include "libavutil/avassert.h"
+#include "avformat.h"
+#include "version.h"
+
+#include "libavutil/ffversion.h"
+const char av_format_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
+
+unsigned avformat_version(void)
+{
+    av_assert0(LIBAVFORMAT_VERSION_MICRO >= 100);
+    return LIBAVFORMAT_VERSION_INT;
+}
+
+const char *avformat_configuration(void)
+{
+    return FFMPEG_CONFIGURATION;
+}
+
+const char *avformat_license(void)
+{
+#define LICENSE_PREFIX "libavformat license: "
+    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
+}
diff --git a/libavutil/Makefile b/libavutil/Makefile
index 81df3b0640..234de62a4b 100644
--- a/libavutil/Makefile
+++ b/libavutil/Makefile
@@ -174,6 +174,7 @@  OBJS = adler32.o                                                        \
        tx_float.o                                                       \
        tx_double.o                                                      \
        tx_int32.o                                                       \
+       version.o                                                        \
        video_enc_params.o                                               \
        film_grain_params.o                                              \
 
diff --git a/libavutil/utils.c b/libavutil/utils.c
index ea9b5097b8..94d247bbee 100644
--- a/libavutil/utils.c
+++ b/libavutil/utils.c
@@ -19,55 +19,12 @@ 
 #include "config.h"
 #include "avutil.h"
 #include "avassert.h"
-#include "samplefmt.h"
-#include "internal.h"
 
 /**
  * @file
  * various utility functions
  */
 
-#include "libavutil/ffversion.h"
-const char av_util_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
-
-const char *av_version_info(void)
-{
-    return FFMPEG_VERSION;
-}
-
-unsigned avutil_version(void)
-{
-    av_assert0(AV_SAMPLE_FMT_DBLP == 9);
-    av_assert0(AVMEDIA_TYPE_ATTACHMENT == 4);
-    av_assert0(AV_PICTURE_TYPE_BI == 7);
-    av_assert0(LIBAVUTIL_VERSION_MICRO >= 100);
-    av_assert0(HAVE_MMX2 == HAVE_MMXEXT);
-
-    av_assert0(((size_t)-1) > 0); // C guarantees this but if false on a platform we care about revert at least b284e1ffe343d6697fb950d1ee517bafda8a9844
-
-    if (av_sat_dadd32(1, 2) != 5) {
-        av_log(NULL, AV_LOG_FATAL, "Libavutil has been built with a broken binutils, please upgrade binutils and rebuild\n");
-        abort();
-    }
-
-    if (llrint(1LL<<60) != 1LL<<60) {
-        av_log(NULL, AV_LOG_ERROR, "Libavutil has been linked to a broken llrint()\n");
-    }
-
-    return LIBAVUTIL_VERSION_INT;
-}
-
-const char *avutil_configuration(void)
-{
-    return FFMPEG_CONFIGURATION;
-}
-
-const char *avutil_license(void)
-{
-#define LICENSE_PREFIX "libavutil license: "
-    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
-}
-
 const char *av_get_media_type_string(enum AVMediaType media_type)
 {
     switch (media_type) {
diff --git a/libavutil/version.c b/libavutil/version.c
new file mode 100644
index 0000000000..b0f4f94a7a
--- /dev/null
+++ b/libavutil/version.c
@@ -0,0 +1,71 @@ 
+/*
+ * Version functions.
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <stdlib.h>
+
+#include "config.h"
+#include "avassert.h"
+#include "avutil.h"
+#include "common.h"
+#include "libm.h"
+#include "log.h"
+#include "samplefmt.h"
+#include "version.h"
+
+#include "libavutil/ffversion.h"
+const char av_util_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
+
+const char *av_version_info(void)
+{
+    return FFMPEG_VERSION;
+}
+
+unsigned avutil_version(void)
+{
+    av_assert0(AV_SAMPLE_FMT_DBLP == 9);
+    av_assert0(AVMEDIA_TYPE_ATTACHMENT == 4);
+    av_assert0(AV_PICTURE_TYPE_BI == 7);
+    av_assert0(LIBAVUTIL_VERSION_MICRO >= 100);
+    av_assert0(HAVE_MMX2 == HAVE_MMXEXT);
+
+    av_assert0(((size_t)-1) > 0); // C guarantees this but if false on a platform we care about revert at least b284e1ffe343d6697fb950d1ee517bafda8a9844
+
+    if (av_sat_dadd32(1, 2) != 5) {
+        av_log(NULL, AV_LOG_FATAL, "Libavutil has been built with a broken binutils, please upgrade binutils and rebuild\n");
+        abort();
+    }
+
+    if (llrint(1LL<<60) != 1LL<<60) {
+        av_log(NULL, AV_LOG_ERROR, "Libavutil has been linked to a broken llrint()\n");
+    }
+
+    return LIBAVUTIL_VERSION_INT;
+}
+
+const char *avutil_configuration(void)
+{
+    return FFMPEG_CONFIGURATION;
+}
+
+const char *avutil_license(void)
+{
+#define LICENSE_PREFIX "libavutil license: "
+    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
+}
diff --git a/libpostproc/Makefile b/libpostproc/Makefile
index f7debb8eeb..d3f3b27f35 100644
--- a/libpostproc/Makefile
+++ b/libpostproc/Makefile
@@ -6,7 +6,8 @@  HEADERS = postprocess.h        \
           version.h            \
           version_major.h      \
 
-OBJS = postprocess.o
+OBJS = postprocess.o           \
+       version.o               \
 
 # Windows resource file
 SLIBOBJS-$(HAVE_GNU_WINDRES) += postprocres.o
diff --git a/libpostproc/postprocess.c b/libpostproc/postprocess.c
index b954dc2eaa..383c691cb4 100644
--- a/libpostproc/postprocess.c
+++ b/libpostproc/postprocess.c
@@ -89,30 +89,9 @@  try to unroll inner for(x=0 ... loop to avoid these damn if(x ... checks
 //#define DEBUG_BRIGHTNESS
 #include "postprocess.h"
 #include "postprocess_internal.h"
-#include "version.h"
 #include "libavutil/avstring.h"
 #include "libavutil/ppc/util_altivec.h"
 
-#include "libavutil/ffversion.h"
-const char postproc_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
-
-unsigned postproc_version(void)
-{
-    av_assert0(LIBPOSTPROC_VERSION_MICRO >= 100);
-    return LIBPOSTPROC_VERSION_INT;
-}
-
-const char *postproc_configuration(void)
-{
-    return FFMPEG_CONFIGURATION;
-}
-
-const char *postproc_license(void)
-{
-#define LICENSE_PREFIX "libpostproc license: "
-    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
-}
-
 #define GET_MODE_BUFFER_SIZE 500
 #define OPTIONS_ARRAY_SIZE 10
 #define BLOCK_SIZE 8
diff --git a/libpostproc/version.c b/libpostproc/version.c
new file mode 100644
index 0000000000..494575ae67
--- /dev/null
+++ b/libpostproc/version.c
@@ -0,0 +1,44 @@ 
+/*
+ * Version functions.
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "libavutil/avassert.h"
+#include "postprocess.h"
+#include "version.h"
+
+#include "libavutil/ffversion.h"
+const char postproc_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
+
+unsigned postproc_version(void)
+{
+    av_assert0(LIBPOSTPROC_VERSION_MICRO >= 100);
+    return LIBPOSTPROC_VERSION_INT;
+}
+
+const char *postproc_configuration(void)
+{
+    return FFMPEG_CONFIGURATION;
+}
+
+const char *postproc_license(void)
+{
+#define LICENSE_PREFIX "libpostproc license: "
+    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
+}
diff --git a/libswresample/Makefile b/libswresample/Makefile
index b74ee20987..dc80027c35 100644
--- a/libswresample/Makefile
+++ b/libswresample/Makefile
@@ -14,6 +14,7 @@  OBJS = audioconvert.o                        \
        resample_dsp.o                        \
        swresample.o                          \
        swresample_frame.o                    \
+       version.o                             \
 
 OBJS-$(CONFIG_LIBSOXR) += soxr_resample.o
 
diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index be59b69b73..9b77ef65bf 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -24,32 +24,11 @@ 
 #include "libavutil/avassert.h"
 #include "libavutil/channel_layout.h"
 #include "libavutil/internal.h"
-#include "version.h"
 
 #include <float.h>
 
 #define ALIGN 32
 
-#include "libavutil/ffversion.h"
-const char swr_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
-
-unsigned swresample_version(void)
-{
-    av_assert0(LIBSWRESAMPLE_VERSION_MICRO >= 100);
-    return LIBSWRESAMPLE_VERSION_INT;
-}
-
-const char *swresample_configuration(void)
-{
-    return FFMPEG_CONFIGURATION;
-}
-
-const char *swresample_license(void)
-{
-#define LICENSE_PREFIX "libswresample license: "
-    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
-}
-
 int swr_set_channel_mapping(struct SwrContext *s, const int *channel_map){
     if(!s || s->in_convert) // s needs to be allocated but not initialized
         return AVERROR(EINVAL);
diff --git a/libswresample/version.c b/libswresample/version.c
new file mode 100644
index 0000000000..00f71e3393
--- /dev/null
+++ b/libswresample/version.c
@@ -0,0 +1,45 @@ 
+/*
+ * Version functions.
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "libavutil/avassert.h"
+#include "swresample.h"
+#include "version.h"
+
+#include "libavutil/ffversion.h"
+const char swr_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
+
+unsigned swresample_version(void)
+{
+    av_assert0(LIBSWRESAMPLE_VERSION_MICRO >= 100);
+    return LIBSWRESAMPLE_VERSION_INT;
+}
+
+const char *swresample_configuration(void)
+{
+    return FFMPEG_CONFIGURATION;
+}
+
+const char *swresample_license(void)
+{
+#define LICENSE_PREFIX "libswresample license: "
+    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
+}
+
diff --git a/libswscale/Makefile b/libswscale/Makefile
index 1f02b56421..8e95f74c6b 100644
--- a/libswscale/Makefile
+++ b/libswscale/Makefile
@@ -17,6 +17,7 @@  OBJS = alphablend.o                                     \
        swscale.o                                        \
        swscale_unscaled.o                               \
        utils.o                                          \
+       version.o                                        \
        yuv2rgb.o                                        \
        vscale.o                                         \
 
diff --git a/libswscale/utils.c b/libswscale/utils.c
index e86c151f67..ffa130524a 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -40,8 +40,6 @@ 
 
 #include "libavutil/attributes.h"
 #include "libavutil/avassert.h"
-#include "libavutil/avutil.h"
-#include "libavutil/bswap.h"
 #include "libavutil/cpu.h"
 #include "libavutil/imgutils.h"
 #include "libavutil/intreadwrite.h"
@@ -59,7 +57,6 @@ 
 #include "rgb2rgb.h"
 #include "swscale.h"
 #include "swscale_internal.h"
-#include "version.h"
 
 static SwsVector *sws_getIdentityVec(void);
 static void sws_addVec(SwsVector *a, SwsVector *b);
@@ -68,23 +65,6 @@  static void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level);
 
 static void handle_formats(SwsContext *c);
 
-unsigned swscale_version(void)
-{
-    av_assert0(LIBSWSCALE_VERSION_MICRO >= 100);
-    return LIBSWSCALE_VERSION_INT;
-}
-
-const char *swscale_configuration(void)
-{
-    return FFMPEG_CONFIGURATION;
-}
-
-const char *swscale_license(void)
-{
-#define LICENSE_PREFIX "libswscale license: "
-    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
-}
-
 typedef struct FormatEntry {
     uint8_t is_supported_in         :1;
     uint8_t is_supported_out        :1;
diff --git a/libswscale/version.c b/libswscale/version.c
new file mode 100644
index 0000000000..b165e2563e
--- /dev/null
+++ b/libswscale/version.c
@@ -0,0 +1,41 @@ 
+/*
+ * Version functions.
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "libavutil/avassert.h"
+#include "swscale.h"
+#include "version.h"
+
+unsigned swscale_version(void)
+{
+    av_assert0(LIBSWSCALE_VERSION_MICRO >= 100);
+    return LIBSWSCALE_VERSION_INT;
+}
+
+const char *swscale_configuration(void)
+{
+    return FFMPEG_CONFIGURATION;
+}
+
+const char *swscale_license(void)
+{
+#define LICENSE_PREFIX "libswscale license: "
+    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
+}