[FFmpeg-trac] #11279(avcodec:new): Aspect ratio defined by the PNG resolution chunk “pHYs” is misinterpreted as its reciprocal
FFmpeg
trac at avcodec.org
Fri Nov 1 13:10:14 EET 2024
#11279: Aspect ratio defined by the PNG resolution chunk “pHYs” is misinterpreted
as its reciprocal
------------------------------------+-----------------------------------
Reporter: goodbye | Owner: (none)
Type: defect | Status: new
Priority: normal | Component: avcodec
Version: git-master | Resolution:
Keywords: png | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
------------------------------------+-----------------------------------
Changes (by goodbye):
* component: undetermined => avcodec
* version: 7.1 => git-master
Old description:
> The PNG {{{pHYs}}} chunk describes the resolution/pixel density of an
> image, which can be in abstract units (in which case it only defines the
> pixel aspect ratio) or in pixels per metre.
>
> FFmpeg interprets the X:Y resolution ratio directly as a X:Y PAR, but in
> actuality, it’s the reciprocal. This is because the resolution is
> specified as a “pixels per unit” value and not “units per pixel”, as is
> typically the case with PARs. The X:Y PAR is equal to the Y:X ratio of
> resolutions specified in the chunk.
>
> Both of these images, from the libpng test suite, are supposed to have a
> DAR of 1:1, but FFmpeg misinterprets them to have DARs of 16:1 and 1:16:
> * http://www.libpng.org/pub/png/PngSuite/cdhn2c08.png
> * http://www.libpng.org/pub/png/PngSuite/cdfn2c08.png
New description:
The PNG {{{pHYs}}} chunk describes the resolution/pixel density of an
image, which can be in abstract units (in which case it only defines the
pixel aspect ratio) or in pixels per metre.
FFmpeg interprets the X:Y resolution ratio directly as a X:Y PAR, but in
actuality, it’s the reciprocal. This is because the resolution is
specified as a “pixels per unit” value and not “units per pixel”, as is
typically the case with PARs. The X:Y PAR is equal to the Y:X ratio of
resolutions specified in the chunk.
Both of these images, from the libpng test suite, are supposed to have a
DAR of 1:1, but FFmpeg misinterprets them to have DARs of 16:1 and 1:16:
* http://www.libpng.org/pub/png/PngSuite/cdhn2c08.png
* http://www.libpng.org/pub/png/PngSuite/cdfn2c08.png
The issue has been present from the very beginning, since parsing the
{{{pHYs}}} chunk was introduced in commit
8288c2b6cb072b61f664bc8ab4c1b0a5a8db0ead, and is still present as of
commit 1864025458021a2d2c542f56e268ee1106f84460 (libavcodec/pngdec.c lines
648–649)
--
--
Ticket URL: <https://trac.ffmpeg.org/ticket/11279#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list