display: dump gstreamer-vaapi version for debugging purposes.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Fri, 18 Jan 2013 13:17:34 +0000 (14:17 +0100)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Fri, 18 Jan 2013 13:49:15 +0000 (14:49 +0100)
configure.ac
gst-libs/gst/vaapi/Makefile.am
gst-libs/gst/vaapi/gstvaapidisplay.c
gst-libs/gst/vaapi/gstvaapiversion.h.in [new file with mode: 0644]

index 2c2ff5b..102e642 100644 (file)
@@ -114,6 +114,10 @@ dnl Check for tools
 AC_PROG_CC
 AM_PROG_CC_C_O
 
+AC_ARG_VAR([GIT], [Path to git program, if any])
+AC_PATH_PROG([GIT], [git])
+AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"])
+
 dnl Initialize libtool
 LT_PREREQ([2.2])
 LT_INIT
index 205f902..6ec6794 100644 (file)
@@ -117,6 +117,7 @@ libgstvaapi_source_priv_h =                 \
        gstvaapiobject_priv.h                   \
        gstvaapisurface_priv.h                  \
        gstvaapiutils.h                         \
+       gstvaapiversion.h                       \
        gstvaapiworkarounds.h                   \
        sysdeps.h                               \
        $(NULL)
@@ -369,5 +370,41 @@ libgstvaapi_wayland_@GST_MAJORMINOR@_la_LDFLAGS = \
        $(GST_VAAPI_LT_LDFLAGS)                 \
        $(NULL)
 
+VERSION_FILE           = .VERSION
+OLD_VERSION_FILE       = $(VERSION_FILE).old
+NEW_VERSION_FILE       = $(VERSION_FILE).new
+PKG_VERSION_FILE       = $(VERSION_FILE).pkg
+
+gstvaapiversion.h: gen-version
+       $(AM_V_GEN)                                                         \
+       OV=`[ -f $(OLD_VERSION_FILE) ] && cat $(OLD_VERSION_FILE) || :`;    \
+       NV=`cat $(NEW_VERSION_FILE)`;                                       \
+       if [ "$$OV" != "$$NV" -o ! -f gstvaapiversion.h ]; then             \
+               cp -f $(NEW_VERSION_FILE) $(OLD_VERSION_FILE);              \
+               $(SED) -e "s|\@GST_VAAPI_VERSION_ID\@|$${NV}|"              \
+                       $(srcdir)/gstvaapiversion.h.in > gstvaapiversion.h; \
+       fi
+
+gen-version:
+       @echo $(VERSION) > $(NEW_VERSION_FILE)
+if HAVE_GIT
+       @[ -d $(top_srcdir)/.git ] && \
+       (cd $(top_srcdir) && $(GIT) describe --tags) > $(NEW_VERSION_FILE) || :
+endif
+       @[ -f $(srcdir)/$(PKG_VERSION_FILE) ] && \
+       cp -f $(srcdir)/$(PKG_VERSION_FILE) $(NEW_VERSION_FILE) || :
+
+$(PKG_VERSION_FILE): $(NEW_VERSION_FILE)
+       @cp -f $< $@
+
+BUILT_SOURCES  = gstvaapiversion.h
+EXTRA_DIST     = gstvaapiversion.h.in $(PKG_VERSION_FILE)
+
+CLEANFILES = \
+       $(OLD_VERSION_FILE)     \
+       $(NEW_VERSION_FILE)     \
+       $(PKG_VERSION_FILE)     \
+       $(NULL)
+
 # Extra clean files so that maintainer-clean removes *everything*
 MAINTAINERCLEANFILES = Makefile.in
index f8acf62..9598275 100644 (file)
@@ -32,6 +32,7 @@
 #include "gstvaapidisplay.h"
 #include "gstvaapidisplay_priv.h"
 #include "gstvaapiworkarounds.h"
+#include "gstvaapiversion.h"
 
 #define DEBUG 1
 #include "gstvaapidebug.h"
@@ -95,6 +96,20 @@ get_color_balance(GstVaapiDisplay *display, guint prop_id, gfloat *v);
 static gboolean
 set_color_balance(GstVaapiDisplay *display, guint prop_id, gfloat v);
 
+static void
+dump_version(void)
+{
+    static gsize g_once = FALSE;
+
+    if (!g_once_init_enter(&g_once))
+        return;
+
+    /* Dump gstreamer-vaapi version for debugging purposes */
+    GST_INFO("gstreamer-vaapi version %s", GST_VAAPI_VERSION_ID);
+
+    g_once_init_leave(&g_once, TRUE);
+}
+
 static inline GstVaapiDisplayCache *
 get_display_cache(void)
 {
@@ -885,6 +900,8 @@ gst_vaapi_display_class_init(GstVaapiDisplayClass *klass)
 
     GST_DEBUG_CATEGORY_INIT(gst_debug_vaapi, "vaapi", 0, "VA-API helper");
 
+    dump_version();
+
     g_type_class_add_private(klass, sizeof(GstVaapiDisplayPrivate));
 
     object_class->finalize      = gst_vaapi_display_finalize;
diff --git a/gst-libs/gst/vaapi/gstvaapiversion.h.in b/gst-libs/gst/vaapi/gstvaapiversion.h.in
new file mode 100644 (file)
index 0000000..e4896a4
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ *  gstvaapiversion.h - Versioning
+ *
+ *  Copyright (C) 2013 Intel Corporation
+ *
+ *  This library 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.
+ *
+ *  This library 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 this library; if not, write to the Free
+ *  Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ *  Boston, MA 02110-1301 USA
+ */
+
+#ifndef GST_VAAPI_VERSION_H
+#define GST_VAAPI_VERSION_H
+
+/**
+ * GST_VAAPI_VERSION_ID:
+ *
+ * The full version identifier of gstreamer-vaapi, in string form
+ * (suitable for string concatenation).
+ */
+#define GST_VAAPI_VERSION_ID "@GST_VAAPI_VERSION_ID@"
+
+#endif /* GST_VAAPI_VERSION_H */