请教一个问题,为什么不使用接口avifImageYUVToRGB直接转成 RGB 呢 · Issue #42 · SDWebImage/SDWebImageAVIFCoder · GitHub
Skip to content

请教一个问题,为什么不使用接口avifImageYUVToRGB直接转成 RGB 呢 #42

Open

Description

为什么不使用接口avifImageYUVToRGB直接转成 RGB 呢,看现在是使用 iOS的 API 自己转,这种方式是速度快吗。

Activity

  1. dreampiggy commented on Oct 14, 2022

    @dreampiggy
    Collaborator

    See: #7

    Actually, before v0.5.0 (which is originally written by me), it use avifImageYUVToRGB to convert it, exactly what you think. And code is simple.

    But @ledyba-z create that PR and use vImage for conversion and provide the performance result, so I merge it and release the new version.

    And then, since @ledyba-z no longer maintain this repo and write his own AVIF decoder (!), so I maintained this code and get updated to libavif's API break, until now 😂

  2. dreampiggy commented on Oct 14, 2022

    @dreampiggy
    Collaborator

    Currently YUV<->RGB may loss detail and slow if you just use CPU to do conversion.

    There are two available open source project used by libavif for RGB to YUV conversion, one is libyuv, another is sharpyuv (Both from Google), or use Apple's vImage to convert.

  3. dreampiggy commented on Oct 14, 2022

    @dreampiggy
    Collaborator

    If you think there are performance regression, I can provide a option in AVIFCoder to let you customize, like :

    typedef enum RGBYUVConversion {
        case vImage,
        case libyuv,
        case sharpyuv
    } RGBYUVConversion;
    
    @interface SDImageAVIFCoder
    // Control the default RGB to YUV conversion, defaults to vImage (which is fast on Apple platforms)
    @class (assign) BOOL RGBYUVConversion defaultConversion; 
    @end
    
  4. ledyba-z commented on Oct 17, 2022

    @ledyba-z
    Collaborator

    Ah, yes. vImage frameworks can convert YUV to RGB about 100x faster than naive CPU code.

    @dreampiggy Hi, I have quit my job on link-u, which is a manga company, and moved to a energy company.
    But I am still interested in maintaining, so feel free to mention when something happen to vImage codes!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions