[FFmpeg-devel] [PATCH 0/2] Interpret a degenerate SAR as 1/1.

James Almer jamrial at gmail.com
Wed Jul 31 00:15:30 EEST 2024


On 7/30/2024 5:54 PM, Michael Niedermayer wrote:
> On Tue, Jul 30, 2024 at 03:11:47PM +0200, Giovanni Mascellani wrote:
>> I came across some H.264 files in the wild whose SAR is set to
>> 20480/0. The files are provided by the Ubisoft game OddBallers, and
>> are seemingly accepted and played properly when the game is played on
>> Windows (thus using the Microsoft Media Foundations
>> implementation).
>>
>> When running the game with Wine the files are ultimately decoded by
>> libavcodec (via GStreamer), and playback is broken. It seems that only
>> a frame each second or so (maybe the key frames? I didn't check) is
>> decoded and presented, the others are discarded. After dumping the
>> video, I ran it with ffplay and it has the same problem, and the
>> following message is emitted many times:
>>
>>    [h264 @ 0x7fd7301ef440] ignoring invalid SAR: 20480/1
>>
>> Interestingly the invalid SAR is dumped as 20480/1 (which would be
>> strange, but in princple legal), while the file has 20480/0 (which
>> doesn't make sense at all). Equally interestingly, the frames that are
>> presented are indeed presented with SAR 1/1, like they are on Windows.
>>
>> The H.264 standard says that "When aspect_ratio_idc is equal to 0 or
>> sar_width is equal to 0 or sar_height is equal to 0, the sample aspect
>> ratio shall be considered unspecified by this Recommendation |
>> International Standard". Given the behavior on Windows it seems that
>> the de facto standard way to solve the missing specification is to
>> assume that SAR is 1/1, which is what my patches seek to do.
> 
> Why does playback fail ?
> 
> 1/1 and unspecified are different things, 0/0 would be unspecified

afair we use 0/1 for unspecified, since it prevents division by 0 
without having to worry about extra sanity checks.

> where does 20480/0 turn into 20480/1 ? or did i misunderstand this?
> 
> thx
> 
> [...]
> 
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list