annotate arm/dsputil_init_armv6.c @ 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 ad6d17b36a3a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7060
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
1 /*
10359
48be79afc72d ARM: clean up dsputil initialisation
mru
parents: 8590
diff changeset
2 * Copyright (c) 2009 Mans Rullgard <mans@mansr.com>
7060
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
3 *
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
4 * This file is part of FFmpeg.
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
5 *
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
8 * License as published by the Free Software Foundation; either
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
10 *
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
14 * Lesser General Public License for more details.
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
15 *
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
19 */
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
20
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
21 #include <stdint.h>
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
22
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
23 #include "libavcodec/avcodec.h"
7060
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
24 #include "libavcodec/dsputil.h"
10359
48be79afc72d ARM: clean up dsputil initialisation
mru
parents: 8590
diff changeset
25 #include "dsputil_arm.h"
7060
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
26
10359
48be79afc72d ARM: clean up dsputil initialisation
mru
parents: 8590
diff changeset
27 void ff_simple_idct_armv6(DCTELEM *data);
48be79afc72d ARM: clean up dsputil initialisation
mru
parents: 8590
diff changeset
28 void ff_simple_idct_put_armv6(uint8_t *dest, int line_size, DCTELEM *data);
48be79afc72d ARM: clean up dsputil initialisation
mru
parents: 8590
diff changeset
29 void ff_simple_idct_add_armv6(uint8_t *dest, int line_size, DCTELEM *data);
7060
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
30
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
31 void ff_put_pixels16_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
32 void ff_put_pixels16_x2_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
33 void ff_put_pixels16_y2_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
34
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
35 void ff_put_pixels16_x2_no_rnd_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
36 void ff_put_pixels16_y2_no_rnd_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
37
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
38 void ff_avg_pixels16_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
39
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
40 void ff_put_pixels8_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
41 void ff_put_pixels8_x2_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
42 void ff_put_pixels8_y2_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
43
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
44 void ff_put_pixels8_x2_no_rnd_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
45 void ff_put_pixels8_y2_no_rnd_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
46
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
47 void ff_avg_pixels8_armv6(uint8_t *, const uint8_t *, int, int);
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
48
10372
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents: 10362
diff changeset
49 void ff_add_pixels_clamped_armv6(const DCTELEM *block,
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents: 10362
diff changeset
50 uint8_t *restrict pixels,
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents: 10362
diff changeset
51 int line_size);
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents: 10362
diff changeset
52
11113
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
53 void ff_get_pixels_armv6(DCTELEM *block, const uint8_t *pixels, int stride);
11114
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
54 void ff_diff_pixels_armv6(DCTELEM *block, const uint8_t *s1,
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
55 const uint8_t *s2, int stride);
11113
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
56
11109
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
57 int ff_pix_abs16_armv6(void *s, uint8_t *blk1, uint8_t *blk2,
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
58 int line_size, int h);
11110
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
59 int ff_pix_abs16_x2_armv6(void *s, uint8_t *blk1, uint8_t *blk2,
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
60 int line_size, int h);
11111
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
61 int ff_pix_abs16_y2_armv6(void *s, uint8_t *blk1, uint8_t *blk2,
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
62 int line_size, int h);
11109
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
63
11112
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
64 int ff_pix_abs8_armv6(void *s, uint8_t *blk1, uint8_t *blk2,
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
65 int line_size, int h);
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
66
11115
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
67 int ff_sse16_armv6(void *s, uint8_t *blk1, uint8_t *blk2,
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
68 int line_size, int h);
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
69
11116
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
70 int ff_pix_norm1_armv6(uint8_t *pix, int line_size);
11117
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
71 int ff_pix_sum_armv6(uint8_t *pix, int line_size);
11116
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
72
10359
48be79afc72d ARM: clean up dsputil initialisation
mru
parents: 8590
diff changeset
73 void av_cold ff_dsputil_init_armv6(DSPContext* c, AVCodecContext *avctx)
7060
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
74 {
10359
48be79afc72d ARM: clean up dsputil initialisation
mru
parents: 8590
diff changeset
75 if (!avctx->lowres && (avctx->idct_algo == FF_IDCT_AUTO ||
48be79afc72d ARM: clean up dsputil initialisation
mru
parents: 8590
diff changeset
76 avctx->idct_algo == FF_IDCT_SIMPLEARMV6)) {
10362
838b42ccd65e ARM: cosmetics
mru
parents: 10359
diff changeset
77 c->idct_put = ff_simple_idct_put_armv6;
838b42ccd65e ARM: cosmetics
mru
parents: 10359
diff changeset
78 c->idct_add = ff_simple_idct_add_armv6;
838b42ccd65e ARM: cosmetics
mru
parents: 10359
diff changeset
79 c->idct = ff_simple_idct_armv6;
838b42ccd65e ARM: cosmetics
mru
parents: 10359
diff changeset
80 c->idct_permutation_type = FF_LIBMPEG2_IDCT_PERM;
10359
48be79afc72d ARM: clean up dsputil initialisation
mru
parents: 8590
diff changeset
81 }
10372
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents: 10362
diff changeset
82
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
83 c->put_pixels_tab[0][0] = ff_put_pixels16_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
84 c->put_pixels_tab[0][1] = ff_put_pixels16_x2_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
85 c->put_pixels_tab[0][2] = ff_put_pixels16_y2_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
86 /* c->put_pixels_tab[0][3] = ff_put_pixels16_xy2_armv6; */
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
87 c->put_pixels_tab[1][0] = ff_put_pixels8_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
88 c->put_pixels_tab[1][1] = ff_put_pixels8_x2_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
89 c->put_pixels_tab[1][2] = ff_put_pixels8_y2_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
90 /* c->put_pixels_tab[1][3] = ff_put_pixels8_xy2_armv6; */
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
91
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
92 c->put_no_rnd_pixels_tab[0][0] = ff_put_pixels16_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
93 c->put_no_rnd_pixels_tab[0][1] = ff_put_pixels16_x2_no_rnd_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
94 c->put_no_rnd_pixels_tab[0][2] = ff_put_pixels16_y2_no_rnd_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
95 /* c->put_no_rnd_pixels_tab[0][3] = ff_put_pixels16_xy2_no_rnd_armv6; */
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
96 c->put_no_rnd_pixels_tab[1][0] = ff_put_pixels8_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
97 c->put_no_rnd_pixels_tab[1][1] = ff_put_pixels8_x2_no_rnd_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
98 c->put_no_rnd_pixels_tab[1][2] = ff_put_pixels8_y2_no_rnd_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
99 /* c->put_no_rnd_pixels_tab[1][3] = ff_put_pixels8_xy2_no_rnd_armv6; */
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
100
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
101 c->avg_pixels_tab[0][0] = ff_avg_pixels16_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
102 c->avg_pixels_tab[1][0] = ff_avg_pixels8_armv6;
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
103
10372
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents: 10362
diff changeset
104 c->add_pixels_clamped = ff_add_pixels_clamped_armv6;
11113
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
105 c->get_pixels = ff_get_pixels_armv6;
11114
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
106 c->diff_pixels = ff_diff_pixels_armv6;
11109
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
107
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
108 c->pix_abs[0][0] = ff_pix_abs16_armv6;
11110
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
109 c->pix_abs[0][1] = ff_pix_abs16_x2_armv6;
11111
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
110 c->pix_abs[0][2] = ff_pix_abs16_y2_armv6;
11109
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
111
11112
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
112 c->pix_abs[1][0] = ff_pix_abs8_armv6;
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
113
11109
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
114 c->sad[0] = ff_pix_abs16_armv6;
11112
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
115 c->sad[1] = ff_pix_abs8_armv6;
11115
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
116
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
117 c->sse[0] = ff_sse16_armv6;
11116
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
118
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
119 c->pix_norm1 = ff_pix_norm1_armv6;
11117
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
120 c->pix_sum = ff_pix_sum_armv6;
7060
9e5b6bf87f76 convert DOS-style carriage return to Unix-style
gpoirier
parents: 6786
diff changeset
121 }