Hacker News new | ask | show | jobs
by LudoA 2986 days ago
Care to spell this out in more detail for those of us who don't know the relation between x265/h265/codec vs implementation/etc.?
3 comments

You use x26* to encode h26*.

The correction is correct, albeit a bit pedantic, given the point of GPs comment.

It's the difference between a file format and a library used to write the format.

(but that explanation also glosses over the fact that containers are something else entirely... "data format" may be better than "file format" here)

Codecs are almost like programming languages. They are highly modular and flexible.

Implementations and encoders actually use algorithms to turn the media into something that is compatible with a codec.

That's interesting.

But how can an implementation be compatible with a codec, if a codec is not set in the stone -- i.e. if there are different versions of a codec?

It may help to think about video codecs as standards on how to decode images from a series of bits, not on how to encode them. Decoding is deterministic, encoding is not. You have to consider that these encoders are lossy, i.e. while encoding they modify the information so that it is more easily compressible. Different encoders will do different choices and produce different result while using the same bitrate.

Obviously encoders are constrained by the fact that they must produce a series of bits that can be decoded according to a certain standard, so a new video format can enable encoders to compress information more efficiently (i.e. less perceptual loss of quality at the same bitrate).

That makes it clear, thanks!
Codec refers to the implementation.
Thanks. You are correct. I should have said video coding format.