]> granicus.if.org Git - libx264/commitdiff
Force a link error in case of incompatible API
authorFiona Glaser <fiona@x264.com>
Tue, 1 Sep 2009 18:36:54 +0000 (11:36 -0700)
committerFiona Glaser <fiona@x264.com>
Wed, 2 Sep 2009 02:05:01 +0000 (19:05 -0700)
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.

encoder/encoder.c
x264.h

index 8cec1552a39c0baf631d3b927728cfdf695f8326..eb6c435040c8f6465c13b475b065a15d08e2072f 100644 (file)
@@ -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;
diff --git a/x264.h b/x264.h
index 6609a32b3874d150071b66608e1b5febd097b1ff..5e6d411788a64bc16da0d7fa11aecd92a0f1d018 100644 (file)
--- a/x264.h
+++ b/x264.h
@@ -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;