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

Not working on macOS with Apple Silicon #178

Open
satvikpendem opened this issue Jun 1, 2022 · 4 comments
Open

Not working on macOS with Apple Silicon #178

satvikpendem opened this issue Jun 1, 2022 · 4 comments

Comments

@satvikpendem
Copy link

Fortunately I was able to follow this guide (https://atlassc.net/2022/01/05/anime4k-on-m1-max/) and got it to work. The article OP only specifies a single profile but I went ahead and made the equivalent profiles for the modes in the Windows and Linux instructions, as seen below. Feel free to add them to a macOS install guide.

# mpv.conf

[Anime4K_A_A]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_VL.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"

[Anime4K_A]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_VL.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"

[Anime4K_B_B]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"

[Anime4K_B]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"

[Anime4K_C_A]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"

[Anime4K_C]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"

[Anime4K_Fast_A_A]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_S.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"

[Anime4K_Fast_A]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"

[Anime4K_Fast_B_B]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_Soft_S.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"

[Anime4K_Fast_B]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"

[Anime4K_Fast_C_A]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Restore_CNN_S.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"

[Anime4K_Fast_C]
glsl-shaders-append="~~/shaders/Anime4K_Clamp_Highlights.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x2.glsl"
glsl-shaders-append="~~/shaders/Anime4K_AutoDownscalePre_x4.glsl"
glsl-shaders-append="~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"
# input.conf

# High end variants
CTRL+1 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_A_A"; show-text "Profile: Anime4K_A_A"
CTRL+2 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_A"; show-text "Profile: Anime4K_A"
CTRL+3 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_B_B"; show-text "Profile: Anime4K_B_B"
CTRL+4 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_B"; show-text "Profile: Anime4K_B"
CTRL+5 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_C_A"; show-text "Profile: Anime4K_C_A"
CTRL+6 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_C"; show-text "Profile: Anime4K_C"

# Fast variants
CTRL+1 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_Fast_A_A"; show-text "Profile: Anime4K_Fast_A_A"
CTRL+2 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_Fast_A"; show-text "Profile: Anime4K_Fast_A"
CTRL+3 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_Fast_B_B"; show-text "Profile: Anime4K_Fast_B_B"
CTRL+4 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_Fast_B"; show-text "Profile: Anime4K_Fast_B"
CTRL+5 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_Fast_C_A"; show-text "Profile: Anime4K_Fast_C_A"
CTRL+6 no-osd change-list glsl-shaders clr ""; apply-profile "Anime4K_Fast_C"; show-text "Profile: Anime4K_Fast_C"
@bloc97
Copy link
Owner

bloc97 commented Jun 1, 2022

That's strange, mpv should parse the strings correctly if using the linux version of the instructions (that means replacing the characters ; inside the quotes with :)

Though this way is also equivalent and more clean, and should work on Windows, macOS and Linux, but requires the user to edit two files instead of just one. I think we can change the instructions for this in the next release, thanks for the suggestions.

@card0z
Copy link

card0z commented Aug 1, 2022

Are the shaders going to be optimised for apple silicon anytime soon? Or does that depend on the video player? The fast preset works fine when I use it standalone but there are a lot of frame drops when I use it with SVP.

@bloc97
Copy link
Owner

bloc97 commented Aug 1, 2022

Are the shaders going to be optimised for apple silicon anytime soon? Or does that depend on the video player? The fast preset works fine when I use it standalone but there are a lot of frame drops when I use it with SVP.

I don't think it is possible to optimize shaders specifically for any hardware as OpenGL handles all the abstractions and is not very flexible. If the video player can support loading arbitrary external libraries we can move forward to writing optimized code for specialized ML inference processors such as the Apple Neural Engine.

Edit: Using SVP can double, triple or quadruple the framerate of a video, which will make the shaders 2x, 3x and 4x, slower respectively if used after SVP. I'm not sure if reversing the order of shader/SVP would improve performance (eg. apply shaders then SVP vs applying SVP then shaders), but it might be worth a try if it is possible.

@hvmzx
Copy link

hvmzx commented Mar 20, 2023

Did you find a way to make these shaders work with Apple Silicon in an optimised way that fully uses Metal ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants