summaryrefslogtreecommitdiff
path: root/fftools
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2021-12-16 11:16:11 +0100
committerAnton Khirnov <anton@khirnov.net>2022-05-24 13:46:57 +0200
commit9acce2afcfb6b52f2c2a1d5e42949bfd591f6d3a (patch)
tree73455aa8748abcb0be932bdbefbf12ede6977520 /fftools
parent3d4d3553752b34ff97ccc6e16e74b82524b0f404 (diff)
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.
Diffstat (limited to 'fftools')
-rw-r--r--fftools/ffmpeg.c10
1 files 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++;