Coverage Report

Created: 2026-07-25 07:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/ffmpeg/libavcodec/h264chroma_template.c
Line
Count
Source
1
/*
2
 * Copyright (c) 2000, 2001 Fabrice Bellard
3
 * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
4
 *
5
 * This file is part of FFmpeg.
6
 *
7
 * FFmpeg is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation; either
10
 * version 2.1 of the License, or (at your option) any later version.
11
 *
12
 * FFmpeg is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with FFmpeg; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
 */
21
22
23
#include <stddef.h>
24
25
#include "libavutil/avassert.h"
26
#include "bit_depth_template.c"
27
28
#define H264_CHROMA_MC(OPNAME, OP)\
29
36.7M
MC2_STATIC void FUNCC(ff_ ## OPNAME ## h264_chroma_mc2)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
30
36.7M
{\
31
36.7M
    pixel *dst = (pixel*)_dst;\
32
36.7M
    const pixel *src = (const pixel*)_src;\
33
36.7M
    const int A=(8-x)*(8-y);\
34
36.7M
    const int B=(  x)*(8-y);\
35
36.7M
    const int C=(8-x)*(  y);\
36
36.7M
    const int D=(  x)*(  y);\
37
36.7M
    int i;\
38
36.7M
    stride >>= sizeof(pixel)-1;\
39
36.7M
    \
40
36.7M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
41
36.7M
\
42
36.7M
    if(D){\
43
27.0M
        for(i=0; i<h; i++){\
44
20.7M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
45
20.7M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
46
20.7M
            dst+= stride;\
47
20.7M
            src+= stride;\
48
20.7M
        }\
49
30.4M
    } else if (B + C) {\
50
5.88M
        const int E= B+C;\
51
5.88M
        const ptrdiff_t step = C ? stride : 1;\
52
25.2M
        for(i=0; i<h; i++){\
53
19.3M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
54
19.3M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
55
19.3M
            dst+= stride;\
56
19.3M
            src+= stride;\
57
19.3M
        }\
58
24.5M
    } else {\
59
86.9M
        for ( i = 0; i < h; i++){\
60
62.4M
            OP(dst[0], A * src[0]);\
61
62.4M
            OP(dst[1], A * src[1]);\
62
62.4M
            dst += stride;\
63
62.4M
            src += stride;\
64
62.4M
        }\
65
24.5M
    }\
66
36.7M
}\
ff_put_h264_chroma_mc2_8_c
Line
Count
Source
29
15.7M
MC2_STATIC void FUNCC(ff_ ## OPNAME ## h264_chroma_mc2)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
30
15.7M
{\
31
15.7M
    pixel *dst = (pixel*)_dst;\
32
15.7M
    const pixel *src = (const pixel*)_src;\
33
15.7M
    const int A=(8-x)*(8-y);\
34
15.7M
    const int B=(  x)*(8-y);\
35
15.7M
    const int C=(8-x)*(  y);\
36
15.7M
    const int D=(  x)*(  y);\
37
15.7M
    int i;\
38
15.7M
    stride >>= sizeof(pixel)-1;\
39
15.7M
    \
40
15.7M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
41
15.7M
\
42
15.7M
    if(D){\
43
8.39M
        for(i=0; i<h; i++){\
44
6.12M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
45
6.12M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
46
6.12M
            dst+= stride;\
47
6.12M
            src+= stride;\
48
6.12M
        }\
49
13.5M
    } else if (B + C) {\
50
1.95M
        const int E= B+C;\
51
1.95M
        const ptrdiff_t step = C ? stride : 1;\
52
6.79M
        for(i=0; i<h; i++){\
53
4.84M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
54
4.84M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
55
4.84M
            dst+= stride;\
56
4.84M
            src+= stride;\
57
4.84M
        }\
58
11.5M
    } else {\
59
35.0M
        for ( i = 0; i < h; i++){\
60
23.4M
            OP(dst[0], A * src[0]);\
61
23.4M
            OP(dst[1], A * src[1]);\
62
23.4M
            dst += stride;\
63
23.4M
            src += stride;\
64
23.4M
        }\
65
11.5M
    }\
66
15.7M
}\
ff_avg_h264_chroma_mc2_8_c
Line
Count
Source
29
2.42M
MC2_STATIC void FUNCC(ff_ ## OPNAME ## h264_chroma_mc2)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
30
2.42M
{\
31
2.42M
    pixel *dst = (pixel*)_dst;\
32
2.42M
    const pixel *src = (const pixel*)_src;\
33
2.42M
    const int A=(8-x)*(8-y);\
34
2.42M
    const int B=(  x)*(8-y);\
35
2.42M
    const int C=(8-x)*(  y);\
36
2.42M
    const int D=(  x)*(  y);\
37
2.42M
    int i;\
38
2.42M
    stride >>= sizeof(pixel)-1;\
39
2.42M
    \
40
2.42M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
41
2.42M
\
42
2.42M
    if(D){\
43
266k
        for(i=0; i<h; i++){\
44
165k
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
45
165k
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
46
165k
            dst+= stride;\
47
165k
            src+= stride;\
48
165k
        }\
49
2.32M
    } else if (B + C) {\
50
87.7k
        const int E= B+C;\
51
87.7k
        const ptrdiff_t step = C ? stride : 1;\
52
247k
        for(i=0; i<h; i++){\
53
159k
            OP(dst[0], (A*src[0] + E*src[step+0]));\
54
159k
            OP(dst[1], (A*src[1] + E*src[step+1]));\
55
159k
            dst+= stride;\
56
159k
            src+= stride;\
57
159k
        }\
58
2.23M
    } else {\
59
6.76M
        for ( i = 0; i < h; i++){\
60
4.53M
            OP(dst[0], A * src[0]);\
61
4.53M
            OP(dst[1], A * src[1]);\
62
4.53M
            dst += stride;\
63
4.53M
            src += stride;\
64
4.53M
        }\
65
2.23M
    }\
66
2.42M
}\
h264chroma.c:ff_put_h264_chroma_mc2_16_c
Line
Count
Source
29
12.7M
MC2_STATIC void FUNCC(ff_ ## OPNAME ## h264_chroma_mc2)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
30
12.7M
{\
31
12.7M
    pixel *dst = (pixel*)_dst;\
32
12.7M
    const pixel *src = (const pixel*)_src;\
33
12.7M
    const int A=(8-x)*(8-y);\
34
12.7M
    const int B=(  x)*(8-y);\
35
12.7M
    const int C=(8-x)*(  y);\
36
12.7M
    const int D=(  x)*(  y);\
37
12.7M
    int i;\
38
12.7M
    stride >>= sizeof(pixel)-1;\
39
12.7M
    \
40
12.7M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
41
12.7M
\
42
12.7M
    if(D){\
43
15.9M
        for(i=0; i<h; i++){\
44
12.6M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
45
12.6M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
46
12.6M
            dst+= stride;\
47
12.6M
            src+= stride;\
48
12.6M
        }\
49
9.50M
    } else if (B + C) {\
50
3.21M
        const int E= B+C;\
51
3.21M
        const ptrdiff_t step = C ? stride : 1;\
52
15.6M
        for(i=0; i<h; i++){\
53
12.4M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
54
12.4M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
55
12.4M
            dst+= stride;\
56
12.4M
            src+= stride;\
57
12.4M
        }\
58
6.28M
    } else {\
59
26.8M
        for ( i = 0; i < h; i++){\
60
20.5M
            OP(dst[0], A * src[0]);\
61
20.5M
            OP(dst[1], A * src[1]);\
62
20.5M
            dst += stride;\
63
20.5M
            src += stride;\
64
20.5M
        }\
65
6.28M
    }\
66
12.7M
}\
h264chroma.c:ff_avg_h264_chroma_mc2_16_c
Line
Count
Source
29
5.72M
MC2_STATIC void FUNCC(ff_ ## OPNAME ## h264_chroma_mc2)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
30
5.72M
{\
31
5.72M
    pixel *dst = (pixel*)_dst;\
32
5.72M
    const pixel *src = (const pixel*)_src;\
33
5.72M
    const int A=(8-x)*(8-y);\
34
5.72M
    const int B=(  x)*(8-y);\
35
5.72M
    const int C=(8-x)*(  y);\
36
5.72M
    const int D=(  x)*(  y);\
37
5.72M
    int i;\
38
5.72M
    stride >>= sizeof(pixel)-1;\
39
5.72M
    \
40
5.72M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
41
5.72M
\
42
5.72M
    if(D){\
43
2.45M
        for(i=0; i<h; i++){\
44
1.80M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
45
1.80M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
46
1.80M
            dst+= stride;\
47
1.80M
            src+= stride;\
48
1.80M
        }\
49
5.08M
    } else if (B + C) {\
50
626k
        const int E= B+C;\
51
626k
        const ptrdiff_t step = C ? stride : 1;\
52
2.50M
        for(i=0; i<h; i++){\
53
1.87M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
54
1.87M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
55
1.87M
            dst+= stride;\
56
1.87M
            src+= stride;\
57
1.87M
        }\
58
4.45M
    } else {\
59
18.3M
        for ( i = 0; i < h; i++){\
60
13.8M
            OP(dst[0], A * src[0]);\
61
13.8M
            OP(dst[1], A * src[1]);\
62
13.8M
            dst += stride;\
63
13.8M
            src += stride;\
64
13.8M
        }\
65
4.45M
    }\
66
5.72M
}\
67
\
68
119M
static void FUNCC(OPNAME ## h264_chroma_mc4)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
69
119M
{\
70
119M
    pixel *dst = (pixel*)_dst;\
71
119M
    const pixel *src = (const pixel*)_src;\
72
119M
    const int A=(8-x)*(8-y);\
73
119M
    const int B=(  x)*(8-y);\
74
119M
    const int C=(8-x)*(  y);\
75
119M
    const int D=(  x)*(  y);\
76
119M
    int i;\
77
119M
    stride >>= sizeof(pixel)-1;\
78
119M
    \
79
119M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
80
119M
\
81
119M
    if(D){\
82
125M
        for(i=0; i<h; i++){\
83
106M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
84
106M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
85
106M
            OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\
86
106M
            OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\
87
106M
            dst+= stride;\
88
106M
            src+= stride;\
89
106M
        }\
90
99.6M
    } else if (B + C) {\
91
17.3M
        const int E= B+C;\
92
17.3M
        const ptrdiff_t step = C ? stride : 1;\
93
118M
        for(i=0; i<h; i++){\
94
100M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
95
100M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
96
100M
            OP(dst[2], (A*src[2] + E*src[step+2]));\
97
100M
            OP(dst[3], (A*src[3] + E*src[step+3]));\
98
100M
            dst+= stride;\
99
100M
            src+= stride;\
100
100M
        }\
101
82.3M
    } else {\
102
517M
        for ( i = 0; i < h; i++){\
103
434M
            OP(dst[0], A * src[0]);\
104
434M
            OP(dst[1], A * src[1]);\
105
434M
            OP(dst[2], A * src[2]);\
106
434M
            OP(dst[3], A * src[3]);\
107
434M
            dst += stride;\
108
434M
            src += stride;\
109
434M
        }\
110
82.3M
    }\
111
119M
}\
h264chroma.c:put_h264_chroma_mc4_16_c
Line
Count
Source
68
38.9M
static void FUNCC(OPNAME ## h264_chroma_mc4)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
69
38.9M
{\
70
38.9M
    pixel *dst = (pixel*)_dst;\
71
38.9M
    const pixel *src = (const pixel*)_src;\
72
38.9M
    const int A=(8-x)*(8-y);\
73
38.9M
    const int B=(  x)*(8-y);\
74
38.9M
    const int C=(8-x)*(  y);\
75
38.9M
    const int D=(  x)*(  y);\
76
38.9M
    int i;\
77
38.9M
    stride >>= sizeof(pixel)-1;\
78
38.9M
    \
79
38.9M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
80
38.9M
\
81
38.9M
    if(D){\
82
46.4M
        for(i=0; i<h; i++){\
83
40.2M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
84
40.2M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
85
40.2M
            OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\
86
40.2M
            OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\
87
40.2M
            dst+= stride;\
88
40.2M
            src+= stride;\
89
40.2M
        }\
90
32.7M
    } else if (B + C) {\
91
6.24M
        const int E= B+C;\
92
6.24M
        const ptrdiff_t step = C ? stride : 1;\
93
50.4M
        for(i=0; i<h; i++){\
94
44.2M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
95
44.2M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
96
44.2M
            OP(dst[2], (A*src[2] + E*src[step+2]));\
97
44.2M
            OP(dst[3], (A*src[3] + E*src[step+3]));\
98
44.2M
            dst+= stride;\
99
44.2M
            src+= stride;\
100
44.2M
        }\
101
26.4M
    } else {\
102
188M
        for ( i = 0; i < h; i++){\
103
161M
            OP(dst[0], A * src[0]);\
104
161M
            OP(dst[1], A * src[1]);\
105
161M
            OP(dst[2], A * src[2]);\
106
161M
            OP(dst[3], A * src[3]);\
107
161M
            dst += stride;\
108
161M
            src += stride;\
109
161M
        }\
110
26.4M
    }\
111
38.9M
}\
h264chroma.c:avg_h264_chroma_mc4_16_c
Line
Count
Source
68
17.6M
static void FUNCC(OPNAME ## h264_chroma_mc4)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
69
17.6M
{\
70
17.6M
    pixel *dst = (pixel*)_dst;\
71
17.6M
    const pixel *src = (const pixel*)_src;\
72
17.6M
    const int A=(8-x)*(8-y);\
73
17.6M
    const int B=(  x)*(8-y);\
74
17.6M
    const int C=(8-x)*(  y);\
75
17.6M
    const int D=(  x)*(  y);\
76
17.6M
    int i;\
77
17.6M
    stride >>= sizeof(pixel)-1;\
78
17.6M
    \
79
17.6M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
80
17.6M
\
81
17.6M
    if(D){\
82
7.74M
        for(i=0; i<h; i++){\
83
6.88M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
84
6.88M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
85
6.88M
            OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\
86
6.88M
            OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\
87
6.88M
            dst+= stride;\
88
6.88M
            src+= stride;\
89
6.88M
        }\
90
16.7M
    } else if (B + C) {\
91
1.58M
        const int E= B+C;\
92
1.58M
        const ptrdiff_t step = C ? stride : 1;\
93
12.3M
        for(i=0; i<h; i++){\
94
10.7M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
95
10.7M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
96
10.7M
            OP(dst[2], (A*src[2] + E*src[step+2]));\
97
10.7M
            OP(dst[3], (A*src[3] + E*src[step+3]));\
98
10.7M
            dst+= stride;\
99
10.7M
            src+= stride;\
100
10.7M
        }\
101
15.1M
    } else {\
102
119M
        for ( i = 0; i < h; i++){\
103
104M
            OP(dst[0], A * src[0]);\
104
104M
            OP(dst[1], A * src[1]);\
105
104M
            OP(dst[2], A * src[2]);\
106
104M
            OP(dst[3], A * src[3]);\
107
104M
            dst += stride;\
108
104M
            src += stride;\
109
104M
        }\
110
15.1M
    }\
111
17.6M
}\
h264chroma.c:put_h264_chroma_mc4_8_c
Line
Count
Source
68
44.0M
static void FUNCC(OPNAME ## h264_chroma_mc4)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
69
44.0M
{\
70
44.0M
    pixel *dst = (pixel*)_dst;\
71
44.0M
    const pixel *src = (const pixel*)_src;\
72
44.0M
    const int A=(8-x)*(8-y);\
73
44.0M
    const int B=(  x)*(8-y);\
74
44.0M
    const int C=(8-x)*(  y);\
75
44.0M
    const int D=(  x)*(  y);\
76
44.0M
    int i;\
77
44.0M
    stride >>= sizeof(pixel)-1;\
78
44.0M
    \
79
44.0M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
80
44.0M
\
81
44.0M
    if(D){\
82
59.4M
        for(i=0; i<h; i++){\
83
49.3M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
84
49.3M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
85
49.3M
            OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\
86
49.3M
            OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\
87
49.3M
            dst+= stride;\
88
49.3M
            src+= stride;\
89
49.3M
        }\
90
33.9M
    } else if (B + C) {\
91
8.04M
        const int E= B+C;\
92
8.04M
        const ptrdiff_t step = C ? stride : 1;\
93
47.5M
        for(i=0; i<h; i++){\
94
39.4M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
95
39.4M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
96
39.4M
            OP(dst[2], (A*src[2] + E*src[step+2]));\
97
39.4M
            OP(dst[3], (A*src[3] + E*src[step+3]));\
98
39.4M
            dst+= stride;\
99
39.4M
            src+= stride;\
100
39.4M
        }\
101
25.9M
    } else {\
102
134M
        for ( i = 0; i < h; i++){\
103
108M
            OP(dst[0], A * src[0]);\
104
108M
            OP(dst[1], A * src[1]);\
105
108M
            OP(dst[2], A * src[2]);\
106
108M
            OP(dst[3], A * src[3]);\
107
108M
            dst += stride;\
108
108M
            src += stride;\
109
108M
        }\
110
25.9M
    }\
111
44.0M
}\
h264chroma.c:avg_h264_chroma_mc4_8_c
Line
Count
Source
68
18.5M
static void FUNCC(OPNAME ## h264_chroma_mc4)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
69
18.5M
{\
70
18.5M
    pixel *dst = (pixel*)_dst;\
71
18.5M
    const pixel *src = (const pixel*)_src;\
72
18.5M
    const int A=(8-x)*(8-y);\
73
18.5M
    const int B=(  x)*(8-y);\
74
18.5M
    const int C=(8-x)*(  y);\
75
18.5M
    const int D=(  x)*(  y);\
76
18.5M
    int i;\
77
18.5M
    stride >>= sizeof(pixel)-1;\
78
18.5M
    \
79
18.5M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
80
18.5M
\
81
18.5M
    if(D){\
82
12.1M
        for(i=0; i<h; i++){\
83
9.87M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
84
9.87M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
85
9.87M
            OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\
86
9.87M
            OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\
87
9.87M
            dst+= stride;\
88
9.87M
            src+= stride;\
89
9.87M
        }\
90
16.2M
    } else if (B + C) {\
91
1.47M
        const int E= B+C;\
92
1.47M
        const ptrdiff_t step = C ? stride : 1;\
93
7.90M
        for(i=0; i<h; i++){\
94
6.42M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
95
6.42M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
96
6.42M
            OP(dst[2], (A*src[2] + E*src[step+2]));\
97
6.42M
            OP(dst[3], (A*src[3] + E*src[step+3]));\
98
6.42M
            dst+= stride;\
99
6.42M
            src+= stride;\
100
6.42M
        }\
101
14.7M
    } else {\
102
75.3M
        for ( i = 0; i < h; i++){\
103
60.5M
            OP(dst[0], A * src[0]);\
104
60.5M
            OP(dst[1], A * src[1]);\
105
60.5M
            OP(dst[2], A * src[2]);\
106
60.5M
            OP(dst[3], A * src[3]);\
107
60.5M
            dst += stride;\
108
60.5M
            src += stride;\
109
60.5M
        }\
110
14.7M
    }\
111
18.5M
}\
112
\
113
245M
static void FUNCC(OPNAME ## h264_chroma_mc8)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
114
245M
{\
115
245M
    pixel *dst = (pixel*)_dst;\
116
245M
    const pixel *src = (const pixel*)_src;\
117
245M
    const int A=(8-x)*(8-y);\
118
245M
    const int B=(  x)*(8-y);\
119
245M
    const int C=(8-x)*(  y);\
120
245M
    const int D=(  x)*(  y);\
121
245M
    int i;\
122
245M
    stride >>= sizeof(pixel)-1;\
123
245M
    \
124
245M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
125
245M
\
126
245M
    if(D){\
127
167M
        for(i=0; i<h; i++){\
128
150M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
129
150M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
130
150M
            OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\
131
150M
            OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\
132
150M
            OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5]));\
133
150M
            OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6]));\
134
150M
            OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7]));\
135
150M
            OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8]));\
136
150M
            dst+= stride;\
137
150M
            src+= stride;\
138
150M
        }\
139
228M
    } else if (B + C) {\
140
34.4M
        const int E= B+C;\
141
34.4M
        const ptrdiff_t step = C ? stride : 1;\
142
350M
        for(i=0; i<h; i++){\
143
316M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
144
316M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
145
316M
            OP(dst[2], (A*src[2] + E*src[step+2]));\
146
316M
            OP(dst[3], (A*src[3] + E*src[step+3]));\
147
316M
            OP(dst[4], (A*src[4] + E*src[step+4]));\
148
316M
            OP(dst[5], (A*src[5] + E*src[step+5]));\
149
316M
            OP(dst[6], (A*src[6] + E*src[step+6]));\
150
316M
            OP(dst[7], (A*src[7] + E*src[step+7]));\
151
316M
            dst+= stride;\
152
316M
            src+= stride;\
153
316M
        }\
154
194M
    } else {\
155
2.19G
        for ( i = 0; i < h; i++){\
156
1.99G
            OP(dst[0], A * src[0]);\
157
1.99G
            OP(dst[1], A * src[1]);\
158
1.99G
            OP(dst[2], A * src[2]);\
159
1.99G
            OP(dst[3], A * src[3]);\
160
1.99G
            OP(dst[4], A * src[4]);\
161
1.99G
            OP(dst[5], A * src[5]);\
162
1.99G
            OP(dst[6], A * src[6]);\
163
1.99G
            OP(dst[7], A * src[7]);\
164
1.99G
            dst += stride;\
165
1.99G
            src += stride;\
166
1.99G
        }\
167
194M
    }\
