mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-23 07:38:16 +00:00
x264enc: fix build with newer x264 with support for multiple bit depths
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
This commit is contained in:
parent
725de9b92e
commit
83c38dc446
1 changed files with 34 additions and 1 deletions
|
@ -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,
|
||||
|
@ -2925,7 +2956,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;
|
||||
|
|
Loading…
Reference in a new issue