fftools/ffmpeg: add a helper function to access output file size

Stop accessing muxer internals from outside of ffmpeg_mux.
This commit is contained in:
Anton Khirnov 2021-12-11 14:44:38 +01:00
parent 6a23be92d2
commit 9fe62a545f
3 changed files with 16 additions and 9 deletions

View File

@ -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);

View File

@ -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 */

View File

@ -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;
}