mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/mxfdec: support subsecond precision of decoded timestamps
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
d0e43cf1a8
commit
02935c2c93
|
@ -2556,12 +2556,14 @@ fail_and_free:
|
|||
static int64_t mxf_timestamp_to_int64(uint64_t timestamp)
|
||||
{
|
||||
struct tm time = { 0 };
|
||||
int msecs;
|
||||
time.tm_year = (timestamp >> 48) - 1900;
|
||||
time.tm_mon = (timestamp >> 40 & 0xFF) - 1;
|
||||
time.tm_mday = (timestamp >> 32 & 0xFF);
|
||||
time.tm_hour = (timestamp >> 24 & 0xFF);
|
||||
time.tm_min = (timestamp >> 16 & 0xFF);
|
||||
time.tm_sec = (timestamp >> 8 & 0xFF);
|
||||
msecs = (timestamp & 0xFF) * 4;
|
||||
|
||||
/* Clip values for legacy reasons. Maybe we should return error instead? */
|
||||
time.tm_mon = av_clip(time.tm_mon, 0, 11);
|
||||
|
@ -2569,8 +2571,9 @@ static int64_t mxf_timestamp_to_int64(uint64_t timestamp)
|
|||
time.tm_hour = av_clip(time.tm_hour, 0, 23);
|
||||
time.tm_min = av_clip(time.tm_min, 0, 59);
|
||||
time.tm_sec = av_clip(time.tm_sec, 0, 59);
|
||||
msecs = av_clip(msecs, 0, 999);
|
||||
|
||||
return (int64_t)av_timegm(&time) * 1000000;
|
||||
return (int64_t)av_timegm(&time) * 1000000 + msecs * 1000;
|
||||
}
|
||||
|
||||
#define SET_STR_METADATA(pb, name, str) do { \
|
||||
|
|
Loading…
Reference in New Issue