diff options
Diffstat (limited to 'vp8/decoder')
-rw-r--r-- | vp8/decoder/decodframe.c | 6 | ||||
-rw-r--r-- | vp8/decoder/onyxd_if.c | 6 | ||||
-rw-r--r-- | vp8/decoder/onyxd_int.h | 5 | ||||
-rw-r--r-- | vp8/decoder/reconintra_mt.c | 45 | ||||
-rw-r--r-- | vp8/decoder/threading.c | 47 |
5 files changed, 14 insertions, 95 deletions
diff --git a/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c index bf79b3180..f4bb664d2 100644 --- a/vp8/decoder/decodframe.c +++ b/vp8/decoder/decodframe.c @@ -484,9 +484,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 } @@ -844,7 +846,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); @@ -864,6 +868,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); @@ -878,6 +883,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 adbb1f336..41966b9da 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 3e4c6f33c..d8c5f8b80 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 ad4324b27..854aba35a 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 ec2cb2b07..271249a8d 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 } |