gst1-plugins-ugly: fix x264 compile failure
authorPeter Seiderer <ps.report@gmx.net>
Mon, 30 Apr 2018 19:47:17 +0000 (21:47 +0200)
committerPeter Korsgaard <peter@korsgaard.com>
Sun, 6 May 2018 21:18:01 +0000 (23:18 +0200)
Add upstream patch to fix compile with latest x264 library.

Fixes [1]:

  gstx264enc.c: In function 'plugin_init':
  gstx264enc.c:2900:36: error: 'x264_bit_depth' undeclared (first use in this function); did you mean 'x264_picture_t'?
     default_vtable.x264_bit_depth = &x264_bit_depth;
                                      ^~~~~~~~~~~~~~
                                      x264_picture_t

[1] http://autobuild.buildroot.net/results/a766a28c584534b6a30839cfd98428d840bce3f2

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/gstreamer1/gst1-plugins-ugly/0001-x264enc-fix-build-with-newer-x264-with-support-for-m.patch [new file with mode: 0644]

diff --git a/package/gstreamer1/gst1-plugins-ugly/0001-x264enc-fix-build-with-newer-x264-with-support-for-m.patch b/package/gstreamer1/gst1-plugins-ugly/0001-x264enc-fix-build-with-newer-x264-with-support-for-m.patch
new file mode 100644 (file)
index 0000000..c746047
--- /dev/null
@@ -0,0 +1,106 @@
+From ffa7ce1e19ec3930de667f213dcaedb7eb10508e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
+Date: Wed, 28 Feb 2018 10:07:13 +0000
+Subject: [PATCH] x264enc: fix build with newer x264 with support for multiple
+ bit depths
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+libx264 used to be built for one specific bit depth, and if we
+wanted to support multiple bit depths we would have to dynamically
+load the right .so from different paths. That has changed now, and
+libx264 can include support for multiple depths in the same lib,
+so we don't need to do the dlopen() dance any more. We'll keep
+the vtable stuff around until we can drop support for older x264.
+
+gstx264enc.c:2927:36: error: ‘x264_bit_depth’ undeclared
+
+https://bugzilla.gnome.org/show_bug.cgi?id=792111
+
+Upstream: https://cgit.freedesktop.org/gstreamer/gst-plugins-ugly/patch/ext/x264?id=83c38dc44622611c1f67dd26e4cb383c5aef90f6
+Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+---
+ ext/x264/gstx264enc.c | 35 ++++++++++++++++++++++++++++++++++-
+ 1 file changed, 34 insertions(+), 1 deletion(-)
+
+diff --git a/ext/x264/gstx264enc.c b/ext/x264/gstx264enc.c
+index 4287cf9..d1e4f2b 100644
+--- a/ext/x264/gstx264enc.c
++++ b/ext/x264/gstx264enc.c
+@@ -117,7 +117,9 @@ struct _GstX264EncVTable
+ {
+   GModule *module;
++#if X264_BUILD < 153
+   const int *x264_bit_depth;
++#endif
+   const int *x264_chroma_format;
+   void (*x264_encoder_close) (x264_t *);
+   int (*x264_encoder_delayed_frames) (x264_t *);
+@@ -170,8 +172,9 @@ load_x264 (const gchar * filename)
+         "' from '%s'. Incompatible version?", filename);
+     goto error;
+   }
+-
++#if X264_BUILD < 153
+   LOAD_SYMBOL (x264_bit_depth);
++#endif
+   LOAD_SYMBOL (x264_chroma_format);
+   LOAD_SYMBOL (x264_encoder_close);
+   LOAD_SYMBOL (x264_encoder_delayed_frames);
+@@ -288,6 +291,7 @@ gst_x264_enc_add_x264_chroma_format (GstStructure * s,
+   return ret;
+ }
++#if X264_BUILD < 153
+ static gboolean
+ load_x264_libraries (void)
+ {
+@@ -326,6 +330,33 @@ load_x264_libraries (void)
+   return TRUE;
+ }
++#else /* X264_BUILD >= 153 */
++
++static gboolean
++load_x264_libraries (void)
++{
++#if X264_BIT_DEPTH == 0         /* all */
++  vtable_8bit = &default_vtable;
++  vtable_10bit = &default_vtable;
++#elif X264_BIT_DEPTH == 8
++  vtable_8bit = &default_vtable;
++#elif X264_BIT_DEPTH == 10
++  vtable_10bit = &default_vtable;
++#else
++#error "unexpected X264_BIT_DEPTH value"
++#endif
++
++#ifdef HAVE_X264_ADDITIONAL_LIBRARIES
++  GST_WARNING ("Ignoring configured additional libraries %s, using libx264 "
++      "version enabled for multiple bit depths",
++      HAVE_X264_ADDITIONAL_LIBRARIES);
++#endif
++
++  return TRUE;
++}
++
++#endif
++
+ enum
+ {
+   ARG_0,
+@@ -2897,7 +2928,9 @@ plugin_init (GstPlugin * plugin)
+    * if needed. We can't initialize statically because these values are not
+    * constant on Windows. */
+   default_vtable.module = NULL;
++#if X264_BUILD < 153
+   default_vtable.x264_bit_depth = &x264_bit_depth;
++#endif
+   default_vtable.x264_chroma_format = &x264_chroma_format;
+   default_vtable.x264_encoder_close = x264_encoder_close;
+   default_vtable.x264_encoder_delayed_frames = x264_encoder_delayed_frames;
+-- 
+2.16.3
+