summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/graph2dot.c2
-rw-r--r--tools/ismindex.c45
-rw-r--r--tools/lavfi-showfiltfmts.c125
3 files changed, 38 insertions, 134 deletions
diff --git a/tools/graph2dot.c b/tools/graph2dot.c
index 9d42113562..b34d615382 100644
--- a/tools/graph2dot.c
+++ b/tools/graph2dot.c
@@ -82,7 +82,7 @@ static void print_digraph(FILE *outfile, AVFilterGraph *graph)
av_get_channel_layout_string(buf, sizeof(buf), -1,
link->channel_layout);
fprintf(outfile,
- "fmt:%s sr:%"PRId64" cl:%s tb:%d/%d",
+ "fmt:%s sr:%d cl:%s tb:%d/%d",
av_get_sample_fmt_name(link->format),
link->sample_rate, buf,
link->time_base.num, link->time_base.den);
diff --git a/tools/ismindex.c b/tools/ismindex.c
index a30feb1fcb..1fc7c239da 100644
--- a/tools/ismindex.c
+++ b/tools/ismindex.c
@@ -209,10 +209,14 @@ static int read_mfra(struct VideoFiles *files, int start_index,
avio_seek(f, avio_size(f) - 4, SEEK_SET);
mfra_size = avio_rb32(f);
avio_seek(f, -mfra_size, SEEK_CUR);
- if (avio_rb32(f) != mfra_size)
+ if (avio_rb32(f) != mfra_size) {
+ err = AVERROR_INVALIDDATA;
goto fail;
- if (avio_rb32(f) != MKBETAG('m', 'f', 'r', 'a'))
+ }
+ if (avio_rb32(f) != MKBETAG('m', 'f', 'r', 'a')) {
+ err = AVERROR_INVALIDDATA;
goto fail;
+ }
while (!read_tfra(files, start_index, f)) {
/* Empty */
}
@@ -223,6 +227,8 @@ static int read_mfra(struct VideoFiles *files, int start_index,
fail:
if (f)
avio_close(f);
+ if (err)
+ fprintf(stderr, "Unable to read the MFRA atom in %s\n", file);
return err;
}
@@ -355,7 +361,7 @@ static int handle_file(struct VideoFiles *files, const char *file, int split)
avformat_close_input(&ctx);
- read_mfra(files, orig_files, file, split);
+ err = read_mfra(files, orig_files, file, split);
fail:
if (ctx)
@@ -420,6 +426,7 @@ static void output_client_manifest(struct VideoFiles *files,
"Duration=\"%"PRId64 "\">\n", files->duration * 10);
if (files->video_file >= 0) {
struct VideoFile *vf = files->files[files->video_file];
+ struct VideoFile *first_vf = vf;
int index = 0;
fprintf(out,
"\t<StreamIndex Type=\"video\" QualityLevels=\"%d\" "
@@ -439,15 +446,26 @@ static void output_client_manifest(struct VideoFiles *files,
fprintf(out, "%02X", vf->codec_private[j]);
fprintf(out, "\" />\n");
index++;
+ if (vf->chunks != first_vf->chunks)
+ fprintf(stderr, "Mismatched number of video chunks in %s and %s\n",
+ vf->name, first_vf->name);
}
- vf = files->files[files->video_file];
- for (i = 0; i < vf->chunks; i++)
+ vf = first_vf;
+ for (i = 0; i < vf->chunks; i++) {
+ for (j = files->video_file + 1; j < files->nb_files; j++) {
+ if (files->files[j]->is_video &&
+ vf->offsets[i].duration != files->files[j]->offsets[i].duration)
+ fprintf(stderr, "Mismatched duration of video chunk %d in %s and %s\n",
+ i, vf->name, files->files[j]->name);
+ }
fprintf(out, "\t\t<c n=\"%d\" d=\"%d\" />\n", i,
vf->offsets[i].duration);
+ }
fprintf(out, "\t</StreamIndex>\n");
}
if (files->audio_file >= 0) {
struct VideoFile *vf = files->files[files->audio_file];
+ struct VideoFile *first_vf = vf;
int index = 0;
fprintf(out,
"\t<StreamIndex Type=\"audio\" QualityLevels=\"%d\" "
@@ -469,11 +487,21 @@ static void output_client_manifest(struct VideoFiles *files,
fprintf(out, "%02X", vf->codec_private[j]);
fprintf(out, "\" />\n");
index++;
+ if (vf->chunks != first_vf->chunks)
+ fprintf(stderr, "Mismatched number of audio chunks in %s and %s\n",
+ vf->name, first_vf->name);
}
- vf = files->files[files->audio_file];
- for (i = 0; i < vf->chunks; i++)
+ vf = first_vf;
+ for (i = 0; i < vf->chunks; i++) {
+ for (j = files->audio_file + 1; j < files->nb_files; j++) {
+ if (files->files[j]->is_audio &&
+ vf->offsets[i].duration != files->files[j]->offsets[i].duration)
+ fprintf(stderr, "Mismatched duration of audio chunk %d in %s and %s\n",
+ i, vf->name, files->files[j]->name);
+ }
fprintf(out, "\t\t<c n=\"%d\" d=\"%d\" />\n",
i, vf->offsets[i].duration);
+ }
fprintf(out, "\t</StreamIndex>\n");
}
fprintf(out, "</SmoothStreamingMedia>\n");
@@ -509,7 +537,8 @@ int main(int argc, char **argv)
} else if (argv[i][0] == '-') {
return usage(argv[0], 1);
} else {
- handle_file(&vf, argv[i], split);
+ if (handle_file(&vf, argv[i], split))
+ return 1;
}
}
if (!vf.nb_files || (!basename && !split))
diff --git a/tools/lavfi-showfiltfmts.c b/tools/lavfi-showfiltfmts.c
deleted file mode 100644
index 9de5a2918f..0000000000
--- a/tools/lavfi-showfiltfmts.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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 "libavformat/avformat.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->inout##put_count; 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->format_count; j++) \
- if(av_get_pix_fmt_name(fmts->formats[j])) \
- printf(#INOUT "PUT[%d] %s: fmt:%s\n", \
- i, filter_ctx->filter->inout##puts[i].name, \
- av_get_pix_fmt_name(fmts->formats[j])); \
- } else if (filter_ctx->inout##puts[i]->type == AVMEDIA_TYPE_AUDIO) { \
- AVFilterFormats *fmts; \
- \
- fmts = filter_ctx->inout##puts[i]->outin##_formats; \
- for (j = 0; j < fmts->format_count; j++) \
- printf(#INOUT "PUT[%d] %s: fmt:%s\n", \
- i, filter_ctx->filter->inout##puts[i].name, \
- av_get_sample_fmt_name(fmts->formats[j])); \
- \
- fmts = filter_ctx->inout##puts[i]->outin##_channel_layouts; \
- for (j = 0; j < fmts->format_count; j++) { \
- char buf[256]; \
- av_get_channel_layout_string(buf, sizeof(buf), -1, \
- fmts->formats[j]); \
- printf(#INOUT "PUT[%d] %s: chlayout:%s\n", \
- i, filter_ctx->filter->inout##puts[i].name, buf); \
- } \
- } \
- } \
-
- PRINT_FMTS(in, out, IN);
- PRINT_FMTS(out, in, OUT);
-}
-
-int main(int argc, char **argv)
-{
- AVFilter *filter;
- AVFilterContext *filter_ctx;
- const char *filter_name;
- const char *filter_args = NULL;
- int i;
-
- 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_formats(filter_ctx);
-
- avfilter_free(filter_ctx);
- fflush(stdout);
- return 0;
-}