| 112 | |
| 113 | |
| 114 | int main(int argc, char **argv) |
| 115 | { |
| 116 | AVCodecContext *ctx; |
| 117 | int c; |
| 118 | MECmpContext cctx, mmxctx; |
| 119 | int flags[2] = { AV_CPU_FLAG_MMX, AV_CPU_FLAG_MMXEXT }; |
| 120 | int flags_size = HAVE_MMXEXT ? 2 : 1; |
| 121 | |
| 122 | if (argc > 1) { |
| 123 | help(); |
| 124 | return 1; |
| 125 | } |
| 126 | |
| 127 | printf("ffmpeg motion test\n"); |
| 128 | |
| 129 | ctx = avcodec_alloc_context3(NULL); |
| 130 | if (!ctx) { |
| 131 | return 1; |
| 132 | } |
| 133 | |
| 134 | ctx->flags |= AV_CODEC_FLAG_BITEXACT; |
| 135 | av_force_cpu_flags(0); |
| 136 | ff_me_cmp_init(&cctx, ctx); |
| 137 | for (c = 0; c < flags_size; c++) { |
| 138 | int x; |
| 139 | av_force_cpu_flags(flags[c]); |
| 140 | ff_me_cmp_init(&mmxctx, ctx); |
| 141 | |
| 142 | for (x = 0; x < 2; x++) { |
| 143 | printf("%s for %dx%d pixels\n", c ? "mmx2" : "mmx", |
| 144 | x ? 8 : 16, x ? 8 : 16); |
| 145 | test_motion("mmx", mmxctx.pix_abs[x][0], cctx.pix_abs[x][0]); |
| 146 | test_motion("mmx_x2", mmxctx.pix_abs[x][1], cctx.pix_abs[x][1]); |
| 147 | test_motion("mmx_y2", mmxctx.pix_abs[x][2], cctx.pix_abs[x][2]); |
| 148 | test_motion("mmx_xy2", mmxctx.pix_abs[x][3], cctx.pix_abs[x][3]); |
| 149 | } |
| 150 | } |
| 151 | av_free(ctx); |
| 152 | |
| 153 | return 0; |
| 154 | } |
nothing calls this directly
no test coverage detected