mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-03-23 11:29:03 +00:00
avformat: factorize iso 8601 timestamp writer to a dictionary avutil function
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
a810126fd1
commit
b72a7b96f8
@ -5217,20 +5217,8 @@ int ff_standardize_creation_time(AVFormatContext *s)
|
|||||||
{
|
{
|
||||||
int64_t timestamp;
|
int64_t timestamp;
|
||||||
int ret = ff_parse_creation_time_metadata(s, ×tamp, 0);
|
int ret = ff_parse_creation_time_metadata(s, ×tamp, 0);
|
||||||
if (ret == 1) {
|
if (ret == 1)
|
||||||
time_t seconds = timestamp / 1000000;
|
return avpriv_dict_set_timestamp(&s->metadata, "creation_time", timestamp);
|
||||||
struct tm *ptm, tmbuf;
|
|
||||||
ptm = gmtime_r(&seconds, &tmbuf);
|
|
||||||
if (ptm) {
|
|
||||||
char buf[32];
|
|
||||||
if (!strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S", ptm))
|
|
||||||
return AVERROR_EXTERNAL;
|
|
||||||
av_strlcatf(buf, sizeof(buf), ".%06dZ", (int)(timestamp % 1000000));
|
|
||||||
av_dict_set(&s->metadata, "creation_time", buf, 0);
|
|
||||||
} else {
|
|
||||||
return AVERROR_EXTERNAL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "dict.h"
|
#include "dict.h"
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "mem.h"
|
#include "mem.h"
|
||||||
|
#include "time_internal.h"
|
||||||
#include "bprint.h"
|
#include "bprint.h"
|
||||||
|
|
||||||
struct AVDictionary {
|
struct AVDictionary {
|
||||||
@ -253,3 +254,19 @@ int av_dict_get_string(const AVDictionary *m, char **buffer,
|
|||||||
}
|
}
|
||||||
return av_bprint_finalize(&bprint, buffer);
|
return av_bprint_finalize(&bprint, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int avpriv_dict_set_timestamp(AVDictionary **dict, const char *key, int64_t timestamp)
|
||||||
|
{
|
||||||
|
time_t seconds = timestamp / 1000000;
|
||||||
|
struct tm *ptm, tmbuf;
|
||||||
|
ptm = gmtime_r(&seconds, &tmbuf);
|
||||||
|
if (ptm) {
|
||||||
|
char buf[32];
|
||||||
|
if (!strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S", ptm))
|
||||||
|
return AVERROR_EXTERNAL;
|
||||||
|
av_strlcatf(buf, sizeof(buf), ".%06dZ", (int)(timestamp % 1000000));
|
||||||
|
return av_dict_set(dict, key, buf, 0);
|
||||||
|
} else {
|
||||||
|
return AVERROR_EXTERNAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -330,6 +330,16 @@ static av_always_inline av_const int avpriv_mirror(int x, int w)
|
|||||||
|
|
||||||
void ff_check_pixfmt_descriptors(void);
|
void ff_check_pixfmt_descriptors(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a dictionary value to an ISO-8601 compliant timestamp string.
|
||||||
|
*
|
||||||
|
* @param s AVFormatContext
|
||||||
|
* @param key metadata key
|
||||||
|
* @param timestamp unix timestamp in microseconds
|
||||||
|
* @return <0 on error
|
||||||
|
*/
|
||||||
|
int avpriv_dict_set_timestamp(AVDictionary **dict, const char *key, int64_t timestamp);
|
||||||
|
|
||||||
extern const uint8_t ff_reverse[256];
|
extern const uint8_t ff_reverse[256];
|
||||||
|
|
||||||
#endif /* AVUTIL_INTERNAL_H */
|
#endif /* AVUTIL_INTERNAL_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user