Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ghost opened this issue Oct 14, 2022 · 5 comments
Labels
question Further information is requested

Comments

@ghost
Copy link

ghost commented Oct 14, 2022

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

@dreampiggy
Copy link
Collaborator

dreampiggy commented Oct 14, 2022

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 😂

@dreampiggy
Copy link
Collaborator

dreampiggy commented Oct 14, 2022

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.

@dreampiggy dreampiggy added the question Further information is requested label Oct 14, 2022
@dreampiggy
Copy link
Collaborator

dreampiggy commented Oct 14, 2022

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

@ghost
Copy link
Author

ghost commented Oct 17, 2022

if so, thank you very much.

@ledyba-z
Copy link
Collaborator

ledyba-z commented Oct 17, 2022

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
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants