~ubuntu-branches/ubuntu/utopic/libav/utopic

« back to all changes in this revision

Viewing changes to libavcodec/x86/vp8dsp_init.c

  • Committer: Package Import Robot
  • Author(s): Reinhard Tartler
  • Date: 2014-05-11 12:28:45 UTC
  • mfrom: (1.3.42 sid)
  • Revision ID: package-import@ubuntu.com-20140511122845-zxdom35pimot5eat
Tags: 6:10.1-1
* New upstream release 10:
   - pcm-dvd: Fix 20bit decoding (bug/592)
   - avi: Improve non-interleaved detection (bug/666)
   - arm: hpeldsp: fix put_pixels8_y2_{,no_rnd_}armv6
   - arm: hpeldsp: prevent overreads in armv6 asm (bug/646)
   - avfilter: Add missing emms_c when needed
   - rtmpproto: Check the buffer sizes when copying app/playpath strings
   - swscale: Fix an undefined behaviour
   - vp9: Read the frame size as unsigned
   - dcadec: Use correct channel count in stereo downmix check
   - dcadec: Do not decode the XCh extension when downmixing to stereo
   - matroska: add the Opus mapping
   - matroskadec: read the CodecDelay element
   - rtmpproto: Make sure to pass on the error code if read_connect failed
   - lavr: allocate the resampling buffer with a positive size
   - mp3enc: Properly write bitrate value in XING header (Closes: #736088)
   - golomb: Fix the implementation of get_se_golomb_long
* Drop debian/libav-tools.maintscript. ffserver is no longer found in
  stable, and this seems to cause other problems today (Closes: #742676)

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
21
 */
22
22
 
 
23
#include "libavutil/attributes.h"
23
24
#include "libavutil/cpu.h"
24
25
#include "libavutil/mem.h"
25
26
#include "libavutil/x86/asm.h"
 
27
#include "libavutil/x86/cpu.h"
26
28
#include "libavcodec/vp8dsp.h"
27
29
 
28
30
#if HAVE_YASM
30
32
/*
31
33
 * MC functions
32
34
 */
33
 
extern void ff_put_vp8_epel4_h4_mmxext(uint8_t *dst, ptrdiff_t dststride,
34
 
                                       uint8_t *src, ptrdiff_t srcstride,
35
 
                                       int height, int mx, int my);
36
 
extern void ff_put_vp8_epel4_h6_mmxext(uint8_t *dst, ptrdiff_t dststride,
37
 
                                       uint8_t *src, ptrdiff_t srcstride,
38
 
                                       int height, int mx, int my);
39
 
extern void ff_put_vp8_epel4_v4_mmxext(uint8_t *dst, ptrdiff_t dststride,
40
 
                                       uint8_t *src, ptrdiff_t srcstride,
41
 
                                       int height, int mx, int my);
42
 
extern void ff_put_vp8_epel4_v6_mmxext(uint8_t *dst, ptrdiff_t dststride,
43
 
                                       uint8_t *src, ptrdiff_t srcstride,
44
 
                                       int height, int mx, int my);
45
 
 
46
 
extern void ff_put_vp8_epel8_h4_sse2  (uint8_t *dst, ptrdiff_t dststride,
47
 
                                       uint8_t *src, ptrdiff_t srcstride,
48
 
                                       int height, int mx, int my);
49
 
extern void ff_put_vp8_epel8_h6_sse2  (uint8_t *dst, ptrdiff_t dststride,
50
 
                                       uint8_t *src, ptrdiff_t srcstride,
51
 
                                       int height, int mx, int my);
52
 
extern void ff_put_vp8_epel8_v4_sse2  (uint8_t *dst, ptrdiff_t dststride,
53
 
                                       uint8_t *src, ptrdiff_t srcstride,
54
 
                                       int height, int mx, int my);
55
 
extern void ff_put_vp8_epel8_v6_sse2  (uint8_t *dst, ptrdiff_t dststride,
56
 
                                       uint8_t *src, ptrdiff_t srcstride,
57
 
                                       int height, int mx, int my);
58
 
 
59
 
extern void ff_put_vp8_epel4_h4_ssse3 (uint8_t *dst, ptrdiff_t dststride,
60
 
                                       uint8_t *src, ptrdiff_t srcstride,
61
 
                                       int height, int mx, int my);
62
 
extern void ff_put_vp8_epel4_h6_ssse3 (uint8_t *dst, ptrdiff_t dststride,
63
 
                                       uint8_t *src, ptrdiff_t srcstride,
64
 
                                       int height, int mx, int my);
65
 
extern void ff_put_vp8_epel4_v4_ssse3 (uint8_t *dst, ptrdiff_t dststride,
66
 
                                       uint8_t *src, ptrdiff_t srcstride,
67
 
                                       int height, int mx, int my);
68
 
extern void ff_put_vp8_epel4_v6_ssse3 (uint8_t *dst, ptrdiff_t dststride,
69
 
                                       uint8_t *src, ptrdiff_t srcstride,
70
 
                                       int height, int mx, int my);
71
 
extern void ff_put_vp8_epel8_h4_ssse3 (uint8_t *dst, ptrdiff_t dststride,
72
 
                                       uint8_t *src, ptrdiff_t srcstride,
73
 
                                       int height, int mx, int my);
74
 
extern void ff_put_vp8_epel8_h6_ssse3 (uint8_t *dst, ptrdiff_t dststride,
75
 
                                       uint8_t *src, ptrdiff_t srcstride,
76
 
                                       int height, int mx, int my);
77
 
extern void ff_put_vp8_epel8_v4_ssse3 (uint8_t *dst, ptrdiff_t dststride,
78
 
                                       uint8_t *src, ptrdiff_t srcstride,
79
 
                                       int height, int mx, int my);
80
 
extern void ff_put_vp8_epel8_v6_ssse3 (uint8_t *dst, ptrdiff_t dststride,
81
 
                                       uint8_t *src, ptrdiff_t srcstride,
82
 
                                       int height, int mx, int my);
83
 
 
84
 
extern void ff_put_vp8_bilinear4_h_mmxext(uint8_t *dst, ptrdiff_t dststride,
85
 
                                          uint8_t *src, ptrdiff_t srcstride,
86
 
                                          int height, int mx, int my);
87
 
extern void ff_put_vp8_bilinear8_h_sse2  (uint8_t *dst, ptrdiff_t dststride,
88
 
                                          uint8_t *src, ptrdiff_t srcstride,
89
 
                                          int height, int mx, int my);
90
 
extern void ff_put_vp8_bilinear4_h_ssse3 (uint8_t *dst, ptrdiff_t dststride,
91
 
                                          uint8_t *src, ptrdiff_t srcstride,
92
 
                                          int height, int mx, int my);
93
 
extern void ff_put_vp8_bilinear8_h_ssse3 (uint8_t *dst, ptrdiff_t dststride,
94
 
                                          uint8_t *src, ptrdiff_t srcstride,
95
 
                                          int height, int mx, int my);
96
 
 
97
 
extern void ff_put_vp8_bilinear4_v_mmxext(uint8_t *dst, ptrdiff_t dststride,
98
 
                                          uint8_t *src, ptrdiff_t srcstride,
99
 
                                          int height, int mx, int my);
100
 
extern void ff_put_vp8_bilinear8_v_sse2  (uint8_t *dst, ptrdiff_t dststride,
101
 
                                          uint8_t *src, ptrdiff_t srcstride,
102
 
                                          int height, int mx, int my);
103
 
extern void ff_put_vp8_bilinear4_v_ssse3 (uint8_t *dst, ptrdiff_t dststride,
104
 
                                          uint8_t *src, ptrdiff_t srcstride,
105
 
                                          int height, int mx, int my);
106
 
extern void ff_put_vp8_bilinear8_v_ssse3 (uint8_t *dst, ptrdiff_t dststride,
107
 
                                          uint8_t *src, ptrdiff_t srcstride,
108
 
                                          int height, int mx, int my);
109
 
 
110
 
 
111
 
extern void ff_put_vp8_pixels8_mmx (uint8_t *dst, ptrdiff_t dststride,
112
 
                                    uint8_t *src, ptrdiff_t srcstride,
113
 
                                    int height, int mx, int my);
114
 
extern void ff_put_vp8_pixels16_mmx(uint8_t *dst, ptrdiff_t dststride,
115
 
                                    uint8_t *src, ptrdiff_t srcstride,
116
 
                                    int height, int mx, int my);
117
 
extern void ff_put_vp8_pixels16_sse(uint8_t *dst, ptrdiff_t dststride,
118
 
                                    uint8_t *src, ptrdiff_t srcstride,
119
 
                                    int height, int mx, int my);
 
35
void ff_put_vp8_epel4_h4_mmxext(uint8_t *dst, ptrdiff_t dststride,
 
36
                                uint8_t *src, ptrdiff_t srcstride,
 
37
                                int height, int mx, int my);
 
38
void ff_put_vp8_epel4_h6_mmxext(uint8_t *dst, ptrdiff_t dststride,
 
39
                                uint8_t *src, ptrdiff_t srcstride,
 
40
                                int height, int mx, int my);
 
41
void ff_put_vp8_epel4_v4_mmxext(uint8_t *dst, ptrdiff_t dststride,
 
42
                                uint8_t *src, ptrdiff_t srcstride,
 
43
                                int height, int mx, int my);
 
44
void ff_put_vp8_epel4_v6_mmxext(uint8_t *dst, ptrdiff_t dststride,
 
45
                                uint8_t *src, ptrdiff_t srcstride,
 
46
                                int height, int mx, int my);
 
47
 
 
48
void ff_put_vp8_epel8_h4_sse2  (uint8_t *dst, ptrdiff_t dststride,
 
49
                                uint8_t *src, ptrdiff_t srcstride,
 
50
                                int height, int mx, int my);
 
51
void ff_put_vp8_epel8_h6_sse2  (uint8_t *dst, ptrdiff_t dststride,
 
52
                                uint8_t *src, ptrdiff_t srcstride,
 
53
                                int height, int mx, int my);
 
54
void ff_put_vp8_epel8_v4_sse2  (uint8_t *dst, ptrdiff_t dststride,
 
55
                                uint8_t *src, ptrdiff_t srcstride,
 
56
                                int height, int mx, int my);
 
57
void ff_put_vp8_epel8_v6_sse2  (uint8_t *dst, ptrdiff_t dststride,
 
58
                                uint8_t *src, ptrdiff_t srcstride,
 
59
                                int height, int mx, int my);
 
60
 
 
61
void ff_put_vp8_epel4_h4_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
62
                                uint8_t *src, ptrdiff_t srcstride,
 
63
                                int height, int mx, int my);
 
64
void ff_put_vp8_epel4_h6_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
65
                                uint8_t *src, ptrdiff_t srcstride,
 
66
                                int height, int mx, int my);
 
