diff options
author | Clément Bœsch <clement@stupeflix.com> | 2016-06-22 13:44:29 +0200 |
---|---|---|
committer | Clément Bœsch <clement@stupeflix.com> | 2016-06-22 13:44:34 +0200 |
commit | 5d48e4eafa6c4559683892b8638d10508125f3cf (patch) | |
tree | 0d5becbd08d6ae319497dd32cbe9b67f4670cc5e /libavfilter/tests | |
parent | 989a614b707dcff8abdffe28dc24ec64a83b2837 (diff) | |
parent | a6a750c7ef240b72ce01e9653343a0ddf247d196 (diff) | |
download | ffmpeg-streaming-5d48e4eafa6c4559683892b8638d10508125f3cf.zip ffmpeg-streaming-5d48e4eafa6c4559683892b8638d10508125f3cf.tar.gz |
Merge commit 'a6a750c7ef240b72ce01e9653343a0ddf247d196'
* commit 'a6a750c7ef240b72ce01e9653343a0ddf247d196':
tests: Move all test programs to a subdirectory
Merged-by: Clément Bœsch <clement@stupeflix.com>
Diffstat (limited to 'libavfilter/tests')
-rw-r--r-- | libavfilter/tests/.gitignore | 3 | ||||
-rw-r--r-- | libavfilter/tests/drawutils.c | 56 | ||||
-rw-r--r-- | libavfilter/tests/filtfmts.c | 150 | ||||
-rw-r--r-- | libavfilter/tests/formats.c | 65 |
4 files changed, 274 insertions, 0 deletions
diff --git a/libavfilter/tests/.gitignore b/libavfilter/tests/.gitignore new file mode 100644 index 0000000..b605afa --- /dev/null +++ b/libavfilter/tests/.gitignore @@ -0,0 +1,3 @@ +/drawutils +/filtfmts +/formats diff --git a/libavfilter/tests/drawutils.c b/libavfilter/tests/drawutils.c new file mode 100644 index 0000000..7fe53dd --- /dev/null +++ b/libavfilter/tests/drawutils.c @@ -0,0 +1,56 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg 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. + * + * FFmpeg 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 FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <stdio.h> + +#include "libavutil/pixdesc.h" +#include "libavfilter/drawutils.h" + +int main(void) +{ + enum AVPixelFormat f; + const AVPixFmtDescriptor *desc; + FFDrawContext draw; + FFDrawColor color; + int r, i; + + for (f = 0; av_pix_fmt_desc_get(f); f++) { + desc = av_pix_fmt_desc_get(f); + if (!desc->name) + continue; + printf("Testing %s...%*s", desc->name, + (int)(16 - strlen(desc->name)), ""); + r = ff_draw_init(&draw, f, 0); + if (r < 0) { + char buf[128]; + av_strerror(r, buf, sizeof(buf)); + printf("no: %s\n", buf); + continue; + } + ff_draw_color(&draw, &color, (uint8_t[]) { 1, 0, 0, 1 }); + for (i = 0; i < sizeof(color); i++) + if (((uint8_t *)&color)[i] != 128) + break; + if (i == sizeof(color)) { + printf("fallback color\n"); + continue; + } + printf("ok\n"); + } + return 0; +} diff --git a/libavfilter/tests/filtfmts.c b/libavfilter/tests/filtfmts.c new file mode 100644 index 0000000..46a2d94 --- /dev/null +++ b/libavfilter/tests/filtfmts.c @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2009 Stefano Sabatini + * + * This file is part of FFmpeg. + * + * FFmpeg 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. + * + * FFmpeg 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 FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <stdio.h> + +#include "libavutil/channel_layout.h" +#include "libavutil/mem.h" +#include "libavutil/pixdesc.h" +#include "libavutil/samplefmt.h" + +#include "libavfilter/avfilter.h" +#include "libavfilter/formats.h" + +static void print_formats(AVFilterContext *filter_ctx) +{ + int i, j; + +#define PRINT_FMTS(inout, outin, INOUT) \ + for (i = 0; i < filter_ctx->nb_##inout##puts; i++) { \ + if (filter_ctx->inout##puts[i]->type == AVMEDIA_TYPE_VIDEO) { \ + AVFilterFormats *fmts = \ + filter_ctx->inout##puts[i]->outin##_formats; \ + for (j = 0; j < fmts->nb_formats; j++) \ + if(av_get_pix_fmt_name(fmts->formats[j])) \ + printf(#INOUT "PUT[%d] %s: fmt:%s\n", \ + i, avfilter_pad_get_name(filter_ctx->inout##put_pads, i), \ + av_get_pix_fmt_name(fmts->formats[j])); \ + } else if (filter_ctx->inout##puts[i]->type == AVMEDIA_TYPE_AUDIO) { \ + AVFilterFormats *fmts; \ + AVFilterChannelLayouts *layouts; \ + \ + fmts = filter_ctx->inout##puts[i]->outin##_formats; \ + for (j = 0; j < fmts->nb_formats; j++) \ + printf(#INOUT "PUT[%d] %s: fmt:%s\n", \ + i, avfilter_pad_get_name(filter_ctx->inout##put_pads, i), \ + av_get_sample_fmt_name(fmts->formats[j])); \ + \ + layouts = filter_ctx->inout##puts[i]->outin##_channel_layouts; \ + for (j = 0; j < layouts->nb_channel_layouts; j++) { \ + char buf[256]; \ + av_get_channel_layout_string(buf, sizeof(buf), -1, \ + layouts->channel_layouts[j]); \ + printf(#INOUT "PUT[%d] %s: chlayout:%s\n", \ + i, avfilter_pad_get_name(filter_ctx->inout##put_pads, i), buf); \ + } \ + } \ + } \ + + PRINT_FMTS(in, out, IN); + PRINT_FMTS(out, in, OUT); +} + +int main(int argc, char **argv) +{ + AVFilter *filter; + AVFilterContext *filter_ctx; + AVFilterGraph *graph_ctx; + const char *filter_name; + const char *filter_args = NULL; + int i; + int ret = 0; + + av_log_set_level(AV_LOG_DEBUG); + + if (argc < 2) { + fprintf(stderr, "Missing filter name as argument\n"); + return 1; + } + + filter_name = argv[1]; + if (argc > 2) + filter_args = argv[2]; + + /* allocate graph */ + graph_ctx = avfilter_graph_alloc(); + if (!graph_ctx) + return 1; + + 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; + } + + /* open filter and add it to the graph */ + if (!(filter_ctx = avfilter_graph_alloc_filter(graph_ctx, filter, filter_name))) { + fprintf(stderr, "Impossible to open filter with name '%s'\n", + filter_name); + return 1; + } + if (avfilter_init_str(filter_ctx, filter_args) < 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->nb_inputs; i++) { + AVFilterLink *link = av_mallocz(sizeof(AVFilterLink)); + if (!link) { + fprintf(stderr, "Unable to allocate memory for filter input link\n"); + ret = 1; + goto fail; + } + link->type = avfilter_pad_get_type(filter_ctx->input_pads, i); + filter_ctx->inputs[i] = link; + } + for (i = 0; i < filter_ctx->nb_outputs; i++) { + AVFilterLink *link = av_mallocz(sizeof(AVFilterLink)); + if (!link) { + fprintf(stderr, "Unable to allocate memory for filter output link\n"); + ret = 1; + goto fail; + } + link->type = avfilter_pad_get_type(filter_ctx->output_pads, i); + filter_ctx->outputs[i] = link; + } + + if (filter->query_formats) + filter->query_formats(filter_ctx); + else + ff_default_query_formats(filter_ctx); + + print_formats(filter_ctx); + +fail: + avfilter_free(filter_ctx); + avfilter_graph_free(&graph_ctx); + fflush(stdout); + return ret; +} diff --git a/libavfilter/tests/formats.c b/libavfilter/tests/formats.c new file mode 100644 index 0000000..0e8ba4a --- /dev/null +++ b/libavfilter/tests/formats.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2007 Bobby Bingham + * + * This file is part of FFmpeg. + * + * FFmpeg 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. + * + * FFmpeg 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 FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavfilter/formats.c" + +#undef printf + +int main(void) +{ + const int64_t *cl; + char buf[512]; + int i; + const char *teststrings[] ={ + "blah", + "1", + "2", + "-1", + "60", + "65", + "1c", + "2c", + "-1c", + "60c", + "65c", + "5.1", + "stereo", + "1+1+1+1", + "1c+1c+1c+1c", + "2c+1c", + "0x3", + }; + + for (cl = avfilter_all_channel_layouts; *cl != -1; cl++) { + av_get_channel_layout_string(buf, sizeof(buf), -1, *cl); + printf("%s\n", buf); + } + + for ( i = 0; i<FF_ARRAY_ELEMS(teststrings); i++) { + int64_t layout = -1; + int count = -1; + int ret; + ret = ff_parse_channel_layout(&layout, &count, teststrings[i], NULL); + + printf ("%d = ff_parse_channel_layout(%016"PRIX64", %2d, %s);\n", ret ? -1 : 0, layout, count, teststrings[i]); + } + + return 0; +} |