[FFmpeg-user] Why FFmpeg provides it's own decoder, but relies on 3rd party encoders?

Carl Eugen Hoyos ceffmpeg at gmail.com
Wed Oct 12 14:37:15 EEST 2016

2016-10-12 0:42 GMT+02:00 Alexey Eromenko <al4321 at gmail.com>:
> The important encoders I use myself are libmp3lame, libvpx, libx264,
> libx265 and more...
> Except for AAC audio codec, everything else uses 3rd party encoders,

Like mpeg2video, mpeg4 asp, msmpeg4, mp2, ac-3, e-ac-3 and
hundreds more?

> but decoders for ffmpeg are built-in, right ?

External decoders like libopenjpeg exist though.

> Why so ?

lame is older than FFmpeg, libvpx was written by a company to
support their video format (it wouldn't have made sense for them
to implement an FFmpeg-based encoder) and x265 is a direct
successor of x264.

At the time x264 was started, FFmpeg still tried to implement all
encoders themselves (and the saying was "first write a working
encoder, then start with the decoder implementation").
There is a very old post somewhere that explains why x264 was
written as an independent project, in retrospect this was a large
advantage for the single developers.

The main reason is that nobody sent patches for the mentioned
encoders so far...

I believe it is possible to write a (not top-quality) mp3 encoder on
top of FFmpeg (just needs a bitstream filter), but nobody cared.

Carl Eugen

More information about the ffmpeg-user mailing list