1. 27 Jan, 2023 6 commits
  2. 26 Jan, 2023 12 commits
  3. 25 Jan, 2023 4 commits
    • Paul B Mahol's avatar
      avformat/bonk: remove unused variable · 2c3107c3
      Paul B Mahol authored
      2c3107c3
    • Leo Izen's avatar
      avcodec/png: support cICP chunks · 6f79f097
      Leo Izen authored
      This commit adds both decode and encode support for cICP chunks, which
      allow a PNG image's pixel data to be tagged by any of the enum values in
      H.273, without an ICC profile.
      
      Upon decode, if a cICP chunk is present, the PNG decoder will tag output
      AVFrames with the resulting enum color, and ignore iCCP, sRGB, gAMA, and
      cHRM chunks, as per the spec.
      
      Upon encode, if the color space is known and specified, and it is not sRGB,
      the PNG encoder will output a cICP chunk containing the color space. If the
      color space is sRGB, then it will output an sRGB chunk instead of a cICP
      chunk. If the color space of the input is not unspecified, it will not output
      a cICP chunk tagging the PNG as unspecified.
      
      In either the sRGB case or the non-SRGB case, gAMA and cHRM are still written
      as fallbacks provided the info is known.
      Signed-off-by: 's avatarLeo Izen <leo.izen@gmail.com>
      6f79f097
    • Leo Izen's avatar
      avcodec/pngdec: support decoding sRGB chunks · f7bab37c
      Leo Izen authored
      If an sRGB chunk is present in the PNG file, this commit will cause the
      png decoder to ignore the cHRM and gAMA chunks and tag the resulting AVFrames
      with BT.709 primaries, and ISO/IEC 61966-2-1 transfer. If these tags are
      present in the AVFrame, pngenc.c already writes this chunk, so no change was
      needed on the encode-side.
      
      The PNG spec does not define what happens if sRGB and iCCP are present at
      the same time, it just recommends that this not happen. As of this patch,
      the decoder will have the ICC profile take precedence, and it will not tag
      the pixel data as sRGB.
      Signed-off-by: 's avatarLeo Izen <leo.izen@gmail.com>
      f7bab37c
    • Leo Izen's avatar
      avcodec/png: use libavutil/csp.h for cHRM chunks · 2548c32c
      Leo Izen authored
      The cHRM chunk is descriptive. That is, it describes the primaries that should
      be used to interpret the pixel data in the PNG file. This is notably different
      from Mastering Display Metadata, which describes which subset of the presented
      gamut is relevant. MDM describes a gamut and says colors outside the gamut are
      not required to be preserved, but it does not actually describe the gamut that
      the pixel data from the frame resides in. Thus, to decode a cHRM chunk present
      in a PNG file to Mastering Display Metadata is incorrect.
      
      This commit changes this behavior so the cHRM chunk, if present, is decoded to
      color metadata. For example, if the cHRM chunk describes BT.709 primaries, the
      resulting AVFrame will be tagged with AVCOL_PRI_BT709, as a description of its
      pixel data. To do this, it utilizes libavutil/csp.h, which exposes a funcction
      av_csp_primaries_id_from_desc, to detect which enum value accurately describes
      the white point and primaries represented by the cHRM chunk.
      
      This commit also changes pngenc.c to utilize the libavuitl/csp.h API, since it
      previously duplicated code contained in that API. Instead, taking advantage of
      the API that exists makes more sense. pngenc.c does properly utilize the color
      tags rather than incorrectly using MDM, so that required no change.
      Signed-off-by: 's avatarLeo Izen <leo.izen@gmail.com>
      2548c32c
  4. 24 Jan, 2023 8 commits
  5. 22 Jan, 2023 1 commit
    • Leo Izen's avatar
      avcodec/libjxldec: fix gamma22 and gamma28 recognition · 9d5e6694
      Leo Izen authored
      Gamma 2.2 and Gamma 2.8 are tagged in the file as 0.45455 and 0.35714,
      respectively (i.e. 1/2.2 and 1/2.8). Trying to identify them as 2.2 and
      2.8 instead of these values will cause the transfer function to not
      properly be recognized. This patch fixes this.
      9d5e6694
  6. 19 Jan, 2023 2 commits
  7. 18 Jan, 2023 2 commits
  8. 17 Jan, 2023 5 commits