Index: source/libvpx/vp9/common/vp9_loopfilter.c |
=================================================================== |
--- source/libvpx/vp9/common/vp9_loopfilter.c (revision 271138) |
+++ source/libvpx/vp9/common/vp9_loopfilter.c (working copy) |
@@ -1192,11 +1192,12 @@ |
} |
void vp9_loop_filter_rows(const YV12_BUFFER_CONFIG *frame_buffer, |
- VP9_COMMON *cm, MACROBLOCKD *xd, |
+ VP9_COMMON *cm, |
+ struct macroblockd_plane planes[MAX_MB_PLANE], |
int start, int stop, int y_only) { |
const int num_planes = y_only ? 1 : MAX_MB_PLANE; |
- const int use_420 = y_only || (xd->plane[1].subsampling_y == 1 && |
- xd->plane[1].subsampling_x == 1); |
+ const int use_420 = y_only || (planes[1].subsampling_y == 1 && |
+ planes[1].subsampling_x == 1); |
LOOP_FILTER_MASK lfm; |
int mi_row, mi_col; |
@@ -1206,7 +1207,7 @@ |
for (mi_col = 0; mi_col < cm->mi_cols; mi_col += MI_BLOCK_SIZE) { |
int plane; |
- vp9_setup_dst_planes(xd, frame_buffer, mi_row, mi_col); |
+ vp9_setup_dst_planes(planes, frame_buffer, mi_row, mi_col); |
// TODO(JBB): Make setup_mask work for non 420. |
if (use_420) |
@@ -1215,9 +1216,9 @@ |
for (plane = 0; plane < num_planes; ++plane) { |
if (use_420) |
- vp9_filter_block_plane(cm, &xd->plane[plane], mi_row, &lfm); |
+ vp9_filter_block_plane(cm, &planes[plane], mi_row, &lfm); |
else |
- filter_block_plane_non420(cm, &xd->plane[plane], mi + mi_col, |
+ filter_block_plane_non420(cm, &planes[plane], mi + mi_col, |
mi_row, mi_col); |
} |
} |
@@ -1239,7 +1240,7 @@ |
} |
end_mi_row = start_mi_row + mi_rows_to_filter; |
vp9_loop_filter_frame_init(cm, frame_filter_level); |
- vp9_loop_filter_rows(frame, cm, xd, |
+ vp9_loop_filter_rows(frame, cm, xd->plane, |
start_mi_row, end_mi_row, |
y_only); |
} |
@@ -1247,7 +1248,7 @@ |
int vp9_loop_filter_worker(void *arg1, void *arg2) { |
LFWorkerData *const lf_data = (LFWorkerData*)arg1; |
(void)arg2; |
- vp9_loop_filter_rows(lf_data->frame_buffer, lf_data->cm, &lf_data->xd, |
+ vp9_loop_filter_rows(lf_data->frame_buffer, lf_data->cm, lf_data->planes, |
lf_data->start, lf_data->stop, lf_data->y_only); |
return 1; |
} |