• Home
  • Raw
  • Download

Lines Matching refs:pbi

26 extern void mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd);
31 #define RTCD_VTABLE(x) (&(pbi)->common.rtcd.x)
36 static void setup_decoding_thread_data(VP8D_COMP *pbi, MACROBLOCKD *xd, MB_ROW_DEC *mbrd, int count) in setup_decoding_thread_data() argument
38 VP8_COMMON *const pc = & pbi->common; in setup_decoding_thread_data()
77 mbd->current_bc = &pbi->bc2; in setup_decoding_thread_data()
86 pbi->mt_current_mb_col[i]=-1; in setup_decoding_thread_data()
90 static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int mb_col) in decode_macroblock() argument
94 VP8_COMMON *pc = &pbi->common; in decode_macroblock()
102 eobtotal = vp8_decode_mb_tokens(pbi, xd); in decode_macroblock()
120 vp8mt_build_intra_predictors_mbuv_s(pbi, xd, mb_row, mb_col); in decode_macroblock()
121 vp8mt_build_intra_predictors_mby_s(pbi, xd, mb_row, mb_col); in decode_macroblock()
131 mb_init_dequantizer(pbi, xd); in decode_macroblock()
136 vp8mt_build_intra_predictors_mbuv(pbi, xd, mb_row, mb_col); in decode_macroblock()
140 vp8mt_build_intra_predictors_mby(pbi, xd, mb_row, mb_col); in decode_macroblock()
142 vp8mt_intra_prediction_down_copy(pbi, xd, mb_row, mb_col); in decode_macroblock()
154 DEQUANT_INVOKE(&pbi->dequant, block)(b); in decode_macroblock() local
175 DEQUANT_INVOKE (&pbi->dequant, dc_idct_add_y_block) in decode_macroblock()
185 vp8mt_predict_intra4x4(pbi, xd, b->bmi.mode, b->predictor, mb_row, mb_col, i); in decode_macroblock()
189 DEQUANT_INVOKE(&pbi->dequant, idct_add) in decode_macroblock()
204 DEQUANT_INVOKE (&pbi->dequant, idct_add_y_block) in decode_macroblock()
210 DEQUANT_INVOKE (&pbi->dequant, idct_add_uv_block) in decode_macroblock()
220 VP8D_COMP *pbi = (VP8D_COMP *)(((DECODETHREAD_DATA *)p_data)->ptr1); in thread_decoding_proc() local
226 if (pbi->b_multithreaded_rd == 0) in thread_decoding_proc()
230 if (sem_wait(&pbi->h_event_start_decoding[ithread]) == 0) in thread_decoding_proc()
232 if (pbi->b_multithreaded_rd == 0) in thread_decoding_proc()
236 VP8_COMMON *pc = &pbi->common; in thread_decoding_proc()
240 int num_part = 1 << pbi->common.multi_token_partition; in thread_decoding_proc()
242 int nsync = pbi->sync_range; in thread_decoding_proc()
244 … for (mb_row = ithread+1; mb_row < pc->mb_rows; mb_row += (pbi->decoding_thread_count + 1)) in thread_decoding_proc()
259 pbi->mb_row_di[ithread].mb_row = mb_row; in thread_decoding_proc()
260 pbi->mb_row_di[ithread].mbd.current_bc = &pbi->mbc[mb_row%num_part]; in thread_decoding_proc()
262 last_row_current_mb_col = &pbi->mt_current_mb_col[mb_row -1]; in thread_decoding_proc()
321 decode_macroblock(pbi, xd, mb_row, mb_col); in thread_decoding_proc()
323 if (pbi->common.filter_level) in thread_decoding_proc()
328 …vpx_memcpy((pbi->mt_yabove_row[mb_row + 1] + 32 + mb_col*16), (xd->dst.y_buffer + 15 * recon_y_str… in thread_decoding_proc()
329 …vpx_memcpy((pbi->mt_uabove_row[mb_row + 1] + 16 + mb_col*8), (xd->dst.u_buffer + 7 * recon_uv_stri… in thread_decoding_proc()
330 …vpx_memcpy((pbi->mt_vabove_row[mb_row + 1] + 16 + mb_col*8), (xd->dst.v_buffer + 7 * recon_uv_stri… in thread_decoding_proc()
341pbi->mt_yleft_col[mb_row][i] = xd->dst.y_buffer [i* recon_y_stride + 15]; in thread_decoding_proc()
344pbi->mt_uleft_col[mb_row][i] = xd->dst.u_buffer [i* recon_uv_stride + 7]; in thread_decoding_proc()
345pbi->mt_vleft_col[mb_row][i] = xd->dst.v_buffer [i* recon_uv_stride + 7]; in thread_decoding_proc()
352 filter_level = pbi->mt_baseline_filter_level[Segment]; in thread_decoding_proc()
385 pbi->mt_current_mb_col[mb_row] = mb_col; in thread_decoding_proc()
389 if (pbi->common.filter_level) in thread_decoding_proc()
398pbi->mt_yabove_row[mb_row +1][lasty + i] = pbi->mt_yabove_row[mb_row +1][lasty -1]; in thread_decoding_proc()
399pbi->mt_uabove_row[mb_row +1][lastuv + i] = pbi->mt_uabove_row[mb_row +1][lastuv -1]; in thread_decoding_proc()
400pbi->mt_vabove_row[mb_row +1][lastuv + i] = pbi->mt_vabove_row[mb_row +1][lastuv -1]; in thread_decoding_proc()
409 xd->mode_info_context += xd->mode_info_stride * pbi->decoding_thread_count; in thread_decoding_proc()
414 …if ((mbrd->mb_row == pbi->common.mb_rows-1) || ((mbrd->mb_row == pbi->common.mb_rows-2) && (pbi->c… in thread_decoding_proc()
417 sem_post(&pbi->h_event_end_decoding); in thread_decoding_proc()
425 void vp8_decoder_create_threads(VP8D_COMP *pbi) in vp8_decoder_create_threads() argument
430 pbi->b_multithreaded_rd = 0; in vp8_decoder_create_threads()
431 pbi->allocated_decoding_thread_count = 0; in vp8_decoder_create_threads()
432 core_count = (pbi->max_threads > 16) ? 16 : pbi->max_threads; in vp8_decoder_create_threads()
436 pbi->b_multithreaded_rd = 1; in vp8_decoder_create_threads()
437 pbi->decoding_thread_count = core_count -1; in vp8_decoder_create_threads()
439 …CHECK_MEM_ERROR(pbi->h_decoding_thread, vpx_malloc(sizeof(pthread_t) * pbi->decoding_thread_count)… in vp8_decoder_create_threads()
440 …CHECK_MEM_ERROR(pbi->h_event_start_decoding, vpx_malloc(sizeof(sem_t) * pbi->decoding_thread_count… in vp8_decoder_create_threads()
441 …CHECK_MEM_ERROR(pbi->mb_row_di, vpx_memalign(32, sizeof(MB_ROW_DEC) * pbi->decoding_thread_count)); in vp8_decoder_create_threads()
442 vpx_memset(pbi->mb_row_di, 0, sizeof(MB_ROW_DEC) * pbi->decoding_thread_count); in vp8_decoder_create_threads()
443 …CHECK_MEM_ERROR(pbi->de_thread_data, vpx_malloc(sizeof(DECODETHREAD_DATA) * pbi->decoding_thread_c… in vp8_decoder_create_threads()
445 for (ithread = 0; ithread < pbi->decoding_thread_count; ithread++) in vp8_decoder_create_threads()
447 sem_init(&pbi->h_event_start_decoding[ithread], 0, 0); in vp8_decoder_create_threads()
449 pbi->de_thread_data[ithread].ithread = ithread; in vp8_decoder_create_threads()
450 pbi->de_thread_data[ithread].ptr1 = (void *)pbi; in vp8_decoder_create_threads()
451 pbi->de_thread_data[ithread].ptr2 = (void *) &pbi->mb_row_di[ithread]; in vp8_decoder_create_threads()
453 …pthread_create(&pbi->h_decoding_thread[ithread], 0, thread_decoding_proc, (&pbi->de_thread_data[it… in vp8_decoder_create_threads()
456 sem_init(&pbi->h_event_end_decoding, 0, 0); in vp8_decoder_create_threads()
458 pbi->allocated_decoding_thread_count = pbi->decoding_thread_count; in vp8_decoder_create_threads()
463 void vp8mt_de_alloc_temp_buffers(VP8D_COMP *pbi, int mb_rows) in vp8mt_de_alloc_temp_buffers() argument
465 VP8_COMMON *const pc = & pbi->common; in vp8mt_de_alloc_temp_buffers()
468 if (pbi->b_multithreaded_rd) in vp8mt_de_alloc_temp_buffers()
470 vpx_free(pbi->mt_current_mb_col); in vp8mt_de_alloc_temp_buffers()
471 pbi->mt_current_mb_col = NULL ; in vp8mt_de_alloc_temp_buffers()
474 if (pbi->mt_yabove_row) in vp8mt_de_alloc_temp_buffers()
478 vpx_free(pbi->mt_yabove_row[i]); in vp8mt_de_alloc_temp_buffers()
479 pbi->mt_yabove_row[i] = NULL ; in vp8mt_de_alloc_temp_buffers()
481 vpx_free(pbi->mt_yabove_row); in vp8mt_de_alloc_temp_buffers()
482 pbi->mt_yabove_row = NULL ; in vp8mt_de_alloc_temp_buffers()
485 if (pbi->mt_uabove_row) in vp8mt_de_alloc_temp_buffers()
489 vpx_free(pbi->mt_uabove_row[i]); in vp8mt_de_alloc_temp_buffers()
490 pbi->mt_uabove_row[i] = NULL ; in vp8mt_de_alloc_temp_buffers()
492 vpx_free(pbi->mt_uabove_row); in vp8mt_de_alloc_temp_buffers()
493 pbi->mt_uabove_row = NULL ; in vp8mt_de_alloc_temp_buffers()
496 if (pbi->mt_vabove_row) in vp8mt_de_alloc_temp_buffers()
500 vpx_free(pbi->mt_vabove_row[i]); in vp8mt_de_alloc_temp_buffers()
501 pbi->mt_vabove_row[i] = NULL ; in vp8mt_de_alloc_temp_buffers()
503 vpx_free(pbi->mt_vabove_row); in vp8mt_de_alloc_temp_buffers()
504 pbi->mt_vabove_row = NULL ; in vp8mt_de_alloc_temp_buffers()
508 if (pbi->mt_yleft_col) in vp8mt_de_alloc_temp_buffers()
512 vpx_free(pbi->mt_yleft_col[i]); in vp8mt_de_alloc_temp_buffers()
513 pbi->mt_yleft_col[i] = NULL ; in vp8mt_de_alloc_temp_buffers()
515 vpx_free(pbi->mt_yleft_col); in vp8mt_de_alloc_temp_buffers()
516 pbi->mt_yleft_col = NULL ; in vp8mt_de_alloc_temp_buffers()
519 if (pbi->mt_uleft_col) in vp8mt_de_alloc_temp_buffers()
523 vpx_free(pbi->mt_uleft_col[i]); in vp8mt_de_alloc_temp_buffers()
524 pbi->mt_uleft_col[i] = NULL ; in vp8mt_de_alloc_temp_buffers()
526 vpx_free(pbi->mt_uleft_col); in vp8mt_de_alloc_temp_buffers()
527 pbi->mt_uleft_col = NULL ; in vp8mt_de_alloc_temp_buffers()
530 if (pbi->mt_vleft_col) in vp8mt_de_alloc_temp_buffers()
534 vpx_free(pbi->mt_vleft_col[i]); in vp8mt_de_alloc_temp_buffers()
535 pbi->mt_vleft_col[i] = NULL ; in vp8mt_de_alloc_temp_buffers()
537 vpx_free(pbi->mt_vleft_col); in vp8mt_de_alloc_temp_buffers()
538 pbi->mt_vleft_col = NULL ; in vp8mt_de_alloc_temp_buffers()
544 void vp8mt_alloc_temp_buffers(VP8D_COMP *pbi, int width, int prev_mb_rows) in vp8mt_alloc_temp_buffers() argument
546 VP8_COMMON *const pc = & pbi->common; in vp8mt_alloc_temp_buffers()
550 if (pbi->b_multithreaded_rd) in vp8mt_alloc_temp_buffers()
552 vp8mt_de_alloc_temp_buffers(pbi, prev_mb_rows); in vp8mt_alloc_temp_buffers()
558 if (width < 640) pbi->sync_range = 1; in vp8mt_alloc_temp_buffers()
559 else if (width <= 1280) pbi->sync_range = 8; in vp8mt_alloc_temp_buffers()
560 else if (width <= 2560) pbi->sync_range =16; in vp8mt_alloc_temp_buffers()
561 else pbi->sync_range = 32; in vp8mt_alloc_temp_buffers()
566 CHECK_MEM_ERROR(pbi->mt_current_mb_col, vpx_malloc(sizeof(int) * pc->mb_rows)); in vp8mt_alloc_temp_buffers()
569 CHECK_MEM_ERROR(pbi->mt_yabove_row, vpx_malloc(sizeof(unsigned char *) * pc->mb_rows)); in vp8mt_alloc_temp_buffers()
571 …CHECK_MEM_ERROR(pbi->mt_yabove_row[i], vpx_calloc(sizeof(unsigned char) * (width + (VP8BORDERINPIX… in vp8mt_alloc_temp_buffers()
573 CHECK_MEM_ERROR(pbi->mt_uabove_row, vpx_malloc(sizeof(unsigned char *) * pc->mb_rows)); in vp8mt_alloc_temp_buffers()
575 …CHECK_MEM_ERROR(pbi->mt_uabove_row[i], vpx_calloc(sizeof(unsigned char) * (uv_width + VP8BORDERINP… in vp8mt_alloc_temp_buffers()
577 CHECK_MEM_ERROR(pbi->mt_vabove_row, vpx_malloc(sizeof(unsigned char *) * pc->mb_rows)); in vp8mt_alloc_temp_buffers()
579 …CHECK_MEM_ERROR(pbi->mt_vabove_row[i], vpx_calloc(sizeof(unsigned char) * (uv_width + VP8BORDERINP… in vp8mt_alloc_temp_buffers()
582 CHECK_MEM_ERROR(pbi->mt_yleft_col, vpx_malloc(sizeof(unsigned char *) * pc->mb_rows)); in vp8mt_alloc_temp_buffers()
584 CHECK_MEM_ERROR(pbi->mt_yleft_col[i], vpx_calloc(sizeof(unsigned char) * 16, 1)); in vp8mt_alloc_temp_buffers()
586 CHECK_MEM_ERROR(pbi->mt_uleft_col, vpx_malloc(sizeof(unsigned char *) * pc->mb_rows)); in vp8mt_alloc_temp_buffers()
588 CHECK_MEM_ERROR(pbi->mt_uleft_col[i], vpx_calloc(sizeof(unsigned char) * 8, 1)); in vp8mt_alloc_temp_buffers()
590 CHECK_MEM_ERROR(pbi->mt_vleft_col, vpx_malloc(sizeof(unsigned char *) * pc->mb_rows)); in vp8mt_alloc_temp_buffers()
592 CHECK_MEM_ERROR(pbi->mt_vleft_col[i], vpx_calloc(sizeof(unsigned char) * 8, 1)); in vp8mt_alloc_temp_buffers()
597 void vp8_decoder_remove_threads(VP8D_COMP *pbi) in vp8_decoder_remove_threads() argument
600 if (pbi->b_multithreaded_rd) in vp8_decoder_remove_threads()
604 pbi->b_multithreaded_rd = 0; in vp8_decoder_remove_threads()
607 for (i = 0; i < pbi->allocated_decoding_thread_count; i++) in vp8_decoder_remove_threads()
609 sem_post(&pbi->h_event_start_decoding[i]); in vp8_decoder_remove_threads()
610 pthread_join(pbi->h_decoding_thread[i], NULL); in vp8_decoder_remove_threads()
613 for (i = 0; i < pbi->allocated_decoding_thread_count; i++) in vp8_decoder_remove_threads()
615 sem_destroy(&pbi->h_event_start_decoding[i]); in vp8_decoder_remove_threads()
618 sem_destroy(&pbi->h_event_end_decoding); in vp8_decoder_remove_threads()
620 vpx_free(pbi->h_decoding_thread); in vp8_decoder_remove_threads()
621 pbi->h_decoding_thread = NULL; in vp8_decoder_remove_threads()
623 vpx_free(pbi->h_event_start_decoding); in vp8_decoder_remove_threads()
624 pbi->h_event_start_decoding = NULL; in vp8_decoder_remove_threads()
626 vpx_free(pbi->mb_row_di); in vp8_decoder_remove_threads()
627 pbi->mb_row_di = NULL ; in vp8_decoder_remove_threads()
629 vpx_free(pbi->de_thread_data); in vp8_decoder_remove_threads()
630 pbi->de_thread_data = NULL; in vp8_decoder_remove_threads()
635 static void lpf_init( VP8D_COMP *pbi, int default_filt_lvl) in lpf_init() argument
637 VP8_COMMON *cm = &pbi->common; in lpf_init()
638 MACROBLOCKD *mbd = &pbi->mb; in lpf_init()
658 pbi->mt_baseline_filter_level[i] = mbd->segment_feature_data[MB_LVL_ALT_LF][i]; in lpf_init()
662pbi->mt_baseline_filter_level[i] = default_filt_lvl + mbd->segment_feature_data[MB_LVL_ALT_LF][i]; in lpf_init()
663pbi->mt_baseline_filter_level[i] = (pbi->mt_baseline_filter_level[i] >= 0) ? ((pbi->mt_baseline_fi… in lpf_init()
670 pbi->mt_baseline_filter_level[i] = default_filt_lvl; in lpf_init()
681 void vp8mt_decode_mb_rows( VP8D_COMP *pbi, MACROBLOCKD *xd) in vp8mt_decode_mb_rows() argument
684 VP8_COMMON *pc = &pbi->common; in vp8mt_decode_mb_rows()
687 int num_part = 1 << pbi->common.multi_token_partition; in vp8mt_decode_mb_rows()
690 int nsync = pbi->sync_range; in vp8mt_decode_mb_rows()
697 if(pbi->common.filter_level) in vp8mt_decode_mb_rows()
700 …vpx_memset(pbi->mt_yabove_row[0] + VP8BORDERINPIXELS-1, 127, pc->yv12_fb[pc->lst_fb_idx].y_width +… in vp8mt_decode_mb_rows()
701 …vpx_memset(pbi->mt_uabove_row[0] + (VP8BORDERINPIXELS>>1)-1, 127, (pc->yv12_fb[pc->lst_fb_idx].y_w… in vp8mt_decode_mb_rows()
702 …vpx_memset(pbi->mt_vabove_row[0] + (VP8BORDERINPIXELS>>1)-1, 127, (pc->yv12_fb[pc->lst_fb_idx].y_w… in vp8mt_decode_mb_rows()
706 vpx_memset(pbi->mt_yabove_row[i] + VP8BORDERINPIXELS-1, (unsigned char)129, 1); in vp8mt_decode_mb_rows()
707 vpx_memset(pbi->mt_uabove_row[i] + (VP8BORDERINPIXELS>>1)-1, (unsigned char)129, 1); in vp8mt_decode_mb_rows()
708 vpx_memset(pbi->mt_vabove_row[i] + (VP8BORDERINPIXELS>>1)-1, (unsigned char)129, 1); in vp8mt_decode_mb_rows()
714 vpx_memset(pbi->mt_yleft_col[i], (unsigned char)129, 16); in vp8mt_decode_mb_rows()
715 vpx_memset(pbi->mt_uleft_col[i], (unsigned char)129, 8); in vp8mt_decode_mb_rows()
716 vpx_memset(pbi->mt_vleft_col[i], (unsigned char)129, 8); in vp8mt_decode_mb_rows()
718 lpf_init(pbi, pc->filter_level); in vp8mt_decode_mb_rows()
721 setup_decoding_thread_data(pbi, xd, pbi->mb_row_di, pbi->decoding_thread_count); in vp8mt_decode_mb_rows()
723 for (i = 0; i < pbi->decoding_thread_count; i++) in vp8mt_decode_mb_rows()
724 sem_post(&pbi->h_event_start_decoding[i]); in vp8mt_decode_mb_rows()
726 for (mb_row = 0; mb_row < pc->mb_rows; mb_row += (pbi->decoding_thread_count + 1)) in vp8mt_decode_mb_rows()
729 xd->current_bc = &pbi->mbc[mb_row%num_part]; in vp8mt_decode_mb_rows()
743 last_row_current_mb_col = &pbi->mt_current_mb_col[mb_row -1]; in vp8mt_decode_mb_rows()
806 decode_macroblock(pbi, xd, mb_row, mb_col); in vp8mt_decode_mb_rows()
811 if (pbi->common.filter_level) in vp8mt_decode_mb_rows()
816 …vpx_memcpy((pbi->mt_yabove_row[mb_row +1] + 32 + mb_col*16), (xd->dst.y_buffer + 15 * recon_y_stri… in vp8mt_decode_mb_rows()
817 …vpx_memcpy((pbi->mt_uabove_row[mb_row +1] + 16 + mb_col*8), (xd->dst.u_buffer + 7 * recon_uv_strid… in vp8mt_decode_mb_rows()
818 …vpx_memcpy((pbi->mt_vabove_row[mb_row +1] + 16 + mb_col*8), (xd->dst.v_buffer + 7 * recon_uv_strid… in vp8mt_decode_mb_rows()
829pbi->mt_yleft_col[mb_row][i] = xd->dst.y_buffer [i* recon_y_stride + 15]; in vp8mt_decode_mb_rows()
832pbi->mt_uleft_col[mb_row][i] = xd->dst.u_buffer [i* recon_uv_stride + 7]; in vp8mt_decode_mb_rows()
833pbi->mt_vleft_col[mb_row][i] = xd->dst.v_buffer [i* recon_uv_stride + 7]; in vp8mt_decode_mb_rows()
840 filter_level = pbi->mt_baseline_filter_level[Segment]; in vp8mt_decode_mb_rows()
872 pbi->mt_current_mb_col[mb_row] = mb_col; in vp8mt_decode_mb_rows()
876 if (pbi->common.filter_level) in vp8mt_decode_mb_rows()
885pbi->mt_yabove_row[mb_row +1][lasty + i] = pbi->mt_yabove_row[mb_row +1][lasty -1]; in vp8mt_decode_mb_rows()
886pbi->mt_uabove_row[mb_row +1][lastuv + i] = pbi->mt_uabove_row[mb_row +1][lastuv -1]; in vp8mt_decode_mb_rows()
887pbi->mt_vabove_row[mb_row +1][lastuv + i] = pbi->mt_vabove_row[mb_row +1][lastuv -1]; in vp8mt_decode_mb_rows()
895 xd->mode_info_context += xd->mode_info_stride * pbi->decoding_thread_count; in vp8mt_decode_mb_rows()
898 sem_wait(&pbi->h_event_end_decoding); /* add back for each frame */ in vp8mt_decode_mb_rows()