Kodek

Fra Wikipedia, den frie encyklopedi
Gå til: navigasjon, søk

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[rediger | rediger kilde]

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

Datakompresjon med tap[rediger | rediger kilde]

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:

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[rediger | rediger kilde]

  • 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).