[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