diff --git a/libavutil/cpu.c b/libavutil/cpu.c index 20f0fe1406..a7e5f7f345 100644 --- a/libavutil/cpu.c +++ b/libavutil/cpu.c @@ -180,6 +180,7 @@ int av_cpu_count(void) #ifdef TEST #include +#include "avstring.h" #if !HAVE_GETOPT #include "compat/getopt.c" @@ -245,12 +246,14 @@ int main(int argc, char **argv) { int cpu_flags_raw = av_get_cpu_flags(); int cpu_flags_eff; + int cpu_count = av_cpu_count(); + char threads[5] = "auto"; if (cpu_flags_raw < 0) return 1; for (;;) { - int c = getopt(argc, argv, "c:"); + int c = getopt(argc, argv, "c:t:"); if (c == -1) break; switch (c) { @@ -262,6 +265,14 @@ int main(int argc, char **argv) av_set_cpu_flags_mask(cpuflags); break; } + case 't': + { + int len = av_strlcpy(threads, optarg, sizeof(threads)); + if (len >= sizeof(threads)) { + fprintf(stderr, "Invalid thread count '%s'\n", optarg); + return 2; + } + } } } @@ -272,6 +283,7 @@ int main(int argc, char **argv) print_cpu_flags(cpu_flags_raw, "raw"); print_cpu_flags(cpu_flags_eff, "effective"); + fprintf(stderr, "threads = %s (cpu_count = %d)\n", threads, cpu_count); return 0; } diff --git a/tests/fate/libavutil.mak b/tests/fate/libavutil.mak index 44d88c40ff..7f3329b1d5 100644 --- a/tests/fate/libavutil.mak +++ b/tests/fate/libavutil.mak @@ -27,7 +27,7 @@ fate-blowfish: CMD = run libavutil/blowfish-test FATE_LIBAVUTIL += fate-cpu fate-cpu: libavutil/cpu-test$(EXESUF) -fate-cpu: CMD = run libavutil/cpu-test $(CPUFLAGS:%=-c%) +fate-cpu: CMD = run libavutil/cpu-test $(CPUFLAGS:%=-c%) $(THREADS:%=-t%) fate-cpu: REF = /dev/null FATE_LIBAVUTIL += fate-crc