From ffa7ce1e19ec3930de667f213dcaedb7eb10508e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= 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 --- 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