1474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/*
2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *
4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  Use of this source code is governed by a BSD-style license
5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  that can be found in the LICENSE file in the root of the source
6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  tree. An additional intellectual property rights grant can be found
7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  in the file PATENTS.  All contributing project authors may
8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  be found in the AUTHORS file in the root of the source tree.
9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */
10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
12167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#include "vpx_config.h"
136fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#include "vp8_rtcd.h"
14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "vpx_mem/vpx_mem.h"
155c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org#include "blockd.h"
165c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org
175c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgvoid vp8_build_intra_predictors_mby_s_c(MACROBLOCKD *x,
185c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                          unsigned char * yabove_row,
195c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                          unsigned char * yleft,
205c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                          int left_stride,
215c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                          unsigned char * ypred_ptr,
225c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                          int y_stride)
23474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{
24474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    unsigned char yleft_col[16];
25474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    unsigned char ytop_left = yabove_row[-1];
26474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    int r, c, i;
27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
28474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for (i = 0; i < 16; i++)
29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
305c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        yleft_col[i] = yleft[i* left_stride];
31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    /* for Y */
34474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    switch (x->mode_info_context->mbmi.mode)
35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case DC_PRED:
37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        int expected_dc;
39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        int shift;
40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        int average = 0;
41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if (x->up_available || x->left_available)
44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            if (x->up_available)
46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            {
47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                for (i = 0; i < 16; i++)
48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                {
49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    average += yabove_row[i];
50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                }
51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            }
52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            if (x->left_available)
54474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            {
55474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
56474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                for (i = 0; i < 16; i++)
57474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                {
58474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    average += yleft_col[i];
59474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                }
60474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
61474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            }
62474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
63474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
64474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
65474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            shift = 3 + x->up_available + x->left_available;
66474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            expected_dc = (average + (1 << (shift - 1))) >> shift;
67474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
68474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        else
69474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
70474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            expected_dc = 128;
71474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
72474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
73474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        /*vpx_memset(ypred_ptr, expected_dc, 256);*/
74474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        for (r = 0; r < 16; r++)
75474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
76474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            vpx_memset(ypred_ptr, expected_dc, 16);
775c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            ypred_ptr += y_stride;
78474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
79474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
80474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    break;
81474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case V_PRED:
82474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
83474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
84474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        for (r = 0; r < 16; r++)
85474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
86474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
87474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ((int *)ypred_ptr)[0] = ((int *)yabove_row)[0];
88474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ((int *)ypred_ptr)[1] = ((int *)yabove_row)[1];
89474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ((int *)ypred_ptr)[2] = ((int *)yabove_row)[2];
90474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ((int *)ypred_ptr)[3] = ((int *)yabove_row)[3];
915c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            ypred_ptr += y_stride;
92474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
93474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
94474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    break;
95474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case H_PRED:
96474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
97474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
98474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        for (r = 0; r < 16; r++)
99474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
100474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
101474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            vpx_memset(ypred_ptr, yleft_col[r], 16);
1025c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            ypred_ptr += y_stride;
103474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
104474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
105474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
106474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    break;
107474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case TM_PRED:
108474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
109474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
110474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        for (r = 0; r < 16; r++)
111474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
112474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            for (c = 0; c < 16; c++)
113474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            {
114474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                int pred =  yleft_col[r] + yabove_row[ c] - ytop_left;
115474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
116474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                if (pred < 0)
117474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    pred = 0;
118474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
119474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                if (pred > 255)
120474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    pred = 255;
121474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
122474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ypred_ptr[c] = pred;
123474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            }
124474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1255c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            ypred_ptr += y_stride;
126474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
127474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
128474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
129474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    break;
130474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case B_PRED:
131474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case NEARESTMV:
132474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case NEARMV:
133474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case ZEROMV:
134474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case NEWMV:
135474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case SPLITMV:
136474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case MB_MODE_COUNT:
137474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        break;
138474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
139474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
140474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1415c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgvoid vp8_build_intra_predictors_mbuv_s_c(MACROBLOCKD *x,
1425c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                         unsigned char * uabove_row,
1435c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                         unsigned char * vabove_row,
1445c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                         unsigned char * uleft,
1455c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                         unsigned char * vleft,
1465c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                         int left_stride,
1475c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                         unsigned char * upred_ptr,
1485c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                         unsigned char * vpred_ptr,
1495c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                                         int pred_stride)
150474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{
1515c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org    unsigned char uleft_col[8];
152474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    unsigned char utop_left = uabove_row[-1];
1535c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org    unsigned char vleft_col[8];
154474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    unsigned char vtop_left = vabove_row[-1];
155474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
156474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    int i, j;
157474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
158474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for (i = 0; i < 8; i++)
159474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
1605c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        uleft_col[i] = uleft [i* left_stride];
1615c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        vleft_col[i] = vleft [i* left_stride];
162474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
163474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
164474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    switch (x->mode_info_context->mbmi.uv_mode)
165474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
166474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case DC_PRED:
167474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
168474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        int expected_udc;
169474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        int expected_vdc;
170474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        int shift;
171474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        int Uaverage = 0;
172474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        int Vaverage = 0;
173474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
174474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if (x->up_available)
175474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
176474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            for (i = 0; i < 8; i++)
177474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            {
178474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                Uaverage += uabove_row[i];
179474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                Vaverage += vabove_row[i];
180474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            }
181474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
182474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
183474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if (x->left_available)
184474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
185474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            for (i = 0; i < 8; i++)
186474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            {
187474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                Uaverage += uleft_col[i];
188474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                Vaverage += vleft_col[i];
189474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            }
190474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
191474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
192474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if (!x->up_available && !x->left_available)
193474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
194474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            expected_udc = 128;
195474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            expected_vdc = 128;
196474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
197474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        else
198474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
199474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            shift = 2 + x->up_available + x->left_available;
200474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            expected_udc = (Uaverage + (1 << (shift - 1))) >> shift;
201474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            expected_vdc = (Vaverage + (1 << (shift - 1))) >> shift;
202474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
203474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
204474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
205474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        /*vpx_memset(upred_ptr,expected_udc,64);*/
206474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        /*vpx_memset(vpred_ptr,expected_vdc,64);*/
207474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        for (i = 0; i < 8; i++)
208474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
209474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            vpx_memset(upred_ptr, expected_udc, 8);
210474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            vpx_memset(vpred_ptr, expected_vdc, 8);
2115c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            upred_ptr += pred_stride;
2125c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            vpred_ptr += pred_stride;
213474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
214474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
215474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    break;
216474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case V_PRED:
217474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
218474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        for (i = 0; i < 8; i++)
219474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
220474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            vpx_memcpy(upred_ptr, uabove_row, 8);
221474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            vpx_memcpy(vpred_ptr, vabove_row, 8);
2225c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            upred_ptr += pred_stride;
2235c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            vpred_ptr += pred_stride;
224474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
225474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
226474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
227474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    break;
228474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case H_PRED:
229474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
230474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        for (i = 0; i < 8; i++)
231474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
232474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            vpx_memset(upred_ptr, uleft_col[i], 8);
233474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            vpx_memset(vpred_ptr, vleft_col[i], 8);
2345c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            upred_ptr += pred_stride;
2355c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            vpred_ptr += pred_stride;
236474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
237474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
238474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
239474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    break;
240474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case TM_PRED:
241474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    {
242474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        for (i = 0; i < 8; i++)
243474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        {
244474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            for (j = 0; j < 8; j++)
245474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            {
246474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                int predu = uleft_col[i] + uabove_row[j] - utop_left;
247474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                int predv = vleft_col[i] + vabove_row[j] - vtop_left;
248474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
249474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                if (predu < 0)
250474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    predu = 0;
251474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
252474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                if (predu > 255)
253474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    predu = 255;
254474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
255474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                if (predv < 0)
256474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    predv = 0;
257474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
258474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                if (predv > 255)
259474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    predv = 255;
260474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
261474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                upred_ptr[j] = predu;
262474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                vpred_ptr[j] = predv;
263474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            }
264474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
2655c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            upred_ptr += pred_stride;
2665c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            vpred_ptr += pred_stride;
267474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        }
268474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
269474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
270474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    break;
271474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case B_PRED:
272474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case NEARESTMV:
273474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case NEARMV:
274474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case ZEROMV:
275474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case NEWMV:
276474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case SPLITMV:
277474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case MB_MODE_COUNT:
278474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        break;
279474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    }
280474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
281