168
245M
}
h264chroma.c:put_h264_chroma_mc8_16_c
Line
Count
Source
113
99.3M
static void FUNCC(OPNAME ## h264_chroma_mc8)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
114
99.3M
{\
115
99.3M
    pixel *dst = (pixel*)_dst;\
116
99.3M
    const pixel *src = (const pixel*)_src;\
117
99.3M
    const int A=(8-x)*(8-y);\
118
99.3M
    const int B=(  x)*(8-y);\
119
99.3M
    const int C=(8-x)*(  y);\
120
99.3M
    const int D=(  x)*(  y);\
121
99.3M
    int i;\
122
99.3M
    stride >>= sizeof(pixel)-1;\
123
99.3M
    \
124
99.3M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
125
99.3M
\
126
99.3M
    if(D){\
127
76.7M
        for(i=0; i<h; i++){\
128
69.8M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
129
69.8M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
130
69.8M
            OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\
131
69.8M
            OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\
132
69.8M
            OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5]));\
133
69.8M
            OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6]));\
134
69.8M
            OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7]));\
135
69.8M
            OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8]));\
136
69.8M
            dst+= stride;\
137
69.8M
            src+= stride;\
138
69.8M
        }\
139
92.4M
    } else if (B + C) {\
140
9.30M
        const int E= B+C;\
141
9.30M
        const ptrdiff_t step = C ? stride : 1;\
142
114M
        for(i=0; i<h; i++){\
143
104M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
144
104M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
145
104M
            OP(dst[2], (A*src[2] + E*src[step+2]));\
146
104M
            OP(dst[3], (A*src[3] + E*src[step+3]));\
147
104M
            OP(dst[4], (A*src[4] + E*src[step+4]));\
148
104M
            OP(dst[5], (A*src[5] + E*src[step+5]));\
149
104M
            OP(dst[6], (A*src[6] + E*src[step+6]));\
150
104M
            OP(dst[7], (A*src[7] + E*src[step+7]));\
151
104M
            dst+= stride;\
152
104M
            src+= stride;\
153
104M
        }\
154
83.1M
    } else {\
155
1.03G
        for ( i = 0; i < h; i++){\
156
955M
            OP(dst[0], A * src[0]);\
157
955M
            OP(dst[1], A * src[1]);\
158
955M
            OP(dst[2], A * src[2]);\
159
955M
            OP(dst[3], A * src[3]);\
160
955M
            OP(dst[4], A * src[4]);\
161
955M
            OP(dst[5], A * src[5]);\
162
955M
            OP(dst[6], A * src[6]);\
163
955M
            OP(dst[7], A * src[7]);\
164
955M
            dst += stride;\
165
955M
            src += stride;\
166
955M
        }\
167
83.1M
    }\
