annotate snow.h @ 5565:93082c591c8b libavcodec

Change rounding of the horizontal DWT to match the vertical one. This allows some simplifications and optimizations and should not have any effect on quality.
author michael
date Tue, 21 Aug 2007 16:29:40 +0000
parents 8dcb8c89a661
children 3ae03eacbe9f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
1 /*
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
2 * Copyright (C) 2004 Michael Niedermayer <michaelni@gmx.at>
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
3 * Copyright (C) 2006 Robert Edele <yartrebo@earthlink.net>
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
4 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3582
diff changeset
5 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3582
diff changeset
6 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3582
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3582
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
11 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3582
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
15 * Lesser General Public License for more details.
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
16 *
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3582
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
20 */
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
21
5200
be79f0a00c10 Remove leading underscores from specifiers, they are reserved.
diego
parents: 4436
diff changeset
22 #ifndef SNOW_H
be79f0a00c10 Remove leading underscores from specifiers, they are reserved.
diego
parents: 4436
diff changeset
23 #define SNOW_H
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
24
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
25 #include "dsputil.h"
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
26
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
27 #define MID_STATE 128
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
28
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
29 #define MAX_DECOMPOSITIONS 8
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
30 #define MAX_PLANES 4
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
31 #define QSHIFT 5
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
32 #define QROOT (1<<QSHIFT)
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
33 #define LOSSLESS_QLOG -128
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
34 #define FRAC_BITS 8
3314
aea2230e6033 Snow multiple reference frames
lorenm
parents: 3223
diff changeset
35 #define MAX_REF_FRAMES 8
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
36
3206
c1add9fe5c65 Snow mmx + sse2 part 2
corey
parents: 3198
diff changeset
37 #define LOG2_OBMC_MAX 8
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
38 #define OBMC_MAX (1<<(LOG2_OBMC_MAX))
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
39
3326
fb245e797c5d Snow: cosmetics
lorenm
parents: 3323
diff changeset
40 #define DWT_97 0
fb245e797c5d Snow: cosmetics
lorenm
parents: 3323
diff changeset
41 #define DWT_53 1
fb245e797c5d Snow: cosmetics
lorenm
parents: 3323
diff changeset
42 #define DWT_X 2
fb245e797c5d Snow: cosmetics
lorenm
parents: 3323
diff changeset
43
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
44 /** Used to minimize the amount of memory used in order to optimize cache performance. **/
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
45 struct slice_buffer_s {
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
46 DWTELEM * * line; ///< For use by idwt and predict_slices.
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
47 DWTELEM * * data_stack; ///< Used for internal purposes.
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
48 int data_stack_top;
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
49 int line_count;
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
50 int line_width;
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
51 int data_count;
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
52 DWTELEM * base_buffer; ///< Buffer that this structure is caching.
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
53 };
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
54
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
55 #define liftS lift
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
56 #define lift5 lift
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
57 #if 1
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
58 #define W_AM 3
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
59 #define W_AO 0
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
60 #define W_AS 1
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
61
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
62 #undef liftS
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
63 #define W_BM 1
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
64 #define W_BO 8
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
65 #define W_BS 4
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
66
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
67 #define W_CM 1
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
68 #define W_CO 0
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
69 #define W_CS 0
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
70
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
71 #define W_DM 3
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
72 #define W_DO 4
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
73 #define W_DS 3
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
74 #elif 0
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
75 #define W_AM 55
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
76 #define W_AO 16
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
77 #define W_AS 5
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
78
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
79 #define W_BM 3
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
80 #define W_BO 32
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
81 #define W_BS 6
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
82
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
83 #define W_CM 127
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
84 #define W_CO 64
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
85 #define W_CS 7
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
86
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
87 #define W_DM 7
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
88 #define W_DO 8
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
89 #define W_DS 4
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
90 #elif 0
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
91 #define W_AM 97
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
92 #define W_AO 32
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
93 #define W_AS 6
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
94
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
95 #define W_BM 63
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
96 #define W_BO 512
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
97 #define W_BS 10
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
98
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
99 #define W_CM 13
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
100 #define W_CO 8
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
101 #define W_CS 4
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
102
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
103 #define W_DM 15
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
104 #define W_DO 16
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
105 #define W_DS 5
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
106
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
107 #else
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
108
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
109 #define W_AM 203
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
110 #define W_AO 64
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
111 #define W_AS 7
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
112
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
113 #define W_BM 217
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
114 #define W_BO 2048
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
115 #define W_BS 12
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
116
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
117 #define W_CM 113
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
118 #define W_CO 64
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
119 #define W_CS 7
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
120
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
121 #define W_DM 227
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
122 #define W_DO 128
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
123 #define W_DS 9
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
124 #endif
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
125
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
126 extern void ff_snow_vertical_compose97i(DWTELEM *b0, DWTELEM *b1, DWTELEM *b2, DWTELEM *b3, DWTELEM *b4, DWTELEM *b5, int width);
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
127 extern void ff_snow_horizontal_compose97i(DWTELEM *b, int width);
4436
d3e389536b0a Add the const specifier as needed to reduce the number of warnings.
takis
parents: 4283
diff changeset
128 extern void ff_snow_inner_add_yblock(const uint8_t *obmc, const int obmc_stride, uint8_t * * block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer * sb, int add, uint8_t * dst8);
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
129
3582
6310389a9688 Compile fix (for GCC<3.3) when encoders are disabled
gpoirier
parents: 3326
diff changeset
130 #ifdef CONFIG_SNOW_ENCODER
4197
bbe0bc387a19 revert bad checkin
mru
parents: 4196
diff changeset
131 int w53_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h);
bbe0bc387a19 revert bad checkin
mru
parents: 4196
diff changeset
132 int w97_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h);
3582
6310389a9688 Compile fix (for GCC<3.3) when encoders are disabled
gpoirier
parents: 3326
diff changeset
133 #else
6310389a9688 Compile fix (for GCC<3.3) when encoders are disabled
gpoirier
parents: 3326
diff changeset
134 static int w53_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h) {assert (0);}
6310389a9688 Compile fix (for GCC<3.3) when encoders are disabled
gpoirier
parents: 3326
diff changeset
135 static int w97_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h) {assert (0);}
6310389a9688 Compile fix (for GCC<3.3) when encoders are disabled
gpoirier
parents: 3326
diff changeset
136 #endif
3223
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
137
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
138 /* C bits used by mmx/sse2/altivec */
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
139
4283
d6f83e2f8804 rename always_inline to av_always_inline and move to common.h
mru
parents: 4197
diff changeset
140 static av_always_inline void snow_interleave_line_header(int * i, int width, DWTELEM * low, DWTELEM * high){
3223
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
141 (*i) = (width) - 2;
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
142
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
143 if (width & 1){
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
144 low[(*i)+1] = low[((*i)+1)>>1];
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
145 (*i)--;
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
146 }
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
147 }
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
148
4283
d6f83e2f8804 rename always_inline to av_always_inline and move to common.h
mru
parents: 4197
diff changeset
149 static av_always_inline void snow_interleave_line_footer(int * i, DWTELEM * low, DWTELEM * high){
3223
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
150 for (; (*i)>=0; (*i)-=2){
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
151 low[(*i)+1] = high[(*i)>>1];
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
152 low[*i] = low[(*i)>>1];
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
153 }
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
154 }
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
155
4283
d6f83e2f8804 rename always_inline to av_always_inline and move to common.h
mru
parents: 4197
diff changeset
156 static av_always_inline void snow_horizontal_compose_lift_lead_out(int i, DWTELEM * dst, DWTELEM * src, DWTELEM * ref, int width, int w, int lift_high, int mul, int add, int shift){
3223
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
157 for(; i<w; i++){
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
158 dst[i] = src[i] - ((mul * (ref[i] + ref[i + 1]) + add) >> shift);
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
159 }
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
160
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
161 if((width^lift_high)&1){
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
162 dst[w] = src[w] - ((mul * 2 * ref[w] + add) >> shift);
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
163 }
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
164 }
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
165
4283
d6f83e2f8804 rename always_inline to av_always_inline and move to common.h
mru
parents: 4197
diff changeset
166 static av_always_inline void snow_horizontal_compose_liftS_lead_out(int i, DWTELEM * dst, DWTELEM * src, DWTELEM * ref, int width, int w){
3223
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
167 for(; i<w; i++){
5565
93082c591c8b Change rounding of the horizontal DWT to match the vertical one.
michael
parents: 5552
diff changeset
168 dst[i] = src[i] + ((ref[i] + ref[(i+1)]+W_BO + 4 * src[i]) >> W_BS);
3223
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
169 }
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
170
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
171 if(width&1){
5565
93082c591c8b Change rounding of the horizontal DWT to match the vertical one.
michael
parents: 5552
diff changeset
172 dst[w] = src[w] + ((2 * ref[w] + W_BO + 4 * src[w]) >> W_BS);
3223
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
173 }
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
174 }
8f048c3295ff altivec support for snow
lu_zero
parents: 3206
diff changeset
175
3198
6b9f0c4fbdbe First part of a series of speed-enchancing patches.
gpoirier
parents:
diff changeset
176 #endif