Re: [FFmpeg-devel] [PATCH 2/3] avformat/mxfdec: support subsecond precision of decoded timestamps
On Tue, 25 Dec 2018, Tomas Härdin wrote: sön 2018-12-23 klockan 01:12 +0100 skrev Marton Balint: > Signed-off-by: Marton Balint --- libavformat/mxfdec.c | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index d78f8ad2e4..0553adcb06 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -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() * 100; +return (int64_t)av_timegm() * 100 + msecs * 1000; Looks OK Thanks, pushed this and the other patch. I kinda wonder how this and the muxer code could have ignored the milliseconds. Did the old creation time metadata use seconds only? Yes, it used to be in this format: "%Y-%m-%d %H:%M:%S". Regards, Marton ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 2/3] avformat/mxfdec: support subsecond precision of decoded timestamps
sön 2018-12-23 klockan 01:12 +0100 skrev Marton Balint: > > Signed-off-by: Marton Balint > --- > libavformat/mxfdec.c | 5 - > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > index d78f8ad2e4..0553adcb06 100644 > --- a/libavformat/mxfdec.c > +++ b/libavformat/mxfdec.c > @@ -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() * 100; > +return (int64_t)av_timegm() * 100 + msecs * 1000; Looks OK I kinda wonder how this and the muxer code could have ignored the milliseconds. Did the old creation time metadata use seconds only? /Tomas ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 2/3] avformat/mxfdec: support subsecond precision of decoded timestamps
Signed-off-by: Marton Balint --- libavformat/mxfdec.c | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index d78f8ad2e4..0553adcb06 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -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() * 100; +return (int64_t)av_timegm() * 100 + msecs * 1000; } #define SET_STR_METADATA(pb, name, str) do { \ -- 2.16.4 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel