From e737a4aaafcb1d761b7f96043c2f83ce742c64ae Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Wed, 10 Dec 2014 08:08:59 +0200 Subject: dashenc: Change the duration fields to 64 bit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For the last_duration field, it's mostly theoretical, but the total_duration field more probably may need to actually be 64 bit. Bug-Id: CID 1254944 Signed-off-by: Martin Storsjö --- libavformat/dashenc.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'libavformat/dashenc.c') diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index 07dd67341c..3308c055e8 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -86,8 +86,8 @@ typedef struct DASHContext { int single_file; OutputStream *streams; int has_video, has_audio; - int last_duration; - int total_duration; + int64_t last_duration; + int64_t total_duration; char availability_start_time[100]; char dirname[1024]; const char *single_file_name; @@ -205,7 +205,7 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, DASHContext int timescale = c->use_timeline ? os->ctx->streams[0]->time_base.den : AV_TIME_BASE; avio_printf(out, "\t\t\t\tuse_timeline) - avio_printf(out, "duration=\"%d\" ", c->last_duration); + avio_printf(out, "duration=\"%"PRId64"\" ", c->last_duration); avio_printf(out, "initialization=\"%s\" media=\"%s\" startNumber=\"%d\">\n", c->init_seg_name, c->media_seg_name, c->use_timeline ? start_number : 1); if (c->use_timeline) { avio_printf(out, "\t\t\t\t\t\n"); @@ -228,7 +228,7 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, DASHContext avio_printf(out, "\t\t\t\t\n"); } else if (c->single_file) { avio_printf(out, "\t\t\t\t%s\n", os->initfile); - avio_printf(out, "\t\t\t\t\n", AV_TIME_BASE, c->last_duration, start_number); + avio_printf(out, "\t\t\t\t\n", AV_TIME_BASE, c->last_duration, start_number); avio_printf(out, "\t\t\t\t\t\n", os->init_start_pos, os->init_start_pos + os->init_range_length - 1); for (i = start_index; i < os->nb_segments; i++) { Segment *seg = os->segments[i]; @@ -239,7 +239,7 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, DASHContext } avio_printf(out, "\t\t\t\t\n"); } else { - avio_printf(out, "\t\t\t\t\n", AV_TIME_BASE, c->last_duration, start_number); + avio_printf(out, "\t\t\t\t\n", AV_TIME_BASE, c->last_duration, start_number); avio_printf(out, "\t\t\t\t\t\n", os->initfile); for (i = start_index; i < os->nb_segments; i++) { Segment *seg = os->segments[i]; @@ -444,11 +444,11 @@ static int write_manifest(AVFormatContext *s, int final) write_time(out, c->total_duration); avio_printf(out, "\"\n"); } else { - int update_period = c->last_duration / AV_TIME_BASE; + int64_t update_period = c->last_duration / AV_TIME_BASE; if (c->use_template && !c->use_timeline) update_period = 500; - avio_printf(out, "\tminimumUpdatePeriod=\"PT%dS\"\n", update_period); - avio_printf(out, "\tsuggestedPresentationDelay=\"PT%dS\"\n", c->last_duration / AV_TIME_BASE); + avio_printf(out, "\tminimumUpdatePeriod=\"PT%"PRId64"S\"\n", update_period); + avio_printf(out, "\tsuggestedPresentationDelay=\"PT%"PRId64"S\"\n", c->last_duration / AV_TIME_BASE); if (!c->availability_start_time[0] && s->nb_streams > 0 && c->streams[0].nb_segments > 0) { time_t t = time(NULL); struct tm *ptm, tmbuf; -- cgit v1.2.3