[FFmpeg-cvslog] fftools/ffmpeg: stop using av_stream_get_end_pts() in do_video_stats()
Anton Khirnov
git at videolan.org
Tue May 24 14:56:14 EEST 2022
ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Thu Dec 16 11:16:11 2021 +0100| [9acce2afcfb6b52f2c2a1d5e42949bfd591f6d3a] | committer: Anton Khirnov
fftools/ffmpeg: stop using av_stream_get_end_pts() in do_video_stats()
It retrieves libavformat's internal dts value (contrary to the
function's name), which is not only incorrect in general, but also
unnecessary because we can access the packet directly.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9acce2afcfb6b52f2c2a1d5e42949bfd591f6d3a
---
fftools/ffmpeg.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index f58258d45f..615abc6b5e 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -835,7 +835,7 @@ static double psnr(double d)
return -10.0 * log10(d);
}
-static void do_video_stats(OutputStream *ost, int frame_size)
+static void do_video_stats(OutputStream *ost, const AVPacket *pkt)
{
AVCodecContext *enc;
int frame_number;
@@ -863,13 +863,13 @@ static void do_video_stats(OutputStream *ost, int frame_size)
if (ost->error[0]>=0 && (enc->flags & AV_CODEC_FLAG_PSNR))
fprintf(vstats_file, "PSNR= %6.2f ", psnr(ost->error[0] / (enc->width * enc->height * 255.0 * 255.0)));
- fprintf(vstats_file,"f_size= %6d ", frame_size);
+ fprintf(vstats_file,"f_size= %6d ", pkt->size);
/* compute pts value */
- ti1 = av_stream_get_end_pts(ost->st) * av_q2d(ost->st->time_base);
+ ti1 = pkt->dts * av_q2d(ost->mux_timebase);
if (ti1 < 0.01)
ti1 = 0.01;
- bitrate = (frame_size * 8) / av_q2d(enc->time_base) / 1000.0;
+ bitrate = (pkt->size * 8) / av_q2d(enc->time_base) / 1000.0;
avg_bitrate = (double)(ost->data_size * 8) / ti1 / 1000.0;
fprintf(vstats_file, "s_size= %8.0fkB time= %0.3f br= %7.1fkbits/s avg_br= %7.1fkbits/s ",
(double)ost->data_size / 1024, ti1, bitrate, avg_bitrate);
@@ -948,7 +948,7 @@ static int encode_frame(OutputFile *of, OutputStream *ost, AVFrame *frame)
}
if (enc->codec_type == AVMEDIA_TYPE_VIDEO && vstats_filename)
- do_video_stats(ost, pkt->size);
+ do_video_stats(ost, pkt);
ost->packets_encoded++;
More information about the ffmpeg-cvslog
mailing list