168
99.3M
}
h264chroma.c:avg_h264_chroma_mc8_16_c
Line
Count
Source
113
12.3M
static void FUNCC(OPNAME ## h264_chroma_mc8)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
114
12.3M
{\
115
12.3M
    pixel *dst = (pixel*)_dst;\
116
12.3M
    const pixel *src = (const pixel*)_src;\
117
12.3M
    const int A=(8-x)*(8-y);\
118
12.3M
    const int B=(  x)*(8-y);\
119
12.3M
    const int C=(8-x)*(  y);\
120
12.3M
    const int D=(  x)*(  y);\
121
12.3M
    int i;\
122
12.3M
    stride >>= sizeof(pixel)-1;\
123
12.3M
    \
124
12.3M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
125
12.3M
\
126
12.3M
    if(D){\
127
10.7M
        for(i=0; i<h; i++){\
128
9.72M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
129
9.72M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
130
9.72M
            OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\
131
9.72M
            OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\
132
9.72M
            OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5]));\
133
9.72M
            OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6]));\
134
9.72M
            OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7]));\
135
9.72M
            OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8]));\
136
9.72M
            dst+= stride;\
137
9.72M
            src+= stride;\
138
9.72M
        }\
139
11.3M
    } else if (B + C) {\
140
2.08M
        const int E= B+C;\
141
2.08M
        const ptrdiff_t step = C ? stride : 1;\
142
24.9M
        for(i=0; i<h; i++){\
143
22.8M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
144
22.8M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
145
22.8M
            OP(dst[2], (A*src[2] + E*src[step+2]));\
146
22.8M
            OP(dst[3], (A*src[3] + E*src[step+3]));\
147
22.8M
            OP(dst[4], (A*src[4] + E*src[step+4]));\
148
22.8M
            OP(dst[5], (A*src[5] + E*src[step+5]));\
149
22.8M
            OP(dst[6], (A*src[6] + E*src[step+6]));\
150
22.8M
            OP(dst[7], (A*src[7] + E*src[step+7]));\
151
22.8M
            dst+= stride;\
152
22.8M
            src+= stride;\
153
22.8M
        }\
154
9.22M
    } else {\
155
115M
        for ( i = 0; i < h; i++){\
156
106M
            OP(dst[0], A * src[0]);\
157
106M
            OP(dst[1], A * src[1]);\
158
106M
            OP(dst[2], A * src[2]);\
159
106M
            OP(dst[3], A * src[3]);\
160
106M
            OP(dst[4], A * src[4]);\
161
106M
            OP(dst[5], A * src[5]);\
162
106M
            OP(dst[6], A * src[6]);\
163
106M
            OP(dst[7], A * src[7]);\
164
106M
            dst += stride;\
165
106M
            src += stride;\
166
106M
        }\
167
9.22M
    }\
