[FFmpeg-cvslog] Merge commit '1ceb07eb313c2d51383408025e57a2fe50ccd164'
Derek Buitenhuis
git at videolan.org
Wed Apr 13 16:38:28 CEST 2016
ffmpeg | branch: master | Derek Buitenhuis <derek.buitenhuis at gmail.com> | Wed Apr 13 15:36:55 2016 +0100| [3c461eecd48ba2cf7616d98e6f99954de3ad4b06] | committer: Derek Buitenhuis
Merge commit '1ceb07eb313c2d51383408025e57a2fe50ccd164'
* commit '1ceb07eb313c2d51383408025e57a2fe50ccd164':
avformat_find_stream_info: move duration guessing after updating codec parameters
Merged-by: Derek Buitenhuis <derek.buitenhuis at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3c461eecd48ba2cf7616d98e6f99954de3ad4b06
---
libavformat/utils.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libavformat/utils.c b/libavformat/utils.c
index d6aba5a..bf4ea2b 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -3723,9 +3723,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
}
}
- if (probesize)
- estimate_timings(ic, old_offset);
-
av_opt_set(ic, "skip_clear", "0", AV_OPT_SEARCH_CHILDREN);
if (ret >= 0 && ic->nb_streams)
@@ -3806,6 +3803,9 @@ FF_ENABLE_DEPRECATION_WARNINGS
st->internal->avctx_inited = 0;
}
+ if (probesize)
+ estimate_timings(ic, old_offset);
+
find_stream_info_err:
for (i = 0; i < ic->nb_streams; i++) {
st = ic->streams[i];
======================================================================
diff --cc libavformat/utils.c
index d6aba5a,31faa95..bf4ea2b
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@@ -3723,36 -2431,6 +3723,33 @@@ FF_ENABLE_DEPRECATION_WARNING
}
}
- if (probesize)
- estimate_timings(ic, old_offset);
-
+ av_opt_set(ic, "skip_clear", "0", AV_OPT_SEARCH_CHILDREN);
+
+ if (ret >= 0 && ic->nb_streams)
+ /* We could not have all the codec parameters before EOF. */
+ ret = -1;
+ for (i = 0; i < ic->nb_streams; i++) {
+ const char *errmsg;
+ st = ic->streams[i];
+
+ /* if no packet was ever seen, update context now for has_codec_parameters */
+ if (!st->internal->avctx_inited) {
+ ret = avcodec_parameters_to_context(st->internal->avctx, st->codecpar);
+ if (ret < 0)
+ goto find_stream_info_err;
+ }
+ if (!has_codec_parameters(st, &errmsg)) {
+ char buf[256];
+ avcodec_string(buf, sizeof(buf), st->internal->avctx, 0);
+ av_log(ic, AV_LOG_WARNING,
+ "Could not find codec parameters for stream %d (%s): %s\n"
+ "Consider increasing the value for the 'analyzeduration' and 'probesize' options\n",
+ i, buf, errmsg);
+ } else {
+ ret = 0;
+ }
+ }
+
compute_chapters_end(ic);
/* update the stream parameters from the internal codec contexts */
@@@ -3806,16 -2463,12 +3803,19 @@@ FF_ENABLE_DEPRECATION_WARNING
st->internal->avctx_inited = 0;
}
- estimate_timings(ic, old_offset);
++ if (probesize)
++ estimate_timings(ic, old_offset);
+
find_stream_info_err:
for (i = 0; i < ic->nb_streams; i++) {
+ st = ic->streams[i];
+ if (st->info)
+ av_freep(&st->info->duration_error);
av_freep(&ic->streams[i]->info);
}
+ if (ic->pb)
+ av_log(ic, AV_LOG_DEBUG, "After avformat_find_stream_info() pos: %"PRId64" bytes read:%"PRId64" seeks:%d frames:%d\n",
+ avio_tell(ic->pb), ic->pb->bytes_read, ic->pb->seek_count, count);
return ret;
}
More information about the ffmpeg-cvslog
mailing list