Codec'er, dataafkodning

Kmedia2-grænsefladen lader dig se bort fra at wav-filer, mp3-filer eller hvad som helst består af datastrømme. I stedet implementerer du kun metoder for at spille dem.

På den måde kan du skrive en bølgeformsladningsrutine på en måde så du kan spille bølgeformsfiler (som PlayObject), men ingen anden kan bruge din kode.

Asynkrone strømme ville være alternativet. Man definerer en grænseflade som tillader at datablokke sendes ind, og hentes ud. Dette ser sådan her ud i MCOP:

interface Codec {
  in async byte stream indata;
  out async byte stream outdata;
};

Afkodere kan naturligvis også angive egenskaber for at udsende yderligere data, som formatinformation.

interface ByteAudioCodec {
  in async byte stream indata;
  out async byte stream outdata;
  readonly attribute samplingRate, bits, channels;
};

Denne ByteAudioCodec kan for eksempel forbindes til et ByteStreamToAudio-objekt, for at oprette rigtigt flydende lyd.

Andre typer af afkodere kan naturligvis involvere at sende videodata direkte ud, som

interface VideoCodec {
  in async byte stream indata;
  out video stream outdata;      /* bemærk: videostrømme findes ikke endnu */
};

Sandsynligvis bør et afkodningsbegreb bruges i stedet for måden “du ved hvordan det spilles med det gør jeg ikke” som for eksempel WavPlayObject bruger for øjeblikket. Nogen skal dog sætte sig ned og eksperimentere lidt inden en programmeringsgrænseflade kan defineres.