67
void ff_put_vp8_epel4_v4_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
68
                                uint8_t *src, ptrdiff_t srcstride,
 
69
                                int height, int mx, int my);
 
70
void ff_put_vp8_epel4_v6_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
71
                                uint8_t *src, ptrdiff_t srcstride,
 
72
                                int height, int mx, int my);
 
73
void ff_put_vp8_epel8_h4_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
74
                                uint8_t *src, ptrdiff_t srcstride,
 
75
                                int height, int mx, int my);
 
76
void ff_put_vp8_epel8_h6_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
77
                                uint8_t *src, ptrdiff_t srcstride,
 
78
                                int height, int mx, int my);
 
79
void ff_put_vp8_epel8_v4_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
80
                                uint8_t *src, ptrdiff_t srcstride,
 
81
                                int height, int mx, int my);
 
82
void ff_put_vp8_epel8_v6_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
83
                                uint8_t *src, ptrdiff_t srcstride,
 
84
                                int height, int mx, int my);
 
85
 
 
86
void ff_put_vp8_bilinear4_h_mmxext(uint8_t *dst, ptrdiff_t dststride,
 
87
                                   uint8_t *src, ptrdiff_t srcstride,
 
88
                                   int height, int mx, int my);
 
89
void ff_put_vp8_bilinear8_h_sse2  (uint8_t *dst, ptrdiff_t dststride,
 
90
                                   uint8_t *src, ptrdiff_t srcstride,
 
91
                                   int height, int mx, int my);
 
