diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-07-04 20:39:50 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-07-04 21:03:28 +0200 |
commit | 039e9fe01ca27606a0ec1a944d51041541e10aab (patch) | |
tree | 9fc96837e878cdb2c13b6016d9f3d69785570488 /tools | |
parent | 8b421fad24acbba69935caf2a2775bd04f8a707a (diff) | |
parent | 7c29377b702783680b223a12503df784b1808086 (diff) | |
download | ffmpeg-039e9fe01ca27606a0ec1a944d51041541e10aab.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master: (29 commits)
lavfi: reclassify showfiltfmts as a TESTPROG
graph2dot: fix printf format specifier
swscale: yuv2planeX 8bit >=sse2 functions need aligned stack on x86-32.
vp8: loopfilter >=sse2 functions need aligned stack on x86-32.
amr: remove shift out of the AMR_BIT() macro.
dsputilenc: group yasm and inline asm function pointer assignment.
mov: use forward declaration of a function instead of a table.
Clarify Doxygen comment for FF_API_* #defines.
configure: simplify get_version()
Create version.h headers for libraries that lack them
gitignore: Use full path instead of relative path to specify patterns
mpegvideo: remove VLAs
Add XTEA encryption support in libavutil
Add Blowfish encryption support in libavutil
eval: Add the isinf() function and tests for it
flacdec: move lpc filter to flacdsp
flacdec: split off channel decorrelation as flacdsp
avplay: Add an option for not limiting the input buffer size
FATE: add a test for WMA cover art.
FATE: add a test for apetag cover art
...
Conflicts:
.gitignore
configure
ffplay.c
libavcodec/Makefile
libavcodec/error_resilience.c
libavcodec/mpegvideo.c
libavcodec/ratecontrol.c
libavdevice/avdevice.h
libavfilter/Makefile
libavfilter/filtfmts.c
libavfilter/version.h
libavformat/mov.c
libavformat/version.h
libavutil/Makefile
libavutil/avutil.h
libavutil/version.h
libswscale/swscale.h
libswscale/x86/swscale_mmx.c
tests/fate/libavutil.mak
tests/lavfi-regression.sh
tools/graph2dot.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/graph2dot.c | 2 | ||||
-rw-r--r-- | tools/ismindex.c | 45 | ||||
-rw-r--r-- | tools/lavfi-showfiltfmts.c | 125 |
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; -} |