コーデック(codec = coding+decoding)は、ごく単純なものも含めて符号化/復号の全般を指す。しかし、実際には、
コーデックと言えば、特に分解/構成が必要になるような複雑な符号化/復号のことを指すことが多い。
コーデックには、記録/通信媒体への負荷を抑えたり、品質を維持したり、処理を高速化したりするために、いろいろな工夫が盛り込まれている。しかし、これらを同時に実現することはできないので、用途によっていろんな種類のコーデックが使い分けられている。
一つの情報(特に関数になっている場合)をいくつもの要素に分けていく過程で、情報の一部を捨ててしまわなければならない場合がある。縦に切って分けることによって、途中の時点/地点での情報を捨ててしまう処理を
標本化(sampling。▽図左)といい、横に切って分けることによって、微妙な区別の情報を捨ててしまう処理を
量子化(quantizing。同右)という。どっちの処理にしても、分け方が細かければ、捨てられないで残る情報は多くなり、分け方が粗ければ、残せる情報は少なくなる。
さらに、情報の種類が違えばもちろん別のコーデックが必要になる。
スチルでよく使われているコーデックには
GIF、
JPEGなどがある。
オーディオでよく使われているコーデックには
PCM、
MP3、
AC3などがある。
ビデオでよく使われているコーデックには
MPEG-1、
MPEG-2、
MPEG-4などがある。
QuickTimePlayerやWindowsMediaPlayerなどのマルチメディアプレーヤは、いろんなコーデックでの読み書きに対応できるようにするために、それぞれのコーデックの機能を実現するソフトウェア部品のうちの必要なものだけを選んで組み込んで使うようになっている。こうしたソフトウェア部品のことをコーデックとよぶことがよくあるが、正確には
コーデックを追加するためのプラグイン(plug-in)とよぶべきだろう。
情報を記録/通信するためには、書き込む側と読み出す側とで共通の
フォーマットを定めなければならない。コーデックはその要素の一部にあたる。