92
void ff_put_vp8_bilinear4_h_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
93
                                   uint8_t *src, ptrdiff_t srcstride,
 
94
                                   int height, int mx, int my);
 
95
void ff_put_vp8_bilinear8_h_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
96
                                   uint8_t *src, ptrdiff_t srcstride,
 
97
                                   int height, int mx, int my);
 
98
 
 
99
void ff_put_vp8_bilinear4_v_mmxext(uint8_t *dst, ptrdiff_t dststride,
 
100
                                   uint8_t *src, ptrdiff_t srcstride,
 
101
                                   int height, int mx, int my);
 
102
void ff_put_vp8_bilinear8_v_sse2  (uint8_t *dst, ptrdiff_t dststride,
 
103
                                   uint8_t *src, ptrdiff_t srcstride,
 
104
                                   int height, int mx, int my);
 
105
void ff_put_vp8_bilinear4_v_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
106
                                   uint8_t *src, ptrdiff_t srcstride,
 
107
                                   int height, int mx, int my);
 
108
void ff_put_vp8_bilinear8_v_ssse3 (uint8_t *dst, ptrdiff_t dststride,
 
109
                                   uint8_t *src, ptrdiff_t srcstride,
 
110
                                   int height, int mx, int my);
 
111
 
 
112
 
 
113
void ff_put_vp8_pixels8_mmx (uint8_t *dst, ptrdiff_t dststride,
 
114
                             uint8_t *src, ptrdiff_t srcstride,
 
115
                             int height, int mx, int my);
 
