annotate bfin/dsputil_bfin.h @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +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 */