OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (c) 2013 The WebM project authors. All Rights Reserved. | |
3 * | |
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 | |
6 * tree. An additional intellectual property rights grant can be found | |
7 * in the file PATENTS. All contributing project authors may | |
8 * be found in the AUTHORS file in the root of the source tree. | |
9 */ | |
10 | |
11 #include "vp9/common/vp9_common.h" | |
12 | |
13 // defined in vp9/common/arm/neon/vp9_short_idct32x32_add_neon.asm | |
14 extern void idct32_transpose_and_transform(int16_t *transpose_buffer, | |
15 int16_t *output, int16_t *input); | |
16 extern void idct32_combine_add(uint8_t *dest, int16_t *out, int dest_stride); | |
17 | |
18 | |
19 // defined in vp9/common/arm/neon/vp9_short_idct16x16_add_neon.asm | |
20 extern void save_neon_registers(); | |
21 extern void restore_neon_registers(); | |
22 | |
23 void vp9_short_idct32x32_add_neon(int16_t *input, uint8_t *dest, | |
24 int dest_stride) { | |
25 // TODO(cd): move the creation of these buffers within the ASM file | |
26 // internal buffer used to transpose 8 lines into before transforming them | |
27 int16_t transpose_buffer[32 * 8]; | |
28 // results of the first pass (transpose and transform rows) | |
29 int16_t pass1[32 * 32]; | |
30 // results of the second pass (transpose and transform columns) | |
31 int16_t pass2[32 * 32]; | |
32 | |
33 // save register we need to preserve | |
34 save_neon_registers(); | |
35 // process rows | |
36 idct32_transpose_and_transform(transpose_buffer, pass1, input); | |
37 // process columns | |
38 // TODO(cd): do these two steps/passes within the ASM file | |
39 idct32_transpose_and_transform(transpose_buffer, pass2, pass1); | |
40 // combine and add to dest | |
41 // TODO(cd): integrate this within the last storage step of the second pass | |
42 idct32_combine_add(dest, pass2, dest_stride); | |
43 // restore register we need to preserve | |
44 restore_neon_registers(); | |
45 } | |
46 | |
47 // TODO(cd): Eliminate this file altogether when everything is in ASM file | |
OLD | NEW |