[FFmpeg-devel] [PATCH 1/2] Fix double write of DASH manifest in streaming mode

Kevin LaFlamme kevin at aiera.com
Wed Jul 14 16:52:30 EEST 2021


Any feedback on this?
On Jun 24, 2021, 8:58 AM -0400, Kevin LaFlamme <kevin at aiera.com>, wrote:
> When streaming mode is enabled, the DASH manifest is written on the
> first packet for the segment so that the segment can be advertised
> immediately to clients. It was also still writing the manifest at the
> end of the segment leading to two duplicate writes.
> ---
> libavformat/dashenc.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
> index e7a4a3d9e1..2b8fbcbe6e 100644
> --- a/libavformat/dashenc.c
> +++ b/libavformat/dashenc.c
> @@ -2030,7 +2030,10 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
>
> c->nr_of_streams_flushed = 0;
> }
> - ret = write_manifest(s, final);
> + // In streaming mode the manifest is written at the beginning
> + // of the segment instead
> + if (!c->streaming || final)
> + ret = write_manifest(s, final);
> }
> return ret;
> }
> @@ -2261,7 +2264,7 @@ static int dash_write_packet(AVFormatContext *s, AVPacket *pkt)
> // in streaming mode, the segments are available for playing
> // before fully written but the manifest is needed so that
> // clients and discover the segment filenames.
> - if (c->streaming && os->segment_type == SEGMENT_TYPE_MP4) {
> + if (c->streaming) {
> write_manifest(s, 0);
> }
>
> --
> 2.31.1
>


More information about the ffmpeg-devel mailing list