summaryrefslogtreecommitdiff
path: root/libavformat/asfenc.c
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2019-12-27 13:53:00 +0100
committerMarton Balint <cus@passwd.hu>2020-01-07 21:51:45 +0100
commit3414115cd4e1eac555ebd3e9658cb9ba3c5b246b (patch)
treec94e3af27e71e10e31e7ed87de1834f13249ad6e /libavformat/asfenc.c
parentf4a8ea7ff6fd83ec925cfd3fccde538196cff85a (diff)
avformat: convert some avio_flush() calls to avio_write_marker(AVIO_DATA_MARKER_FLUSH_POINT)
Converting explicit avio_flush() calls helps us to buffer more data and avoid flushing the IO context too often which causes reduced IO throughput for non-streamed file output. The user can control FLUSH_POINT flushing behaviour using the -flush_packets option, the default typically means to flush unless a non-streamed file output is used, so this change should have no adverse effect on streaming even if it is assumed that after an avio_flush() the output buffer is clean so small seekbacks within the output buffer will work even when the IO context is not seekable. Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavformat/asfenc.c')
-rw-r--r--libavformat/asfenc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c
index 8eaa9d40ce..73afb13200 100644
--- a/libavformat/asfenc.c
+++ b/libavformat/asfenc.c
@@ -892,7 +892,8 @@ static void flush_packet(AVFormatContext *s)
avio_write(s->pb, asf->packet_buf, s->packet_size - packet_hdr_size);
- avio_flush(s->pb);
+ avio_write_marker(s->pb, AV_NOPTS_VALUE, AVIO_DATA_MARKER_FLUSH_POINT);
+
asf->nb_packets++;
asf->packet_nb_payloads = 0;
asf->packet_timestamp_start = -1;