168
12.3M
}
h264chroma.c:put_h264_chroma_mc8_8_c
Line
Count
Source
113
123M
static void FUNCC(OPNAME ## h264_chroma_mc8)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
114
123M
{\
115
123M
    pixel *dst = (pixel*)_dst;\
116
123M
    const pixel *src = (const pixel*)_src;\
117
123M
    const int A=(8-x)*(8-y);\
118
123M
    const int B=(  x)*(8-y);\
119
123M
    const int C=(8-x)*(  y);\
120
123M
    const int D=(  x)*(  y);\
121
123M
    int i;\
122
123M
    stride >>= sizeof(pixel)-1;\
123
123M
    \
124
123M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
125
123M
\
126
123M
    if(D){\
127
70.3M
        for(i=0; i<h; i++){\
128
62.6M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
129
62.6M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
130
62.6M
            OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\
131
62.6M
            OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\
132
62.6M
            OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5]));\
133
62.6M
            OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6]));\
134
62.6M
            OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7]));\
135
62.6M
            OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8]));\
136
62.6M
            dst+= stride;\
137
62.6M
            src+= stride;\
138
62.6M
        }\
139
115M
    } else if (B + C) {\
140
21.5M
        const int E= B+C;\
141
21.5M
        const ptrdiff_t step = C ? stride : 1;\
142
198M
        for(i=0; i<h; i++){\
143
177M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
144
177M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
145
177M
            OP(dst[2], (A*src[2] + E*src[step+2]));\
146
177M
            OP(dst[3], (A*src[3] + E*src[step+3]));\
147
177M
            OP(dst[4], (A*src[4] + E*src[step+4]));\
148
177M
            OP(dst[5], (A*src[5] + E*src[step+5]));\
149
177M
            OP(dst[6], (A*src[6] + E*src[step+6]));\
150
177M
            OP(dst[7], (A*src[7] + E*src[step+7]));\
151
177M
            dst+= stride;\
152
177M
            src+= stride;\
153
177M
        }\
154
94.2M
    } else {\
155
965M
        for ( i = 0; i < h; i++){\
156
870M
            OP(dst[0], A * src[0]);\
157
870M
            OP(dst[1], A * src[1]);\
158
870M
            OP(dst[2], A * src[2]);\
159
870M
            OP(dst[3], A * src[3]);\
160
870M
            OP(dst[4], A * src[4]);\
161
870M
            OP(dst[5], A * src[5]);\
162
870M
            OP(dst[6], A * src[6]);\
163
870M
            OP(dst[7], A * src[7]);\
164
870M
            dst += stride;\
165
870M
            src += stride;\
166
870M
        }\
167
94.2M
    }\
