OLD | NEW |
1 /* | 1 /* |
2 * BlackFin DSPUTILS | 2 * BlackFin DSPUTILS |
3 * | 3 * |
4 * Copyright (C) 2007 Marc Hoffman <marc.hoffman@analog.com> | 4 * Copyright (C) 2007 Marc Hoffman <marc.hoffman@analog.com> |
5 * Copyright (c) 2006 Michael Benjamin <michael.benjamin@analog.com> | 5 * Copyright (c) 2006 Michael Benjamin <michael.benjamin@analog.com> |
6 * | 6 * |
7 * This file is part of FFmpeg. | 7 * This file is part of FFmpeg. |
8 * | 8 * |
9 * FFmpeg is free software; you can redistribute it and/or | 9 * FFmpeg is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Lesser General Public | 10 * modify it under the terms of the GNU Lesser General Public |
11 * License as published by the Free Software Foundation; either | 11 * License as published by the Free Software Foundation; either |
12 * version 2.1 of the License, or (at your option) any later version. | 12 * version 2.1 of the License, or (at your option) any later version. |
13 * | 13 * |
14 * FFmpeg is distributed in the hope that it will be useful, | 14 * FFmpeg is distributed in the hope that it will be useful, |
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
17 * Lesser General Public License for more details. | 17 * Lesser General Public License for more details. |
18 * | 18 * |
19 * You should have received a copy of the GNU Lesser General Public | 19 * You should have received a copy of the GNU Lesser General Public |
20 * License along with FFmpeg; if not, write to the Free Software | 20 * License along with FFmpeg; if not, write to the Free Software |
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
22 */ | 22 */ |
23 | 23 |
24 #include "libavcodec/avcodec.h" | 24 #include "libavcodec/avcodec.h" |
25 #include "libavcodec/dsputil.h" | 25 #include "libavcodec/dsputil.h" |
26 #include "dsputil_bfin.h" | 26 #include "dsputil_bfin.h" |
27 | 27 |
28 int off; | 28 int off; |
29 | 29 |
30 | |
31 void ff_bfin_idct (DCTELEM *block) attribute_l1_text; | |
32 void ff_bfin_fdct (DCTELEM *block) attribute_l1_text; | |
33 void ff_bfin_vp3_idct (DCTELEM *block); | |
34 void ff_bfin_vp3_idct_put (uint8_t *dest, int line_size, DCTELEM *block); | |
35 void ff_bfin_vp3_idct_add (uint8_t *dest, int line_size, DCTELEM *block); | |
36 void ff_bfin_add_pixels_clamped (const DCTELEM *block, uint8_t *dest, int line_s
ize) attribute_l1_text; | |
37 void ff_bfin_put_pixels_clamped (const DCTELEM *block, uint8_t *dest, int line_s
ize) attribute_l1_text; | |
38 void ff_bfin_diff_pixels (DCTELEM *block, const uint8_t *s1, const uint8_t *s2,
int stride) attribute_l1_text; | |
39 void ff_bfin_get_pixels (DCTELEM *restrict block, const uint8_t *pixels, int li
ne_size) attribute_l1_text; | |
40 int ff_bfin_pix_norm1 (uint8_t * pix, int line_size) attribute_l1_text; | |
41 int ff_bfin_z_sad8x8 (uint8_t *blk1, uint8_t *blk2, int dsz, int line_size, i
nt h) attribute_l1_text; | |
42 int ff_bfin_z_sad16x16 (uint8_t *blk1, uint8_t *blk2, int dsz, int line_size, i
nt h) attribute_l1_text; | |
43 | |
44 void ff_bfin_z_put_pixels16_xy2 (uint8_t *block, const uint8_t *s0, int dest
_size, int line_size, int h) attribute_l1_text; | |
45 void ff_bfin_z_put_pixels8_xy2 (uint8_t *block, const uint8_t *s0, int dest
_size, int line_size, int h) attribute_l1_text; | |
46 void ff_bfin_put_pixels16_xy2_nornd (uint8_t *block, const uint8_t *s0, int line
_size, int h) attribute_l1_text; | |
47 void ff_bfin_put_pixels8_xy2_nornd (uint8_t *block, const uint8_t *s0, int line
_size, int h) attribute_l1_text; | |
48 | |
49 | |
50 int ff_bfin_pix_sum (uint8_t *p, int stride) attribute_l1_text; | |
51 | |
52 void ff_bfin_put_pixels8uc (uint8_t *block, const uint8_t *s0, const uint
8_t *s1, int dest_size, int line_size, int h) attribute_l1_text; | |
53 void ff_bfin_put_pixels16uc (uint8_t *block, const uint8_t *s0, const uint
8_t *s1, int dest_size, int line_size, int h) attribute_l1_text; | |
54 void ff_bfin_put_pixels8uc_nornd (uint8_t *block, const uint8_t *s0, const uint
8_t *s1, int line_size, int h) attribute_l1_text; | |
55 void ff_bfin_put_pixels16uc_nornd (uint8_t *block, const uint8_t *s0, const uint
8_t *s1, int line_size, int h) attribute_l1_text; | |
56 | |
57 int ff_bfin_sse4 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
attribute_l1_text; | |
58 int ff_bfin_sse8 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
attribute_l1_text; | |
59 int ff_bfin_sse16 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
attribute_l1_text; | |
60 | |
61 | |
62 static void bfin_idct_add (uint8_t *dest, int line_size, DCTELEM *block) | 30 static void bfin_idct_add (uint8_t *dest, int line_size, DCTELEM *block) |
63 { | 31 { |
64 ff_bfin_idct (block); | 32 ff_bfin_idct (block); |
65 ff_bfin_add_pixels_clamped (block, dest, line_size); | 33 ff_bfin_add_pixels_clamped (block, dest, line_size); |
66 } | 34 } |
67 | 35 |
68 static void bfin_idct_put (uint8_t *dest, int line_size, DCTELEM *block) | 36 static void bfin_idct_put (uint8_t *dest, int line_size, DCTELEM *block) |
69 { | 37 { |
70 ff_bfin_idct (block); | 38 ff_bfin_idct (block); |
71 ff_bfin_put_pixels_clamped (block, dest, line_size); | 39 ff_bfin_put_pixels_clamped (block, dest, line_size); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 static void bfin_put_pixels16_y2 (uint8_t *block, const uint8_t *pixels, int lin
e_size, int h) | 88 static void bfin_put_pixels16_y2 (uint8_t *block, const uint8_t *pixels, int lin
e_size, int h) |
121 { | 89 { |
122 ff_bfin_put_pixels16uc (block, pixels, pixels+line_size, line_size, line_siz
e, h); | 90 ff_bfin_put_pixels16uc (block, pixels, pixels+line_size, line_size, line_siz
e, h); |
123 } | 91 } |
124 | 92 |
125 static void bfin_put_pixels16_xy2 (uint8_t *block, const uint8_t *s0, int line_s
ize, int h) | 93 static void bfin_put_pixels16_xy2 (uint8_t *block, const uint8_t *s0, int line_s
ize, int h) |
126 { | 94 { |
127 ff_bfin_z_put_pixels16_xy2 (block,s0,line_size, line_size, h); | 95 ff_bfin_z_put_pixels16_xy2 (block,s0,line_size, line_size, h); |
128 } | 96 } |
129 | 97 |
130 void bfin_put_pixels8_nornd (uint8_t *block, const uint8_t *pixels, int line_siz
e, int h) | 98 static void bfin_put_pixels8_nornd (uint8_t *block, const uint8_t *pixels, int l
ine_size, int h) |
131 { | 99 { |
132 ff_bfin_put_pixels8uc_nornd (block, pixels, pixels, line_size, h); | 100 ff_bfin_put_pixels8uc_nornd (block, pixels, pixels, line_size, h); |
133 } | 101 } |
134 | 102 |
135 static void bfin_put_pixels8_x2_nornd (uint8_t *block, const uint8_t *pixels, in
t line_size, int h) | 103 static void bfin_put_pixels8_x2_nornd (uint8_t *block, const uint8_t *pixels, in
t line_size, int h) |
136 { | 104 { |
137 ff_bfin_put_pixels8uc_nornd (block, pixels, pixels+1, line_size, h); | 105 ff_bfin_put_pixels8uc_nornd (block, pixels, pixels+1, line_size, h); |
138 } | 106 } |
139 | 107 |
140 static void bfin_put_pixels8_y2_nornd (uint8_t *block, const uint8_t *pixels, in
t line_size, int h) | 108 static void bfin_put_pixels8_y2_nornd (uint8_t *block, const uint8_t *pixels, in
t line_size, int h) |
141 { | 109 { |
142 ff_bfin_put_pixels8uc_nornd (block, pixels, pixels+line_size, line_size, h); | 110 ff_bfin_put_pixels8uc_nornd (block, pixels, pixels+line_size, line_size, h); |
143 } | 111 } |
144 | 112 |
145 | 113 |
146 void bfin_put_pixels16_nornd (uint8_t *block, const uint8_t *pixels, int line_si
ze, int h) | 114 static void bfin_put_pixels16_nornd (uint8_t *block, const uint8_t *pixels, int
line_size, int h) |
147 { | 115 { |
148 ff_bfin_put_pixels16uc_nornd (block, pixels, pixels, line_size, h); | 116 ff_bfin_put_pixels16uc_nornd (block, pixels, pixels, line_size, h); |
149 } | 117 } |
150 | 118 |
151 static void bfin_put_pixels16_x2_nornd (uint8_t *block, const uint8_t *pixels, i
nt line_size, int h) | 119 static void bfin_put_pixels16_x2_nornd (uint8_t *block, const uint8_t *pixels, i
nt line_size, int h) |
152 { | 120 { |
153 ff_bfin_put_pixels16uc_nornd (block, pixels, pixels+1, line_size, h); | 121 ff_bfin_put_pixels16uc_nornd (block, pixels, pixels+1, line_size, h); |
154 } | 122 } |
155 | 123 |
156 static void bfin_put_pixels16_y2_nornd (uint8_t *block, const uint8_t *pixels, i
nt line_size, int h) | 124 static void bfin_put_pixels16_y2_nornd (uint8_t *block, const uint8_t *pixels, i
nt line_size, int h) |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 } else if (avctx->idct_algo == FF_IDCT_AUTO) { | 271 } else if (avctx->idct_algo == FF_IDCT_AUTO) { |
304 c->idct_permutation_type = FF_NO_IDCT_PERM; | 272 c->idct_permutation_type = FF_NO_IDCT_PERM; |
305 c->idct = ff_bfin_idct; | 273 c->idct = ff_bfin_idct; |
306 c->idct_add = bfin_idct_add; | 274 c->idct_add = bfin_idct_add; |
307 c->idct_put = bfin_idct_put; | 275 c->idct_put = bfin_idct_put; |
308 } | 276 } |
309 } | 277 } |
310 | 278 |
311 | 279 |
312 | 280 |
OLD | NEW |