[FFmpeg-devel] [PATCH v2] ffplay: always show stats at all log levels if requested by user
Gyan Doshi
ffmpeg at gyani.pro
Sat Apr 4 12:48:41 EEST 2020
On 04-04-2020 02:49 pm, Marton Balint wrote:
>
>
> On Fri, 3 Apr 2020, Gyan Doshi wrote:
>
>> Since 3b491c5a500, stats would be hidden if loglevel was lower than
>> info, even if -stats was set.
>>
>> Fixes #6962
>> ---
>> doc/ffplay.texi | 5 +++--
>> fftools/ffplay.c | 36 ++++++++++++++++++++++++------------
>> 2 files changed, 27 insertions(+), 14 deletions(-)
>>
>> diff --git a/doc/ffplay.texi b/doc/ffplay.texi
>> index a487c0de8d..f3761bb12e 100644
>> --- a/doc/ffplay.texi
>> +++ b/doc/ffplay.texi
>> @@ -133,8 +133,9 @@ This option has been deprecated in favor of
>> private options, try -pixel_format.
>> @item -stats
>> Print several playback statistics, in particular show the stream
>> duration, the codec parameters, the current position in the stream and
>> -the audio/video synchronisation drift. It is on by default, to
>> -explicitly disable it you need to specify @code{-nostats}.
>> +the audio/video synchronisation drift. It is shown by default,
>> unless the
>> +log level is lower than @code{info}. Its display can be forced by
>> manually
>> +specifying this option. To disable it, you need to specify
>> @code{-nostats}.
>>
>> @item -fast
>> Non-spec-compliant optimizations.
>> diff --git a/fftools/ffplay.c b/fftools/ffplay.c
>> index 2ed4b22d3e..416ebbf7df 100644
>> --- a/fftools/ffplay.c
>> +++ b/fftools/ffplay.c
>> @@ -40,6 +40,7 @@
>> #include "libavutil/samplefmt.h"
>> #include "libavutil/avassert.h"
>> #include "libavutil/time.h"
>> +#include "libavutil/bprint.h"
>> #include "libavformat/avformat.h"
>> #include "libavdevice/avdevice.h"
>> #include "libswscale/swscale.h"
>> @@ -326,7 +327,7 @@ static int display_disable;
>> static int borderless;
>> static int alwaysontop;
>> static int startup_volume = 100;
>> -static int show_status = 1;
>> +static int show_status = -1;
>> static int av_sync_type = AV_SYNC_AUDIO_MASTER;
>> static int64_t start_time = AV_NOPTS_VALUE;
>> static int64_t duration = AV_NOPTS_VALUE;
>> @@ -1692,6 +1693,7 @@ display:
>> }
>> is->force_refresh = 0;
>> if (show_status) {
>> + AVBPrint buf;
>> static int64_t last_time;
>> int64_t cur_time;
>> int aqsize, vqsize, sqsize;
>> @@ -1715,18 +1717,28 @@ display:
>> av_diff = get_master_clock(is) - get_clock(&is->vidclk);
>> else if (is->audio_st)
>> av_diff = get_master_clock(is) - get_clock(&is->audclk);
>> - av_log(NULL, AV_LOG_INFO,
>> - "%7.2f %s:%7.3f fd=%4d aq=%5dKB vq=%5dKB sq=%5dB
>> f=%"PRId64"/%"PRId64" \r",
>> - get_master_clock(is),
>> - (is->audio_st && is->video_st) ? "A-V" :
>> (is->video_st ? "M-V" : (is->audio_st ? "M-A" : " ")),
>> - av_diff,
>> - is->frame_drops_early + is->frame_drops_late,
>> - aqsize / 1024,
>> - vqsize / 1024,
>> - sqsize,
>> - is->video_st ?
>> is->viddec.avctx->pts_correction_num_faulty_dts : 0,
>> - is->video_st ?
>> is->viddec.avctx->pts_correction_num_faulty_pts : 0);
>> +
>> + av_bprint_init(&buf, 0, AV_BPRINT_SIZE_AUTOMATIC);
>> + av_bprintf(&buf,
>> + "%7.2f %s:%7.3f fd=%4d aq=%5dKB vq=%5dKB
>> sq=%5dB f=%"PRId64"/%"PRId64" \r",
>> + get_master_clock(is),
>> + (is->audio_st && is->video_st) ? "A-V" :
>> (is->video_st ? "M-V" : (is->audio_st ? "M-A" : " ")),
>> + av_diff,
>> + is->frame_drops_early + is->frame_drops_late,
>> + aqsize / 1024,
>> + vqsize / 1024,
>> + sqsize,
>> + is->video_st ?
>> is->viddec.avctx->pts_correction_num_faulty_dts : 0,
>> + is->video_st ?
>> is->viddec.avctx->pts_correction_num_faulty_pts : 0);
>> +
>> + if (show_status == 1 && AV_LOG_INFO > av_log_get_level())
>> + fprintf(stderr, "%s", buf.str);
>> + else
>> + av_log(NULL, AV_LOG_INFO, "%s", buf.str);
>> +
>> fflush(stdout);
>> + av_bprint_finalize(&buf, NULL);
>> +
>> last_time = cur_time;
>> }
>> }
>
> LGTM, thanks.
Thanks. Pushed as 2d6a89872ea2e20a3464be825d683d6f91d67c62
Gyan
More information about the ffmpeg-devel
mailing list