From: Baptiste Coudurier Date: Mon, 19 Oct 2009 02:12:10 +0000 (+0000) Subject: In dump_format, print streams not associated with any program. X-Git-Tag: v0.6~2882 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7edbcfb79e1e8d69d70c10ee2eabf805e6a0ad1f;p=platform%2Fupstream%2Flibav.git In dump_format, print streams not associated with any program. Fixes issue #1366. Originally committed as revision 20306 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavformat/utils.c b/libavformat/utils.c index 9beec72..fc37347 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2902,6 +2902,9 @@ void dump_format(AVFormatContext *ic, int is_output) { int i; + uint8_t *printed = av_mallocz(ic->nb_streams); + if (ic->nb_streams && !printed) + return; av_log(NULL, AV_LOG_INFO, "%s #%d, %s, %s '%s':\n", is_output ? "Output" : "Input", @@ -2940,19 +2943,25 @@ void dump_format(AVFormatContext *ic, av_log(NULL, AV_LOG_INFO, "\n"); } if(ic->nb_programs) { - int j, k; + int j, k, total = 0; for(j=0; jnb_programs; j++) { AVMetadataTag *name = av_metadata_get(ic->programs[j]->metadata, "name", NULL, 0); av_log(NULL, AV_LOG_INFO, " Program %d %s\n", ic->programs[j]->id, name ? name->value : ""); - for(k=0; kprograms[j]->nb_stream_indexes; k++) + for(k=0; kprograms[j]->nb_stream_indexes; k++) { dump_stream_format(ic, ic->programs[j]->stream_index[k], index, is_output); - } - } else { + printed[ic->programs[j]->stream_index[k]] = 1; + } + total += ic->programs[j]->nb_stream_indexes; + } + if (total < ic->nb_streams) + av_log(NULL, AV_LOG_INFO, " No Program\n"); + } for(i=0;inb_streams;i++) + if (!printed[i]) dump_stream_format(ic, i, index, is_output); - } + if (ic->metadata) { AVMetadataTag *tag=NULL; av_log(NULL, AV_LOG_INFO, " Metadata\n"); @@ -2960,7 +2969,7 @@ void dump_format(AVFormatContext *ic, av_log(NULL, AV_LOG_INFO, " %-16s: %s\n", tag->key, tag->value); } } - + av_free(printed); } #if LIBAVFORMAT_VERSION_MAJOR < 53