SDWebImage / SDWebImageAVIFCoder

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

Some constants be changed in avif header? #19

Closed devvit closed 4 years ago

devvit commented 4 years ago

Compile example failed

img

Latest header

img

dreampiggy commented 4 years ago

@devvit Check your libavif version ? Use 0.7.3 and have a try.

The latest version release passed the CI pipeline and CocoaPods lint, it should compiles.

devvit commented 4 years ago

Got it, master branch is incompatible with avif 0.7, downgrade to 0.6

dreampiggy commented 4 years ago

@devvit What...Let us fix it. The latest version should compatible with latest avif.

devvit commented 4 years ago

That's Example project from the master branch:

# Podfile.lock
PODS:
  - libaom (1.0.2)
  - libavif (0.7.3):
    - libavif/libaom (= 0.7.3)
  - libavif/core (0.7.3)
  - libavif/libaom (0.7.3):
    - libaom (>= 1.0.2)
    - libavif/core
  - libavif/libdav1d (0.7.3):
    - libavif/core
    - libdav1d (>= 0.6.0)
  - libdav1d (0.6.0)
  - SDWebImage (5.8.0):
    - SDWebImage/Core (= 5.8.0)
  - SDWebImage/Core (5.8.0)
  - SDWebImageAVIFCoder (0.6.0):
    - libavif (~> 0.6)
    - SDWebImage (~> 5.0)

Compile error:

// ColorSpace.m
        // LINE 46
        case AVIF_NCLX_TRANSFER_CHARACTERISTICS_GAMMA28: // 5
...

libavif 0.7.3 header:

// libavif/include/avif/avif.h
// LINE 184
typedef enum avifNclxTransferCharacteristics
{
    // This is actually reserved, but libavif uses it as a sentinel value.
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_UNKNOWN = 0,

    AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT709 = 1,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT470M = 4,  // 2.2 gamma
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT470BG = 5, // 2.8 gamma
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT601 = 6,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_SMPTE240 = 7,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_LINEAR = 8,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_LOG100 = 9,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_LOG100_SQRT10 = 10,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_IEC61966 = 11,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT1361 = 12,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_SRGB = 13,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT2020_10BIT = 14,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT2020_12BIT = 15,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_SMPTE2084 = 16, // PQ
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_SMPTE428 = 17,
    AVIF_NCLX_TRANSFER_CHARACTERISTICS_HLG = 18
} avifNclxTransferCharacteristics;

You can see AVIF_NCLX_TRANSFER_CHARACTERISTICS_GAMMA28 rename to AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT470BG, and so on.

dreampiggy commented 4 years ago

@ledyba-z Hi. The libavif these NCLX profile constants seems changed in v0.7.3. Can you help to fix the compile issue ?

ledyba-z commented 4 years ago

@devvit @dreampiggy I'm currently working to resolve this issue at https://github.com/SDWebImage/SDWebImageAVIFCoder/tree/fix/support-libavif-v0.7.3 branch, please wait a moment!

dreampiggy commented 4 years ago

@devvit Use v0.6.1 version which fix the compatibility with libavif 0.7.2+

devvit commented 4 years ago

LGTM, ✌️