168
123M
}
h264chroma.c:avg_h264_chroma_mc8_8_c
Line
Count
Source
113
10.3M
static void FUNCC(OPNAME ## h264_chroma_mc8)(uint8_t *_dst, const uint8_t *_src, ptrdiff_t stride, int h, int x, int y)\
114
10.3M
{\
115
10.3M
    pixel *dst = (pixel*)_dst;\
116
10.3M
    const pixel *src = (const pixel*)_src;\
117
10.3M
    const int A=(8-x)*(8-y);\
118
10.3M
    const int B=(  x)*(8-y);\
119
10.3M
    const int C=(8-x)*(  y);\
120
10.3M
    const int D=(  x)*(  y);\
121
10.3M
    int i;\
122
10.3M
    stride >>= sizeof(pixel)-1;\
123
10.3M
    \
124
10.3M
    av_assert2(x<8 && y<8 && x>=0 && y>=0);\
125
10.3M
\
126
10.3M
    if(D){\
127
9.74M
        for(i=0; i<h; i++){\
128
8.62M
            OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));\
129
8.62M
            OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));\
130
8.62M
            OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));\
131
8.62M
            OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));\
132
8.62M
            OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5]));\
133
8.62M
            OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6]));\
134
8.62M
            OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7]));\
135
8.62M
            OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8]));\
