SDWebImage / SDWebImageAVIFCoder

A SDWebImage coder plugin to support AVIF(AV1 Image File Format) image
MIT License
55 stars 14 forks source link

libavif 0.11.0 does not compile #50

Closed mooshee closed 1 year ago

mooshee commented 1 year ago

The latest bump of the libavif library breaks this library https://github.com/SDWebImage/libavif-Xcode/commit/6504198b288c7eceb9a0e3ce07e871741f73521c

Screenshot 2023-05-15 at 1 09 39 PM

mooshee commented 1 year ago

Locking the library in the Package.swift file would fix the issue .package(url: "https://github.com/SDWebImage/libavif-Xcode.git", .exact("0.10.1"))

dreampiggy commented 1 year ago

I have no idea about why thesse two has in compatible issue.

Think carefully

  1. The latest bump of the libavif library breaks this library https://github.com/SDWebImage/libavif-Xcode/commit/6504198b288c7eceb9a0e3ce07e871741f73521c It's not possible. The 0.11.0-rc1 and 0.11.0 is exact the same git commit SHA. The only possible issue is that the 0.11.0-rc1 already incompatible with this coder library...

  2. The second one, if SwiftPM limit the exact version, why bump new version effect this ?

dreampiggy commented 1 year ago

I know you face some incompatible issue, but the attribution may be wrong. I can test again and find out real reason.

dreampiggy commented 1 year ago

Using all the latest version , does not face any compatible issue.

Check whether your deps limit some of lib's version, or your min deployment target limit some lib's version.

See Podfile result:

PODS:
  - libaom (3.0.0):
    - libvmaf (>= 2.2.0)
  - libavif (0.10.1):
    - libavif/libaom (= 0.10.1)
  - libavif/core (0.10.1)
  - libavif/libaom (0.10.1):
    - libaom (>= 2.0.0)
    - libavif/core
  - libavif/libdav1d (0.10.1):
    - libavif/core
    - libdav1d (>= 0.6.0)
  - libdav1d (1.0.0)
  - libvmaf (2.3.1)
  - SDWebImage (5.15.8):
    - SDWebImage/Core (= 5.15.8)
  - SDWebImage/Core (5.15.8)
  - SDWebImageAVIFCoder (0.9.5):
    - libavif (>= 0.9.1)
    - SDWebImage (~> 5.10)

DEPENDENCIES:
  - libavif/libaom
  - libavif/libdav1d
  - SDWebImageAVIFCoder (from `../`)

SPEC REPOS:
  https://github.com/CocoaPods/Specs.git:
    - libaom
    - libavif
    - libdav1d
    - libvmaf
    - SDWebImage

EXTERNAL SOURCES:
  SDWebImageAVIFCoder:
    :path: "../"

SPEC CHECKSUMS:
  libaom: 144606b1da4b5915a1054383c3a4459ccdb3c661
  libavif: e242998ccec1c83bcba0bbdc256f460ad5077348
  libdav1d: 2969a44a2856e077cd0fecdfae14ba5dd1c5da4c
  libvmaf: 27f523f1e63c694d14d534cd0fddd2fab0ae8711
  SDWebImage: cb032eba469c54e0000e78bcb0a13cdde0a52798
  SDWebImageAVIFCoder: d759e21cf4efb640cc97250566aa556ad8bb877c

PODFILE CHECKSUM: 8d380e0081bc72901e07c29f755098b24f02612c

COCOAPODS: 1.11.3

Note: Apple Xcode already drop iOS 8-11 support. We SDWebImage all libs set the min deployment to iOS 9 (Will become iOS 11 next)

dreampiggy commented 1 year ago

Oh, the libavif does not get updated in CocoaPods trunk. I'll update and check again

dreampiggy commented 1 year ago

Yes. This coder lib need update for libavif 0.11.0+

See: https://github.com/AOMediaCodec/libavif/blob/main/CHANGELOG.md#L79

## [0.11.0] - 2022-10-12

There are incompatible ABI changes in this release. The alphaRange member was
removed from the avifImage struct. The chromaDownsampling and avoidLibYUV
members were added to the avifRGBImage struct. The imageDimensionLimit member
was added to the avifDecoder struct. avifImageCopy() and
avifImageAllocatePlanes() signatures changed. It is necessary to recompile your
code. Also check the return values of avifImageCopy() and
avifImageAllocatePlanes().

+ alphaRange field was removed from the avifImage struct. It it presumed that alpha plane is always full range.
dreampiggy commented 1 year ago

Supported in AVIFCoder 0.10.0

Which bump libavif to 0.11+

I'll release libavif 0.11.1 as well (seems 0.11.0 and 0.11.1 is API compatible)

dreampiggy commented 1 year ago

So, actually you can:

  1. Use AVIFCoder 0.10.0 with libavif >= 0.11.0 (0.11.1)
  2. or Use AVIFCoder 0.9.5 with libavif <= 0.10.1