| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 2129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2140 *(uint32*)(dst_argb) = | 2140 *(uint32*)(dst_argb) = |
| 2141 *(const uint32*)(src_argb + y * src_argb_stride + | 2141 *(const uint32*)(src_argb + y * src_argb_stride + |
| 2142 x * 4); | 2142 x * 4); |
| 2143 dst_argb += 4; | 2143 dst_argb += 4; |
| 2144 uv[0] += uv_dudv[2]; | 2144 uv[0] += uv_dudv[2]; |
| 2145 uv[1] += uv_dudv[3]; | 2145 uv[1] += uv_dudv[3]; |
| 2146 } | 2146 } |
| 2147 } | 2147 } |
| 2148 | 2148 |
| 2149 // Blend 2 rows into 1. | 2149 // Blend 2 rows into 1. |
| 2150 static void HalfRow_C(const uint8* src_uv, int src_uv_stride, | 2150 static void HalfRow_C(const uint8* src_uv, ptrdiff_t src_uv_stride, |
| 2151 uint8* dst_uv, int width) { | 2151 uint8* dst_uv, int width) { |
| 2152 int x; | 2152 int x; |
| 2153 for (x = 0; x < width; ++x) { | 2153 for (x = 0; x < width; ++x) { |
| 2154 dst_uv[x] = (src_uv[x] + src_uv[src_uv_stride + x] + 1) >> 1; | 2154 dst_uv[x] = (src_uv[x] + src_uv[src_uv_stride + x] + 1) >> 1; |
| 2155 } | 2155 } |
| 2156 } | 2156 } |
| 2157 | 2157 |
| 2158 static void HalfRow_16_C(const uint16* src_uv, int src_uv_stride, | 2158 static void HalfRow_16_C(const uint16* src_uv, ptrdiff_t src_uv_stride, |
| 2159 uint16* dst_uv, int width) { | 2159 uint16* dst_uv, int width) { |
| 2160 int x; | 2160 int x; |
| 2161 for (x = 0; x < width; ++x) { | 2161 for (x = 0; x < width; ++x) { |
| 2162 dst_uv[x] = (src_uv[x] + src_uv[src_uv_stride + x] + 1) >> 1; | 2162 dst_uv[x] = (src_uv[x] + src_uv[src_uv_stride + x] + 1) >> 1; |
| 2163 } | 2163 } |
| 2164 } | 2164 } |
| 2165 | 2165 |
| 2166 // C version 2x2 -> 2x1. | 2166 // C version 2x2 -> 2x1. |
| 2167 void InterpolateRow_C(uint8* dst_ptr, const uint8* src_ptr, | 2167 void InterpolateRow_C(uint8* dst_ptr, const uint8* src_ptr, |
| 2168 ptrdiff_t src_stride, | 2168 ptrdiff_t src_stride, |
| 2169 int width, int source_y_fraction) { | 2169 int width, int source_y_fraction) { |
| 2170 int y1_fraction = source_y_fraction ; | 2170 int y1_fraction = source_y_fraction ; |
| 2171 int y0_fraction = 256 - y1_fraction; | 2171 int y0_fraction = 256 - y1_fraction; |
| 2172 const uint8* src_ptr1 = src_ptr + src_stride; | 2172 const uint8* src_ptr1 = src_ptr + src_stride; |
| 2173 int x; | 2173 int x; |
| 2174 if (y1_fraction == 0) { | 2174 if (y1_fraction == 0) { |
| 2175 memcpy(dst_ptr, src_ptr, width); | 2175 memcpy(dst_ptr, src_ptr, width); |
| 2176 return; | 2176 return; |
| 2177 } | 2177 } |
| 2178 if (y1_fraction == 128) { | 2178 if (y1_fraction == 128) { |
| 2179 HalfRow_C(src_ptr, (int)(src_stride), dst_ptr, width); | 2179 HalfRow_C(src_ptr, src_stride, dst_ptr, width); |
| 2180 return; | 2180 return; |
| 2181 } | 2181 } |
| 2182 for (x = 0; x < width - 1; x += 2) { | 2182 for (x = 0; x < width - 1; x += 2) { |
| 2183 dst_ptr[0] = | 2183 dst_ptr[0] = |
| 2184 (src_ptr[0] * y0_fraction + src_ptr1[0] * y1_fraction + 128) >> 8; | 2184 (src_ptr[0] * y0_fraction + src_ptr1[0] * y1_fraction + 128) >> 8; |
| 2185 dst_ptr[1] = | 2185 dst_ptr[1] = |
| 2186 (src_ptr[1] * y0_fraction + src_ptr1[1] * y1_fraction + 128) >> 8; | 2186 (src_ptr[1] * y0_fraction + src_ptr1[1] * y1_fraction + 128) >> 8; |
| 2187 src_ptr += 2; | 2187 src_ptr += 2; |
| 2188 src_ptr1 += 2; | 2188 src_ptr1 += 2; |
| 2189 dst_ptr += 2; | 2189 dst_ptr += 2; |
| 2190 } | 2190 } |
| 2191 if (width & 1) { | 2191 if (width & 1) { |
| 2192 dst_ptr[0] = | 2192 dst_ptr[0] = |
| 2193 (src_ptr[0] * y0_fraction + src_ptr1[0] * y1_fraction + 128) >> 8; | 2193 (src_ptr[0] * y0_fraction + src_ptr1[0] * y1_fraction + 128) >> 8; |
| 2194 } | 2194 } |
| 2195 } | 2195 } |
| 2196 | 2196 |
| 2197 void InterpolateRow_16_C(uint16* dst_ptr, const uint16* src_ptr, | 2197 void InterpolateRow_16_C(uint16* dst_ptr, const uint16* src_ptr, |
| 2198 ptrdiff_t src_stride, | 2198 ptrdiff_t src_stride, |
| 2199 int width, int source_y_fraction) { | 2199 int width, int source_y_fraction) { |
| 2200 int y1_fraction = source_y_fraction; | 2200 int y1_fraction = source_y_fraction; |
| 2201 int y0_fraction = 256 - y1_fraction; | 2201 int y0_fraction = 256 - y1_fraction; |
| 2202 const uint16* src_ptr1 = src_ptr + src_stride; | 2202 const uint16* src_ptr1 = src_ptr + src_stride; |
| 2203 int x; | 2203 int x; |
| 2204 if (source_y_fraction == 0) { | 2204 if (source_y_fraction == 0) { |
| 2205 memcpy(dst_ptr, src_ptr, width * 2); | 2205 memcpy(dst_ptr, src_ptr, width * 2); |
| 2206 return; | 2206 return; |
| 2207 } | 2207 } |
| 2208 if (source_y_fraction == 128) { | 2208 if (source_y_fraction == 128) { |
| 2209 HalfRow_16_C(src_ptr, (int)(src_stride), dst_ptr, width); | 2209 HalfRow_16_C(src_ptr, src_stride, dst_ptr, width); |
| 2210 return; | 2210 return; |
| 2211 } | 2211 } |
| 2212 for (x = 0; x < width - 1; x += 2) { | 2212 for (x = 0; x < width - 1; x += 2) { |
| 2213 dst_ptr[0] = (src_ptr[0] * y0_fraction + src_ptr1[0] * y1_fraction) >> 8; | 2213 dst_ptr[0] = (src_ptr[0] * y0_fraction + src_ptr1[0] * y1_fraction) >> 8; |
| 2214 dst_ptr[1] = (src_ptr[1] * y0_fraction + src_ptr1[1] * y1_fraction) >> 8; | 2214 dst_ptr[1] = (src_ptr[1] * y0_fraction + src_ptr1[1] * y1_fraction) >> 8; |
| 2215 src_ptr += 2; | 2215 src_ptr += 2; |
| 2216 src_ptr1 += 2; | 2216 src_ptr1 += 2; |
| 2217 dst_ptr += 2; | 2217 dst_ptr += 2; |
| 2218 } | 2218 } |
| 2219 if (width & 1) { | 2219 if (width & 1) { |
| (...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2605 dst_rgb565 += twidth * 2; | 2605 dst_rgb565 += twidth * 2; |
| 2606 width -= twidth; | 2606 width -= twidth; |
| 2607 } | 2607 } |
| 2608 } | 2608 } |
| 2609 #endif | 2609 #endif |
| 2610 | 2610 |
| 2611 #ifdef __cplusplus | 2611 #ifdef __cplusplus |
| 2612 } // extern "C" | 2612 } // extern "C" |
| 2613 } // namespace libyuv | 2613 } // namespace libyuv |
| 2614 #endif | 2614 #endif |
| OLD | NEW |