Commit de2aaf1a authored by Rodger Combs's avatar Rodger Combs Committed by Michael Niedermayer

lavf/segment: Mark output contexts as non-seekable when applicable

This prevents sub-muxers from trying to seek back to the beginning of the
whole stream, only to find themselves overwriting some video data in the
current (often last) segment.

We only do this when not writing individual header/trailers.
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 9573737d
......@@ -237,6 +237,8 @@ static int segment_start(AVFormatContext *s, int write_header)
av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", oc->filename);
return err;
}
if (!seg->individual_header_trailer)
oc->pb->seekable = 0;
if (oc->oformat->priv_class && oc->priv_data)
av_opt_set(oc->priv_data, "mpegts_flags", "+resend_headers", 0);
......@@ -680,6 +682,8 @@ static int seg_write_header(AVFormatContext *s)
av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", oc->filename);
goto fail;
}
if (!seg->individual_header_trailer)
oc->pb->seekable = 0;
} else {
if ((ret = open_null_ctx(&oc->pb)) < 0)
goto fail;
......@@ -720,6 +724,8 @@ static int seg_write_header(AVFormatContext *s)
if ((ret = avio_open2(&oc->pb, oc->filename, AVIO_FLAG_WRITE,
&s->interrupt_callback, NULL)) < 0)
goto fail;
if (!seg->individual_header_trailer)
oc->pb->seekable = 0;
}
fail:
......
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