mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-23 07:42:51 +00:00
parseutils: Make av_small_strptime public
And use it in libavformat. Based on a similar patch by Stefano Sabatini <stefasab@gmail.com>.
This commit is contained in:
parent
108f2f381a
commit
27f2746282
2
configure
vendored
2
configure
vendored
@ -1487,7 +1487,6 @@ SYSTEM_FUNCS="
|
||||
setrlimit
|
||||
Sleep
|
||||
strerror_r
|
||||
strptime
|
||||
sysconf
|
||||
sysctl
|
||||
usleep
|
||||
@ -4133,7 +4132,6 @@ check_func_headers time.h nanosleep || { check_func_headers time.h nanosleep -lr
|
||||
check_func sched_getaffinity
|
||||
check_func setrlimit
|
||||
check_func strerror_r
|
||||
check_func strptime
|
||||
check_func sysconf
|
||||
check_func sysctl
|
||||
check_func usleep
|
||||
|
@ -13,6 +13,9 @@ libavutil: 2014-08-09
|
||||
|
||||
API changes, most recent first:
|
||||
|
||||
2015-xx-xx - xxxxxxx - lavu 54.11.0
|
||||
Add av_small_strptime().
|
||||
|
||||
2015-xx-xx - xxxxxxx - lavc 56.22.0
|
||||
Add FF_PROFILE_DTS_EXPRESS.
|
||||
|
||||
|
@ -2902,21 +2902,14 @@ int ff_find_stream_index(AVFormatContext *s, int id)
|
||||
|
||||
int64_t ff_iso8601_to_unix_time(const char *datestr)
|
||||
{
|
||||
#if HAVE_STRPTIME
|
||||
struct tm time1 = { 0 }, time2 = { 0 };
|
||||
char *ret1, *ret2;
|
||||
ret1 = strptime(datestr, "%Y - %m - %d %T", &time1);
|
||||
ret2 = strptime(datestr, "%Y - %m - %dT%T", &time2);
|
||||
ret1 = av_small_strptime(datestr, "%Y - %m - %d %T", &time1);
|
||||
ret2 = av_small_strptime(datestr, "%Y - %m - %dT%T", &time2);
|
||||
if (ret2 && !ret1)
|
||||
return av_timegm(&time2);
|
||||
else
|
||||
return av_timegm(&time1);
|
||||
#else
|
||||
av_log(NULL, AV_LOG_WARNING,
|
||||
"strptime() unavailable on this system, cannot convert "
|
||||
"the date string.\n");
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id,
|
||||
|
@ -400,7 +400,7 @@ static int date_get_num(const char **pp,
|
||||
return val;
|
||||
}
|
||||
|
||||
static const char *small_strptime(const char *p, const char *fmt, struct tm *dt)
|
||||
const char *av_small_strptime(const char *p, const char *fmt, struct tm *dt)
|
||||
{
|
||||
int c, val;
|
||||
|
||||
@ -453,7 +453,7 @@ static const char *small_strptime(const char *p, const char *fmt, struct tm *dt)
|
||||
dt->tm_mday = val;
|
||||
break;
|
||||
case 'T':
|
||||
p = small_strptime(p, "%H:%M:%S", dt);
|
||||
p = av_small_strptime(p, "%H:%M:%S", dt);
|
||||
if (!p)
|
||||
return NULL;
|
||||
break;
|
||||
@ -526,7 +526,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
|
||||
|
||||
/* parse the year-month-day part */
|
||||
for (i = 0; i < FF_ARRAY_ELEMS(date_fmt); i++) {
|
||||
q = small_strptime(p, date_fmt[i], &dt);
|
||||
q = av_small_strptime(p, date_fmt[i], &dt);
|
||||
if (q) {
|
||||
break;
|
||||
}
|
||||
@ -550,7 +550,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
|
||||
|
||||
/* parse the hour-minute-second part */
|
||||
for (i = 0; i < FF_ARRAY_ELEMS(time_fmt); i++) {
|
||||
q = small_strptime(p, time_fmt[i], &dt);
|
||||
q = av_small_strptime(p, time_fmt[i], &dt);
|
||||
if (q) {
|
||||
break;
|
||||
}
|
||||
@ -562,7 +562,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
|
||||
++p;
|
||||
}
|
||||
/* parse timestr as HH:MM:SS */
|
||||
q = small_strptime(p, time_fmt[0], &dt);
|
||||
q = av_small_strptime(p, time_fmt[0], &dt);
|
||||
if (!q) {
|
||||
char *o;
|
||||
/* parse timestr as S+ */
|
||||
|
@ -116,6 +116,37 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration);
|
||||
*/
|
||||
int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info);
|
||||
|
||||
/**
|
||||
* Simplified version of strptime
|
||||
*
|
||||
* Parse the input string p according to the format string fmt and
|
||||
* store its results in the structure dt.
|
||||
*
|
||||
* Neither text and locale's alternative representation are supported.
|
||||
*
|
||||
* The supported input field descriptors are listed below.
|
||||
* - %H: the hour as a decimal number, using a 24-hour clock, in the
|
||||
* range '00' through '23'
|
||||
* - %M: the minute as a decimal number, using a 24-hour clock, in the
|
||||
* range '00' through '59'
|
||||
* - %S: the second as a decimal number, using a 24-hour clock, in the
|
||||
* range '00' through '59'
|
||||
* - %Y: the year as a decimal number, using the Gregorian calendar
|
||||
* - %m: the month as a decimal number, in the range '1' through '12'
|
||||
* - %d: the day of the month as a decimal number, in the range '1'
|
||||
* through '31'
|
||||
* - %T: alias for '%H:%M:%S'
|
||||
* - %%: a literal '%'
|
||||
*
|
||||
* @return a pointer to the first character not processed in this function
|
||||
* call. In case the input string contains more characters than
|
||||
* required by the format string the return value points right after
|
||||
* the last consumed input character. In case the whole input string
|
||||
* is consumed the return value points to the null byte at the end of
|
||||
* the string. On failure NULL is returned.
|
||||
*/
|
||||
const char *av_small_strptime(const char *p, const char *fmt, struct tm *dt);
|
||||
|
||||
/**
|
||||
* Convert the decomposed UTC time in tm to a time_t value.
|
||||
*/
|
||||
|
@ -54,7 +54,7 @@
|
||||
*/
|
||||
|
||||
#define LIBAVUTIL_VERSION_MAJOR 54
|
||||
#define LIBAVUTIL_VERSION_MINOR 10
|
||||
#define LIBAVUTIL_VERSION_MINOR 11
|
||||
#define LIBAVUTIL_VERSION_MICRO 0
|
||||
|
||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||
|
Loading…
Reference in New Issue
Block a user