Commit 7df6f5d6 authored by Fiona Glaser's avatar Fiona Glaser
Browse files

Force a link error in case of incompatible API

This is because the number of bug reports due to miscompiled ffmpeg builds is reaching critical mass.
The name of x264_encoder_open is now #defined based on the current X264_BUILD.
Note that this changes the calling convention required for dlopen, but not for ordinary calls to x264_encoder_open.
parent ec2f6f4f
......@@ -736,7 +736,7 @@ static void x264_set_aspect_ratio( x264_t *h, x264_param_t *param, int initial )
* x264_encoder_open:
x264_t *x264_encoder_open ( x264_param_t *param )
x264_t *x264_encoder_open( x264_param_t *param )
x264_t *h;
char buf[1000], *p;
......@@ -35,7 +35,7 @@
#include <stdarg.h>
#define X264_BUILD 73
#define X264_BUILD 74
/* x264_t:
* opaque handler for encoder */
......@@ -436,9 +436,17 @@ int x264_nal_encode( void *, int *, int b_annexeb, x264_nal_t *nal );
* Encoder functions:
/* Force a link error in the case of linking against an incompatible API version.
* Glue #defines exist to force correct macro expansion; the final output of the macro
* is x264_encoder_open_##X264_BUILD (for purposes of dlopen). */
#define x264_encoder_glue1(x,y) x##y
#define x264_encoder_glue2(x,y) x264_encoder_glue1(x,y)
#define x264_encoder_open x264_encoder_glue2(x264_encoder_open_,X264_BUILD)
/* x264_encoder_open:
* create a new encoder handler, all parameters from x264_param_t are copied */
x264_t *x264_encoder_open ( x264_param_t * );
x264_t *x264_encoder_open( x264_param_t * );
/* x264_encoder_reconfig:
* analysis-related parameters from x264_param_t are copied.
* this takes effect immediately, on whichever frame is encoded next;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment