1 /*
2 * (c) 2001 Fabrice Bellard
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21 /**
22 * @file
23 * motion test.
24 */
25
26 #include <stdlib.h>
27 #include <stdio.h>
28 #include <string.h>
29
30 #include "config.h"
37
38 #undef printf
39
42
45
47 {
50
54 }
55 }
56
58 {
59 printf(
"motion-test [-h]\n"
60 "test motion implementations\n");
61 }
62
64
66
69 {
71 uint8_t *ptr;
72 int64_t ti;
74
75 /* test correctness */
77
80
82 for(x=0;x<
WIDTH-17;x++) {
86 if (d1 != d2) {
87 printf(
"error: mmx=%d c=%d\n", d1, d2);
88 }
89 }
90 }
91 }
92 emms_c();
93
94 /* speed test */
96 d1 = 0;
99 for(x=0;x<
WIDTH-17;x++) {
102 }
103 }
104 }
105 emms_c();
106 dummy = d1;
/* avoid optimization */
108
111 (double)(ti / 1000.0));
112 }
113
114
115 int main(
int argc,
char **argv)
116 {
121 int flags_size = HAVE_MMXEXT ? 2 : 1;
122
123 if (argc > 1) {
125 return 1;
126 }
127
128 printf(
"ffmpeg motion test\n");
129
133 memset(&cctx, 0, sizeof(cctx));
135 for (
c = 0;
c < flags_size;
c++) {
136 int x;
138 memset(&mmxctx, 0, sizeof(mmxctx));
140
141 for (x = 0; x < 2; x++) {
142 printf(
"%s for %dx%d pixels\n",
c ?
"mmx2" :
"mmx",
143 x ? 8 : 16, x ? 8 : 16);
148 }
149 }
151
152 return 0;
153 }