From aac6ca6978306bf0f0254bab8a608648014ed3e5 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Wed, 21 Jul 2010 18:28:42 +0000 Subject: [PATCH] Add libavcore. The new library is meant to contain the core multimedia utilities for FFmpeg, to make them shareable between more libav* libraries. See thread: Subject: [FFmpeg-devel] [RFC] New library for shared non-generic libav* utils Date: Fri, 9 Jul 2010 01:07:40 +0200 Originally committed as revision 24393 to svn://svn.ffmpeg.org/ffmpeg/trunk --- Changelog | 1 + Makefile | 1 + cmdutils.c | 3 +++ common.mak | 2 +- configure | 9 +++++++- libavcore/Makefile | 9 ++++++++ libavcore/avcore.h | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ libavcore/libavcore.v | 4 ++++ libavcore/utils.c | 41 ++++++++++++++++++++++++++++++++++++ 9 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 libavcore/Makefile create mode 100644 libavcore/avcore.h create mode 100644 libavcore/libavcore.v create mode 100644 libavcore/utils.c diff --git a/Changelog b/Changelog index 4facc09c97..5c89474ec7 100644 --- a/Changelog +++ b/Changelog @@ -23,6 +23,7 @@ version : - RTP depacketization of QDM2 - ANSI/ASCII art playback system - Lego Mindstorms RSO de/muxer +- libavcore added diff --git a/Makefile b/Makefile index 0e0b62429d..61dfb96da4 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,7 @@ FFLIBS-$(CONFIG_AVFORMAT) += avformat FFLIBS-$(CONFIG_AVCODEC) += avcodec FFLIBS-$(CONFIG_POSTPROC) += postproc FFLIBS-$(CONFIG_SWSCALE) += swscale +FFLIBS-$(CONFIG_AVCORE) += avcore FFLIBS := avutil diff --git a/cmdutils.c b/cmdutils.c index fcdebb2005..4e8ab6d6d7 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -38,6 +38,7 @@ #include "libavutil/pixdesc.h" #include "libavutil/eval.h" #include "libavcodec/opt.h" +#include "libavcore/avcore.h" #include "cmdutils.h" #include "version.h" #if CONFIG_NETWORK @@ -314,6 +315,7 @@ void print_error(const char *filename, int err) static void print_all_lib_versions(FILE* outstream, int indent) { PRINT_LIB_VERSION(outstream, avutil, AVUTIL, indent); + PRINT_LIB_VERSION(outstream, avcore, AVCORE, indent); PRINT_LIB_VERSION(outstream, avcodec, AVCODEC, indent); PRINT_LIB_VERSION(outstream, avformat, AVFORMAT, indent); PRINT_LIB_VERSION(outstream, avdevice, AVDEVICE, indent); @@ -348,6 +350,7 @@ void show_banner(void) __DATE__, __TIME__, CC_TYPE, CC_VERSION); fprintf(stderr, " configuration: " FFMPEG_CONFIGURATION "\n"); PRINT_LIB_CONFIG(AVUTIL, "libavutil", avutil_configuration()); + PRINT_LIB_CONFIG(AVCORE, "libavcore", avcore_configuration()); PRINT_LIB_CONFIG(AVCODEC, "libavcodec", avcodec_configuration()); PRINT_LIB_CONFIG(AVFORMAT, "libavformat", avformat_configuration()); PRINT_LIB_CONFIG(AVDEVICE, "libavdevice", avdevice_configuration()); diff --git a/common.mak b/common.mak index cc10c205d7..2c20f13705 100644 --- a/common.mak +++ b/common.mak @@ -31,7 +31,7 @@ $(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR)))) $(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL)) endif -ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale +ALLFFLIBS = avcodec avcore avdevice avfilter avformat avutil postproc swscale IFLAGS := -I$(BUILD_ROOT_REL) -I$(SRC_PATH) CPPFLAGS := $(IFLAGS) $(CPPFLAGS) diff --git a/configure b/configure index 30358391de..f4fbc7bb1f 100755 --- a/configure +++ b/configure @@ -86,6 +86,7 @@ Configuration options: --disable-ffserver disable ffserver build --disable-avdevice disable libavdevice build --disable-avcodec disable libavcodec build + --disable-avcore disable libavcore build --disable-avformat disable libavformat build --disable-swscale disable libswscale build --enable-postproc enable GPLed postprocessing support [no] @@ -845,6 +846,7 @@ CONFIG_LIST=" $COMPONENT_LIST aandct avcodec + avcore avdevice avfilter avfilter_lavf @@ -1524,6 +1526,7 @@ host_os=$target_os_default # configurable options enable avcodec +enable avcore enable avdevice enable avfilter enable avformat @@ -2774,7 +2777,7 @@ enabled extra_warnings && check_cflags -Winline # add some linker flags check_ldflags -Wl,--warn-common check_ldflags -Wl,--as-needed -check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' +check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavcore -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' check_ldflags -Wl,-Bsymbolic echo "X{};" > $TMPV @@ -2969,6 +2972,7 @@ if enabled source_path_used; then doc libavcodec libavcodec/$arch + libavcore libavdevice libavfilter libavformat @@ -2987,6 +2991,7 @@ if enabled source_path_used; then doc/texi2pod.pl libavcodec/Makefile libavcodec/${arch}/Makefile + libavcore/Makefile libavdevice/Makefile libavfilter/Makefile libavformat/Makefile @@ -3085,6 +3090,7 @@ get_version(){ get_version LIBSWSCALE libswscale/swscale.h get_version LIBPOSTPROC libpostproc/postprocess.h get_version LIBAVCODEC libavcodec/avcodec.h +get_version LIBAVCORE libavcore/avcore.h get_version LIBAVDEVICE libavdevice/avdevice.h get_version LIBAVFORMAT libavformat/avformat.h get_version LIBAVUTIL libavutil/avutil.h @@ -3200,6 +3206,7 @@ EOF } pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" +pkgconfig_generate libavcore "FFmpeg multimedia shared core utilities library" "$LIBAVCORE_VERSION" "$extralibs" "libavcore = $LIBAVCORE_VERSION" pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" diff --git a/libavcore/Makefile b/libavcore/Makefile new file mode 100644 index 0000000000..c5140c4ecd --- /dev/null +++ b/libavcore/Makefile @@ -0,0 +1,9 @@ +include $(SUBDIR)../config.mak + +NAME = avcore + +HEADERS = avcore.h \ + +OBJS = utils.o \ + +include $(SUBDIR)../subdir.mak diff --git a/libavcore/avcore.h b/libavcore/avcore.h new file mode 100644 index 0000000000..2c803b9bb5 --- /dev/null +++ b/libavcore/avcore.h @@ -0,0 +1,58 @@ +/* + * 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 + */ + +#ifndef AVCORE_AVCORE_H +#define AVCORE_AVCORE_H + +/** + * @file + * shared media utilities for the libav* libraries + */ + +#include + +#define LIBAVCORE_VERSION_MAJOR 0 +#define LIBAVCORE_VERSION_MINOR 0 +#define LIBAVCORE_VERSION_MICRO 0 + +#define LIBAVCORE_VERSION_INT AV_VERSION_INT(LIBAVCORE_VERSION_MAJOR, \ + LIBAVCORE_VERSION_MINOR, \ + LIBAVCORE_VERSION_MICRO) +#define LIBAVCORE_VERSION AV_VERSION(LIBAVCORE_VERSION_MAJOR, \ + LIBAVCORE_VERSION_MINOR, \ + LIBAVCORE_VERSION_MICRO) +#define LIBAVCORE_BUILD LIBAVCORE_VERSION_INT + +#define LIBAVCORE_IDENT "Lavcore" AV_STRINGIFY(LIBAVCORE_VERSION) + +/** + * Return the LIBAVCORE_VERSION_INT constant. + */ +unsigned avcore_version(void); + +/** + * Return the libavcore build-time configuration. + */ +const char *avcore_configuration(void); + +/** + * Return the libavcore license. + */ +const char *avcore_license(void); + +#endif /* AVCORE_AVCORE_H */ diff --git a/libavcore/libavcore.v b/libavcore/libavcore.v new file mode 100644 index 0000000000..dc84cc4965 --- /dev/null +++ b/libavcore/libavcore.v @@ -0,0 +1,4 @@ +LIBAVCORE_$MAJOR { + global: av_*; ff_*; avcore*; + local: *; +}; diff --git a/libavcore/utils.c b/libavcore/utils.c new file mode 100644 index 0000000000..8350a9bcad --- /dev/null +++ b/libavcore/utils.c @@ -0,0 +1,41 @@ +/* + * 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 "avcore.h" + +/** + * @file + * various utility functions + */ + +unsigned avcore_version(void) +{ + return LIBAVCORE_VERSION_INT; +} + +const char *avcore_configuration(void) +{ + return FFMPEG_CONFIGURATION; +} + +const char *avcore_license(void) +{ +#define LICENSE_PREFIX "libavcore license: " + return LICENSE_PREFIX FFMPEG_LICENSE + sizeof(LICENSE_PREFIX) - 1; +} -- 2.11.0