spaceman
spaceman

Reputation: 1101

Why Do Some of the Codecs in FFMPEG's Supported Codec List Show "encoders:" or "decoders:" in Parenthesis?

If you open the Command Prompt, and run ffmpeg -codecs,
you will get a long list of Codecs that FFMPEG supports.

Here's a small sample of the list:

 DEV.L. h261                 H.261
 DEV.L. h263                 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
 D.V.L. h263i                Intel H.263
 DEV.L. h263p                H.263+ / H.263-1998 / H.263 version 2
 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb)
 D.V.LS hevc                 H.265 / HEVC

Now If you briefly go over the whole list,
you see that most Codecs in this list appear with their Name and Description,
but some of the Codecs also include parenthesis in the Description, and in the parenthesis,
they specify "encoders:" or "decoders:".

For example:

1)

 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb)

2)

 DEVILS jpeg2000             JPEG 2000 (decoders: jpeg2000 libopenjpeg) (encoders: jpeg2000 libopenjpeg)

3)

 DEV.L. msmpeg4v3            MPEG-4 part 2 Microsoft variant version 3 (decoders: msmpeg4) (encoders: msmpeg4)

4)

 DEA.L. aac                  AAC (Advanced Audio Coding) (encoders: aac libvo_aacenc)

5)

 DEA.L. amr_nb               AMR-NB (Adaptive Multi-Rate NarrowBand) (decoders: amrnb libopencore_amrnb) (encoders: libopencore_amrnb)
 DEA.L. amr_wb               AMR-WB (Adaptive Multi-Rate WideBand) (decoders: amrwb libopencore_amrwb) (encoders: libvo_amrwbenc)

My question:

Why do some Codecs have those parenthesis, specifying Encoders/Decoders,
while other (in fact: most) codecs don't have these parenthesis?

Upvotes: 0

Views: 456

Answers (2)

Gyan
Gyan

Reputation: 93231

The relevant source code has this comment,

    /* print decoders/encoders when there's more than one or their
     * names are different from codec name */

Self-explanatory.

Upvotes: 1

szatmary
szatmary

Reputation: 31110

A codec is a format standard. It is a way of describing media in a compressed format. A tool that takes an uncompressed media file or stream, and compresses it into the standard is an encoder. There can be different competing encoders that implement the same codec. For example, libx264 is a software based h264 encoder. But many nvidia GPUs ship with NVENC which is a hardware accelerated h.264 encoder. They both do the same jobs, but in different ways. Ffmpeg support both.

Upvotes: 1

Related Questions