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

Jeyapal, Karthick kjeyapal at akamai.com
Wed Jul 14 17:47:44 EEST 2021



On 7/14/21, 7:46 PM, "Kevin LaFlamme" <kevin at aiera.com> wrote:

>Any feedback on this?
Thanks for the reminder. I have pushed this patch alone from this series.
I had some concerns on v2 of this series, to which I have replied separately.

Thanks and Regards,
Karthick
>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