DIPLOMARBEIT
DIPLOMARBEIT
DIPLOMARBEIT
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)