annotate h264dsp.c @ 12488:351a81a23343 libavcodec

Set a constant frame size for encoding G.726 audio.
author jbr
date Sat, 11 Sep 2010 19:52:09 +0000
parents 7dd2a45249a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
1 /*
11499
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
2 * H.26L/H.264/AVC/JVT/14496-10/... encoder/decoder
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
3 * Copyright (c) 2003-2010 Michael Niedermayer <michaelni@gmx.at>
5214
470601203f44 Group all copyright and author notices together.
diego
parents: 5151
diff changeset
4 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3807
diff changeset
5 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3807
diff changeset
6 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3807
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
429
718a22dc121f license/copyright change
glantau
parents: 403
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
718a22dc121f license/copyright change
glantau
parents: 403
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: 3807
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
11 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3807
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
429
718a22dc121f license/copyright change
glantau
parents: 403
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
718a22dc121f license/copyright change
glantau
parents: 403
diff changeset
15 * Lesser General Public License for more details.
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
16 *
429
718a22dc121f license/copyright change
glantau
parents: 403
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: 3807
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
3036
0b546eab515d Update licensing information: The FSF changed postal address.
diego
parents: 3029
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
20 */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2834
diff changeset
21
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1101
diff changeset
22 /**
11644
7dd2a45249a9 Remove explicit filename from Doxygen @file commands.
diego
parents: 11506
diff changeset
23 * @file
11499
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
24 * H.264 / AVC / MPEG4 part10 DSP functions.
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
25 * @author Michael Niedermayer <michaelni@gmx.at>
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1101
diff changeset
26 */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2834
diff changeset
27
11499
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
28 #include <stdint.h>
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
29 #include "avcodec.h"
11499
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
30 #include "h264dsp.h"
1168
5af9aeadbdc3 H264 decoder & demuxer
michaelni
parents: 1106
diff changeset
31
4594
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
32 #define op_scale1(x) block[x] = av_clip_uint8( (block[x]*weight + offset) >> log2_denom )
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
33 #define op_scale2(x) dst[x] = av_clip_uint8( (src[x]*weights + dst[x]*weightd + offset) >> (log2_denom+1))
2415
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
34 #define H264_WEIGHT(W,H) \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
35 static void weight_h264_pixels ## W ## x ## H ## _c(uint8_t *block, int stride, int log2_denom, int weight, int offset){ \
3029
7a92269a3ccd tweak h264_biweight
lorenm
parents: 3020
diff changeset
36 int y; \
2415
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
37 offset <<= log2_denom; \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
38 if(log2_denom) offset += 1<<(log2_denom-1); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
39 for(y=0; y<H; y++, block += stride){ \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
40 op_scale1(0); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
41 op_scale1(1); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
42 if(W==2) continue; \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
43 op_scale1(2); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
44 op_scale1(3); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
45 if(W==4) continue; \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
46 op_scale1(4); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
47 op_scale1(5); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
48 op_scale1(6); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
49 op_scale1(7); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
50 if(W==8) continue; \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
51 op_scale1(8); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
52 op_scale1(9); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
53 op_scale1(10); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
54 op_scale1(11); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
55 op_scale1(12); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
56 op_scale1(13); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
57 op_scale1(14); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
58 op_scale1(15); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
59 } \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
60 } \
3029
7a92269a3ccd tweak h264_biweight
lorenm
parents: 3020
diff changeset
61 static void biweight_h264_pixels ## W ## x ## H ## _c(uint8_t *dst, uint8_t *src, int stride, int log2_denom, int weightd, int weights, int offset){ \
7a92269a3ccd tweak h264_biweight
lorenm
parents: 3020
diff changeset
62 int y; \
7a92269a3ccd tweak h264_biweight
lorenm
parents: 3020
diff changeset
63 offset = ((offset + 1) | 1) << log2_denom; \
2415
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
64 for(y=0; y<H; y++, dst += stride, src += stride){ \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
65 op_scale2(0); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
66 op_scale2(1); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
67 if(W==2) continue; \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
68 op_scale2(2); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
69 op_scale2(3); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
70 if(W==4) continue; \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
71 op_scale2(4); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
72 op_scale2(5); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
73 op_scale2(6); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
74 op_scale2(7); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
75 if(W==8) continue; \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
76 op_scale2(8); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
77 op_scale2(9); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
78 op_scale2(10); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
79 op_scale2(11); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
80 op_scale2(12); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
81 op_scale2(13); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
82 op_scale2(14); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
83 op_scale2(15); \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
84 } \
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
85 }
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
86
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
87 H264_WEIGHT(16,16)
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
88 H264_WEIGHT(16,8)
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
89 H264_WEIGHT(8,16)
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
90 H264_WEIGHT(8,8)
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
91 H264_WEIGHT(8,4)
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
92 H264_WEIGHT(4,8)
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
93 H264_WEIGHT(4,4)
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
94 H264_WEIGHT(4,2)
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
95 H264_WEIGHT(2,4)
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
96 H264_WEIGHT(2,2)
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
97
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
98 #undef op_scale1
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
99 #undef op_scale2
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
100 #undef H264_WEIGHT
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
101
10941
28edcc8c54c0 Mark the h264 c loop filter as av_always_inline av_flatten to make sure its
michael
parents: 10940
diff changeset
102 static av_always_inline av_flatten void h264_loop_filter_luma_c(uint8_t *pix, int xstride, int ystride, int alpha, int beta, int8_t *tc0)
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
103 {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
104 int i, d;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
105 for( i = 0; i < 4; i++ ) {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
106 if( tc0[i] < 0 ) {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
107 pix += 4*ystride;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
108 continue;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
109 }
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
110 for( d = 0; d < 4; d++ ) {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
111 const int p0 = pix[-1*xstride];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
112 const int p1 = pix[-2*xstride];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
113 const int p2 = pix[-3*xstride];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
114 const int q0 = pix[0];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
115 const int q1 = pix[1*xstride];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
116 const int q2 = pix[2*xstride];
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2834
diff changeset
117
4001
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
118 if( FFABS( p0 - q0 ) < alpha &&
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
119 FFABS( p1 - p0 ) < beta &&
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
120 FFABS( q1 - q0 ) < beta ) {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2834
diff changeset
121
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
122 int tc = tc0[i];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
123 int i_delta;
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2834
diff changeset
124
4001
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
125 if( FFABS( p2 - p0 ) < beta ) {
10940
563cb9b1a9b7 skip outer pixels if possible in h264_loop_filter_luma_c().
michael
parents: 10878
diff changeset
126 if(tc0[i])
4594
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
127 pix[-2*xstride] = p1 + av_clip( (( p2 + ( ( p0 + q0 + 1 ) >> 1 ) ) >> 1) - p1, -tc0[i], tc0[i] );
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
128 tc++;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
129 }
4001
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
130 if( FFABS( q2 - q0 ) < beta ) {
10940
563cb9b1a9b7 skip outer pixels if possible in h264_loop_filter_luma_c().
michael
parents: 10878
diff changeset
131 if(tc0[i])
4594
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
132 pix[ xstride] = q1 + av_clip( (( q2 + ( ( p0 + q0 + 1 ) >> 1 ) ) >> 1) - q1, -tc0[i], tc0[i] );
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
133 tc++;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
134 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2834
diff changeset
135
4594
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
136 i_delta = av_clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc );
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
137 pix[-xstride] = av_clip_uint8( p0 + i_delta ); /* p0' */
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
138 pix[0] = av_clip_uint8( q0 - i_delta ); /* q0' */
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
139 }
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
140 pix += ystride;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
141 }
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
142 }
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
143 }
2707
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
144 static void h264_v_loop_filter_luma_c(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0)
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
145 {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
146 h264_loop_filter_luma_c(pix, stride, 1, alpha, beta, tc0);
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
147 }
2707
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
148 static void h264_h_loop_filter_luma_c(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0)
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
149 {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
150 h264_loop_filter_luma_c(pix, 1, stride, alpha, beta, tc0);
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
151 }
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
152
10941
28edcc8c54c0 Mark the h264 c loop filter as av_always_inline av_flatten to make sure its
michael
parents: 10940
diff changeset
153 static av_always_inline av_flatten void h264_loop_filter_luma_intra_c(uint8_t *pix, int xstride, int ystride, int alpha, int beta)
8395
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
154 {
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
155 int d;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
156 for( d = 0; d < 16; d++ ) {
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
157 const int p2 = pix[-3*xstride];
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
158 const int p1 = pix[-2*xstride];
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
159 const int p0 = pix[-1*xstride];
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
160
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
161 const int q0 = pix[ 0*xstride];
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
162 const int q1 = pix[ 1*xstride];
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
163 const int q2 = pix[ 2*xstride];
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
164
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
165 if( FFABS( p0 - q0 ) < alpha &&
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
166 FFABS( p1 - p0 ) < beta &&
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
167 FFABS( q1 - q0 ) < beta ) {
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
168
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
169 if(FFABS( p0 - q0 ) < (( alpha >> 2 ) + 2 )){
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
170 if( FFABS( p2 - p0 ) < beta)
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
171 {
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
172 const int p3 = pix[-4*xstride];
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
173 /* p0', p1', p2' */
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
174 pix[-1*xstride] = ( p2 + 2*p1 + 2*p0 + 2*q0 + q1 + 4 ) >> 3;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
175 pix[-2*xstride] = ( p2 + p1 + p0 + q0 + 2 ) >> 2;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
176 pix[-3*xstride] = ( 2*p3 + 3*p2 + p1 + p0 + q0 + 4 ) >> 3;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
177 } else {
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
178 /* p0' */
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
179 pix[-1*xstride] = ( 2*p1 + p0 + q1 + 2 ) >> 2;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
180 }
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
181 if( FFABS( q2 - q0 ) < beta)
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
182 {
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
183 const int q3 = pix[3*xstride];
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
184 /* q0', q1', q2' */
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
185 pix[0*xstride] = ( p1 + 2*p0 + 2*q0 + 2*q1 + q2 + 4 ) >> 3;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
186 pix[1*xstride] = ( p0 + q0 + q1 + q2 + 2 ) >> 2;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
187 pix[2*xstride] = ( 2*q3 + 3*q2 + q1 + q0 + p0 + 4 ) >> 3;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
188 } else {
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
189 /* q0' */
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
190 pix[0*xstride] = ( 2*q1 + q0 + p1 + 2 ) >> 2;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
191 }
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
192 }else{
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
193 /* p0', q0' */
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
194 pix[-1*xstride] = ( 2*p1 + p0 + q1 + 2 ) >> 2;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
195 pix[ 0*xstride] = ( 2*q1 + q0 + p1 + 2 ) >> 2;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
196 }
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
197 }
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
198 pix += ystride;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
199 }
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
200 }
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
201 static void h264_v_loop_filter_luma_intra_c(uint8_t *pix, int stride, int alpha, int beta)
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
202 {
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
203 h264_loop_filter_luma_intra_c(pix, stride, 1, alpha, beta);
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
204 }
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
205 static void h264_h_loop_filter_luma_intra_c(uint8_t *pix, int stride, int alpha, int beta)
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
206 {
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
207 h264_loop_filter_luma_intra_c(pix, 1, stride, alpha, beta);
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
208 }
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
209
10941
28edcc8c54c0 Mark the h264 c loop filter as av_always_inline av_flatten to make sure its
michael
parents: 10940
diff changeset
210 static av_always_inline av_flatten void h264_loop_filter_chroma_c(uint8_t *pix, int xstride, int ystride, int alpha, int beta, int8_t *tc0)
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
211 {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
212 int i, d;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
213 for( i = 0; i < 4; i++ ) {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
214 const int tc = tc0[i];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
215 if( tc <= 0 ) {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
216 pix += 2*ystride;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
217 continue;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
218 }
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
219 for( d = 0; d < 2; d++ ) {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
220 const int p0 = pix[-1*xstride];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
221 const int p1 = pix[-2*xstride];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
222 const int q0 = pix[0];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
223 const int q1 = pix[1*xstride];
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
224
4001
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
225 if( FFABS( p0 - q0 ) < alpha &&
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
226 FFABS( p1 - p0 ) < beta &&
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
227 FFABS( q1 - q0 ) < beta ) {
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
228
4594
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
229 int delta = av_clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc );
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
230
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
231 pix[-xstride] = av_clip_uint8( p0 + delta ); /* p0' */
a96d905dcbaa Add av_ prefix to clip functions
reimar
parents: 4296
diff changeset
232 pix[0] = av_clip_uint8( q0 - delta ); /* q0' */
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
233 }
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
234 pix += ystride;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
235 }
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
236 }
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
237 }
2707
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
238 static void h264_v_loop_filter_chroma_c(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0)
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
239 {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
240 h264_loop_filter_chroma_c(pix, stride, 1, alpha, beta, tc0);
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
241 }
2707
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
242 static void h264_h_loop_filter_chroma_c(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0)
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
243 {
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
244 h264_loop_filter_chroma_c(pix, 1, stride, alpha, beta, tc0);
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
245 }
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
246
10941
28edcc8c54c0 Mark the h264 c loop filter as av_always_inline av_flatten to make sure its
michael
parents: 10940
diff changeset
247 static av_always_inline av_flatten void h264_loop_filter_chroma_intra_c(uint8_t *pix, int xstride, int ystride, int alpha, int beta)
2707
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
248 {
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
249 int d;
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
250 for( d = 0; d < 8; d++ ) {
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
251 const int p0 = pix[-1*xstride];
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
252 const int p1 = pix[-2*xstride];
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
253 const int q0 = pix[0];
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
254 const int q1 = pix[1*xstride];
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
255
4001
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
256 if( FFABS( p0 - q0 ) < alpha &&
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
257 FFABS( p1 - p0 ) < beta &&
34fdffe98bd0 Rename ABS macro to FFABS.
diego
parents: 3947
diff changeset
258 FFABS( q1 - q0 ) < beta ) {
2707
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
259
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
260 pix[-xstride] = ( 2*p1 + p0 + q1 + 2 ) >> 2; /* p0' */
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
261 pix[0] = ( 2*q1 + q0 + p1 + 2 ) >> 2; /* q0' */
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
262 }
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
263 pix += ystride;
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
264 }
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
265 }
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
266 static void h264_v_loop_filter_chroma_intra_c(uint8_t *pix, int stride, int alpha, int beta)
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
267 {
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
268 h264_loop_filter_chroma_intra_c(pix, stride, 1, alpha, beta);
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
269 }
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
270 static void h264_h_loop_filter_chroma_intra_c(uint8_t *pix, int stride, int alpha, int beta)
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
271 {
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
272 h264_loop_filter_chroma_intra_c(pix, 1, stride, alpha, beta);
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
273 }
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
274
11499
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
275 void ff_h264dsp_init(H264DSPContext *c)
296
c1a8a1b4a24b sizeof(s->block) isnt 64*6*2 anymore bugfix
michaelni
parents: 294
diff changeset
276 {
11499
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
277 c->h264_idct_add= ff_h264_idct_add_c;
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
278 c->h264_idct8_add= ff_h264_idct8_add_c;
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
279 c->h264_idct_dc_add= ff_h264_idct_dc_add_c;
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
280 c->h264_idct8_dc_add= ff_h264_idct8_dc_add_c;
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
281 c->h264_idct_add16 = ff_h264_idct_add16_c;
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
282 c->h264_idct8_add4 = ff_h264_idct8_add4_c;
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
283 c->h264_idct_add8 = ff_h264_idct_add8_c;
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
284 c->h264_idct_add16intra= ff_h264_idct_add16intra_c;
857
b510a7b6decd 100l for kabi (fixing qpel)
michaelni
parents: 853
diff changeset
285
2415
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
286 c->weight_h264_pixels_tab[0]= weight_h264_pixels16x16_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
287 c->weight_h264_pixels_tab[1]= weight_h264_pixels16x8_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
288 c->weight_h264_pixels_tab[2]= weight_h264_pixels8x16_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
289 c->weight_h264_pixels_tab[3]= weight_h264_pixels8x8_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
290 c->weight_h264_pixels_tab[4]= weight_h264_pixels8x4_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
291 c->weight_h264_pixels_tab[5]= weight_h264_pixels4x8_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
292 c->weight_h264_pixels_tab[6]= weight_h264_pixels4x4_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
293 c->weight_h264_pixels_tab[7]= weight_h264_pixels4x2_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
294 c->weight_h264_pixels_tab[8]= weight_h264_pixels2x4_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
295 c->weight_h264_pixels_tab[9]= weight_h264_pixels2x2_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
296 c->biweight_h264_pixels_tab[0]= biweight_h264_pixels16x16_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
297 c->biweight_h264_pixels_tab[1]= biweight_h264_pixels16x8_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
298 c->biweight_h264_pixels_tab[2]= biweight_h264_pixels8x16_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
299 c->biweight_h264_pixels_tab[3]= biweight_h264_pixels8x8_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
300 c->biweight_h264_pixels_tab[4]= biweight_h264_pixels8x4_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
301 c->biweight_h264_pixels_tab[5]= biweight_h264_pixels4x8_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
302 c->biweight_h264_pixels_tab[6]= biweight_h264_pixels4x4_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
303 c->biweight_h264_pixels_tab[7]= biweight_h264_pixels4x2_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
304 c->biweight_h264_pixels_tab[8]= biweight_h264_pixels2x4_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
305 c->biweight_h264_pixels_tab[9]= biweight_h264_pixels2x2_c;
db2cf6005d19 H.264 weighted prediction.
lorenm
parents: 2382
diff changeset
306
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
307 c->h264_v_loop_filter_luma= h264_v_loop_filter_luma_c;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
308 c->h264_h_loop_filter_luma= h264_h_loop_filter_luma_c;
8395
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
309 c->h264_v_loop_filter_luma_intra= h264_v_loop_filter_luma_intra_c;
195cba8f6257 Move filter_luma_intra into dsputil for later addition of asm.
darkshikari
parents: 8375
diff changeset
310 c->h264_h_loop_filter_luma_intra= h264_h_loop_filter_luma_intra_c;
2633
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
311 c->h264_v_loop_filter_chroma= h264_v_loop_filter_chroma_c;
72e6ffa1f3a5 MMX for H.264 deblocking filter
lorenm
parents: 2522
diff changeset
312 c->h264_h_loop_filter_chroma= h264_h_loop_filter_chroma_c;
2707
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
313 c->h264_v_loop_filter_chroma_intra= h264_v_loop_filter_chroma_intra_c;
360024d31dab H.264 deblocking optimizations (mmx for chroma_bS4 case, convert existing cases to 8-bit math)
lorenm
parents: 2696
diff changeset
314 c->h264_h_loop_filter_chroma_intra= h264_h_loop_filter_chroma_intra_c;
3645
47821be55b6c mmx implementation of deblocking strength decision.
lorenm
parents: 3568
diff changeset
315 c->h264_loop_filter_strength= NULL;
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2834
diff changeset
316
11499
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
317 if (ARCH_ARM) ff_h264dsp_init_arm(c);
11506
c7743bcad821 Fix compilation on PPC 470.
cehoyos
parents: 11499
diff changeset
318 if (HAVE_ALTIVEC) ff_h264dsp_init_ppc(c);
11499
2a4dc3c0b012 Move H264 dsputil functions into their own struct
mru
parents: 11485
diff changeset
319 if (HAVE_MMX) ff_h264dsp_init_x86(c);
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
320 }