Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Side by Side Diff: source/libvpx/vp9/common/vp9_idct.c

Issue 23600008: libvpx: Pull from upstream (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « source/libvpx/vp9/common/vp9_idct.h ('k') | source/libvpx/vp9/common/vp9_loopfilter.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2010 The WebM 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 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 for (i = 0; i < 8; ++i) { 218 for (i = 0; i < 8; ++i) {
219 for (j = 0; j < 8; ++j) 219 for (j = 0; j < 8; ++j)
220 temp_in[j] = out[j * 8 + i]; 220 temp_in[j] = out[j * 8 + i];
221 idct8_1d(temp_in, temp_out); 221 idct8_1d(temp_in, temp_out);
222 for (j = 0; j < 8; ++j) 222 for (j = 0; j < 8; ++j)
223 dest[j * dest_stride + i] = clip_pixel(ROUND_POWER_OF_TWO(temp_out[j], 5) 223 dest[j * dest_stride + i] = clip_pixel(ROUND_POWER_OF_TWO(temp_out[j], 5)
224 + dest[j * dest_stride + i]); 224 + dest[j * dest_stride + i]);
225 } 225 }
226 } 226 }
227 227
228 void vp9_short_idct8x8_1_add_c(int16_t *input, uint8_t *dest, int dest_stride) {
229 int i, j;
230 int a1;
231 int16_t out = dct_const_round_shift(input[0] * cospi_16_64);
232 out = dct_const_round_shift(out * cospi_16_64);
233 a1 = ROUND_POWER_OF_TWO(out, 5);
234 for (j = 0; j < 8; ++j) {
235 for (i = 0; i < 8; ++i)
236 dest[i] = clip_pixel(dest[i] + a1);
237 dest += dest_stride;
238 }
239 }
240
228 static void iadst4_1d(int16_t *input, int16_t *output) { 241 static void iadst4_1d(int16_t *input, int16_t *output) {
229 int s0, s1, s2, s3, s4, s5, s6, s7; 242 int s0, s1, s2, s3, s4, s5, s6, s7;
230 243
231 int x0 = input[0]; 244 int x0 = input[0];
232 int x1 = input[1]; 245 int x1 = input[1];
233 int x2 = input[2]; 246 int x2 = input[2];
234 int x3 = input[3]; 247 int x3 = input[3];
235 248
236 if (!(x0 | x1 | x2 | x3)) { 249 if (!(x0 | x1 | x2 | x3)) {
237 output[0] = output[1] = output[2] = output[3] = 0; 250 output[0] = output[1] = output[2] = output[3] = 0;
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 for (i = 0; i < 8; ++i) { 439 for (i = 0; i < 8; ++i) {
427 for (j = 0; j < 8; ++j) 440 for (j = 0; j < 8; ++j)
428 temp_in[j] = out[j * 8 + i]; 441 temp_in[j] = out[j * 8 + i];
429 idct8_1d(temp_in, temp_out); 442 idct8_1d(temp_in, temp_out);
430 for (j = 0; j < 8; ++j) 443 for (j = 0; j < 8; ++j)
431 dest[j * dest_stride + i] = clip_pixel(ROUND_POWER_OF_TWO(temp_out[j], 5) 444 dest[j * dest_stride + i] = clip_pixel(ROUND_POWER_OF_TWO(temp_out[j], 5)
432 + dest[j * dest_stride + i]); 445 + dest[j * dest_stride + i]);
433 } 446 }
434 } 447 }
435 448
436 void vp9_short_idct1_8x8_c(int16_t *input, int16_t *output) {
437 int16_t out = dct_const_round_shift(input[0] * cospi_16_64);
438 out = dct_const_round_shift(out * cospi_16_64);
439 output[0] = ROUND_POWER_OF_TWO(out, 5);
440 }
441
442 static void idct16_1d(int16_t *input, int16_t *output) { 449 static void idct16_1d(int16_t *input, int16_t *output) {
443 int16_t step1[16], step2[16]; 450 int16_t step1[16], step2[16];
444 int temp1, temp2; 451 int temp1, temp2;
445 452
446 // stage 1 453 // stage 1
447 step1[0] = input[0/2]; 454 step1[0] = input[0/2];
448 step1[1] = input[16/2]; 455 step1[1] = input[16/2];
449 step1[2] = input[8/2]; 456 step1[2] = input[8/2];
450 step1[3] = input[24/2]; 457 step1[3] = input[24/2];
451 step1[4] = input[4/2]; 458 step1[4] = input[4/2];
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 for (i = 0; i < 16; ++i) { 857 for (i = 0; i < 16; ++i) {
851 for (j = 0; j < 16; ++j) 858 for (j = 0; j < 16; ++j)
852 temp_in[j] = out[j*16 + i]; 859 temp_in[j] = out[j*16 + i];
853 idct16_1d(temp_in, temp_out); 860 idct16_1d(temp_in, temp_out);
854 for (j = 0; j < 16; ++j) 861 for (j = 0; j < 16; ++j)
855 dest[j * dest_stride + i] = clip_pixel(ROUND_POWER_OF_TWO(temp_out[j], 6) 862 dest[j * dest_stride + i] = clip_pixel(ROUND_POWER_OF_TWO(temp_out[j], 6)
856 + dest[j * dest_stride + i]); 863 + dest[j * dest_stride + i]);
857 } 864 }
858 } 865 }
859 866
860 void vp9_short_idct1_16x16_c(int16_t *input, int16_t *output) { 867 void vp9_short_idct16x16_1_add_c(int16_t *input, uint8_t *dest,
868 int dest_stride) {
869 int i, j;
870 int a1;
861 int16_t out = dct_const_round_shift(input[0] * cospi_16_64); 871 int16_t out = dct_const_round_shift(input[0] * cospi_16_64);
862 out = dct_const_round_shift(out * cospi_16_64); 872 out = dct_const_round_shift(out * cospi_16_64);
863 output[0] = ROUND_POWER_OF_TWO(out, 6); 873 a1 = ROUND_POWER_OF_TWO(out, 6);
874 for (j = 0; j < 16; ++j) {
875 for (i = 0; i < 16; ++i)
876 dest[i] = clip_pixel(dest[i] + a1);
877 dest += dest_stride;
878 }
864 } 879 }
865 880
866 static void idct32_1d(int16_t *input, int16_t *output) { 881 static void idct32_1d(int16_t *input, int16_t *output) {
867 int16_t step1[32], step2[32]; 882 int16_t step1[32], step2[32];
868 int temp1, temp2; 883 int temp1, temp2;
869 884
870 // stage 1 885 // stage 1
871 step1[0] = input[0]; 886 step1[0] = input[0];
872 step1[1] = input[16]; 887 step1[1] = input[16];
873 step1[2] = input[8]; 888 step1[2] = input[8];
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 dest[j * dest_stride + i] = clip_pixel(ROUND_POWER_OF_TWO(temp_out[j], 6) 1267 dest[j * dest_stride + i] = clip_pixel(ROUND_POWER_OF_TWO(temp_out[j], 6)
1253 + dest[j * dest_stride + i]); 1268 + dest[j * dest_stride + i]);
1254 } 1269 }
1255 } 1270 }
1256 1271
1257 void vp9_short_idct1_32x32_c(int16_t *input, int16_t *output) { 1272 void vp9_short_idct1_32x32_c(int16_t *input, int16_t *output) {
1258 int16_t out = dct_const_round_shift(input[0] * cospi_16_64); 1273 int16_t out = dct_const_round_shift(input[0] * cospi_16_64);
1259 out = dct_const_round_shift(out * cospi_16_64); 1274 out = dct_const_round_shift(out * cospi_16_64);
1260 output[0] = ROUND_POWER_OF_TWO(out, 6); 1275 output[0] = ROUND_POWER_OF_TWO(out, 6);
1261 } 1276 }
1262
1263 void vp9_short_idct10_32x32_add_c(int16_t *input, uint8_t *dest,
1264 int dest_stride) {
1265 int16_t out[32 * 32] = { 0 };
1266 int16_t *outptr = out;
1267 int i, j;
1268 int16_t temp_in[32], temp_out[32];
1269
1270 // First transform rows. Since all non-zero dct coefficients are in
1271 // upper-left 4x4 area, we only need to calculate first 4 rows here.
1272 for (i = 0; i < 4; ++i) {
1273 idct32_1d(input, outptr);
1274 input += 32;
1275 outptr += 32;
1276 }
1277
1278 // Columns
1279 for (i = 0; i < 32; ++i) {
1280 for (j = 0; j < 32; ++j)
1281 temp_in[j] = out[j * 32 + i];
1282 idct32_1d(temp_in, temp_out);
1283 for (j = 0; j < 32; ++j)
1284 dest[j * dest_stride + i] = clip_pixel(ROUND_POWER_OF_TWO(temp_out[j], 6)
1285 + dest[j * dest_stride + i]);
1286 }
1287 }
OLDNEW
« no previous file with comments | « source/libvpx/vp9/common/vp9_idct.h ('k') | source/libvpx/vp9/common/vp9_loopfilter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698