[FFmpeg-cvslog] avformat/hlsenc: Fixed initial setting for end_pts

Karthick J git at videolan.org
Tue Nov 28 14:04:22 EET 2017


ffmpeg | branch: master | Karthick J <kjeyapal at akamai.com> | Tue Nov 28 20:03:15 2017 +0800| [d5d2632e3a0f1709290834fd35457cd05cf48bc8] | committer: Steven Liu

avformat/hlsenc: Fixed initial setting for end_pts

This patch fixes Bug #6868
Sometimes end_pts is getting initialized to audio stream's
first pts, while the duration is calculated based on video stream's pts.
In this patch the end_pts is initialized with the correct stream's first pts.

Reviewed-by: Steven Liu <lq at onvideo.cn>
Tested-by: beloko

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

 libavformat/hlsenc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 30ccf73d76..6997a5ced0 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -1737,6 +1737,7 @@ static int hls_write_header(AVFormatContext *s)
     vs->sequence       = hls->start_sequence;
     hls->recording_time = (hls->init_time ? hls->init_time : hls->time) * AV_TIME_BASE;
     vs->start_pts      = AV_NOPTS_VALUE;
+    vs->end_pts      = AV_NOPTS_VALUE;
     vs->current_segment_final_filename_fmt[0] = '\0';
 
     if (hls->flags & HLS_SPLIT_BY_TIME && hls->flags & HLS_INDEPENDENT_SEGMENTS) {
@@ -2111,7 +2112,6 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
 
     if (vs->start_pts == AV_NOPTS_VALUE) {
         vs->start_pts = pkt->pts;
-        vs->end_pts   = pkt->pts;
     }
 
     if (vs->has_video) {
@@ -2123,6 +2123,8 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
         is_ref_pkt = can_split = 0;
 
     if (is_ref_pkt) {
+        if (vs->end_pts == AV_NOPTS_VALUE)
+            vs->end_pts = pkt->pts;
         if (vs->new_start) {
             vs->new_start = 0;
             vs->duration = (double)(pkt->pts - vs->end_pts)



More information about the ffmpeg-cvslog mailing list