summaryrefslogtreecommitdiffstats
path: root/src/gst-plugins-ugly-1-fixes.patch
blob: a0d837ba3b82d96db82b2980327afb4b602fd1dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
This file is part of MXE. See LICENSE.md for licensing information.

Contains ad hoc patches for cross building.

From 0000000000000000000000000000000000000000 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 1/1] 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

taken from:
https://cgit.freedesktop.org/gstreamer/gst-plugins-ugly/patch/?id=94562286b48a73bd0dc8f6f0bc4e47cb547831a9

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

diff --git a/ext/x264/gstx264enc.c b/ext/x264/gstx264enc.c
index 1111111..2222222 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;