[FFmpeg-cvslog] fftools/ffmpeg: add a helper function to access output file size
Anton Khirnov
git at videolan.org
Sat Jul 23 13:06:59 EEST 2022
ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sat Dec 11 14:44:38 2021 +0100| [9fe62a545f02c63ebae3a2fe26e4018e4be1e655] | committer: Anton Khirnov
fftools/ffmpeg: add a helper function to access output file size
Stop accessing muxer internals from outside of ffmpeg_mux.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9fe62a545f02c63ebae3a2fe26e4018e4be1e655
---
fftools/ffmpeg.c | 10 +---------
fftools/ffmpeg.h | 1 +
fftools/ffmpeg_mux.c | 14 ++++++++++++++
3 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index ed3075f6e6..d9b512ce59 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -1516,8 +1516,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
{
AVBPrint buf, buf_script;
OutputStream *ost;
- AVFormatContext *oc;
- int64_t total_size;
+ int64_t total_size = of_filesize(output_files[0]);
AVCodecContext *enc;
int vid, i;
double bitrate;
@@ -1546,13 +1545,6 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
t = (cur_time-timer_start) / 1000000.0;
-
- oc = output_files[0]->ctx;
-
- total_size = avio_size(oc->pb);
- if (total_size <= 0) // FIXME improve avio_size() so it works with non seekable output too
- total_size = avio_tell(oc->pb);
-
vid = 0;
av_bprint_init(&buf, 0, AV_BPRINT_SIZE_AUTOMATIC);
av_bprint_init(&buf_script, 0, AV_BPRINT_SIZE_AUTOMATIC);
diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index 2798fc830c..cab21e8170 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -705,5 +705,6 @@ void of_close(OutputFile **pof);
void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
int unqueue);
+int64_t of_filesize(OutputFile *of);
#endif /* FFTOOLS_FFMPEG_H */
diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
index e47a55c4e9..83558f7f7d 100644
--- a/fftools/ffmpeg_mux.c
+++ b/fftools/ffmpeg_mux.c
@@ -333,3 +333,17 @@ int of_muxer_init(OutputFile *of)
return 0;
}
+
+int64_t of_filesize(OutputFile *of)
+{
+ AVIOContext *pb = of->ctx->pb;
+ int64_t ret = -1;
+
+ if (pb) {
+ ret = avio_size(pb);
+ if (ret <= 0) // FIXME improve avio_size() so it works with non seekable output too
+ ret = avio_tell(pb);
+ }
+
+ return ret;
+}
More information about the ffmpeg-cvslog
mailing list