136
8.62M
            dst+= stride;\
137
8.62M
            src+= stride;\
138
8.62M
        }\
139
9.24M
    } else if (B + C) {\
140
1.43M
        const int E= B+C;\
141
1.43M
        const ptrdiff_t step = C ? stride : 1;\
142
12.6M
        for(i=0; i<h; i++){\
143
11.2M
            OP(dst[0], (A*src[0] + E*src[step+0]));\
144
11.2M
            OP(dst[1], (A*src[1] + E*src[step+1]));\
145
11.2M
            OP(dst[2], (A*src[2] + E*src[step+2]));\
146
11.2M
            OP(dst[3], (A*src[3] + E*src[step+3]));\
147
11.2M
            OP(dst[4], (A*src[4] + E*src[step+4]));\
148
11.2M
            OP(dst[5], (A*src[5] + E*src[step+5]));\
149
11.2M
            OP(dst[6], (A*src[6] + E*src[step+6]));\
150
11.2M
            OP(dst[7], (A*src[7] + E*src[step+7]));\
151
11.2M
            dst+= stride;\
152
11.2M
            src+= stride;\
153
11.2M
        }\
154
7.80M
    } else {\
155
72.3M
        for ( i = 0; i < h; i++){\
156
64.5M
            OP(dst[0], A * src[0]);\
157
64.5M
            OP(dst[1], A * src[1]);\
158
64.5M
            OP(dst[2], A * src[2]);\
159
64.5M
            OP(dst[3], A * src[3]);\
160
64.5M
            OP(dst[4], A * src[4]);\
161
64.5M
            OP(dst[5], A * src[5]);\
162
64.5M
            OP(dst[6], A * src[6]);\
163
64.5M
            OP(dst[7], A * src[7]);\
164
64.5M
            dst += stride;\
165
64.5M
            src += stride;\
166
64.5M
        }\
167
7.80M
    }\
168
10.3M
}
169
170
2.62G
#define op_avg(a, b) a = (((a)+(((b) + 32)>>6)+1)>>1)
171
19.8G
#define op_put(a, b) a = (((b) + 32)>>6)
172
173
19.8G
H264_CHROMA_MC(put_       , op_put)
174
2.62G
H264_CHROMA_MC(avg_       , op_avg)
175
#undef op_avg
176
#undef op_put