| 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 |
| |