summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vp8/encoder/onyx_if.c14
-rw-r--r--vp8/vp8_cx_iface.c3
-rw-r--r--vp9/common/vp9_rtcd.c6
-rw-r--r--vp9/encoder/vp9_encoder.c26
-rw-r--r--vp9/vp9_cx_iface.c3
-rw-r--r--vpx_ports/vpx_once.h4
6 files changed, 23 insertions, 33 deletions
diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c
index 59bce951e..f09177c7f 100644
--- a/vp8/encoder/onyx_if.c
+++ b/vp8/encoder/onyx_if.c
@@ -36,6 +36,7 @@
#include "vp8/common/swapyv12buffer.h"
#include "vp8/common/threading.h"
#include "vpx_ports/system_state.h"
+#include "vpx_ports/vpx_once.h"
#include "vpx_ports/vpx_timer.h"
#include "vpx_util/vpx_write_yuv_frame.h"
#if VPX_ARCH_ARM
@@ -394,16 +395,13 @@ static void setup_features(VP8_COMP *cpi) {
static void dealloc_raw_frame_buffers(VP8_COMP *cpi);
-void vp8_initialize_enc(void) {
- static volatile int init_done = 0;
-
- if (!init_done) {
- vpx_dsp_rtcd();
- vp8_init_intra_predictors();
- init_done = 1;
- }
+static void initialize_enc(void) {
+ vpx_dsp_rtcd();
+ vp8_init_intra_predictors();
}
+void vp8_initialize_enc(void) { once(initialize_enc); }
+
static void dealloc_compressor_data(VP8_COMP *cpi) {
vpx_free(cpi->tplist);
cpi->tplist = NULL;
diff --git a/vp8/vp8_cx_iface.c b/vp8/vp8_cx_iface.c
index ab954c46f..21fed0e8e 100644
--- a/vp8/vp8_cx_iface.c
+++ b/vp8/vp8_cx_iface.c
@@ -18,7 +18,6 @@
#include "vpx_mem/vpx_mem.h"
#include "vpx_ports/static_assert.h"
#include "vpx_ports/system_state.h"
-#include "vpx_ports/vpx_once.h"
#include "vpx_util/vpx_timestamp.h"
#include "vp8/encoder/onyx_int.h"
#include "vpx/vp8cx.h"
@@ -694,7 +693,7 @@ static vpx_codec_err_t vp8e_init(vpx_codec_ctx_t *ctx,
ctx->priv->enc.total_encoders = 1;
}
- once(vp8_initialize_enc);
+ vp8_initialize_enc();
res = validate_config(priv, &priv->cfg, &priv->vp8_cfg, 0);
diff --git a/vp9/common/vp9_rtcd.c b/vp9/common/vp9_rtcd.c
index d8c870aa3..37762ca15 100644
--- a/vp9/common/vp9_rtcd.c
+++ b/vp9/common/vp9_rtcd.c
@@ -12,8 +12,4 @@
#include "./vp9_rtcd.h"
#include "vpx_ports/vpx_once.h"
-void vp9_rtcd() {
- // TODO(JBB): Remove this once, by insuring that both the encoder and
- // decoder setup functions are protected by once();
- once(setup_rtcd_internal);
-}
+void vp9_rtcd() { once(setup_rtcd_internal); }
diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c
index 8fdd86916..8d5ec5a36 100644
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -25,6 +25,7 @@
#endif
#include "vpx_ports/mem.h"
#include "vpx_ports/system_state.h"
+#include "vpx_ports/vpx_once.h"
#include "vpx_ports/vpx_timer.h"
#if CONFIG_BITSTREAM_DEBUG || CONFIG_MISMATCH_DEBUG
#include "vpx_util/vpx_debug_util.h"
@@ -929,24 +930,21 @@ static void vp9_swap_mi_and_prev_mi(VP9_COMMON *cm) {
cm->prev_mi_grid_visible = cm->prev_mi_grid_base + cm->mi_stride + 1;
}
-void vp9_initialize_enc(void) {
- static volatile int init_done = 0;
-
- if (!init_done) {
- vp9_rtcd();
- vpx_dsp_rtcd();
- vpx_scale_rtcd();
- vp9_init_intra_predictors();
- vp9_init_me_luts();
- vp9_rc_init_minq_luts();
- vp9_entropy_mv_init();
+static void initialize_enc(void) {
+ vp9_rtcd();
+ vpx_dsp_rtcd();
+ vpx_scale_rtcd();
+ vp9_init_intra_predictors();
+ vp9_init_me_luts();
+ vp9_rc_init_minq_luts();
+ vp9_entropy_mv_init();
#if !CONFIG_REALTIME_ONLY
- vp9_temporal_filter_init();
+ vp9_temporal_filter_init();
#endif
- init_done = 1;
- }
}
+void vp9_initialize_enc(void) { once(initialize_enc); }
+
static void dealloc_compressor_data(VP9_COMP *cpi) {
VP9_COMMON *const cm = &cpi->common;
int i;
diff --git a/vp9/vp9_cx_iface.c b/vp9/vp9_cx_iface.c
index cc4081c4f..9f03ed172 100644
--- a/vp9/vp9_cx_iface.c
+++ b/vp9/vp9_cx_iface.c
@@ -15,7 +15,6 @@
#include "vpx/vpx_encoder.h"
#include "vpx/vpx_ext_ratectrl.h"
#include "vpx_dsp/psnr.h"
-#include "vpx_ports/vpx_once.h"
#include "vpx_ports/static_assert.h"
#include "vpx_ports/system_state.h"
#include "vpx_util/vpx_timestamp.h"
@@ -1096,7 +1095,7 @@ static vpx_codec_err_t encoder_init(vpx_codec_ctx_t *ctx,
}
priv->extra_cfg = default_extra_cfg;
- once(vp9_initialize_enc);
+ vp9_initialize_enc();
res = validate_config(priv, &priv->cfg, &priv->extra_cfg);
diff --git a/vpx_ports/vpx_once.h b/vpx_ports/vpx_once.h
index 4eb592b87..d8a8ed89f 100644
--- a/vpx_ports/vpx_once.h
+++ b/vpx_ports/vpx_once.h
@@ -95,7 +95,7 @@ static void once(void (*func)(void)) {
#define INCL_DOS
#include <os2.h>
static void once(void (*func)(void)) {
- static int done;
+ static volatile int done;
/* If the initialization is complete, return early. */
if (done) return;
@@ -128,7 +128,7 @@ static void once(void (*func)(void)) {
*/
static void once(void (*func)(void)) {
- static int done;
+ static volatile int done;
if (!done) {
func();