On 4/2/18 9:36 AM, Jeyapal, Karthick wrote: > > > On 3/23/18 10:57 AM, vdi...@akamai.com wrote: >> From: Vishwanath Dixit <vdi...@akamai.com> >> >> availability time of Nth segment = availabilityStartTime + (N*segment >> duration) - availabilityTimeOffset. >> This field helps to reduce the latency by about a segment duration in >> streaming mode. >> --- >> libavformat/dashenc.c | 11 ++++++++++- >> 1 file changed, 10 insertions(+), 1 deletion(-) >> >> diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c >> index b62cb3e..d20bdba 100644 >> --- a/libavformat/dashenc.c >> +++ b/libavformat/dashenc.c >> @@ -85,6 +85,7 @@ typedef struct OutputStream { >> char filename[1024]; >> char full_path[1024]; >> char temp_path[1024]; >> + int64_t chunk_duration; > Remove this variable chunk_duration, and instead create a variable directly > for availabilityTimeOffset. Thanks for the review. I have submitted the revised patch https://patchwork.ffmpeg.org/patch/8312/
>> } OutputStream; >> >> typedef struct DASHContext { >> @@ -343,8 +344,12 @@ static void output_segment_list(OutputStream *os, >> AVIOContext *out, AVFormatCont >> if (c->use_template) { >> int timescale = c->use_timeline ? >> os->ctx->streams[0]->time_base.den : AV_TIME_BASE; >> avio_printf(out, "\t\t\t\t<SegmentTemplate timescale=\"%d\" ", >> timescale); >> - if (!c->use_timeline) >> + if (!c->use_timeline) { >> avio_printf(out, "duration=\"%d\" ", c->seg_duration); >> + if (c->streaming && os->chunk_duration) >> + avio_printf(out, "availabilityTimeOffset=\"%.3f\" ", >> + ((double) c->seg_duration - os->chunk_duration) >> / AV_TIME_BASE); >> + } >> avio_printf(out, "initialization=\"%s\" media=\"%s\" >> startNumber=\"%d\">\n", c->init_seg_name, c->media_seg_name, c->use_timeline >> ? start_number : 1); >> if (c->use_timeline) { >> int64_t cur_time = 0; >> @@ -1283,6 +1288,10 @@ static int dash_write_packet(AVFormatContext *s, >> AVPacket *pkt) >> format_date_now(c->availability_start_time, >> sizeof(c->availability_start_time)); >> >> + if (!os->chunk_duration && pkt->duration) >> + os->chunk_duration = av_rescale_q(pkt->duration, st->time_base, >> + AV_TIME_BASE_Q); > Don’t use the term ‘chunk_duration’ here, as it is not clearly conceptualized > in this file. > Instead use the term ‘frame_duration’(local variable) to avoid confusion. Thanks for the review. I have submitted the revised patch https://patchwork.ffmpeg.org/patch/8312/ >> + >> if (c->use_template && !c->use_timeline) { >> elapsed_duration = pkt->pts - os->first_pts; >> seg_end_duration = (int64_t) os->segment_index * c->seg_duration; > > > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel