[FFmpeg-devel] [PATCH] lavf/dashenc: Fix segment duration overflow on fine time bases.
Jeyapal, Karthick
kjeyapal at akamai.com
Thu Nov 22 08:43:08 EET 2018
On 11/20/18 11:03 PM, Andrey Semashev wrote:
> 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.
> ---
> libavformat/dashenc.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
> index d151921175..8d0bc4baa2 100644
> --- a/libavformat/dashenc.c
> +++ b/libavformat/dashenc.c
> @@ -59,7 +59,7 @@ typedef struct Segment {
> int64_t start_pos;
> int range_length, index_length;
> int64_t time;
> - int duration;
> + int64_t duration;
> int n;
> } Segment;
>
> @@ -428,7 +428,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)
> @@ -1149,7 +1149,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)
> {
LGTM.
Thanks and regards,
Karthick
More information about the ffmpeg-devel
mailing list