shithub: libvpx

Download patch

ref: 6e5115e12e916e7d787e0daf2a30a7c610947871
parent: 767d63d076d4a191f1ab44eb725685311006031a
parent: 55639c383bdbdf8ce270ea6783f3a360b8efbfd3
author: Yunqing Wang <[email protected]>
date: Tue Mar 3 10:47:06 EST 2015

Merge "fix a race condition caused by intra function pointer initialization"

--- a/vp9/common/vp9_reconintra.c
+++ b/vp9/common/vp9_reconintra.c
@@ -12,6 +12,7 @@
 #include "./vp9_rtcd.h"
 
 #include "vpx_mem/vpx_mem.h"
+#include "vpx_ports/vpx_once.h"
 
 #include "vp9/common/vp9_reconintra.h"
 #include "vp9/common/vp9_onyxc_int.h"
@@ -579,7 +580,7 @@
 static intra_high_pred_fn dc_pred_high[2][2][4];
 #endif  // CONFIG_VP9_HIGHBITDEPTH
 
-void vp9_init_intra_predictors() {
+static void vp9_init_intra_predictors_internal() {
 #define INIT_ALL_SIZES(p, type) \
   p[TX_4X4] = vp9_##type##_predictor_4x4; \
   p[TX_8X8] = vp9_##type##_predictor_8x8; \
@@ -893,4 +894,8 @@
 #endif
   build_intra_predictors(xd, ref, ref_stride, dst, dst_stride, mode, tx_size,
                          have_top, have_left, have_right, x, y, plane);
+}
+
+void vp9_init_intra_predictors() {
+  once(vp9_init_intra_predictors_internal);
 }