[FFmpeg-devel] [PATCH] avformat/mov: remove hack breaking creation time parsing

Michael Niedermayer michael at niedermayer.cc
Tue Apr 11 01:34:45 EEST 2023


On Mon, Apr 10, 2023 at 09:11:04PM +0200, Marton Balint wrote:
> 
> 
> On Sun, 9 Apr 2023, Michael Niedermayer wrote:
> 
> > On Sun, Apr 09, 2023 at 07:52:12PM +0200, Marton Balint wrote:
> > > 
> > > 
> > > On Sun, 9 Apr 2023, Michael Niedermayer wrote:
> > > 
> > > > On Sun, Apr 09, 2023 at 03:49:33PM +0200, Marton Balint wrote:
> > > > > 
> > > > > 
> > > > > On Sat, 8 Apr 2023, Michael Niedermayer wrote:
> > > > > 
> > > > > > On Sat, Apr 08, 2023 at 08:37:24PM +0200, Marton Balint wrote:
> > > > > > > Commit 23eeffcd48a15e73fb2649b712870b6d101c5471 added a hack to support invalid
> > > > > > > files where the creation date was encoded as a classic unix timestamp. This
> > > > > > > broke however valid files having creation dates before the unix epoch.
> > > > > > > 
> > > > > > > Signed-off-by: Marton Balint <cus at passwd.hu>
> > > > > > > ---
> > > > > > >  libavformat/mov.c | 3 +--
> > > > > > >  1 file changed, 1 insertion(+), 2 deletions(-)
> > > > > > 
> > > > > > This results in:
> > > > > > @@ -1,11 +1,11 @@
> > > > > > -    creation_time   : 2012-06-20T20:58:31.000000Z
> > > > > > -      creation_time   : 2012-06-20T20:58:31.000000Z
> > > > > > -      creation_time   : 2012-06-20T20:58:31.000000Z
> > > > > > +    creation_time   : 1946-06-20T20:58:31.000000Z
> > > > > > +      creation_time   : 1946-06-20T20:58:31.000000Z
> > > > > > +      creation_time   : 1946-06-20T20:58:31.000000Z
> > > > > > 
> > > > > > Are you sure that 1946 is the correct creation date and not 2012 ?
> > > > > 
> > > > > If you are referring to the file in ticket #1471, yes, 1946 is consistent
> > > > > with what mediainfo shows for creation time. Obviously 1946 was not the
> > > > > intended creation time, but that does not warrant us to break files where
> > > > > 1946 is the *intended* creation time. Proper way to fix the original issue
> > > > > would be to detect the device and software version which produces the
> > > > > invalid files, and only apply the hack there. But I don't think that is
> > > > > doable here, the file does not seem to contain any device or software
> > > > > information.
> > > > 
> > > > what do you mean by intended creation time?
> > > > the file format did not exist in 1946. and all the codecs also didnt exist
> > > > so when you encounter a file that says its from that time it must be crafted
> > > > later and backdated or that bug.
> > > > we know the bug is a real thing
> > > > do you want to support crafted and backdatred files? if so can you explain
> > > > the usecase for that ?
> > > 
> > > http://ffmpeg.org/pipermail/ffmpeg-user/2023-April/056265.html
> > > 
> > > Alternatives I can think of:
> > > 
> > > 1) A -unix_time switch what Anton proposed
> > 
> > > 2) doing strict compliant parsing only if mdat version is 1 so creation time
> > > is 64bit. And change our muxer to write mdat version 1 by default, so ffmpeg
> > > will be able to read back what it has written...
> > 
> > What do we know about the buggy files that need this correction ?
> 
> Not much. Samsung Galaxy Nexus phone and Samsung HMX-S16BP camcorder seems
> affected at least. But not exclusively. I found these files among the
> samples:
> 
> Samsung HMX-S16BP:
> samples/ffmpeg-bugs/roundup/issue2517/HDV_0112.MP4
> samples/ffmpeg-bugs/roundup/issue2517_HDV_0113.MP4
> 
> Galaxy Nexus:
> Sample in ticket 1471.
> 
> Unknown:
> samples/ffmpeg-bugs/trac/ticket2095_385 Deadlist Form 2-7-13.mp4
> samples/ffmpeg-bugs/trac/ticket3399_VID_20130619_161750_449.mp4
> user/aac-input-buffer-exhausted-up_1434137794_VID_20120604_172442.mp4
> 
> > Is there any hint/metadata that identifies the muxer/encoder/version ?
> 
> In case of HMX-S16BP yes, in other cases no.
> 
> > 
> > Limiting the correction to the cases that need it is a good idea
> 
> I guess I will start with limiting workaround for version 1 as a start.
> 
> > Iam not sure i feel positive about changing the muxer
> 
> Eventually we have to bump the mdhd version, because after 2040 creation
> time will overflow. We should not wait until 2040 to do that, neither we
> should start writing version 1 only after 2040, that would be Y2K problem
> waiting to happen.

yes sure, if theres a problem with the muxer then thats perfectly fine
to change the muxer. I just meant that if the only reason is a buggy 
3rd party muxer then changing our muxer felt like something to rethink
and sleep over first.

Iam not against bumping the mdhd version in master at some point (not immedeatly
before a release).

thx

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Old school: Use the lowest level language in which you can solve the problem
            conveniently.
New school: Use the highest level language in which the latest supercomputer
            can solve the problem without the user falling asleep waiting.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20230411/e8263e00/attachment.sig>


More information about the ffmpeg-devel mailing list