Commit 95b7fa17 authored by Martin Storsjö's avatar Martin Storsjö

oggenc: Support flushing the muxer

This allows the caller to write all buffered data to disk, allowing
the caller to know at what byte position in the file a certain
packet starts (any packet written after the flush will be located
after that byte position).
Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
parent d5a55981
......@@ -545,7 +545,7 @@ static int ogg_write_header(AVFormatContext *s)
return 0;
}
static int ogg_write_packet(AVFormatContext *s, AVPacket *pkt)
static int ogg_write_packet_internal(AVFormatContext *s, AVPacket *pkt)
{
AVStream *st = s->streams[pkt->stream_index];
OGGStreamContext *oggstream = st->priv_data;
......@@ -583,6 +583,23 @@ static int ogg_write_packet(AVFormatContext *s, AVPacket *pkt)
return 0;
}
static int ogg_write_packet(AVFormatContext *s, AVPacket *pkt)
{
int i;
if (pkt)
return ogg_write_packet_internal(s, pkt);
for (i = 0; i < s->nb_streams; i++) {
OGGStreamContext *oggstream = s->streams[i]->priv_data;
if (oggstream->page.segments_count)
ogg_buffer_page(s, oggstream);
}
ogg_write_pages(s, 2);
return 0;
}
static int ogg_write_trailer(AVFormatContext *s)
{
int i;
......@@ -623,6 +640,6 @@ AVOutputFormat ff_ogg_muxer = {
.write_header = ogg_write_header,
.write_packet = ogg_write_packet,
.write_trailer = ogg_write_trailer,
.flags = AVFMT_TS_NEGATIVE,
.flags = AVFMT_TS_NEGATIVE | AVFMT_ALLOW_FLUSH,
.priv_class = &ogg_muxer_class,
};
......@@ -31,7 +31,7 @@
#define LIBAVFORMAT_VERSION_MAJOR 55
#define LIBAVFORMAT_VERSION_MINOR 19
#define LIBAVFORMAT_VERSION_MICRO 0
#define LIBAVFORMAT_VERSION_MICRO 1
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment