}
}
+static av_cold void msmpeg4_common_init_static(void)
+{
+ static uint8_t rl_table_store[NB_RL_TABLES][2][2 * MAX_RUN + MAX_LEVEL + 3];
+
+ for (int i = 0; i < NB_RL_TABLES; i++)
+ ff_rl_init(&ff_rl_table[i], rl_table_store[i]);
+
+ init_h263_dc_for_msmpeg4();
+}
+
av_cold void ff_msmpeg4_common_init(MpegEncContext *s)
{
static AVOnce init_static_once = AV_ONCE_INIT;
}
//Note the default tables are set in common_init in mpegvideo.c
- ff_thread_once(&init_static_once, init_h263_dc_for_msmpeg4);
+ ff_thread_once(&init_static_once, msmpeg4_common_init_static);
}
/* predict coded block */
uint32_t ff_v2_dc_lum_table[512][2];
uint32_t ff_v2_dc_chroma_table[512][2];
-uint8_t ff_static_rl_table_store[NB_RL_TABLES][2][2 * MAX_RUN + MAX_LEVEL + 3];
VLC ff_msmp4_mb_i_vlc;
VLC ff_msmp4_dc_luma_vlc[2];
#define NB_RL_TABLES 6
extern RLTable ff_rl_table[NB_RL_TABLES];
-extern uint8_t ff_static_rl_table_store[NB_RL_TABLES][2][2 * MAX_RUN + MAX_LEVEL + 3];
extern uint32_t ff_v2_dc_lum_table[512][2];
extern uint32_t ff_v2_dc_chroma_table[512][2];
{
MpegEncContext *s = avctx->priv_data;
static volatile int done = 0;
- int i, ret;
+ int ret;
MVTable *mv;
if ((ret = av_image_check_size(avctx->width, avctx->height, 0, avctx)) < 0)
ff_msmpeg4_common_init(s);
if (!done) {
- for(i=0;i<NB_RL_TABLES;i++) {
- ff_rl_init(&ff_rl_table[i], ff_static_rl_table_store[i]);
- }
INIT_FIRST_VLC_RL(ff_rl_table[0], 642);
INIT_FIRST_VLC_RL(ff_rl_table[1], 1104);
INIT_FIRST_VLC_RL(ff_rl_table[2], 554);
init_mv_table(&ff_mv_tables[0], mv_index_tables[0]);
init_mv_table(&ff_mv_tables[1], mv_index_tables[1]);
- for(i=0;i<NB_RL_TABLES;i++)
- ff_rl_init(&ff_rl_table[i], ff_static_rl_table_store[i]);
-
for(i=0; i<NB_RL_TABLES; i++){
int level;
for (level = 1; level <= MAX_LEVEL; level++) {