summaryrefslogtreecommitdiff
path: root/libavformat/dashenc.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-12-06 17:46:02 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-12-07 20:07:26 +0100
commite65849a70bfb401306038d41ebd8b5750deb3cfd (patch)
tree96d1867d9d4dfa0e3a4a7434598b75a99ee5f165 /libavformat/dashenc.c
parentdf6cdb23f00baf6b88cff69ca8734233225a77e6 (diff)
avformat/dashenc: make durations 64bit
Fix potential integer overflow Fix CID1254944 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/dashenc.c')
-rw-r--r--libavformat/dashenc.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index 149e7d95c2..fa497fd82e 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\t<SegmentTemplate timescale=\"%d\" ", timescale);
if (!c->use_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<SegmentTimeline>\n");
@@ -228,7 +228,7 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, DASHContext
avio_printf(out, "\t\t\t\t</SegmentTemplate>\n");
} else if (c->single_file) {
avio_printf(out, "\t\t\t\t<BaseURL>%s</BaseURL>\n", os->initfile);
- avio_printf(out, "\t\t\t\t<SegmentList timescale=\"%d\" duration=\"%d\" startNumber=\"%d\">\n", AV_TIME_BASE, c->last_duration, start_number);
+ avio_printf(out, "\t\t\t\t<SegmentList timescale=\"%d\" duration=\"%"PRId64"\" startNumber=\"%d\">\n", AV_TIME_BASE, c->last_duration, start_number);
avio_printf(out, "\t\t\t\t\t<Initialization range=\"%"PRId64"-%"PRId64"\" />\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</SegmentList>\n");
} else {
- avio_printf(out, "\t\t\t\t<SegmentList timescale=\"%d\" duration=\"%d\" startNumber=\"%d\">\n", AV_TIME_BASE, c->last_duration, start_number);
+ avio_printf(out, "\t\t\t\t<SegmentList timescale=\"%d\" duration=\"%"PRId64"\" startNumber=\"%d\">\n", AV_TIME_BASE, c->last_duration, start_number);
avio_printf(out, "\t\t\t\t\t<Initialization sourceURL=\"%s\" />\n", os->initfile);
for (i = start_index; i < os->nb_segments; i++) {
Segment *seg = os->segments[i];
@@ -448,7 +448,7 @@ static int write_manifest(AVFormatContext *s, int final)
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, "\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;