avutil/parseutils: use microsecond precision when parsing "now" in av_parse_time()
Use av_gettime() instead of time(0) for querying current time. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
35890aaa65
commit
3235241061
@ -31,13 +31,14 @@
|
|||||||
#include "random_seed.h"
|
#include "random_seed.h"
|
||||||
#include "time_internal.h"
|
#include "time_internal.h"
|
||||||
#include "parseutils.h"
|
#include "parseutils.h"
|
||||||
|
#include "time.h"
|
||||||
|
|
||||||
#ifdef TEST
|
#ifdef TEST
|
||||||
|
|
||||||
#define av_get_random_seed av_get_random_seed_deterministic
|
#define av_get_random_seed av_get_random_seed_deterministic
|
||||||
static uint32_t av_get_random_seed_deterministic(void);
|
static uint32_t av_get_random_seed_deterministic(void);
|
||||||
|
|
||||||
#define time(t) 1331972053
|
#define av_gettime() 1331972053200000
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -558,7 +559,7 @@ time_t av_timegm(struct tm *tm)
|
|||||||
int av_parse_time(int64_t *timeval, const char *timestr, int duration)
|
int av_parse_time(int64_t *timeval, const char *timestr, int duration)
|
||||||
{
|
{
|
||||||
const char *p, *q;
|
const char *p, *q;
|
||||||
int64_t t;
|
int64_t t, now64;
|
||||||
time_t now;
|
time_t now;
|
||||||
struct tm dt = { 0 }, tmbuf;
|
struct tm dt = { 0 }, tmbuf;
|
||||||
int today = 0, negative = 0, microseconds = 0;
|
int today = 0, negative = 0, microseconds = 0;
|
||||||
@ -576,10 +577,11 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
|
|||||||
q = NULL;
|
q = NULL;
|
||||||
*timeval = INT64_MIN;
|
*timeval = INT64_MIN;
|
||||||
if (!duration) {
|
if (!duration) {
|
||||||
now = time(0);
|
now64 = av_gettime();
|
||||||
|
now = now64 / 1000000;
|
||||||
|
|
||||||
if (!av_strcasecmp(timestr, "now")) {
|
if (!av_strcasecmp(timestr, "now")) {
|
||||||
*timeval = (int64_t) now * 1000000;
|
*timeval = now64;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -870,7 +872,7 @@ int main(void)
|
|||||||
|
|
||||||
av_log_set_level(AV_LOG_DEBUG);
|
av_log_set_level(AV_LOG_DEBUG);
|
||||||
putenv(tzstr);
|
putenv(tzstr);
|
||||||
printf("(now is 2012-03-17 09:14:13 +0100, local time is UTC+1)\n");
|
printf("(now is 2012-03-17 09:14:13.2 +0100, local time is UTC+1)\n");
|
||||||
for (i = 0; i < FF_ARRAY_ELEMS(time_string); i++) {
|
for (i = 0; i < FF_ARRAY_ELEMS(time_string); i++) {
|
||||||
printf("%-24s -> ", time_string[i]);
|
printf("%-24s -> ", time_string[i]);
|
||||||
if (av_parse_time(&tv, time_string[i], 0)) {
|
if (av_parse_time(&tv, time_string[i], 0)) {
|
||||||
|
@ -70,8 +70,8 @@ fmt:'%Y-%m-%d %H:%M:%S' spec:'2012-12-21 20:12:21' -> 2012-12-21 20:12:21
|
|||||||
fmt:' %Y - %m - %d %H : %M : %S' spec:' 2012 - 12 - 21 20 : 12 : 21' -> 2012-12-21 20:12:21
|
fmt:' %Y - %m - %d %H : %M : %S' spec:' 2012 - 12 - 21 20 : 12 : 21' -> 2012-12-21 20:12:21
|
||||||
|
|
||||||
Testing av_parse_time()
|
Testing av_parse_time()
|
||||||
(now is 2012-03-17 09:14:13 +0100, local time is UTC+1)
|
(now is 2012-03-17 09:14:13.2 +0100, local time is UTC+1)
|
||||||
now -> 1331972053.000000 = 2012-03-17T08:14:13Z
|
now -> 1331972053.200000 = 2012-03-17T08:14:13Z
|
||||||
12:35:46 -> 1331984146.000000 = 2012-03-17T11:35:46Z
|
12:35:46 -> 1331984146.000000 = 2012-03-17T11:35:46Z
|
||||||
2000-12-20 0:02:47.5z -> 977270567.500000 = 2000-12-20T00:02:47Z
|
2000-12-20 0:02:47.5z -> 977270567.500000 = 2000-12-20T00:02:47Z
|
||||||
2000-12-20T010247.6 -> 977270567.600000 = 2000-12-20T00:02:47Z
|
2000-12-20T010247.6 -> 977270567.600000 = 2000-12-20T00:02:47Z
|
||||||
|
Loading…
x
Reference in New Issue
Block a user