[FFmpeg-devel] [PATCH]Only print the "Estimating duration from bitrate" warning if a duration was estimated
Carl Eugen Hoyos
cehoyos at ag.or.at
Fri Mar 29 22:35:21 CET 2013
On Friday 29 March 2013 01:49:45 pm Michael Niedermayer wrote:
> On Fri, Mar 29, 2013 at 07:26:10AM +0100, Carl Eugen Hoyos wrote:
> > Hi!
> >
> > Attached patch silences a warning when it makes no sense to print it.
> >
> > Please comment, Carl Eugen
> >
> > utils.c | 8 +++++++-
> > 1 file changed, 7 insertions(+), 1 deletion(-)
> > ba89179ddaa756f8f0ecaf9e4b2bd324f8128a01 patchestimating.diff
> > diff --git a/libavformat/utils.c b/libavformat/utils.c
> > index df688f1..6fd942a 100644
> > --- a/libavformat/utils.c
> > +++ b/libavformat/utils.c
> > @@ -2440,10 +2440,16 @@ static void estimate_timings(AVFormatContext *ic,
> > int64_t old_offset) fill_all_stream_timings(ic);
> > ic->duration_estimation_method = AVFMT_DURATION_FROM_STREAM;
> > } else {
> > - av_log(ic, AV_LOG_WARNING, "Estimating duration from bitrate,
> > this may be inaccurate\n"); + int i;
> > /* less precise: use bitrate info */
> > estimate_timings_from_bit_rate(ic);
> > ic->duration_estimation_method = AVFMT_DURATION_FROM_BITRATE;
> > + for (i = 0; i < ic->nb_streams; i++) {
> > + if (ic->streams[i]->duration != AV_NOPTS_VALUE) {
> > + av_log(ic, AV_LOG_WARNING, "Estimating duration from
> > bitrate, this may be inaccurate\n"); + break;
> > + }
> > + }
>
> may be easier/cleaner to do this inside estimate_timings_from_bit_rate()
New patch attached.
Thank you, Carl Eugen
-------------- next part --------------
diff --git a/libavformat/utils.c b/libavformat/utils.c
index d0393f9..0a12d8a 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2304,7 +2304,7 @@ static void fill_all_stream_timings(AVFormatContext *ic)
static void estimate_timings_from_bit_rate(AVFormatContext *ic)
{
int64_t filesize, duration;
- int bit_rate, i;
+ int bit_rate, i, show_warning = 0;
AVStream *st;
/* if bit_rate is already set, we believe it */
@@ -2329,10 +2329,13 @@ static void estimate_timings_from_bit_rate(AVFormatContext *ic)
&& st->duration == AV_NOPTS_VALUE) {
duration= av_rescale(8*filesize, st->time_base.den, ic->bit_rate*(int64_t)st->time_base.num);
st->duration = duration;
+ show_warning = 1;
}
}
}
}
+ if (show_warning)
+ av_log(ic, AV_LOG_WARNING, "Estimating duration from bitrate, this may be inaccurate\n");
}
#define DURATION_MAX_READ_SIZE 250000LL
@@ -2440,7 +2443,6 @@ static void estimate_timings(AVFormatContext *ic, int64_t old_offset)
fill_all_stream_timings(ic);
ic->duration_estimation_method = AVFMT_DURATION_FROM_STREAM;
} else {
- av_log(ic, AV_LOG_WARNING, "Estimating duration from bitrate, this may be inaccurate\n");
/* less precise: use bitrate info */
estimate_timings_from_bit_rate(ic);
ic->duration_estimation_method = AVFMT_DURATION_FROM_BITRATE;
More information about the ffmpeg-devel
mailing list