116
void ff_put_vp8_pixels16_mmx(uint8_t *dst, ptrdiff_t dststride,
 
117
                             uint8_t *src, ptrdiff_t srcstride,
 
118
                             int height, int mx, int my);
 
119
void ff_put_vp8_pixels16_sse(uint8_t *dst, ptrdiff_t dststride,
 
120
                             uint8_t *src, ptrdiff_t srcstride,
 
121
                             int height, int mx, int my);
120
122
 
121
123
#define TAP_W16(OPT, FILTERTYPE, TAPTYPE) \
122
124
static void ff_put_vp8_ ## FILTERTYPE ## 16_ ## TAPTYPE ## _ ## OPT( \
230
232
HVBILIN(ssse3, 8,  8, 16)
231
233
HVBILIN(ssse3, 8, 16, 16)
232
234
 
233
 
extern void ff_vp8_idct_dc_add_mmx(uint8_t *dst, DCTELEM block[16],
234
 
                                   ptrdiff_t stride);
235
 
extern void ff_vp8_idct_dc_add_sse4(uint8_t *dst, DCTELEM block[16],
236
 
                                    ptrdiff_t stride);
237
 
extern void ff_vp8_idct_dc_add4y_mmx(uint8_t *dst, DCTELEM block[4][16],
238
 
                                      ptrdiff_t stride);
239
 
extern void ff_vp8_idct_dc_add4y_sse2(uint8_t *dst, DCTELEM block[4][16],
240
 
                                      ptrdiff_t stride);
241
 
extern void ff_vp8_idct_dc_add4uv_mmx(uint8_t *dst, DCTELEM block[2][16],
242
 
                                      ptrdiff_t stride);
243
 
extern void ff_vp8_luma_dc_wht_mmx(DCTELEM block[4][4][16], DCTELEM dc[16]);
244
 
extern void ff_vp8_luma_dc_wht_sse(DCTELEM block[4][4][16], DCTELEM dc[16]);
245
 
extern void ff_vp8_idct_add_mmx(uint8_t *dst, DCTELEM block[16],
246
 
                                ptrdiff_t stride);
247
 
extern void ff_vp8_idct_add_sse(uint8_t *dst, DCTELEM block[16],
248
 
                                ptrdiff_t stride);
 
235
void ff_vp8_idct_dc_add_mmx(uint8_t *dst, int16_t block[16],
 
236
                            ptrdiff_t stride);
 
237
void ff_vp8_idct_dc_add_sse4(uint8_t *dst, int16_t block[16],
 
238
                             ptrdiff_t stride);
 
239
void ff_vp8_idct_dc_add4y_mmx(uint8_t *dst, int16_t block[4][16],
 
240
                               ptrdiff_t stride);
 
241
void ff_vp8_idct_dc_add4y_sse2(uint8_t *dst, int16_t block[4][16],
 
242
                               ptrdiff_t stride);
 
243
void ff_vp8_idct_dc_add4uv_mmx(uint8_t *dst, int16_t block[2][16],
 
244
                               ptrdiff_t stride);
 
245
void ff_vp8_luma_dc_wht_mmx(int16_t block[4][4][16], int16_t dc[16]);
 
246
void ff_vp8_luma_dc_wht_sse(int16_t block[4][4][16], int16_t dc[16]);
 
247
void ff_vp8_idct_add_mmx(uint8_t *dst, int16_t block[16], ptrdiff_t stride);
 
248
void ff_vp8_idct_add_sse(uint8_t *dst, int16_t block[16], ptrdiff_t stride);
249
249
 
250
 
#define DECLARE_LOOP_FILTER(NAME)\
251
 
