lavfi: reclassify showfiltfmts as a TESTPROG
authorMans Rullgard <mans@mansr.com>
Wed, 4 Jul 2012 15:51:10 +0000 (16:51 +0100)
committerMans Rullgard <mans@mansr.com>
Wed, 4 Jul 2012 16:48:25 +0000 (17:48 +0100)
This tool uses lavfi internal symbols not accessible in shared
libraries.  TESTPROGS are linked statically to allow them use of
library internals not normally exported.

Signed-off-by: Mans Rullgard <mans@mansr.com>
.gitignore
libavfilter/Makefile
libavfilter/filtfmts.c [new file with mode: 0644]
tests/Makefile
tests/lavfi-regression.sh
tools/lavfi-showfiltfmts.c [deleted file]

index 6fe9434..56b3040 100644 (file)
@@ -42,7 +42,6 @@
 /tools/cws2fws
 /tools/graph2dot
 /tools/ismindex
-/tools/lavfi-showfiltfmts
 /tools/pktdumper
 /tools/probetest
 /tools/qt-faststart
index b789609..530aa57 100644 (file)
@@ -89,5 +89,5 @@ OBJS-$(CONFIG_TESTSRC_FILTER)                += vsrc_testsrc.o
 
 OBJS-$(CONFIG_NULLSINK_FILTER)               += vsink_nullsink.o
 
-TOOLS = graph2dot                                                       \
-        lavfi-showfiltfmts                                              \
+TOOLS     = graph2dot
+TESTPROGS = filtfmts
diff --git a/libavfilter/filtfmts.c b/libavfilter/filtfmts.c
new file mode 100644 (file)
index 0000000..8b23c7b
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2009 Stefano Sabatini
+ *
+ * This file is part of Libav.
+ *
+ * Libav is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Libav is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <stdio.h>
+
+#include "libavformat/avformat.h"
+#include "libavutil/pixdesc.h"
+#include "libavfilter/avfilter.h"
+#include "libavfilter/formats.h"
+
+#undef fprintf
+#undef printf
+
+int main(int argc, char **argv)
+{
+    AVFilter *filter;
+    AVFilterContext *filter_ctx;
+    const char *filter_name;
+    const char *filter_args = NULL;
+    int i, j;
+
+    av_log_set_level(AV_LOG_DEBUG);
+
+    if (!argv[1]) {
+        fprintf(stderr, "Missing filter name as argument\n");
+        return 1;
+    }
+
+    filter_name = argv[1];
+    if (argv[2])
+        filter_args = argv[2];
+
+    avfilter_register_all();
+
+    /* get a corresponding filter and open it */
+    if (!(filter = avfilter_get_by_name(filter_name))) {
+        fprintf(stderr, "Unrecognized filter with name '%s'\n", filter_name);
+        return 1;
+    }
+
+    if (avfilter_open(&filter_ctx, filter, NULL) < 0) {
+        fprintf(stderr, "Impossible to open filter with name '%s'\n",
+                filter_name);
+        return 1;
+    }
+    if (avfilter_init_filter(filter_ctx, filter_args, NULL) < 0) {
+        fprintf(stderr, "Impossible to init filter '%s' with arguments '%s'\n",
+                filter_name, filter_args);
+        return 1;
+    }
+
+    /* create a link for each of the input pads */
+    for (i = 0; i < filter_ctx->input_count; i++) {
+        AVFilterLink *link = av_mallocz(sizeof(AVFilterLink));
+        link->type = filter_ctx->filter->inputs[i].type;
+        filter_ctx->inputs[i] = link;
+    }
+    for (i = 0; i < filter_ctx->output_count; i++) {
+        AVFilterLink *link = av_mallocz(sizeof(AVFilterLink));
+        link->type = filter_ctx->filter->outputs[i].type;
+        filter_ctx->outputs[i] = link;
+    }
+
+    if (filter->query_formats)
+        filter->query_formats(filter_ctx);
+    else
+        ff_default_query_formats(filter_ctx);
+
+    /* print the supported formats in input */
+    for (i = 0; i < filter_ctx->input_count; i++) {
+        AVFilterFormats *fmts = filter_ctx->inputs[i]->out_formats;
+        for (j = 0; j < fmts->format_count; j++)
+            printf("INPUT[%d] %s: %s\n",
+                   i, filter_ctx->filter->inputs[i].name,
+                   av_pix_fmt_descriptors[fmts->formats[j]].name);
+    }
+
+    /* print the supported formats in output */
+    for (i = 0; i < filter_ctx->output_count; i++) {
+        AVFilterFormats *fmts = filter_ctx->outputs[i]->in_formats;
+        for (j = 0; j < fmts->format_count; j++)
+            printf("OUTPUT[%d] %s: %s\n",
+                   i, filter_ctx->filter->outputs[i].name,
+                   av_pix_fmt_descriptors[fmts->formats[j]].name);
+    }
+
+    avfilter_free(filter_ctx);
+    fflush(stdout);
+    return 0;
+}
index 6fe4ed3..91f2d49 100644 (file)
@@ -92,7 +92,7 @@ FATE += $(FATE_LIBAVUTIL)
 $(FATE_AVCONV) $(FATE_SAMPLES_AVCONV): avconv$(EXESUF)
 
 $(FATE_LAVF):  $(AREF) $(VREF)
