Missing pasp atom
emkman99 opened this issue · comments
Anamorphic (non-square pixels) video does not play correctly in Windows 10 Chrome when hardware acceleration is turned on (videojs/http-streaming#312). All other browsers/OS combinations seem to handle non-square pixels just fine. I've traced the issue back to a missing pasp atom in the mp4 generator (for comparison, hls.js includes the pasp atom here).
I just realized Chrome on Linux doesn't use hardware acceleration, so that's why it works there.
I'm not familiar with Chrome or Firefox source code, so someone correct me if I'm wrong. I found some areas that may explain the differences in how they handle anamorphic video.
-
Chrome uses pasp only (chrome mp4_stream_parser.cc#L498), and ignores SPS data in the avcc atom (chrome mp4_stream_parser.cc#L529). There's also a chrome bug for this.
-
Firefox uses the SPS data from the avcc atom and ignores the pasp (firefox mp4parse#L1937).