av_cold void ff_h264_decode_init_vlc(void){ static int done = 0; if (!done) { int i; int offset; done = 1; chroma_dc_coeff_token_vlc.table = chroma_dc_coeff_token_vlc_table; chroma_dc_coeff_token_vlc.table_allocated = chroma_dc_coeff_token_vlc_table_size; init_vlc(&chroma_dc_coeff_token_vlc, CHROMA_DC_COEFF_TOKEN_VLC_BITS, 4*5, &chroma_dc_coeff_token_len [0], 1, 1, &chroma_dc_coeff_token_bits[0], 1, 1, INIT_VLC_USE_NEW_STATIC); chroma422_dc_coeff_token_vlc.table = chroma422_dc_coeff_token_vlc_table; chroma422_dc_coeff_token_vlc.table_allocated = chroma422_dc_coeff_token_vlc_table_size; init_vlc(&chroma422_dc_coeff_token_vlc, CHROMA422_DC_COEFF_TOKEN_VLC_BITS, 4*9, &chroma422_dc_coeff_token_len [0], 1, 1, &chroma422_dc_coeff_token_bits[0], 1, 1, INIT_VLC_USE_NEW_STATIC); offset = 0; for(i=0; i<4; i++){ coeff_token_vlc[i].table = coeff_token_vlc_tables+offset; coeff_token_vlc[i].table_allocated = coeff_token_vlc_tables_size[i]; init_vlc(&coeff_token_vlc[i], COEFF_TOKEN_VLC_BITS, 4*17, &coeff_token_len [i][0], 1, 1, &coeff_token_bits[i][0], 1, 1, INIT_VLC_USE_NEW_STATIC); offset += coeff_token_vlc_tables_size[i]; } /* * This is a one time safety check to make sure that * the packed static coeff_token_vlc table sizes * were initialized correctly. */ av_assert0(offset == FF_ARRAY_ELEMS(coeff_token_vlc_tables)); for(i=0; i<3; i++){ chroma_dc_total_zeros_vlc[i].table = chroma_dc_total_zeros_vlc_tables[i]; chroma_dc_total_zeros_vlc[i].table_allocated = chroma_dc_total_zeros_vlc_tables_size; init_vlc(&chroma_dc_total_zeros_vlc[i], CHROMA_DC_TOTAL_ZEROS_VLC_BITS, 4, &chroma_dc_total_zeros_len [i][0], 1, 1, &chroma_dc_total_zeros_bits[i][0], 1, 1, INIT_VLC_USE_NEW_STATIC); } for(i=0; i<7; i++){ chroma422_dc_total_zeros_vlc[i].table = chroma422_dc_total_zeros_vlc_tables[i]; chroma422_dc_total_zeros_vlc[i].table_allocated = chroma422_dc_total_zeros_vlc_tables_size; init_vlc(&chroma422_dc_total_zeros_vlc[i], CHROMA422_DC_TOTAL_ZEROS_VLC_BITS, 8, &chroma422_dc_total_zeros_len [i][0], 1, 1, &chroma422_dc_total_zeros_bits[i][0], 1, 1, INIT_VLC_USE_NEW_STATIC); } for(i=0; i<15; i++){ total_zeros_vlc[i].table = total_zeros_vlc_tables[i]; total_zeros_vlc[i].table_allocated = total_zeros_vlc_tables_size; init_vlc(&total_zeros_vlc[i], TOTAL_ZEROS_VLC_BITS, 16, &total_zeros_len [i][0], 1, 1, &total_zeros_bits[i][0], 1, 1, INIT_VLC_USE_NEW_STATIC); } for(i=0; i<6; i++){ run_vlc[i].table = run_vlc_tables[i]; run_vlc[i].table_allocated = run_vlc_tables_size; init_vlc(&run_vlc[i], RUN_VLC_BITS, 7, &run_len [i][0], 1, 1, &run_bits[i][0], 1, 1, INIT_VLC_USE_NEW_STATIC); } run7_vlc.table = run7_vlc_table, run7_vlc.table_allocated = run7_vlc_table_size; init_vlc(&run7_vlc, RUN7_VLC_BITS, 16, &run_len [6][0], 1, 1, &run_bits[6][0], 1, 1, INIT_VLC_USE_NEW_STATIC); init_cavlc_level_tab(); } }