-$(FATE_LAVFI): $(VREF) tools/lavfi-showfiltfmts$(EXESUF)
+$(FATE_LAVFI): $(VREF) libavfilter/filtfmts-test$(EXESUF)
 $(FATE_SEEK):  fate-acodec fate-vsynth2 fate-lavf libavformat/seek-test$(EXESUF)
 
 $(FATE_LAVF):    CMD = lavftest
index f8c0c4e..a315e72 100755 (executable)
@@ -44,7 +44,7 @@ do_lavfi_pixfmts(){
     filter=$1
     filter_args=$2
 
-    showfiltfmts="$target_exec $target_path/tools/lavfi-showfiltfmts"
+    showfiltfmts="$target_exec $target_path/libavfilter/filtfmts-test"
     exclude_fmts=${outfile}${1}_exclude_fmts
     out_fmts=${outfile}${1}_out_fmts
 
diff --git a/tools/lavfi-showfiltfmts.c b/tools/lavfi-showfiltfmts.c
deleted file mode 100644 (file)
index 146f0cd..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2009 Stefano Sabatini
- *
- * This file is part of Libav.
- *
- * Libav is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * Libav is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Libav; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "libavformat/avformat.h"
-#include "libavutil/pixdesc.h"
-#include "libavfilter/avfilter.h"
-#include "libavfilter/formats.h"
-
-int main(int argc, char **argv)
-{
-    AVFilter *filter;
-    AVFilterContext *filter_ctx;
-    const char *filter_name;
-    const char *filter_args = NULL;
-    int i, j;
-
-    av_log_set_level(AV_LOG_DEBUG);
-
-    if (!argv[1]) {
-        fprintf(stderr, "Missing filter name as argument\n");
-        return 1;
-    }
-
-    filter_name = argv[1];
-    if (argv[2])
-        filter_args = argv[2];
-
-    avfilter_register_all();
-
-    /* get a corresponding filter and open it */
-    if (!(filter = avfilter_get_by_name(filter_name))) {
-        fprintf(stderr, "Unrecognized filter with name '%s'\n", filter_name);
-        return 1;
-    }
-
-    if (avfilter_open(&filter_ctx, filter, NULL) < 0) {
-        fprintf(stderr, "Impossible to open filter with name '%s'\n",
-                filter_name);
-        return 1;
-    }
-    if (avfilter_init_filter(filter_ctx, filter_args, NULL) < 0) {
-        fprintf(stderr, "Impossible to init filter '%s' with arguments '%s'\n",
-                filter_name, filter_args);
-        return 1;
-    }
-
-    /* create a link for each of the input pads */
-    for (i = 0; i < filter_ctx->input_count; i++) {
-        AVFilterLink *link = av_mallocz(sizeof(AVFilterLink));
-        link->type = filter_ctx->filter->inputs[i].type;
-        filter_ctx->inputs[i] = link;
-    }
-    for (i = 0; i < filter_ctx->output_count; i++) {
-        AVFilterLink *link = av_mallocz(sizeof(AVFilterLink));
-        link->type = filter_ctx->filter->outputs[i].type;
-        filter_ctx->outputs[i] = link;
-    }
-
-    if (filter->query_formats)
-        filter->query_formats(filter_ctx);
-    else
-        ff_default_query_formats(filter_ctx);
-
-    /* print the supported formats in input */
-    for (i = 0; i < filter_ctx->input_count; i++) {
-        AVFilterFormats *fmts = filter_ctx->inputs[i]->out_formats;
-        for (j = 0; j < fmts->format_count; j++)
-            printf("INPUT[%d] %s: %s\n",
-                   i, filter_ctx->filter->inputs[i].name,
-                   av_pix_fmt_descriptors[fmts->formats[j]].name);
-    }
-
-    /* print the supported formats in output */
-    for (i = 0; i < filter_ctx->output_count; i++) {
-        AVFilterFormats *fmts = filter_ctx->outputs[i]->in_formats;
-        for (j = 0; j < fmts->format_count; j++)
-            printf("OUTPUT[%d] %s: %s\n",
-                   i, filter_ctx->filter->outputs[i].name,
-                   av_pix_fmt_descriptors[fmts->formats[j]].name);
-    }
-
-    avfilter_free(filter_ctx);
-    fflush(stdout);
-    return 0;
-}