diff --git a/vp8/common/threading.h b/vp8/common/threading.h index 0dd7bbc4c90f804ff9a28571a38f695ec865a61c..bfd4916c6456d91803b43a4061e696c16c798106 100644 --- a/vp8/common/threading.h +++ b/vp8/common/threading.h @@ -14,7 +14,7 @@ #define VPXINFINITE 10000 /* 10second. */ -#if CONFIG_OS_SUPPORT +#if CONFIG_OS_SUPPORT && CONFIG_MULTITHREAD /* Thread management macros */ #ifdef _WIN32 @@ -90,8 +90,6 @@ #define x86_pause_hint() #endif -#else /* CONFIG_OS_SUPPORT = 0 */ -#define THREAD_FUNCTION void * -#endif /* CONFIG_OS_SUPPORT */ +#endif /* CONFIG_OS_SUPPORT && CONFIG_MULTITHREAD */ #endif diff --git a/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c index d3972b32485998f44e98c3c24ebf728b577d27e0..d356fca5a8806601f61a7dd4b7f0a42c9fb16b25 100644 --- a/vp8/decoder/decodframe.c +++ b/vp8/decoder/decodframe.c @@ -485,9 +485,11 @@ static void setup_token_decoder(VP8D_COMP *pbi, bool_decoder++; } +#if CONFIG_MULTITHREAD /* Clamp number of decoder threads */ if (pbi->decoding_thread_count > num_part - 1) pbi->decoding_thread_count = num_part - 1; +#endif } @@ -846,7 +848,9 @@ int vp8_decode_frame(VP8D_COMP *pbi) vpx_memcpy(&xd->dst, &pc->yv12_fb[pc->new_fb_idx], sizeof(YV12_BUFFER_CONFIG)); /* set up frame new frame for intra coded blocks */ +#if CONFIG_MULTITHREAD if (!(pbi->b_multithreaded_rd) || pc->multi_token_partition == ONE_PARTITION || !(pc->filter_level)) +#endif vp8_setup_intra_recon(&pc->yv12_fb[pc->new_fb_idx]); vp8_setup_block_dptrs(xd); @@ -866,6 +870,7 @@ int vp8_decode_frame(VP8D_COMP *pbi) vpx_memcpy(&xd->block[0].bmi, &xd->mode_info_context->bmi[0], sizeof(B_MODE_INFO)); +#if CONFIG_MULTITHREAD if (pbi->b_multithreaded_rd && pc->multi_token_partition != ONE_PARTITION) { vp8mt_decode_mb_rows(pbi, xd); @@ -880,6 +885,7 @@ int vp8_decode_frame(VP8D_COMP *pbi) vp8_yv12_extend_frame_borders_ptr(&pc->yv12_fb[pc->new_fb_idx]); /*cm->frame_to_show);*/ } else +#endif { int ibc = 0; int num_part = 1 << pc->multi_token_partition; diff --git a/vp8/decoder/onyxd_if.c b/vp8/decoder/onyxd_if.c index adbb1f336849375d940a0c0e43d178b02d7141c1..41966b9dad82893af971f678144e74f5750e4f39 100644 --- a/vp8/decoder/onyxd_if.c +++ b/vp8/decoder/onyxd_if.c @@ -114,8 +114,10 @@ VP8D_PTR vp8dx_create_decompressor(VP8D_CONFIG *oxcf) pbi->ready_for_new_data = 1; pbi->CPUFreq = 0; /*vp8_get_processor_freq();*/ +#if CONFIG_MULTITHREAD pbi->max_threads = oxcf->max_threads; vp8_decoder_create_threads(pbi); +#endif /* vp8cx_init_de_quantizer() is first called here. Add check in frame_init_dequantizer() to avoid * unnecessary calling of vp8cx_init_de_quantizer() for every frame. @@ -149,8 +151,8 @@ void vp8dx_remove_decompressor(VP8D_PTR ptr) #if CONFIG_MULTITHREAD if (pbi->b_multithreaded_rd) vp8mt_de_alloc_temp_buffers(pbi, pbi->common.mb_rows); -#endif vp8_decoder_remove_threads(pbi); +#endif vp8_remove_common(&pbi->common); vpx_free(pbi); } @@ -407,6 +409,7 @@ int vp8dx_receive_compressed_data(VP8D_PTR ptr, unsigned long size, const unsign return retcode; } +#if CONFIG_MULTITHREAD if (pbi->b_multithreaded_rd && cm->multi_token_partition != ONE_PARTITION) { if (swap_frame_buffers (cm)) @@ -424,6 +427,7 @@ int vp8dx_receive_compressed_data(VP8D_PTR ptr, unsigned long size, const unsign return -1; } } else +#endif { if (swap_frame_buffers (cm)) { diff --git a/vp8/decoder/onyxd_int.h b/vp8/decoder/onyxd_int.h index 7593edf27d2b799cdf221be2c171b00e412e7a30..34c424418b1f2626075d7f4fec2f41f4e2a3de5b 100644 --- a/vp8/decoder/onyxd_int.h +++ b/vp8/decoder/onyxd_int.h @@ -87,14 +87,15 @@ typedef struct VP8Decompressor unsigned int time_decoding; unsigned int time_loop_filtering; +#if CONFIG_MULTITHREAD + /* variable for threading */ + volatile int b_multithreaded_rd; int max_threads; int current_mb_col_main; int decoding_thread_count; int allocated_decoding_thread_count; - /* variable for threading */ -#if CONFIG_MULTITHREAD int mt_baseline_filter_level[MAX_MB_SEGMENTS]; int sync_range; int *mt_current_mb_col; /* Each row remembers its already decoded column. */ diff --git a/vp8/decoder/reconintra_mt.c b/vp8/decoder/reconintra_mt.c index ad4324b27370b9b7bc9227afe6679689753f00d2..854aba35a4e9034c1a7b64a5b88fc3ca881c5df4 100644 --- a/vp8/decoder/reconintra_mt.c +++ b/vp8/decoder/reconintra_mt.c @@ -21,7 +21,6 @@ void vp8mt_build_intra_predictors_mby(VP8D_COMP *pbi, MACROBLOCKD *x, int mb_row, int mb_col) { -#if CONFIG_MULTITHREAD unsigned char *yabove_row; /* = x->dst.y_buffer - x->dst.y_stride; */ unsigned char *yleft_col; unsigned char yleft_buf[16]; @@ -146,17 +145,10 @@ void vp8mt_build_intra_predictors_mby(VP8D_COMP *pbi, MACROBLOCKD *x, int mb_row case MB_MODE_COUNT: break; } -#else - (void) pbi; - (void) x; - (void) mb_row; - (void) mb_col; -#endif } void vp8mt_build_intra_predictors_mby_s(VP8D_COMP *pbi, MACROBLOCKD *x, int mb_row, int mb_col) { -#if CONFIG_MULTITHREAD unsigned char *yabove_row; /* = x->dst.y_buffer - x->dst.y_stride; */ unsigned char *yleft_col; unsigned char yleft_buf[16]; @@ -289,17 +281,10 @@ void vp8mt_build_intra_predictors_mby_s(VP8D_COMP *pbi, MACROBLOCKD *x, int mb_r case MB_MODE_COUNT: break; } -#else - (void) pbi; - (void) x; - (void) mb_row; - (void) mb_col; -#endif } void vp8mt_build_intra_predictors_mbuv(VP8D_COMP *pbi, MACROBLOCKD *x, int mb_row, int mb_col) { -#if CONFIG_MULTITHREAD unsigned char *uabove_row; /* = x->dst.u_buffer - x->dst.uv_stride; */ unsigned char *uleft_col; /*[16];*/ unsigned char uleft_buf[8]; @@ -452,17 +437,10 @@ void vp8mt_build_intra_predictors_mbuv(VP8D_COMP *pbi, MACROBLOCKD *x, int mb_ro case MB_MODE_COUNT: break; } -#else - (void) pbi; - (void) x; - (void) mb_row; - (void) mb_col; -#endif } void vp8mt_build_intra_predictors_mbuv_s(VP8D_COMP *pbi, MACROBLOCKD *x, int mb_row, int mb_col) { -#if CONFIG_MULTITHREAD unsigned char *uabove_row; /* = x->dst.u_buffer - x->dst.uv_stride; */ unsigned char *uleft_col; /*[16];*/ unsigned char uleft_buf[8]; @@ -621,12 +599,6 @@ void vp8mt_build_intra_predictors_mbuv_s(VP8D_COMP *pbi, MACROBLOCKD *x, int mb_ case MB_MODE_COUNT: break; } -#else - (void) pbi; - (void) x; - (void) mb_row; - (void) mb_col; -#endif } @@ -638,7 +610,6 @@ void vp8mt_predict_intra4x4(VP8D_COMP *pbi, int mb_col, int num) { -#if CONFIG_MULTITHREAD int i, r, c; unsigned char *Above; /* = *(x->base_dst) + x->dst - x->dst_stride; */ @@ -935,15 +906,6 @@ void vp8mt_predict_intra4x4(VP8D_COMP *pbi, } -#else - (void) pbi; - (void) xd; - (void) b_mode; - (void) predictor; - (void) mb_row; - (void) mb_col; - (void) num; -#endif } /* copy 4 bytes from the above right down so that the 4x4 prediction modes using pixels above and @@ -951,7 +913,6 @@ void vp8mt_predict_intra4x4(VP8D_COMP *pbi, */ void vp8mt_intra_prediction_down_copy(VP8D_COMP *pbi, MACROBLOCKD *x, int mb_row, int mb_col) { -#if CONFIG_MULTITHREAD unsigned char *above_right; /* = *(x->block[0].base_dst) + x->block[0].dst - x->block[0].dst_stride + 16; */ unsigned int *src_ptr; unsigned int *dst_ptr0; @@ -973,10 +934,4 @@ void vp8mt_intra_prediction_down_copy(VP8D_COMP *pbi, MACROBLOCKD *x, int mb_row *dst_ptr0 = *src_ptr; *dst_ptr1 = *src_ptr; *dst_ptr2 = *src_ptr; -#else - (void) pbi; - (void) x; - (void) mb_row; - (void) mb_col; -#endif } diff --git a/vp8/decoder/threading.c b/vp8/decoder/threading.c index ec2cb2b071aceb704258bd56050f33e4f52aa4c2..271249a8d20218aea5f8454a2ba7d9fa8898c180 100644 --- a/vp8/decoder/threading.c +++ b/vp8/decoder/threading.c @@ -38,7 +38,6 @@ extern void vp8_build_uvmvs(MACROBLOCKD *x, int fullpixel); void vp8_setup_decoding_thread_data(VP8D_COMP *pbi, MACROBLOCKD *xd, MB_ROW_DEC *mbrd, int count) { -#if CONFIG_MULTITHREAD VP8_COMMON *const pc = & pbi->common; int i, j; @@ -88,18 +87,11 @@ void vp8_setup_decoding_thread_data(VP8D_COMP *pbi, MACROBLOCKD *xd, MB_ROW_DEC for (i=0; i< pc->mb_rows; i++) pbi->mt_current_mb_col[i]=-1; -#else - (void) pbi; - (void) xd; - (void) mbrd; - (void) count; -#endif } void vp8mt_decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int mb_col) { -#if CONFIG_MULTITHREAD int eobtotal = 0; int i, do_clamp = xd->mode_info_context->mbmi.need_to_clamp_mvs; VP8_COMMON *pc = &pbi->common; @@ -222,18 +214,11 @@ void vp8mt_decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int mb (xd->qcoeff+16*16, xd->block[16].dequant, xd->predictor+16*16, xd->dst.u_buffer, xd->dst.v_buffer, xd->dst.uv_stride, xd->eobs+16); -#else - (void) pbi; - (void) xd; - (void) mb_row; - (void) mb_col; -#endif } THREAD_FUNCTION vp8_thread_decoding_proc(void *p_data) { -#if CONFIG_MULTITHREAD int ithread = ((DECODETHREAD_DATA *)p_data)->ithread; VP8D_COMP *pbi = (VP8D_COMP *)(((DECODETHREAD_DATA *)p_data)->ptr1); MB_ROW_DEC *mbrd = (MB_ROW_DEC *)(((DECODETHREAD_DATA *)p_data)->ptr2); @@ -438,9 +423,6 @@ THREAD_FUNCTION vp8_thread_decoding_proc(void *p_data) sem_post(&pbi->h_event_end_decoding); } } -#else - (void) p_data; -#endif return 0 ; } @@ -448,7 +430,6 @@ THREAD_FUNCTION vp8_thread_decoding_proc(void *p_data) void vp8_decoder_create_threads(VP8D_COMP *pbi) { -#if CONFIG_MULTITHREAD int core_count = 0; int ithread; @@ -482,16 +463,11 @@ void vp8_decoder_create_threads(VP8D_COMP *pbi) pbi->allocated_decoding_thread_count = pbi->decoding_thread_count; } - -#else - (void) pbi; -#endif } void vp8mt_de_alloc_temp_buffers(VP8D_COMP *pbi, int mb_rows) { -#if CONFIG_MULTITHREAD VP8_COMMON *const pc = & pbi->common; int i; @@ -589,15 +565,11 @@ void vp8mt_de_alloc_temp_buffers(VP8D_COMP *pbi, int mb_rows) pbi->mt_vleft_col = NULL ; } } -#else - (void) pbi; -#endif } void vp8mt_alloc_temp_buffers(VP8D_COMP *pbi, int width, int prev_mb_rows) { -#if CONFIG_MULTITHREAD VP8_COMMON *const pc = & pbi->common; int i; int uv_width; @@ -646,17 +618,11 @@ void vp8mt_alloc_temp_buffers(VP8D_COMP *pbi, int width, int prev_mb_rows) for (i=0; i< pc->mb_rows; i++) CHECK_MEM_ERROR(pbi->mt_vleft_col[i], vpx_calloc(sizeof(unsigned char) * 8, 1)); } -#else - (void) pbi; - (void) width; -#endif } void vp8_decoder_remove_threads(VP8D_COMP *pbi) { -#if CONFIG_MULTITHREAD - /* shutdown MB Decoding thread; */ if (pbi->b_multithreaded_rd) { @@ -702,15 +668,11 @@ void vp8_decoder_remove_threads(VP8D_COMP *pbi) pbi->de_thread_data = NULL; } } -#else - (void) pbi; -#endif } void vp8mt_lpf_init( VP8D_COMP *pbi, int default_filt_lvl) { -#if CONFIG_MULTITHREAD VP8_COMMON *cm = &pbi->common; MACROBLOCKD *mbd = &pbi->mb; /*YV12_BUFFER_CONFIG *post = &cm->new_frame;*/ /*frame_to_show;*/ @@ -752,16 +714,11 @@ void vp8mt_lpf_init( VP8D_COMP *pbi, int default_filt_lvl) vp8_init_loop_filter(cm); else if (frame_type != cm->last_frame_type) vp8_frame_init_loop_filter(lfi, frame_type); -#else - (void) pbi; - (void) default_filt_lvl; -#endif } void vp8mt_decode_mb_rows( VP8D_COMP *pbi, MACROBLOCKD *xd) { -#if CONFIG_MULTITHREAD int mb_row; VP8_COMMON *pc = &pbi->common; @@ -981,8 +938,4 @@ void vp8mt_decode_mb_rows( VP8D_COMP *pbi, MACROBLOCKD *xd) } sem_wait(&pbi->h_event_end_decoding); /* add back for each frame */ -#else - (void) pbi; - (void) xd; -#endif } diff --git a/vp8/encoder/bitstream.c b/vp8/encoder/bitstream.c index 412542d1038333d35aa3371d0c9dc20447f578b7..52ad0d6faab0dd24a1ca8ff4afb270c2ec6dba64 100644 --- a/vp8/encoder/bitstream.c +++ b/vp8/encoder/bitstream.c @@ -1654,10 +1654,12 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size) { vp8_start_encode(&cpi->bc2, cx_data + bc->pos); - if (!cpi->b_multi_threaded) - pack_tokens(&cpi->bc2, cpi->tok, cpi->tok_count); - else +#if CONFIG_MULTITHREAD + if (cpi->b_multi_threaded) pack_mb_row_tokens(cpi, &cpi->bc2); + else +#endif + pack_tokens(&cpi->bc2, cpi->tok, cpi->tok_count); vp8_stop_encode(&cpi->bc2); oh.first_partition_length_in_bytes = cpi->bc.pos ; diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c index f06a4ca883b134d57a3aa7f1704a080eeb51f5fd..cde7de9f7cba5c92dd33a9947d9145c501c4e620 100644 --- a/vp8/encoder/encodeframe.c +++ b/vp8/encoder/encodeframe.c @@ -800,28 +800,9 @@ void vp8_encode_frame(VP8_COMP *cpi) struct vpx_usec_timer emr_timer; vpx_usec_timer_start(&emr_timer); - if (!cpi->b_multi_threaded) - { - // for each macroblock row in image - for (mb_row = 0; mb_row < cm->mb_rows; mb_row++) - { - - vp8_zero(cm->left_context) - - encode_mb_row(cpi, cm, mb_row, x, xd, &tp, segment_counts, &totalrate); - - // adjust to the next row of mbs - x->src.y_buffer += 16 * x->src.y_stride - 16 * cm->mb_cols; - x->src.u_buffer += 8 * x->src.uv_stride - 8 * cm->mb_cols; - x->src.v_buffer += 8 * x->src.uv_stride - 8 * cm->mb_cols; - } - - cpi->tok_count = tp - cpi->tok; - - } - else - { #if CONFIG_MULTITHREAD + if (cpi->b_multi_threaded) + { int i; vp8cx_init_mbrthread_data(cpi, x, cpi->mb_row_ei, 1, cpi->encoding_thread_count); @@ -886,7 +867,25 @@ void vp8_encode_frame(VP8_COMP *cpi) x->activity_sum += cpi->mb_row_ei[i].mb.activity_sum; } + } + else #endif + { + // for each macroblock row in image + for (mb_row = 0; mb_row < cm->mb_rows; mb_row++) + { + + vp8_zero(cm->left_context) + + encode_mb_row(cpi, cm, mb_row, x, xd, &tp, segment_counts, &totalrate); + + // adjust to the next row of mbs + x->src.y_buffer += 16 * x->src.y_stride - 16 * cm->mb_cols; + x->src.u_buffer += 8 * x->src.uv_stride - 8 * cm->mb_cols; + x->src.v_buffer += 8 * x->src.uv_stride - 8 * cm->mb_cols; + } + + cpi->tok_count = tp - cpi->tok; } diff --git a/vp8/encoder/ethreading.c b/vp8/encoder/ethreading.c index 8da93a67c20f1d0267a183410393996df0091941..4ce306ff0b82816c1278a12957a659595dc3ee35 100644 --- a/vp8/encoder/ethreading.c +++ b/vp8/encoder/ethreading.c @@ -13,6 +13,8 @@ #include "common.h" #include "extend.h" +#if CONFIG_MULTITHREAD + extern int vp8cx_encode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t, int recon_yoffset, int recon_uvoffset); @@ -25,7 +27,6 @@ extern void vp8_setup_block_ptrs(MACROBLOCK *x); static THREAD_FUNCTION thread_encoding_proc(void *p_data) { -#if CONFIG_MULTITHREAD int ithread = ((ENCODETHREAD_DATA *)p_data)->ithread; VP8_COMP *cpi = (VP8_COMP *)(((ENCODETHREAD_DATA *)p_data)->ptr1); MB_ROW_COMP *mbri = (MB_ROW_COMP *)(((ENCODETHREAD_DATA *)p_data)->ptr2); @@ -247,10 +248,6 @@ THREAD_FUNCTION thread_encoding_proc(void *p_data) } } -#else - (void) p_data; -#endif - //printf("exit thread %d\n", ithread); return 0; } @@ -436,10 +433,6 @@ void vp8cx_create_encoder_threads(VP8_COMP *cpi) cpi->processor_core_count = 32; //vp8_get_proc_core_count(); - CHECK_MEM_ERROR(cpi->tplist, vpx_malloc(sizeof(TOKENLIST) * cpi->common.mb_rows)); - -#if CONFIG_MULTITHREAD - if (cpi->processor_core_count > 1 && cpi->oxcf.multi_threaded > 1) { int ithread; @@ -488,13 +481,10 @@ void vp8cx_create_encoder_threads(VP8_COMP *cpi) } -#endif } void vp8cx_remove_encoder_threads(VP8_COMP *cpi) { -#if CONFIG_MULTITHREAD - if (cpi->b_multi_threaded) { //shutdown other threads @@ -521,7 +511,5 @@ void vp8cx_remove_encoder_threads(VP8_COMP *cpi) vpx_free(cpi->en_thread_data); vpx_free(cpi->mt_current_mb_col); } - -#endif - vpx_free(cpi->tplist); } +#endif diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index 912d64179c9a6c40de39b0f2bad2558c774b7d75..fc908df064d387c8f4454b8987071e56d3990a95 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@ -262,6 +262,9 @@ static void setup_features(VP8_COMP *cpi) void vp8_dealloc_compressor_data(VP8_COMP *cpi) { + vpx_free(cpi->tplist); + cpi->tplist = NULL; + // Delete last frame MV storage buffers if (cpi->lfmv != 0) vpx_free(cpi->lfmv); @@ -1476,6 +1479,8 @@ void vp8_alloc_compressor_data(VP8_COMP *cpi) else cpi->mt_sync_range = 16; #endif + + CHECK_MEM_ERROR(cpi->tplist, vpx_malloc(sizeof(TOKENLIST) * cpi->common.mb_rows)); } @@ -2427,7 +2432,9 @@ VP8_PTR vp8_create_compressor(VP8_CONFIG *oxcf) init_mv_ref_counts(); #endif +#if CONFIG_MULTITHREAD vp8cx_create_encoder_threads(cpi); +#endif cpi->fn_ptr[BLOCK_16X16].sdf = VARIANCE_INVOKE(&cpi->rtcd.variance, sad16x16); cpi->fn_ptr[BLOCK_16X16].vf = VARIANCE_INVOKE(&cpi->rtcd.variance, var16x16); @@ -2702,7 +2709,9 @@ void vp8_remove_compressor(VP8_PTR *ptr) } +#if CONFIG_MULTITHREAD vp8cx_remove_encoder_threads(cpi); +#endif vp8_dealloc_compressor_data(cpi); vpx_free(cpi->mb.ss); diff --git a/vp8/encoder/onyx_int.h b/vp8/encoder/onyx_int.h index e8a452dca7e65baa409c1e94cd39cd23c53d28b7..0289b4a4510b994eed12c71080df1f2953957bc0 100644 --- a/vp8/encoder/onyx_int.h +++ b/vp8/encoder/onyx_int.h @@ -589,6 +589,7 @@ typedef struct int cyclic_refresh_q; signed char *cyclic_refresh_map; +#if CONFIG_MULTITHREAD // multithread data int * mt_current_mb_col; int mt_sync_range; @@ -596,13 +597,10 @@ typedef struct int b_multi_threaded; int encoding_thread_count; -#if CONFIG_MULTITHREAD pthread_t *h_encoding_thread; -#endif MB_ROW_COMP *mb_row_ei; ENCODETHREAD_DATA *en_thread_data; -#if CONFIG_MULTITHREAD //events sem_t *h_event_start_encoding; sem_t h_event_end_encoding; diff --git a/vp8/vp8cx.mk b/vp8/vp8cx.mk index 932f145e6d530704948ab5fa376b609bc0d2171d..1ec26e69e95178d22e92f71b81b8ea27a24a0a9e 100644 --- a/vp8/vp8cx.mk +++ b/vp8/vp8cx.mk @@ -42,7 +42,7 @@ VP8_CX_SRCS-yes += encoder/encodeframe.c VP8_CX_SRCS-yes += encoder/encodeintra.c VP8_CX_SRCS-yes += encoder/encodemb.c VP8_CX_SRCS-yes += encoder/encodemv.c -VP8_CX_SRCS-yes += encoder/ethreading.c +VP8_CX_SRCS-$(CONFIG_MULTITHREAD) += encoder/ethreading.c VP8_CX_SRCS-yes += encoder/firstpass.c VP8_CX_SRCS-yes += encoder/generic/csystemdependent.c VP8_CX_SRCS-yes += encoder/block.h diff --git a/vp8/vp8dx.mk b/vp8/vp8dx.mk index 1acd67453505475c58ac2fe92c66b0b556e72e9e..62f6211f644298ec2abe020df6c3a8bd92a9a132 100644 --- a/vp8/vp8dx.mk +++ b/vp8/vp8dx.mk @@ -65,7 +65,7 @@ VP8_DX_SRCS-yes += decoder/detokenize.h VP8_DX_SRCS-yes += decoder/onyxd_int.h VP8_DX_SRCS-yes += decoder/treereader.h VP8_DX_SRCS-yes += decoder/onyxd_if.c -VP8_DX_SRCS-yes += decoder/threading.c +VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/threading.c VP8_DX_SRCS-yes += decoder/idct_blk.c VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/reconintra_mt.h VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/reconintra_mt.c