31.10.2012 Aufrufe

DIPLOMARBEIT

DIPLOMARBEIT

DIPLOMARBEIT

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

3.4 Verbinden der Komponenten<br />

Die Interpretation der Byte‐Reihenfolge zu ändern ist nicht sehr aufwändig. Dazu muss nur die Stelle<br />

im VoIP‐Client gesucht werden, wo das Ausgabe‐Format festgelegt wird. Diese befindet sich in der<br />

Methode initAudioLine() der Klasse AudioOutput:<br />

float fFrameRate=8000.0F;<br />

AudioFormat format=new AudioFormat(<br />

AudioFormat.Encoding.PCM_SIGNED, fFrameRate, 16, 1, 2, fFrameRate,<br />

false);<br />

Der letzte Parameter (hier false) gibt die Byte‐Reihenfolge an. Der Wert false steht für Little<br />

Endian. Durch Änderung in true wird die Reihenfolge korrekt als Big Endian interpretiert.<br />

Die Anpassung der Abtastrate gestaltet sich schwieriger. Grund: Zur Änderung der Abtastrate muss<br />

das Audiosignal neu Abgetastet werden (Resampling), dies unterstützt Java jedoch nicht von Haus<br />

aus.<br />

Hier lässt sich ebenfalls für Testzwecke eine provisorische Lösung anbringen: Die vorhandenen Amp‐<br />

litudenwerte werden zweimal verwendet, damit sich die Anzahl von 8000 Werten pro Sekunde auf<br />

16000 Werte pro Sekunde verdoppelt.<br />

Dies geschieht in der bekannten Methode jaudio.readSamples():<br />

//samples = new short[ numBytesRead / 2 ];<br />

samples = new short[ numBytesRead ];<br />

int pb = 0;<br />

for (int j=0; j < samples.length; j++)<br />

{<br />

int ix = (((data[pb] & 0xff)

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!