Kodek

En kodek er en algoritme som kan kode (transformere) informasjon om til en annen representasjon (transform) og/eller dekode (inverstransformere) transformen, det vil si utvinne den opprinnelige informasjonen. Den mest vanlige bruken av ordet er i forbindelse med datakompresjon, hvor formålet med transformen enten er å skille ut uviktig informasjon (kompresjon med tap), eller å øke den spesifikke entropien (tapsløs kompresjon). I en annen betydning kan en kodek være en maskinvareenhet som transformerer signaler mellom forskjellige fysiske representasjoner, eksempelvis mellom analog og digital lyd.

Navn
Av engelsk: codec, som er en sammentrekning av coder/decoder

Datakompresjon med tap
En vanlig måte å komprimere bilder og lyd er å transformere signalet til frekvensdomenet og så velge ut de viktigste frekvenskomponentene. Følgende algoritmer er godt egna til slik kompresjon, ettersom betydelige deler av den transformerte dataen gjerne kan forkastes uten at tapet oppleves som særlig stort:
 DFT/FFT
 DCT 
 Wavelet
Kompresjon kan oppnås for eksempel ved å forkaste alle frekvenskomponenter over ei viss grense i et lydklipp eller nulle frekvenser som bidrar lite (har lav koeffisient). Om ingen data forkastes vil signalet kunne tapsfritt transformeres tilbake, fordi algoritmene over i seg ikke medfører datatap.

Tapsfri datakompresjon
 Det siste steget i tapsfri kompresjon er entropikoding. Huffman-algoritmen er et klassisk eksempel på dette.
 Ofte kan signalet optimaliseres for entropikoding først. Dette kan omfatte å erstatte faktiske verdier med differansen fra en prediktor (som i FLAC), referere tilbake på tidligere signalforløp (som i Lempel-Ziv), eller å samle like data ved å stokke det om på en reverserbar måte (som i rzip).

Videokomprimering

Digitale bilder og billedstrømmer kan komprimeres for slik å spare plass når dataene lagres eller overføres. Videokompremering kan gjøres tapsfri, en kan godta tap av data, eller en film kan være en strøm av stillbilder.

Menneskeøyet er mer følsomt for gult og grønt lys enn for rødt , og begrensninger i menneskets fysiologi og psykologi gjør det mulig å fjerne detaljer uten at billedstrømmen oppfattes som dårligere.

"QuickTime Animation", "H.264 lossless" og VP9 er eksempler på kodeker som kan gi tapsfri koding, men dermed også mye data. Komprimering med tap vil kunne føre til at noen detaljer i et bilde blir uskarpe, eller at bakgrunnen og nyanser i fargene glattes litt ut. Digital-TV formatet H.264/MPEG-4 AVC benytter koding med tap, i likhet med forgjengere som DivX, Xvid, libavcodec, H.262/MPEG2 og MPEG1. WMV-formatet fra Microsoft, samt VP8 og VP9 fra Google er også formater som gir tap av data. Formater som "Motion JPEG" og "Apple ProRes 422/444" sender langt på vei en strøm av stillbilder.

Lyd
MP3, en mye brukt kodek for lyd, er egentlig MPEG-1 Audio Layer III eller MPEG-2 Audo Layer III, og er en kodek med tap. Bruk av psykoaukustiske metoder og kjennskap til det mennesklige hørselsområdet har gjort det mulig å komprimere lyd med 75-95% i forhold til CD-formatet, uten merkbar reduksjon i kvalitet for vanlige lyttere.

Referanser

Multimediaprogramvare
Digital signalbehandling
Datakompresjonsalgoritmer