[create-lavcore PATCH] Add libavcore.

Stefano Sabatini stefano.sabatini-lala
Sat Jul 17 17:38:28 CEST 2010


The new library is meant to contain the core multimedia utilities for
FFmpeg, to make them shareable between more libav* libraries.
---
 Makefile              |    1 +
 cmdutils.c            |    3 ++
 common.mak            |    2 +-
 configure             |    9 ++++++-
 libavcore/Makefile    |    9 +++++++
 libavcore/avcore.h    |   58 +++++++++++++++++++++++++++++++++++++++++++++++++
 libavcore/libavcore.v |    4 +++
 libavcore/utils.c     |   40 +++++++++++++++++++++++++++++++++
 8 files changed, 124 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/Makefile b/Makefile
index fa521ef..2ae055a 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 fcdebb2..ca24658 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -32,6 +32,7 @@
 #include "libavformat/avformat.h"
 #include "libavfilter/avfilter.h"
 #include "libavdevice/avdevice.h"
+#include "libavcore/avcore.h"
 #include "libswscale/swscale.h"
 #include "libpostproc/postprocess.h"
 #include "libavutil/avstring.h"
@@ -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 cc10c20..2c20f13 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 0513751..df44bff 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
@@ -1522,6 +1524,7 @@ host_os=$target_os_default
 
 # configurable options
 enable avcodec
+enable avcore
 enable avdevice
 enable avfilter
 enable avformat
@@ -2770,7 +2773,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 -rpath-link,\$(BUILD_ROOT)/libavcore -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
 check_ldflags -Wl,-Bsymbolic
 
 echo "X{};" > $TMPV
@@ -2963,6 +2966,7 @@ if enabled source_path_used; then
         doc
         libavcodec
         libavcodec/$arch
+        libavcore
         libavdevice
         libavfilter
         libavformat
@@ -2981,6 +2985,7 @@ if enabled source_path_used; then
         doc/texi2pod.pl
         libavcodec/Makefile
         libavcodec/${arch}/Makefile
+        libavcore/Makefile
         libavdevice/Makefile
         libavfilter/Makefile
         libavformat/Makefile
@@ -3079,6 +3084,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
@@ -3191,6 +3197,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 0000000..c5140c4
--- /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 0000000..fba9107
--- /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 <libavutil/avutil.h>
+
+#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         "Lavco" 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 0000000..dc84cc4
--- /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 0000000..bbf51d2
--- /dev/null
+++ b/libavcore/utils.c
@@ -0,0 +1,40 @@
+/*
+ * 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 "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;
+}
-- 
1.6.0.4


--6zdv2QT/q3FMhpsV--



More information about the ffmpeg-devel mailing list