[FFmpeg-devel] [RFC] Subtitle Filtering Ramp-Up

softworkz . softworkz at hotmail.com
Sat Jun 7 19:19:48 EEST 2025


It's MythBusters Day!
=====================


Today: Busting the Lies of Nicolas George



> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
> Nicolas George
> 
> [...]
> 
> When I say that softworkz's approach is broken, I know what I am
> talking about.

Oh wow, that sounds impressive - but does he really..?

Let's see how much of his infamous, often claimed, never detailed
and never ever proven myths will hold up true after a fact-check.


> It is broken in three ways.
> The first way is the hardest: it does not handle syncing, 

It does handle syncing perfectly via framesync wherever it's
required. (example right below)


> It just
> feeds everything to libass and takes what comes out of it.


Wrong. Two examples:


video > [sub_cc] > textsubs > [overlaytextsubs] > video

video > [graphicsub_ocr] > textsubs > [overlaytextsubs] > video


What's specific to those examples is that in both cases, (closed
captions and OCR for bitmap subs), the text events DO NOT
come all at once, but continuously, which is the nature of 
those cases and contradicts the false claim that NG tried
to place.


==> "broken in three ways #1" => Busted


> softworkz has refused to even test that case.

Really? 

I have not only tested that case - I have tested dozens of cases,
and not just that. I even have a cross-platform automated test
system which is testing dozens of different filtergraphs for 
subtitle filtering, including hardware accelerated filtering.

The two videos here are showing 66 (!!) different filtergraph setups
which are all working successfully:

https://github.com/softworkz/SubtitleFilteringDemos/tree/master/TestRun1


==> "broken in three ways #1.1" => Busted




> easiest to fix: he neglected to implement all the utility filters,
> the
> filters that operate not on the frame payload but on timestamps, side
> data, other technical properties. All these filters are needed for
> subtitles too. softworkz patch series do not include them, and he
> refuses to implement them.

After asking him 5 times to name the filters he is referring to,
he wasn't able to do so.
And nobody can say that stating the names of the filters would be 
asked too much.


==> "broken in three ways #2" => Busted



> Third flaw: no negotiation. Negotiation is a core concept of
> libavfilter: have a RGB stream and a YUV-only filter? lavfi inserts
> the
> scale filter, and it inserts it at the right place. With softworkz's
> implementation: have text subtitles, expect bitmap ones, it fails
> instead of inserting the rasterizer at the right place.

Negotiation is properly implemented.
Not auto-inserting a text-to-bitmap subs filter is intentional,
but very easy to change - in the same way as filters are already
auto-inserted to replicate the sub2video hack from somebody, which 
is an old half-broken feature in FFmpeg.

There's proof already that auto-insertion is working,
just not for that case where it is intentionally not done.


==> "broken in three ways #3" => Busted




> This series only works in the simplest of test cases. 

That's a good laugh after viewing evidence showing 66 different 
working cases, which is still just a fraction. 

Everybody can run these tests oneself, I can give instructions,
takes about 30 minutes to set up, works on Windows, Linux and 
most of its derivates, Android and Mac.


==> "broken in three ways #3.5" => Bonus-Bust



Best regards,
softworkz



More information about the ffmpeg-devel mailing list