extern void ff_vp8_v_loop_filter_simple_ ## NAME(uint8_t *dst, \
252
 
                                                 ptrdiff_t stride, \
253
 
                                                 int flim);\
254
 
extern void ff_vp8_h_loop_filter_simple_ ## NAME(uint8_t *dst, \
255
 
                                                 ptrdiff_t stride, \
256
 
                                                 int flim);\
257
 
extern void ff_vp8_v_loop_filter16y_inner_ ## NAME (uint8_t *dst, \
258
 
                                                     ptrdiff_t stride,\
259
 
                                                    int e, int i, int hvt);\
260
 
extern void ff_vp8_h_loop_filter16y_inner_ ## NAME (uint8_t *dst, \
261
 
                                                    ptrdiff_t stride,\
262
 
                                                    int e, int i, int hvt);\
263
 
extern void ff_vp8_v_loop_filter8uv_inner_ ## NAME (uint8_t *dstU, \
264
 
                                                    uint8_t *dstV,\
265
 
                                                    ptrdiff_t s, \
266
 
                                                    int e, int i, int hvt);\
267
 
extern void ff_vp8_h_loop_filter8uv_inner_ ## NAME (uint8_t *dstU, \
268
 
                                                    uint8_t *dstV,\
269
 
                                                    ptrdiff_t s, \
270
 
                                                    int e, int i, int hvt);\
271
 
extern void ff_vp8_v_loop_filter16y_mbedge_ ## NAME(uint8_t *dst, \
272
 
                                                    ptrdiff_t stride,\
273
 
                                                    int e, int i, int hvt);\
274
 
extern void ff_vp8_h_loop_filter16y_mbedge_ ## NAME(uint8_t *dst, \
275
 
                                                    ptrdiff_t stride,\
276
 
                                                    int e, int i, int hvt);\
277
 
extern void ff_vp8_v_loop_filter8uv_mbedge_ ## NAME(uint8_t *dstU, \
278
 
                                                    uint8_t *dstV,\
279
 
                                                    ptrdiff_t s, \
280
 
                                                    int e, int i, int hvt);\
281
 
extern void ff_vp8_h_loop_filter8uv_mbedge_ ## NAME(uint8_t *dstU, \
282
 
                                                    uint8_t *dstV,\
283
 
                                                    ptrdiff_t s, \
284
 
                                                    int e, int i, int hvt);
 
250
#define DECLARE_LOOP_FILTER(NAME)                                       \
 
251
void ff_vp8_v_loop_filter_simple_ ## NAME(uint8_t *dst,                 \
 
252
                                          ptrdiff_t stride,             \
 
253
                                          int flim);                    \
 
254
void ff_vp8_h_loop_filter_simple_ ## NAME(uint8_t *dst,                 \
 
255
                                          ptrdiff_t stride,             \
 
256
                                          int flim);                    \
 
257
void ff_vp8_v_loop_filter16y_inner_ ## NAME (uint8_t *dst,              \
 
258
                                             ptrdiff_t stride,          \
 
259
                                             int e, int i, int hvt);    \
 
260
void ff_vp8_h_loop_filter16y_inner_ ## NAME (uint8_t *dst,              \
 
261
                                             ptrdiff_t stride,          \
 
262
                                             int e, int i, int hvt);    \
 
263
void ff_vp8_v_loop_filter8uv_inner_ ## NAME (uint8_t *dstU,             \
 
264
                                             uint8_t *dstV,             \
 
265
                                             ptrdiff_t s,               \
 
266
                                             int e, int i, int hvt);    \
 
267
void ff_vp8_h_loop_filter8uv_inner_ ## NAME (uint8_t *dstU,             \
 
268
                                             uint8_t *dstV,             \
 
269
                                             ptrdiff_t s,               \
 
270
                                             int e, int i, int hvt);    \
 
271
void ff_vp8_v_loop_filter16y_mbedge_ ## NAME(uint8_t *dst,              \
 
272
                                             ptrdiff_t stride,          \
 
273
                                             int e, int i, int hvt);    \
 
274
void ff_vp8_h_loop_filter16y_mbedge_ ## NAME(uint8_t *dst,              \
 
275
                                             ptrdiff_t stride,          \
 
276
                                             int e, int i, int hvt);    \
 
277
void ff_vp8_v_loop_filter8uv_mbedge_ ## NAME(uint8_t *dstU,             \
 
278
                                             uint8_t *dstV,             \
 
279
                                             ptrdiff_t s,               \
 
