[FFmpeg-cvslog] lavf/dashenc: Fix segment duration overflow on fine time bases.
Andrey Semashev
git at videolan.org
Fri Nov 23 10:46:05 EET 2018
ffmpeg | branch: master | Andrey Semashev <andrey.semashev at gmail.com> | Tue Nov 20 20:33:52 2018 +0300| [fa08345e882c7b717744419914c6621ef66d0f5b] | committer: Karthick J
lavf/dashenc: Fix segment duration overflow on fine time bases.
When stream time bases are very fine grained (e.g. nanoseconds), 32-bit
segment duration may overflow for even for rather small segment duration
(about 4 seconds long). Therefore we use 64-bit values for segment duration.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fa08345e882c7b717744419914c6621ef66d0f5b
---
libavformat/dashenc.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index e51ffaf31b..6ce70e0076 100644
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -60,7 +60,7 @@ typedef struct Segment {
int64_t start_pos;
int range_length, index_length;
int64_t time;
- int duration;
+ int64_t duration;
int n;
} Segment;
@@ -475,7 +475,7 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, AVFormatCont
cur_time = seg->time;
avio_printf(out, "t=\"%"PRId64"\" ", seg->time);
}
- avio_printf(out, "d=\"%d\" ", seg->duration);
+ avio_printf(out, "d=\"%"PRId64"\" ", seg->duration);
while (i + repeat + 1 < os->nb_segments &&
os->segments[i + repeat + 1]->duration == seg->duration &&
os->segments[i + repeat + 1]->time == os->segments[i + repeat]->time + os->segments[i + repeat]->duration)
@@ -1213,7 +1213,7 @@ static int dash_write_header(AVFormatContext *s)
}
static int add_segment(OutputStream *os, const char *file,
- int64_t time, int duration,
+ int64_t time, int64_t duration,
int64_t start_pos, int64_t range_length,
int64_t index_length, int next_exp_index)
{
More information about the ffmpeg-cvslog
mailing list