From 1374a4db3b02e919a7830ba7ea56831d120b3826 Mon Sep 17 00:00:00 2001 From: Scott LaVarnway Date: Tue, 7 Jun 2011 09:32:51 -0400 Subject: Removed unused function vp8_treed_read_num Change-Id: Id66e70540ee7345876f099139887c1843093907f --- vp8/decoder/treereader.h | 23 ----------------------- 1 file changed, 23 deletions(-) (limited to 'vp8/decoder') diff --git a/vp8/decoder/treereader.h b/vp8/decoder/treereader.h index b50a4d2ff..238ff8536 100644 --- a/vp8/decoder/treereader.h +++ b/vp8/decoder/treereader.h @@ -38,27 +38,4 @@ static int vp8_treed_read( return -i; } - -/* Variant reads a binary number given distributions on each bit. - Note that tree is arbitrary; probability of decoding a zero - may or may not depend on previously decoded bits. */ - -static int vp8_treed_read_num( - vp8_reader *const r, /* !!! must return a 0 or 1 !!! */ - vp8_tree t, - const vp8_prob *const p -) -{ - vp8_tree_index i = 0; - int v = 0, b; - - do - { - b = vp8_read(r, p[i>>1]); - v = (v << 1) + b; - } - while ((i = t[i+b]) > 0); - - return v; -} #endif /* tree_reader_h */ -- cgit v1.2.3 From 79327be6c729ed73cb339630b0ab770e3c54a4ab Mon Sep 17 00:00:00 2001 From: Johann Date: Wed, 8 Jun 2011 14:43:34 -0400 Subject: use GCC inline magic Better fix for #326. ICC happens to support the inline magic Change-Id: Ic367eea608c88d89475cb7b05d73500d2a1bc42b --- vp8/decoder/asm_dec_offsets.c | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) (limited to 'vp8/decoder') diff --git a/vp8/decoder/asm_dec_offsets.c b/vp8/decoder/asm_dec_offsets.c index e485cb414..dd2aad2c3 100644 --- a/vp8/decoder/asm_dec_offsets.c +++ b/vp8/decoder/asm_dec_offsets.c @@ -9,21 +9,10 @@ */ -#include "vpx_ports/config.h" -#include - +#include "vpx_ports/asm_offsets.h" #include "onyxd_int.h" -#define DEFINE(sym, val) int sym = val; - -/* -#define BLANK() asm volatile("\n->" : : ) -*/ - -/* - * int main(void) - * { - */ +BEGIN DEFINE(detok_scan, offsetof(DETOK, scan)); DEFINE(detok_ptr_block2leftabove, offsetof(DETOK, ptr_block2leftabove)); @@ -49,9 +38,7 @@ DEFINE(bool_decoder_range, offsetof(BOOL_DECODER, range)); DEFINE(tokenextrabits_min_val, offsetof(TOKENEXTRABITS, min_val)); DEFINE(tokenextrabits_length, offsetof(TOKENEXTRABITS, Length)); -//add asserts for any offset that is not supported by assembly code -//add asserts for any size that is not supported by assembly code -/* - * return 0; - * } - */ +END + +/* add asserts for any offset that is not supported by assembly code */ +/* add asserts for any size that is not supported by assembly code */ -- cgit v1.2.3 From 223d1b54cfe88c2ce646dd0e89375abcdc725bfb Mon Sep 17 00:00:00 2001 From: Scott LaVarnway Date: Mon, 13 Jun 2011 17:14:11 -0400 Subject: Populate bmi for B_PRED only Small decode performance gain (~1%) on keyframes. No noticeable gains on encode. Also changed pick_intra4x4mby_modes() to read the above and left block modes for keyframes only. Change-Id: I1f4885252f5b3e9caf04d4e01e643960f910aba5 --- vp8/decoder/decodemv.c | 30 ------------------------------ 1 file changed, 30 deletions(-) (limited to 'vp8/decoder') diff --git a/vp8/decoder/decodemv.c b/vp8/decoder/decodemv.c index a57ad09d9..01d940233 100644 --- a/vp8/decoder/decodemv.c +++ b/vp8/decoder/decodemv.c @@ -101,36 +101,6 @@ static void vp8_kfread_modes(VP8D_COMP *pbi, MODE_INFO *m, int mb_row, int mb_co } while (++i < 16); } - else - { - int BMode; - int i = 0; - - switch (y_mode) - { - case DC_PRED: - BMode = B_DC_PRED; - break; - case V_PRED: - BMode = B_VE_PRED; - break; - case H_PRED: - BMode = B_HE_PRED; - break; - case TM_PRED: - BMode = B_TM_PRED; - break; - default: - BMode = B_DC_PRED; - break; - } - - do - { - m->bmi[i].as_mode = (B_PREDICTION_MODE)BMode; - } - while (++i < 16); - } m->mbmi.uv_mode = (MB_PREDICTION_MODE)vp8_read_uv_mode(bc, pbi->common.kf_uv_mode_prob); } -- cgit v1.2.3 From 532c30c83e429f67eb33b488c0dac38de76adbeb Mon Sep 17 00:00:00 2001 From: James Zern Date: Mon, 13 Jun 2011 17:29:49 -0700 Subject: fix corrupt frame leak If setup_token_decoder reported an internal error the memory allocated there would not be freed in the resulting call to _remove_decompressor. Change-Id: Ib459de222d76b1910d6f449cdcd01663447dbdf6 --- vp8/decoder/decodframe.c | 3 +++ vp8/decoder/onyxd_if.c | 1 + 2 files changed, 4 insertions(+) (limited to 'vp8/decoder') diff --git a/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c index fec517228..734ab36fc 100644 --- a/vp8/decoder/decodframe.c +++ b/vp8/decoder/decodframe.c @@ -533,7 +533,10 @@ static void stop_token_decoder(VP8D_COMP *pbi) VP8_COMMON *pc = &pbi->common; if (pc->multi_token_partition != ONE_PARTITION) + { vpx_free(pbi->mbc); + pbi->mbc = NULL; + } } static void init_frame(VP8D_COMP *pbi) diff --git a/vp8/decoder/onyxd_if.c b/vp8/decoder/onyxd_if.c index 23a3c7d06..4845cd076 100644 --- a/vp8/decoder/onyxd_if.c +++ b/vp8/decoder/onyxd_if.c @@ -129,6 +129,7 @@ void vp8dx_remove_decompressor(VP8D_PTR ptr) vp8_de_alloc_overlap_lists(pbi); #endif vp8_remove_common(&pbi->common); + vpx_free(pbi->mbc); vpx_free(pbi); } -- cgit v1.2.3 From 92b0e544f3e5c6a334c0046973c3885c0608e83e Mon Sep 17 00:00:00 2001 From: Johann Date: Tue, 14 Jun 2011 11:31:50 -0400 Subject: fix --disable-runtime-cpu-detect on x86 Change-Id: Ib8e429152c9a8b6032be22b5faac802aa8224caa --- vp8/decoder/x86/x86_dsystemdependent.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'vp8/decoder') diff --git a/vp8/decoder/x86/x86_dsystemdependent.c b/vp8/decoder/x86/x86_dsystemdependent.c index 5c1684230..a244a3a98 100644 --- a/vp8/decoder/x86/x86_dsystemdependent.c +++ b/vp8/decoder/x86/x86_dsystemdependent.c @@ -17,7 +17,7 @@ #if HAVE_MMX void vp8_dequantize_b_impl_mmx(short *sq, short *dq, short *q); -static void dequantize_b_mmx(BLOCKD *d) +void vp8_dequantize_b_mmx(BLOCKD *d) { short *sq = (short *) d->qcoeff; short *dq = (short *) d->dqcoeff; @@ -28,6 +28,7 @@ static void dequantize_b_mmx(BLOCKD *d) void vp8_arch_x86_decode_init(VP8D_COMP *pbi) { +#if CONFIG_RUNTIME_CPU_DETECT int flags = x86_simd_caps(); /* Note: @@ -36,12 +37,11 @@ void vp8_arch_x86_decode_init(VP8D_COMP *pbi) * you modify any of the function mappings present in this file, be sure * to also update them in static mapings (/filename_.h) */ -#if CONFIG_RUNTIME_CPU_DETECT /* Override default functions with fastest ones for this CPU. */ #if HAVE_MMX if (flags & HAS_MMX) { - pbi->dequant.block = dequantize_b_mmx; + pbi->dequant.block = vp8_dequantize_b_mmx; pbi->dequant.idct_add = vp8_dequant_idct_add_mmx; pbi->dequant.dc_idct_add = vp8_dequant_dc_idct_add_mmx; pbi->dequant.dc_idct_add_y_block = vp8_dequant_dc_idct_add_y_block_mmx; -- cgit v1.2.3 From c7e6aabbca98f09e55a6d50ae0bb1e9d86387547 Mon Sep 17 00:00:00 2001 From: Attila Nagy Date: Mon, 13 Jun 2011 15:13:10 +0300 Subject: Remove redundant check for KEY_FRAME in multithreaded decoder For Intra blocks is enough to check ref_frame == INTRA_FRAME. Change-Id: I3e2d3064c7642658a9e14011a4627de58878e366 --- vp8/decoder/threading.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'vp8/decoder') diff --git a/vp8/decoder/threading.c b/vp8/decoder/threading.c index 77c3f1732..c1df823f1 100644 --- a/vp8/decoder/threading.c +++ b/vp8/decoder/threading.c @@ -135,7 +135,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int m mb_init_dequantizer(pbi, xd); /* do prediction */ - if (xd->frame_type == KEY_FRAME || xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME) + if (xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME) { vp8mt_build_intra_predictors_mbuv(pbi, xd, mb_row, mb_col); @@ -181,7 +181,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int m xd->predictor, xd->dst.y_buffer, xd->dst.y_stride, xd->eobs, xd->block[24].diff); } - else if ((xd->frame_type == KEY_FRAME || xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME) && xd->mode_info_context->mbmi.mode == B_PRED) + else if (xd->mode_info_context->mbmi.mode == B_PRED) { for (i = 0; i < 16; i++) { @@ -334,7 +334,7 @@ static THREAD_FUNCTION thread_decoding_proc(void *p_data) { MODE_INFO *next = xd->mode_info_context +1; - if (xd->frame_type == KEY_FRAME || next->mbmi.ref_frame == INTRA_FRAME) + if (next->mbmi.ref_frame == INTRA_FRAME) { for (i = 0; i < 16; i++) pbi->mt_yleft_col[mb_row][i] = xd->dst.y_buffer [i* recon_y_stride + 15]; @@ -824,7 +824,7 @@ void vp8mt_decode_mb_rows( VP8D_COMP *pbi, MACROBLOCKD *xd) { MODE_INFO *next = xd->mode_info_context +1; - if (xd->frame_type == KEY_FRAME || next->mbmi.ref_frame == INTRA_FRAME) + if (next->mbmi.ref_frame == INTRA_FRAME) { for (i = 0; i < 16; i++) pbi->mt_yleft_col[mb_row][i] = xd->dst.y_buffer [i* recon_y_stride + 15]; -- cgit v1.2.3