annotate bfin/dsputil_bfin.h @ 12049:e6305257ceb6 libavcodec

PPC: Altivec IMDCT Patch by Loren Merritt
author mru
date Thu, 01 Jul 2010 23:21:49 +0000
parents 9f2381fb271b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5131
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
1 /*
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
2 * BlackFin DSPUTILS COMMON OPTIMIZATIONS HEADER
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
3 *
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
4 * Copyright (C) 2007 Marc Hoffman <mmh@pleasantst.com>
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
5 *
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
6 * This file is part of FFmpeg.
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
7 *
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
12 *
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
16 * Lesser General Public License for more details.
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
17 *
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
21 */
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
22
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
23
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6362
diff changeset
24 #ifndef AVCODEC_BFIN_DSPUTIL_BFIN_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6362
diff changeset
25 #define AVCODEC_BFIN_DSPUTIL_BFIN_H
5131
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
26
11416
9f2381fb271b Add missing includes in bfin and sh4 files
mru
parents: 11398
diff changeset
27 #include "config.h"
9f2381fb271b Add missing includes in bfin and sh4 files
mru
parents: 11398
diff changeset
28 #include "libavcodec/dsputil.h"
9f2381fb271b Add missing includes in bfin and sh4 files
mru
parents: 11398
diff changeset
29
11063
8327c5b4df9b Blackfin: use SRAM only when CONFIG_SRAM is set
mru
parents: 7760
diff changeset
30 #if defined(__FDPIC__) && CONFIG_SRAM
5131
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
31 #define attribute_l1_text __attribute__ ((l1_text))
6362
78aa57eba353 FLAT objects cannot have multiple sections, so using the L1 attributes breaks
diego
parents: 5830
diff changeset
32 #define attribute_l1_data_b __attribute__((l1_data_B))
78aa57eba353 FLAT objects cannot have multiple sections, so using the L1 attributes breaks
diego
parents: 5830
diff changeset
33 #else
78aa57eba353 FLAT objects cannot have multiple sections, so using the L1 attributes breaks
diego
parents: 5830
diff changeset
34 #define attribute_l1_text
78aa57eba353 FLAT objects cannot have multiple sections, so using the L1 attributes breaks
diego
parents: 5830
diff changeset
35 #define attribute_l1_data_b
78aa57eba353 FLAT objects cannot have multiple sections, so using the L1 attributes breaks
diego
parents: 5830
diff changeset
36 #endif
5131
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
37
11398
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
38 void ff_bfin_idct (DCTELEM *block) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
39 void ff_bfin_fdct (DCTELEM *block) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
40 void ff_bfin_vp3_idct (DCTELEM *block);
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
41 void ff_bfin_vp3_idct_put (uint8_t *dest, int line_size, DCTELEM *block);
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
42 void ff_bfin_vp3_idct_add (uint8_t *dest, int line_size, DCTELEM *block);
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
43 void ff_bfin_add_pixels_clamped (const DCTELEM *block, uint8_t *dest, int line_size) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
44 void ff_bfin_put_pixels_clamped (const DCTELEM *block, uint8_t *dest, int line_size) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
45 void ff_bfin_diff_pixels (DCTELEM *block, const uint8_t *s1, const uint8_t *s2, int stride) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
46 void ff_bfin_get_pixels (DCTELEM *restrict block, const uint8_t *pixels, int line_size) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
47 int ff_bfin_pix_norm1 (uint8_t * pix, int line_size) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
48 int ff_bfin_z_sad8x8 (uint8_t *blk1, uint8_t *blk2, int dsz, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
49 int ff_bfin_z_sad16x16 (uint8_t *blk1, uint8_t *blk2, int dsz, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
50
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
51 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;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
52 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;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
53 void ff_bfin_put_pixels16_xy2_nornd (uint8_t *block, const uint8_t *s0, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
54 void ff_bfin_put_pixels8_xy2_nornd (uint8_t *block, const uint8_t *s0, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
55
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
56
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
57 int ff_bfin_pix_sum (uint8_t *p, int stride) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
58
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
59 void ff_bfin_put_pixels8uc (uint8_t *block, const uint8_t *s0, const uint8_t *s1, int dest_size, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
60 void ff_bfin_put_pixels16uc (uint8_t *block, const uint8_t *s0, const uint8_t *s1, int dest_size, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
61 void ff_bfin_put_pixels8uc_nornd (uint8_t *block, const uint8_t *s0, const uint8_t *s1, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
62 void ff_bfin_put_pixels16uc_nornd (uint8_t *block, const uint8_t *s0, const uint8_t *s1, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
63
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
64 int ff_bfin_sse4 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
65 int ff_bfin_sse8 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
66 int ff_bfin_sse16 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h) attribute_l1_text;
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
67
00b80bf84ad9 bfin: fix function prototypes
mru
parents: 11063
diff changeset
68
5131
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
69 #ifdef BFIN_PROFILE
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
70
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
71 static double Telem[16];
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
72 static char *TelemNames[16];
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
73 static int TelemCnt;
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
74
5138
189a1229a7a6 removing underscores from block profiling renaming to xx_
mhoffman
parents: 5131
diff changeset
75 #define PROF(lab,e) { int xx_e = e; char*xx_lab = lab; uint64_t xx_t0 = read_time();
189a1229a7a6 removing underscores from block profiling renaming to xx_
mhoffman
parents: 5131
diff changeset
76 #define EPROF() xx_t0 = read_time()-xx_t0; Telem[xx_e] = Telem[xx_e] + xx_t0; TelemNames[xx_e] = xx_lab; }
5131
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
77
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
78 static void prof_report (void)
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
79 {
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
80 int i;
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
81 double s = 0;
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
82 for (i=0;i<16;i++) {
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
83 double v;
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
84 if (TelemNames[i]) {
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
85 v = Telem[i]/TelemCnt;
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
86 av_log (NULL,AV_LOG_DEBUG,"%-20s: %12.4f\t%12.4f\n", TelemNames[i],v,v/64);
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
87 s = s + Telem[i];
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
88 }
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
89 }
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
90 av_log (NULL,AV_LOG_DEBUG,"%-20s: %12.4f\t%12.4f\n%20.4f\t%d\n",
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
91 "total",s/TelemCnt,s/TelemCnt/64,s,TelemCnt);
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
92 }
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
93
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
94 static void bfprof (void)
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
95 {
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
96 static int init;
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
97 if (!init) atexit (prof_report);
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
98 init=1;
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
99 TelemCnt++;
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
100 }
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
101
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
102 #else
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
103 #define PROF(a,b)
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
104 #define EPROF()
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
105 #define bfprof()
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
106 #endif
757efe20a3c8 Blackfin dct_quantize_bfin routine
mhoffman
parents:
diff changeset
107
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6362
diff changeset
108 #endif /* AVCODEC_BFIN_DSPUTIL_BFIN_H */