| 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 |