| Index: source/libvpx/vp9/common/vp9_loopfilter.c
|
| ===================================================================
|
| --- source/libvpx/vp9/common/vp9_loopfilter.c (revision 251189)
|
| +++ source/libvpx/vp9/common/vp9_loopfilter.c (working copy)
|
| @@ -16,26 +16,6 @@
|
|
|
| #include "vp9/common/vp9_seg_common.h"
|
|
|
| -// This structure holds bit masks for all 8x8 blocks in a 64x64 region.
|
| -// Each 1 bit represents a position in which we want to apply the loop filter.
|
| -// Left_ entries refer to whether we apply a filter on the border to the
|
| -// left of the block. Above_ entries refer to whether or not to apply a
|
| -// filter on the above border. Int_ entries refer to whether or not to
|
| -// apply borders on the 4x4 edges within the 8x8 block that each bit
|
| -// represents.
|
| -// Since each transform is accompanied by a potentially different type of
|
| -// loop filter there is a different entry in the array for each transform size.
|
| -typedef struct {
|
| - uint64_t left_y[TX_SIZES];
|
| - uint64_t above_y[TX_SIZES];
|
| - uint64_t int_4x4_y;
|
| - uint16_t left_uv[TX_SIZES];
|
| - uint16_t above_uv[TX_SIZES];
|
| - uint16_t int_4x4_uv;
|
| - uint8_t lfl_y[64];
|
| - uint8_t lfl_uv[16];
|
| -} LOOP_FILTER_MASK;
|
| -
|
| // 64 bit masks for left transform size. Each 1 represents a position where
|
| // we should apply a loop filter across the left border of an 8x8 block
|
| // boundary.
|
| @@ -516,7 +496,7 @@
|
| const BLOCK_SIZE block_size = mi->mbmi.sb_type;
|
| const TX_SIZE tx_size_y = mi->mbmi.tx_size;
|
| const TX_SIZE tx_size_uv = get_uv_tx_size(&mi->mbmi);
|
| - const int skip = mi->mbmi.skip_coeff;
|
| + const int skip = mi->mbmi.skip;
|
| const int seg = mi->mbmi.segment_id;
|
| const int ref = mi->mbmi.ref_frame[0];
|
| const int filter_level = lfi_n->lvl[seg][ref][mode_lf_lut[mi->mbmi.mode]];
|
| @@ -597,7 +577,7 @@
|
| LOOP_FILTER_MASK *lfm) {
|
| const BLOCK_SIZE block_size = mi->mbmi.sb_type;
|
| const TX_SIZE tx_size_y = mi->mbmi.tx_size;
|
| - const int skip = mi->mbmi.skip_coeff;
|
| + const int skip = mi->mbmi.skip;
|
| const int seg = mi->mbmi.segment_id;
|
| const int ref = mi->mbmi.ref_frame[0];
|
| const int filter_level = lfi_n->lvl[seg][ref][mode_lf_lut[mi->mbmi.mode]];
|
| @@ -638,9 +618,9 @@
|
| // This function sets up the bit masks for the entire 64x64 region represented
|
| // by mi_row, mi_col.
|
| // TODO(JBB): This function only works for yv12.
|
| -static void setup_mask(VP9_COMMON *const cm, const int mi_row, const int mi_col,
|
| - MODE_INFO **mi_8x8, const int mode_info_stride,
|
| - LOOP_FILTER_MASK *lfm) {
|
| +void vp9_setup_mask(VP9_COMMON *const cm, const int mi_row, const int mi_col,
|
| + MODE_INFO **mi_8x8, const int mode_info_stride,
|
| + LOOP_FILTER_MASK *lfm) {
|
| int idx_32, idx_16, idx_8;
|
| const loop_filter_info_n *const lfi_n = &cm->lf_info;
|
| MODE_INFO **mip = mi_8x8;
|
| @@ -957,8 +937,7 @@
|
| for (c = 0; c < MI_BLOCK_SIZE && mi_col + c < cm->mi_cols; c += col_step) {
|
| const MODE_INFO *mi = mi_8x8[c];
|
| const BLOCK_SIZE sb_type = mi[0].mbmi.sb_type;
|
| - const int skip_this = mi[0].mbmi.skip_coeff
|
| - && is_inter_block(&mi[0].mbmi);
|
| + const int skip_this = mi[0].mbmi.skip && is_inter_block(&mi[0].mbmi);
|
| // left edge of current unit is block/partition edge -> no skip
|
| const int block_edge_left = (num_4x4_blocks_wide_lookup[sb_type] > 1) ?
|
| !(c & (num_8x8_blocks_wide_lookup[sb_type] - 1)) : 1;
|
| @@ -1069,10 +1048,10 @@
|
| }
|
| #endif
|
|
|
| -static void filter_block_plane(VP9_COMMON *const cm,
|
| - struct macroblockd_plane *const plane,
|
| - int mi_row,
|
| - LOOP_FILTER_MASK *lfm) {
|
| +void vp9_filter_block_plane(VP9_COMMON *const cm,
|
| + struct macroblockd_plane *const plane,
|
| + int mi_row,
|
| + LOOP_FILTER_MASK *lfm) {
|
| struct buf_2d *const dst = &plane->dst;
|
| uint8_t* const dst0 = dst->buf;
|
| int r, c;
|
| @@ -1244,14 +1223,14 @@
|
| #if CONFIG_NON420
|
| if (use_420)
|
| #endif
|
| - setup_mask(cm, mi_row, mi_col, mi_8x8 + mi_col, cm->mode_info_stride,
|
| - &lfm);
|
| + vp9_setup_mask(cm, mi_row, mi_col, mi_8x8 + mi_col,
|
| + cm->mode_info_stride, &lfm);
|
|
|
| for (plane = 0; plane < num_planes; ++plane) {
|
| #if CONFIG_NON420
|
| if (use_420)
|
| #endif
|
| - filter_block_plane(cm, &xd->plane[plane], mi_row, &lfm);
|
| + vp9_filter_block_plane(cm, &xd->plane[plane], mi_row, &lfm);
|
| #if CONFIG_NON420
|
| else
|
| filter_block_plane_non420(cm, &xd->plane[plane], mi_8x8 + mi_col,
|
| @@ -1264,12 +1243,12 @@
|
|
|
| void vp9_loop_filter_frame(VP9_COMMON *cm, MACROBLOCKD *xd,
|
| int frame_filter_level,
|
| - int y_only, int partial) {
|
| + int y_only, int partial_frame) {
|
| int start_mi_row, end_mi_row, mi_rows_to_filter;
|
| if (!frame_filter_level) return;
|
| start_mi_row = 0;
|
| mi_rows_to_filter = cm->mi_rows;
|
| - if (partial && cm->mi_rows > 8) {
|
| + if (partial_frame && cm->mi_rows > 8) {
|
| start_mi_row = cm->mi_rows >> 1;
|
| start_mi_row &= 0xfffffff8;
|
| mi_rows_to_filter = MAX(cm->mi_rows / 8, 8);
|
|
|