280
                                             int e, int i, int hvt);    \
 
281
void ff_vp8_h_loop_filter8uv_mbedge_ ## NAME(uint8_t *dstU,             \
 
282
                                             uint8_t *dstV,             \
 
283
                                             ptrdiff_t s,               \
 
284
                                             int e, int i, int hvt);
285
285
 
286
286
DECLARE_LOOP_FILTER(mmx)
287
287
DECLARE_LOOP_FILTER(mmxext)
318
318
av_cold void ff_vp8dsp_init_x86(VP8DSPContext* c)
319
319
{
320
320
#if HAVE_YASM
321
 
    int mm_flags = av_get_cpu_flags();
 
321
    int cpu_flags = av_get_cpu_flags();
322
322
 
323
 
    if (mm_flags & AV_CPU_FLAG_MMX) {
 
323
    if (EXTERNAL_MMX(cpu_flags)) {
324
324
        c->vp8_idct_dc_add    = ff_vp8_idct_dc_add_mmx;
325
325
        c->vp8_idct_dc_add4uv = ff_vp8_idct_dc_add4uv_mmx;
326
326
#if ARCH_X86_32
351
351
 
352
352
    /* note that 4-tap width=16 functions are missing because w=16
353
353
     * is only used for luma, and luma is always a copy or sixtap. */
354
 
    if (mm_flags & AV_CPU_FLAG_MMXEXT) {
 
354
    if (EXTERNAL_MMXEXT(cpu_flags)) {
355
355
        VP8_MC_FUNC(2, 4, mmxext);
356
356
        VP8_BILINEAR_MC_FUNC(2, 4, mmxext);
357
357
#if ARCH_X86_32
375
375
#endif
376
376
    }
377
377
 
378
 
    if (mm_flags & AV_CPU_FLAG_SSE) {
 
378
    if (EXTERNAL_SSE(cpu_flags)) {
379
379
        c->vp8_idct_add                         = ff_vp8_idct_add_sse;
380
380
        c->vp8_luma_dc_wht                      = ff_vp8_luma_dc_wht_sse;
381
381
        c->put_vp8_epel_pixels_tab[0][0][0]     =
382
382
        c->put_vp8_bilinear_pixels_tab[0][0][0] = ff_put_vp8_pixels16_sse;
383
383
    }
384
384
 
385
 
    if (mm_flags & (AV_CPU_FLAG_SSE2|AV_CPU_FLAG_SSE2SLOW)) {
 
385
    if (EXTERNAL_SSE2(cpu_flags) && (cpu_flags & AV_CPU_FLAG_SSE2SLOW)) {
386
386
        VP8_LUMA_MC_FUNC(0, 16, sse2);
387
387
        VP8_MC_FUNC(1, 8, sse2);
388
388
        VP8_BILINEAR_MC_FUNC(0, 16, sse2);
397
397
        c->vp8_v_loop_filter8uv       = ff_vp8_v_loop_filter8uv_mbedge_sse2;
398
398
    }
399
399
 
400
 
    if (mm_flags & AV_CPU_FLAG_SSE2) {
 
400
    if (EXTERNAL_SSE2(cpu_flags)) {
401
401
        c->vp8_idct_dc_add4y          = ff_vp8_idct_dc_add4y_sse2;
402
402
 
403
403
        c->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter_simple_sse2;
409
409
        c->vp8_h_loop_filter8uv       = ff_vp8_h_loop_filter8uv_mbedge_sse2;
410
410
    }
411
411
 
412
 
    if (mm_flags & AV_CPU_FLAG_SSSE3) {
 
412
    if (EXTERNAL_SSSE3(cpu_flags)) {
413
413
        VP8_LUMA_MC_FUNC(0, 16, ssse3);
414
414
        VP8_MC_FUNC(1, 8, ssse3);
415
415
        VP8_MC_FUNC(2, 4, ssse3);
431
431
        c->vp8_h_loop_filter8uv       = ff_vp8_h_loop_filter8uv_mbedge_ssse3;
432
432
    }
433
433
 
434
 
    if (mm_flags & AV_CPU_FLAG_SSE4) {
 
434
    if (EXTERNAL_SSE4(cpu_flags)) {
435
435
        c->vp8_idct_dc_add                  = ff_vp8_idct_dc_add_sse4;
436
436
 
437
437
        c->vp8_h_loop_filter_simple   = ff_vp8_h_loop_filter_simple_sse4;