summaryrefslogtreecommitdiff
path: root/fftools/ffmpeg_mux.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2021-12-11 14:12:08 +0100
committerAnton Khirnov <anton@khirnov.net>2022-07-23 11:53:19 +0200
commitd8e944c2385fab726beb48011ebe1e48b84fe96c (patch)
treefc097801baa1b2b6eb2c877f3d98b58a818ed053 /fftools/ffmpeg_mux.c
parent81af4dec27b6e0db7b7ed80bf96aaaccbf702954 (diff)
fftools/ffmpeg: refactor limiting output file size with -fs
Move the file size checking code to ffmpeg_mux. Use the recently introduced of_filesize(), making this code consistent with the size shown by print_report().
Diffstat (limited to 'fftools/ffmpeg_mux.c')
-rw-r--r--fftools/ffmpeg_mux.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
index 83558f7f7d..207231f33b 100644
--- a/fftools/ffmpeg_mux.c
+++ b/fftools/ffmpeg_mux.c
@@ -33,6 +33,8 @@
#include "libavformat/avio.h"
struct Muxer {
+ /* filesize limit expressed in bytes */
+ int64_t limit_filesize;
int header_written;
};
@@ -322,7 +324,7 @@ void of_close(OutputFile **pof)
av_freep(pof);
}
-int of_muxer_init(OutputFile *of)
+int of_muxer_init(OutputFile *of, int64_t limit_filesize)
{
Muxer *mux = av_mallocz(sizeof(*mux));
@@ -331,9 +333,16 @@ int of_muxer_init(OutputFile *of)
of->mux = mux;
+ mux->limit_filesize = limit_filesize;
+
return 0;
}
+int of_finished(OutputFile *of)
+{
+ return of_filesize(of) >= of->mux->limit_filesize;
+}
+
int64_t of_filesize(OutputFile *of)
{
AVIOContext *pb = of->ctx->pb;