Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: source/libvpx/vp8/decoder/decodframe.c

Issue 3417017: Update libvpx sources to v0.9.2-35-ga8a38bc. ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/libvpx/vp8/decoder/decoderthreading.h ('k') | source/libvpx/vp8/decoder/demode.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/libvpx/vp8/decoder/decodframe.c
===================================================================
--- source/libvpx/vp8/decoder/decodframe.c (revision 60257)
+++ source/libvpx/vp8/decoder/decodframe.c (working copy)
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010 The VP8 project authors. All Rights Reserved.
+ * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
@@ -21,9 +21,10 @@
#include "alloccommon.h"
#include "entropymode.h"
#include "quant_common.h"
+#include "vpx_scale/vpxscale.h"
+#include "vpx_scale/yv12extend.h"
+#include "setupintrarecon.h"
-#include "setupintrarecon.h"
-#include "demode.h"
#include "decodemv.h"
#include "extend.h"
#include "vpx_mem/vpx_mem.h"
@@ -64,7 +65,7 @@
}
}
-static void mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd)
+void mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd)
{
int i;
int QIndex;
@@ -151,18 +152,14 @@
/* A version of the above function for chroma block MVs.*/
static void clamp_uvmv_to_umv_border(MV *mv, const MACROBLOCKD *xd)
{
- if (2*mv->col < (xd->mb_to_left_edge - (19 << 3)))
- mv->col = (xd->mb_to_left_edge - (16 << 3)) >> 1;
- else if (2*mv->col > xd->mb_to_right_edge + (18 << 3))
- mv->col = (xd->mb_to_right_edge + (16 << 3)) >> 1;
+ mv->col = (2*mv->col < (xd->mb_to_left_edge - (19 << 3))) ? (xd->mb_to_left_edge - (16 << 3)) >> 1 : mv->col;
+ mv->col = (2*mv->col > xd->mb_to_right_edge + (18 << 3)) ? (xd->mb_to_right_edge + (16 << 3)) >> 1 : mv->col;
- if (2*mv->row < (xd->mb_to_top_edge - (19 << 3)))
- mv->row = (xd->mb_to_top_edge - (16 << 3)) >> 1;
- else if (2*mv->row > xd->mb_to_bottom_edge + (18 << 3))
- mv->row = (xd->mb_to_bottom_edge + (16 << 3)) >> 1;
+ mv->row = (2*mv->row < (xd->mb_to_top_edge - (19 << 3))) ? (xd->mb_to_top_edge - (16 << 3)) >> 1 : mv->row;
+ mv->row = (2*mv->row > xd->mb_to_bottom_edge + (18 << 3)) ? (xd->mb_to_bottom_edge + (16 << 3)) >> 1 : mv->row;
}
-static void clamp_mvs(MACROBLOCKD *xd)
+void clamp_mvs(MACROBLOCKD *xd)
{
if (xd->mode_info_context->mbmi.mode == SPLITMV)
{
@@ -298,6 +295,7 @@
xd->dst.uv_stride, xd->eobs+16);
}
+
static int get_delta_q(vp8_reader *bc, int prev, int *q_update)
{
int ret_val = 0;
@@ -402,7 +400,6 @@
xd->above_context++;
- pbi->current_mb_col_main = mb_col;
}
// adjust to the next row of mbs
@@ -412,8 +409,6 @@
);
++xd->mode_info_context; /* skip prediction column */
-
- pbi->last_mb_row_decoded = mb_row;
}
@@ -605,6 +600,8 @@
if (Width != pc->Width || Height != pc->Height)
{
+ int prev_mb_rows = pc->mb_rows;
+
if (pc->Width <= 0)
{
pc->Width = Width;
@@ -622,6 +619,11 @@
if (vp8_alloc_frame_buffers(pc, pc->Width, pc->Height))
vpx_internal_error(&pc->error, VPX_CODEC_MEM_ERROR,
"Failed to allocate frame buffers");
+
+#if CONFIG_MULTITHREAD
+ if (pbi->b_multithreaded_rd)
+ vp8mt_alloc_temp_buffers(pbi, pc->Width, prev_mb_rows);
+#endif
}
}
@@ -826,7 +828,8 @@
vpx_memcpy(&xd->dst, &pc->yv12_fb[pc->new_fb_idx], sizeof(YV12_BUFFER_CONFIG));
// set up frame new frame for intra coded blocks
- vp8_setup_intra_recon(&pc->yv12_fb[pc->new_fb_idx]);
+ if (!(pbi->b_multithreaded_rd) || pc->multi_token_partition == ONE_PARTITION || !(pc->filter_level))
+ vp8_setup_intra_recon(&pc->yv12_fb[pc->new_fb_idx]);
vp8_setup_block_dptrs(xd);
@@ -838,22 +841,25 @@
// Read the mb_no_coeff_skip flag
pc->mb_no_coeff_skip = (int)vp8_read_bit(bc);
- if (pc->frame_type == KEY_FRAME)
- vp8_kfread_modes(pbi);
- else
- vp8_decode_mode_mvs(pbi);
+ vp8_decode_mode_mvs(pbi);
+
vpx_memset(pc->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) * pc->mb_cols);
vpx_memcpy(&xd->block[0].bmi, &xd->mode_info_context->bmi[0], sizeof(B_MODE_INFO));
-
- if (pbi->b_multithreaded_lf && pc->filter_level != 0)
- vp8_start_lfthread(pbi);
-
if (pbi->b_multithreaded_rd && pc->multi_token_partition != ONE_PARTITION)
{
- vp8_mtdecode_mb_rows(pbi, xd);
+ vp8mt_decode_mb_rows(pbi, xd);
+ if(pbi->common.filter_level)
+ {
+ //vp8_mt_loop_filter_frame(pbi); //cm, &pbi->mb, cm->filter_level);
+
+ pc->last_frame_type = pc->frame_type;
+ pc->last_filter_type = pc->filter_type;
+ pc->last_sharpness_level = pc->sharpness_level;
+ }
+ vp8_yv12_extend_frame_borders_ptr(&pc->yv12_fb[pc->new_fb_idx]); //cm->frame_to_show);
}
else
{
@@ -875,8 +881,6 @@
vp8_decode_mb_row(pbi, pc, mb_row, xd);
}
-
- pbi->last_mb_row_decoded = mb_row;
}
« no previous file with comments | « source/libvpx/vp8/decoder/decoderthreading.h ('k') | source/libvpx/vp8/decoder/demode.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698