[FFmpeg-cvslog] avformat/dashdec: refine compute current fragment for presentation_timeoffset mode

Steven Liu git at videolan.org
Wed Sep 5 09:36:15 EEST 2018


ffmpeg | branch: master | Steven Liu <lq at chinaffmpeg.org> | Wed Sep  5 14:33:53 2018 +0800| [ad9b4ecc26bef7babb31b58f19c869f6464c2db9] | committer: Steven Liu

avformat/dashdec: refine compute current fragment for presentation_timeoffset mode

fix ticket id: #7369 #7382.
use ((wallclock - availability_start_time) * timescale -presentation_timeoffset) / duration

Signed-off-by: Steven Liu <lq at onvideo.cn>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ad9b4ecc26bef7babb31b58f19c869f6464c2db9
---

 libavformat/dashdec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c
index e8c57a51c5..154b1426b9 100644
--- a/libavformat/dashdec.c
+++ b/libavformat/dashdec.c
@@ -1341,7 +1341,7 @@ static int64_t calc_cur_seg_no(AVFormatContext *s, struct representation *pls)
         } else if (pls->fragment_duration){
             av_log(s, AV_LOG_TRACE, "in fragment_duration mode fragment_timescale = %"PRId64", presentation_timeoffset = %"PRId64"\n", pls->fragment_timescale, pls->presentation_timeoffset);
             if (pls->presentation_timeoffset) {
-                num = pls->presentation_timeoffset * pls->fragment_timescale / pls->fragment_duration;
+                num = pls->first_seq_no + (((get_current_time_in_sec() - c->availability_start_time) * pls->fragment_timescale)-pls->presentation_timeoffset) / pls->fragment_duration;
             } else if (c->publish_time > 0 && !c->availability_start_time) {
                 if (c->min_buffer_time) {
                     num = pls->first_seq_no + (((c->publish_time + pls->fragment_duration) - c->suggested_presentation_delay) * pls->fragment_timescale) / pls->fragment_duration - c->min_buffer_time;



More information about the ffmpeg-cvslog mailing list