make vp9 encoder static initializers thread safe
Change-Id: If2d0888d13ebe52bc7c3b16f16319408a86ab6de
This commit is contained in:
parent
5ccff43292
commit
cd60930814
@ -16,5 +16,7 @@ void vpx_scale_rtcd(void);
|
|||||||
|
|
||||||
void vp9_rtcd() {
|
void vp9_rtcd() {
|
||||||
vpx_scale_rtcd();
|
vpx_scale_rtcd();
|
||||||
|
// TODO(JBB): Remove this once, by insuring that both the encoder and
|
||||||
|
// decoder setup functions are protected by once();
|
||||||
once(setup_rtcd_internal);
|
once(setup_rtcd_internal);
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "./vpx_scale_rtcd.h"
|
#include "./vpx_scale_rtcd.h"
|
||||||
|
|
||||||
#include "vpx_mem/vpx_mem.h"
|
#include "vpx_mem/vpx_mem.h"
|
||||||
|
#include "vpx_ports/vpx_once.h"
|
||||||
#include "vpx_ports/vpx_timer.h"
|
#include "vpx_ports/vpx_timer.h"
|
||||||
#include "vpx_scale/vpx_scale.h"
|
#include "vpx_scale/vpx_scale.h"
|
||||||
|
|
||||||
@ -34,7 +35,7 @@
|
|||||||
#include "vp9/decoder/vp9_dthread.h"
|
#include "vp9/decoder/vp9_dthread.h"
|
||||||
|
|
||||||
static void initialize_dec() {
|
static void initialize_dec() {
|
||||||
static int init_done = 0;
|
static volatile int init_done = 0;
|
||||||
|
|
||||||
if (!init_done) {
|
if (!init_done) {
|
||||||
vp9_rtcd();
|
vp9_rtcd();
|
||||||
@ -85,7 +86,7 @@ VP9Decoder *vp9_decoder_create() {
|
|||||||
sizeof(*cm->frame_contexts)));
|
sizeof(*cm->frame_contexts)));
|
||||||
|
|
||||||
pbi->need_resync = 1;
|
pbi->need_resync = 1;
|
||||||
initialize_dec();
|
once(initialize_dec);
|
||||||
|
|
||||||
// Initialize the references to not point to any frame buffers.
|
// Initialize the references to not point to any frame buffers.
|
||||||
vpx_memset(&cm->ref_frame_map, -1, sizeof(cm->ref_frame_map));
|
vpx_memset(&cm->ref_frame_map, -1, sizeof(cm->ref_frame_map));
|
||||||
|
@ -182,7 +182,7 @@ static void vp9_swap_mi_and_prev_mi(VP9_COMMON *cm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void vp9_initialize_enc() {
|
void vp9_initialize_enc() {
|
||||||
static int init_done = 0;
|
static volatile int init_done = 0;
|
||||||
|
|
||||||
if (!init_done) {
|
if (!init_done) {
|
||||||
vp9_rtcd();
|
vp9_rtcd();
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include "./vpx_config.h"
|
#include "./vpx_config.h"
|
||||||
#include "vpx/vpx_codec.h"
|
#include "vpx/vpx_codec.h"
|
||||||
|
#include "vpx_ports/vpx_once.h"
|
||||||
#include "vpx/internal/vpx_codec_internal.h"
|
#include "vpx/internal/vpx_codec_internal.h"
|
||||||
#include "./vpx_version.h"
|
#include "./vpx_version.h"
|
||||||
#include "vp9/encoder/vp9_encoder.h"
|
#include "vp9/encoder/vp9_encoder.h"
|
||||||
@ -729,7 +730,7 @@ static vpx_codec_err_t encoder_init(vpx_codec_ctx_t *ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
priv->extra_cfg = default_extra_cfg;
|
priv->extra_cfg = default_extra_cfg;
|
||||||
vp9_initialize_enc();
|
once(vp9_initialize_enc);
|
||||||
|
|
||||||
res = validate_config(priv, &priv->cfg, &priv->extra_cfg);
|
res = validate_config(priv, &priv->cfg, &priv->extra_cfg);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user