Mercurial > libavcodec.hg
comparison arm/dsputil_init_arm.c @ 10360:b72bb442a775 libavcodec
ARM: clean up file/function naming conventions
author | mru |
---|---|
date | Sun, 04 Oct 2009 13:13:02 +0000 |
parents | arm/dsputil_arm.c@48be79afc72d |
children | a1cc263fba25 |
comparison
equal
deleted
inserted
replaced
10359:48be79afc72d | 10360:b72bb442a775 |
---|---|
1 /* | |
2 * ARM optimized DSP utils | |
3 * Copyright (c) 2001 Lionel Ulmer | |
4 * | |
5 * This file is part of FFmpeg. | |
6 * | |
7 * FFmpeg is free software; you can redistribute it and/or | |
8 * modify it under the terms of the GNU Lesser General Public | |
9 * License as published by the Free Software Foundation; either | |
10 * version 2.1 of the License, or (at your option) any later version. | |
11 * | |
12 * FFmpeg is distributed in the hope that it will be useful, | |
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 * Lesser General Public License for more details. | |
16 * | |
17 * You should have received a copy of the GNU Lesser General Public | |
18 * License along with FFmpeg; if not, write to the Free Software | |
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
20 */ | |
21 | |
22 #include "libavcodec/dsputil.h" | |
23 #include "dsputil_arm.h" | |
24 | |
25 void j_rev_dct_ARM(DCTELEM *data); | |
26 void simple_idct_ARM(DCTELEM *data); | |
27 | |
28 /* XXX: local hack */ | |
29 static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); | |
30 static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); | |
31 | |
32 void put_pixels8_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h); | |
33 void put_pixels8_x2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h); | |
34 void put_pixels8_y2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h); | |
35 void put_pixels8_xy2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h); | |
36 | |
37 void put_no_rnd_pixels8_x2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h); | |
38 void put_no_rnd_pixels8_y2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h); | |
39 void put_no_rnd_pixels8_xy2_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h); | |
40 | |
41 void put_pixels16_arm(uint8_t *block, const uint8_t *pixels, int line_size, int h); | |
42 | |
43 CALL_2X_PIXELS(put_pixels16_x2_arm , put_pixels8_x2_arm , 8) | |
44 CALL_2X_PIXELS(put_pixels16_y2_arm , put_pixels8_y2_arm , 8) | |
45 CALL_2X_PIXELS(put_pixels16_xy2_arm, put_pixels8_xy2_arm, 8) | |
46 CALL_2X_PIXELS(put_no_rnd_pixels16_x2_arm , put_no_rnd_pixels8_x2_arm , 8) | |
47 CALL_2X_PIXELS(put_no_rnd_pixels16_y2_arm , put_no_rnd_pixels8_y2_arm , 8) | |
48 CALL_2X_PIXELS(put_no_rnd_pixels16_xy2_arm, put_no_rnd_pixels8_xy2_arm, 8) | |
49 | |
50 void ff_add_pixels_clamped_ARM(short *block, unsigned char *dest, | |
51 int line_size); | |
52 | |
53 /* XXX: those functions should be suppressed ASAP when all IDCTs are | |
54 converted */ | |
55 static void j_rev_dct_ARM_put(uint8_t *dest, int line_size, DCTELEM *block) | |
56 { | |
57 j_rev_dct_ARM (block); | |
58 ff_put_pixels_clamped(block, dest, line_size); | |
59 } | |
60 static void j_rev_dct_ARM_add(uint8_t *dest, int line_size, DCTELEM *block) | |
61 { | |
62 j_rev_dct_ARM (block); | |
63 ff_add_pixels_clamped(block, dest, line_size); | |
64 } | |
65 static void simple_idct_ARM_put(uint8_t *dest, int line_size, DCTELEM *block) | |
66 { | |
67 simple_idct_ARM (block); | |
68 ff_put_pixels_clamped(block, dest, line_size); | |
69 } | |
70 static void simple_idct_ARM_add(uint8_t *dest, int line_size, DCTELEM *block) | |
71 { | |
72 simple_idct_ARM (block); | |
73 ff_add_pixels_clamped(block, dest, line_size); | |
74 } | |
75 | |
76 int mm_support(void) | |
77 { | |
78 return HAVE_IWMMXT * FF_MM_IWMMXT; | |
79 } | |
80 | |
81 void dsputil_init_arm(DSPContext* c, AVCodecContext *avctx) | |
82 { | |
83 ff_put_pixels_clamped = c->put_pixels_clamped; | |
84 ff_add_pixels_clamped = c->add_pixels_clamped; | |
85 | |
86 if (avctx->lowres == 0) { | |
87 if(avctx->idct_algo == FF_IDCT_AUTO || | |
88 avctx->idct_algo == FF_IDCT_ARM){ | |
89 c->idct_put= j_rev_dct_ARM_put; | |
90 c->idct_add= j_rev_dct_ARM_add; | |
91 c->idct = j_rev_dct_ARM; | |
92 c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM; | |
93 } else if (avctx->idct_algo==FF_IDCT_SIMPLEARM){ | |
94 c->idct_put= simple_idct_ARM_put; | |
95 c->idct_add= simple_idct_ARM_add; | |
96 c->idct = simple_idct_ARM; | |
97 c->idct_permutation_type= FF_NO_IDCT_PERM; | |
98 } | |
99 } | |
100 | |
101 c->put_pixels_tab[0][0] = put_pixels16_arm; | |
102 c->put_pixels_tab[0][1] = put_pixels16_x2_arm; | |
103 c->put_pixels_tab[0][2] = put_pixels16_y2_arm; | |
104 c->put_pixels_tab[0][3] = put_pixels16_xy2_arm; | |
105 c->put_no_rnd_pixels_tab[0][0] = put_pixels16_arm; | |
106 c->put_no_rnd_pixels_tab[0][1] = put_no_rnd_pixels16_x2_arm; | |
107 c->put_no_rnd_pixels_tab[0][2] = put_no_rnd_pixels16_y2_arm; | |
108 c->put_no_rnd_pixels_tab[0][3] = put_no_rnd_pixels16_xy2_arm; | |
109 c->put_pixels_tab[1][0] = put_pixels8_arm; | |
110 c->put_pixels_tab[1][1] = put_pixels8_x2_arm; | |
111 c->put_pixels_tab[1][2] = put_pixels8_y2_arm; | |
112 c->put_pixels_tab[1][3] = put_pixels8_xy2_arm; | |
113 c->put_no_rnd_pixels_tab[1][0] = put_pixels8_arm; | |
114 c->put_no_rnd_pixels_tab[1][1] = put_no_rnd_pixels8_x2_arm; | |
115 c->put_no_rnd_pixels_tab[1][2] = put_no_rnd_pixels8_y2_arm; | |
116 c->put_no_rnd_pixels_tab[1][3] = put_no_rnd_pixels8_xy2_arm; | |
117 | |
118 if (HAVE_ARMV5TE) ff_dsputil_init_armv5te(c, avctx); | |
119 if (HAVE_ARMV6) ff_dsputil_init_armv6(c, avctx); | |
120 | |
121 #if HAVE_IWMMXT | |
122 dsputil_init_iwmmxt(c, avctx); | |
123 #endif | |
124 #if HAVE_ARMVFP | |
125 ff_dsputil_init_vfp(c, avctx); | |
126 #endif | |
127 #if HAVE_NEON | |
128 ff_dsputil_init_neon(c, avctx); | |
129 #endif | |
130 } |