FFhistory: divas and rock stars

Any sufficiently large project (not necessarily a software one) will eventually get one or more persons of significant talents and even more significant personality. Initially they’ll bring good work to the project but eventually they’ll feel they don’t get enough credit for it and then scandals start. This is usually called diva or rock star behaviour since the effect was most commonly (and easily) observed with these categories of people. FFmpeg though its history also had some people deserving the title: Ronald Bultje, Baptiste Coudurier and (to a lesser degree) Kieran Kunhya. Paul B. Mahol seems to try to get into the company or maybe he’s bored so today we’ll review just the first three guys.

Ronald S. Bultje (or BBB for short) first contributed to the project in 2003. He came from gstreamer which makes him very unique already: some ex-FFmpeg developers later contributed there (usually after getting employed by Collabora) but not the other way around. As a side note: I don’t think high of gstreamer exactly because they haven’t contributed much to open-source multimedia world (there was one case when their developer REd A**le Intermediate Codec but refused to release the sources, saying they’re not clean enough so I had to do all the REing later myself); even VideoLAN while not being great at technical side of things at least helped immensely with the hosting and organization for many other projects (dav1d, FFmpeg, x264 and so on).

Ronald started out as a Dutch student, then moved to study in the USA, got employed and worked at Chrome team and finally left the company and founded his own, Two Orioles. In that company he presumably developed high-quality software encoders for VP9 and AV1 (this is believable but the products are not available for public evaluation). I don’t know if he got American citizenship already but he damn well deserves it.

His work in FFmpeg includes work on various demuxers (like Matroska and RMVB), RTP protocol support as well as VP8 and VP9 decoders. He also reverse engineered Windows Media Speech codec.

During the split he initially joined libav but since the developers were not always agreeing with him (I don’t remember what it was, something about reviews and build system probably) and could not find couple of minutes for him during a talk at VideoLAN Dev Days (i.e. he arrived during a talk and expected libav developers to stop listening, leave the room and have a talk with him instead; for some reason it didn’t work out). So he went off to FFmpeg where not all of his proposals were accepted either but at least reviews were not mandatory.

One of the things he worked at during his libav phase was AVScale—a library for colourspace conversion. He mostly ranted about how current solutions do not take gamma into account and that his code should deal with it. But he left the project for FFmpeg refusing to give his work (so later Luca Barbato devised a different library under the same name and I contributed to it a bit). A couple of years later his work finally resurfaced as vf_colorspace, becoming the third filter in FFmpeg doing the same thing (the other two are based on libswscale and zimg respectively).

Baptiste Coudurier started contributing to the project in 2006. He worked mostly on enterprise stuff. His work on MOV/MP4 demuxer was especially praiseworthy (i.e. I heard other developers praising its design and robustness). In the same time his behaviour was not so great, he was frequently arguing with other developers and threatening to fork—with demands to give him the full repository source (which had always been available for everybody as it was pointed out on the mailing list).

But unlike many others he actually went out and created a fork named FFmbc (two last letter presumably mean “broadcast” and not his initials). Unlike the original it was licensed under GPLv2 (I suppose it was the usual approach “if you want it under LGPL then pay me” but I don’t know if it worked out). There is a sad story related to it: there was SMPTE S320M audio decoder in it licensed under LGPL which made it perfectly fine to pick, but when Diego did it, Baptiste appeared and complained that the original author permitted it to be LGPL only in his project. Well, LGPL does not work like that.

There’s another simultaneously sad and fun story I mentioned in a previous post. Back in the day there was a popular ProRes intermediate codec and Baptiste along with Maxim Poliakovsky worked on REing it. At some point he decided to release it under the pseudonym of Elvis Presley (and I think under GPL). And FFmbc got also a ProRes encoder from Michael Jackson. FFmpeg got an encoder from somebody named Anatoliy Wasserman (the name as memetic in russia as Chuck Norris in the USA). I actually tried to inquire the guy whether it is really a pseudonym but got no reply. So I ended up writing my own version for libav (for a box of Trocadero, with the initial version mostly written in a train from FOSDEM on an underpowered ARM-based laptop). The fun thing is that the name in copyright is not exactly the one in my ID either—but it’s close enough.

And finally there’s a bit told by Diego. When he was talking to representatives of some other opensource project they said to him “well, you have Baptiste” in the tone that implied we should know what’s wrong with him by ourselves. But there were no further details so I’ll end here as well.

Kieran Kunhya joined the project in 2011 and unlike many others he had founded his own company, Open Broadcast Systems, at about the same time and most of his work was related to its main product (essentially a box for encoding a stream for broadcasting which thanks to using opensource software could cost way less than the usual proprietary solutions). Who else would work on MPEG-4 SSP decoder (or who knows that it exists at all)? IIRC he reverse engineered Cineform HD codec as well as D*lby E (but hasn’t released the latter because D*lby, so somebody else had to do it later). His company employed some other talented developers who contributed to FFmpeg as well. So far he looks like a decent guy except for his eccentric desire to proclaim himself The One True Upstream.

As you can see, FFmpeg was developed by very different kinds of people. And there are still more developers to remember, from one-off Summer of Code participants to long-time contributors, from people known for maintaining one but important component to people involved in almost everything. Stay tuned.

4 Responses to “FFhistory: divas and rock stars”

  1. BBB says:

    I’m sorry you think of me as a diva, but it’s probably fair.

    About AVScale: it’s unrelated to vf_colorspace. I did start writing an AVScale prototype (API, some initial codepaths, even some half-baked asm – probably SSSE3 or so). I think my approach was wrong. I tried to appease by making sure it would at least in theory allow all use-cases handled in swscale to be addressable – as well as fix all the cases where it failed, and I think in hindsight this was the wrong approach. Over-engineered, under-delivered. It would’ve taken forever to finish it and I just didn’t want to spend time on it. So I ditched it and worked on other things that were more interesting.

    vf_colorspace, on the other hand, had a very specific single goal and handled that really well: convert colorspaces in a way that was orthogonal to most of what swscale was trying to do, so you could use the two in complement. I think it is useful and extendable (new colorspaces can be added by declaring their coefficient spec constants) and I’m believe some people use it like that. Because it does no more than that, I could finish it in a reasonable amount of time.

    That Videolan Dev Day appearance you talk about was indeed poorly done by me, I’m sorry about that. I took my wife and newborn to Paris and took 2 hours to quickly pop into VDD and say hi to some people before heading back. In hindsight, that was pretty stupid of me and it would have been better to not show up at all. I’ve attended subsequent VDDs in full (the one in Tokyo is my favourite) and they were lots of fun.

    Oh, and Two Orioles also contributes to Videolan’s dav1d, which is opensource and has a FFmpeg plug-in! 🙂

  2. Kostya says:

    Thanks for the clarifications!

  3. Benjamin Larsson says:

    Do you want another box of Trocadero?

  4. Kostya says:

    In theory – yes, in practice I can order one myself now (I still two bottles left from my last order). The sad thing is that all non-Spendrups breweries seem to have lost rights to produce it (the only thing I could find still being produced is Nyckelbryggerier JÃ¥kka). And when I was in Sweden pre-2020 all I could find is sugar-free Trocadero from Vasa so the things were going down already.

    Now you know why I’m not so productive in recent years.