youtube / js_mse_eme

js_mse_eme is an externally-published tool that is aimed to test the validity of a browser's HTML5 Media Source Extension and Encrypted Media Extension implementations
Apache License 2.0
91 stars 58 forks source link

car-20120827-86.mp4 has buggy tfdt #29

Closed ntrrgc closed 6 years ago

ntrrgc commented 6 years ago

The second fragment of car-20120827-86.mp4 has its baseMediaDecodeTime in tfdt set to 450450 units (at a timescale of 90000, 5.005s), but the first fragment is actually 450480 units* long (at a timescale of 90000, about 5.005333333s).

* Calculated by multiplying the default_sample_duration by sample_count (all frames use the default duration in trun).

In consequence, the last frame of the first fragment and the first frame of the second fragment have a small yet numerically significant overlap.

In implementations that do not implement frame slicing, when the first fragment is added after the second fragment this will trigger the deletion of the first frame of the second fragment and any frame depending on it. This is the reason 67. AppendH264VideoOutOfOrder fails e.g. on Chrome when run with ?novp9=true.

This muxing error also introduces other subtle problems:

My questions are:

tdedecko commented 6 years ago

Yes, implementations should be able to handle this case.