mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/hls: Fix handling of EXT-X-BYTERANGE streams over 2GB
Replace uses of atoi() with strtoll() when trying to read values into
int64_t variables.
Fixes Kodi trac #16926:
http://trac.kodi.tv/ticket/16926
(cherry picked from commit a6f5e25ad9
)
This commit is contained in:
parent
6fc29572fb
commit
748a4747da
|
@ -416,10 +416,10 @@ static struct segment *new_init_section(struct playlist *pls,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info->byterange[0]) {
|
if (info->byterange[0]) {
|
||||||
sec->size = atoi(info->byterange);
|
sec->size = strtoll(info->byterange, NULL, 10);
|
||||||
ptr = strchr(info->byterange, '@');
|
ptr = strchr(info->byterange, '@');
|
||||||
if (ptr)
|
if (ptr)
|
||||||
sec->url_offset = atoi(ptr+1);
|
sec->url_offset = strtoll(ptr+1, NULL, 10);
|
||||||
} else {
|
} else {
|
||||||
/* the entire file is the init section */
|
/* the entire file is the init section */
|
||||||
sec->size = -1;
|
sec->size = -1;
|
||||||
|
@ -731,7 +731,7 @@ static int parse_playlist(HLSContext *c, const char *url,
|
||||||
ret = ensure_playlist(c, &pls, url);
|
ret = ensure_playlist(c, &pls, url);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
pls->target_duration = atoi(ptr) * AV_TIME_BASE;
|
pls->target_duration = strtoll(ptr, NULL, 10) * AV_TIME_BASE;
|
||||||
} else if (av_strstart(line, "#EXT-X-MEDIA-SEQUENCE:", &ptr)) {
|
} else if (av_strstart(line, "#EXT-X-MEDIA-SEQUENCE:", &ptr)) {
|
||||||
ret = ensure_playlist(c, &pls, url);
|
ret = ensure_playlist(c, &pls, url);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
@ -760,10 +760,10 @@ static int parse_playlist(HLSContext *c, const char *url,
|
||||||
is_segment = 1;
|
is_segment = 1;
|
||||||
duration = atof(ptr) * AV_TIME_BASE;
|
duration = atof(ptr) * AV_TIME_BASE;
|
||||||
} else if (av_strstart(line, "#EXT-X-BYTERANGE:", &ptr)) {
|
} else if (av_strstart(line, "#EXT-X-BYTERANGE:", &ptr)) {
|
||||||
seg_size = atoi(ptr);
|
seg_size = strtoll(ptr, NULL, 10);
|
||||||
ptr = strchr(ptr, '@');
|
ptr = strchr(ptr, '@');
|
||||||
if (ptr)
|
if (ptr)
|
||||||
seg_offset = atoi(ptr+1);
|
seg_offset = strtoll(ptr+1, NULL, 10);
|
||||||
} else if (av_strstart(line, "#", NULL)) {
|
} else if (av_strstart(line, "#", NULL)) {
|
||||||
continue;
|
continue;
|
||||||
} else if (line[0]) {
|
} else if (line[0]) {
|
||||||
|
|
Loading…
Reference in New Issue