[FFmpeg-devel] [PATCH] Improved EXT-X-TARGETDURATION generation

Artem Skoretskiy tonn81 at gmail.com
Thu Aug 10 14:09:17 EEST 2017


It improves EXT-X-TARGETDURATION when some chunk duration is bigger than requested -hls_time N

In the current implementation, it is ceiling the value (if float part is bigger than 0.001) but it should be rounded. Specification ​https://tools.ietf.org/html/draft-pantos-http-live-streaming-22#page-49 allows both implementation, but rounding is more precise and better matches user needs (especially having in mind that HLS segmenter could generate slightly longer than requested).

See conversation https://trac.ffmpeg.org/ticket/6533
---
 libavformat/hlsenc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 74a3249b73..1c36ae4a12 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -1038,8 +1038,8 @@ static int hls_window(AVFormatContext *s, int last)
         goto fail;
 
     for (en = hls->segments; en; en = en->next) {
-        if (target_duration <= en->duration)
-            target_duration = get_int_from_double(en->duration);
+        if (target_duration < en->duration)
+            target_duration = (int)round(en->duration);
     }
 
     hls->discontinuity_set = 0;
-- 
2.11.0 (Apple Git-81)



More information about the ffmpeg-devel mailing list