ffmpeginteropx / FFmpegInteropX

FFmpeg decoding library for Windows 10 UWP and WinUI 3 Apps
Apache License 2.0
212 stars 53 forks source link

Assessing VSFilter for ASS Rendering #445

Open softworkz opened 2 days ago

softworkz commented 2 days ago

I just had a kind of Epiphany.... 😉

Seems I've done too much x-platform work in the past years. I notice that I've even assimilated the habit to rule out platform-specific or worse: Windows-specific solutions - would have never happened earlier.

So - the point is: there's another ASS rendering implementation which is generally considered equal to libass (even though there are some differences and some may disagree on both sides). The de-facto-standard authoring tool for ASS subs is Aegisub. And Aegisub allows to switch rendering betwen the two, while VSFilter is the default.

What is is? It's a DirectShow filter, development has ceased long ago, but there are several forks of it still alive.

Is it suitable for us? I absolutely can't say that. Haven't thought about it neither looked at it.

But it's definitely worth to take a quick look and think about it once.

brabebhin commented 2 days ago

Pretty sure everything directshow is not compatible. Maybe we can use it for reverse engineering.

softworkz commented 2 days ago

Yes, or just use parts of the code if the license is compatible.

Without having ever seen the code, what might stand on the positive side is that it's probably very Windows oriented code and API usage and things might be done in ways that can benefit from Windows APIs and acceleration techniques than libass. Also compilation wouldn't be an issue here.

But I don't know how it renders and whether that would be compatible in a more elegant way than libass.

brabebhin commented 2 days ago

The Windows API part is very important, because we cannot use APIs that's are not available in UWP.

softworkz commented 2 days ago

The Windows API part is very important, because we cannot use APIs that's are not available in UWP.

Oh..right!

softworkz commented 2 days ago

Just checked for libass. Here they are explicitly mentioning UWP, so the lights is green in that direction:

https://github.com/libass/libass/releases/tag/0.15.2

brabebhin commented 2 days ago

Yes iirc they were supporting uwp for quite some time but the build system was meh so we waited until meson was supported.