15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "media/base/simd/filter_yuv.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace media { 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FilterYUVRows_C(uint8* ybuf, const uint8* y0_ptr, const uint8* y1_ptr, 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int source_width, int source_y_fraction) { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int y1_fraction = source_y_fraction; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int y0_fraction = 256 - y1_fraction; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint8* end = ybuf + source_width; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint8* rounded_end = ybuf + (source_width & ~7); 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (ybuf < rounded_end) { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ybuf[0] = (y0_ptr[0] * y0_fraction + y1_ptr[0] * y1_fraction) >> 8; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ybuf[1] = (y0_ptr[1] * y0_fraction + y1_ptr[1] * y1_fraction) >> 8; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ybuf[2] = (y0_ptr[2] * y0_fraction + y1_ptr[2] * y1_fraction) >> 8; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ybuf[3] = (y0_ptr[3] * y0_fraction + y1_ptr[3] * y1_fraction) >> 8; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ybuf[4] = (y0_ptr[4] * y0_fraction + y1_ptr[4] * y1_fraction) >> 8; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ybuf[5] = (y0_ptr[5] * y0_fraction + y1_ptr[5] * y1_fraction) >> 8; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ybuf[6] = (y0_ptr[6] * y0_fraction + y1_ptr[6] * y1_fraction) >> 8; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ybuf[7] = (y0_ptr[7] * y0_fraction + y1_ptr[7] * y1_fraction) >> 8; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) y0_ptr += 8; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) y1_ptr += 8; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ybuf += 8; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (ybuf < end) { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ybuf[0] = (y0_ptr[0] * y0_fraction + y1_ptr[0] * y1_fraction) >> 8; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++ybuf; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++y0_ptr; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++y1_ptr; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace media 39