31.10.2012 Aufrufe

DIPLOMARBEIT

DIPLOMARBEIT

DIPLOMARBEIT

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

3.4 Verbinden der Komponenten<br />

Als nächstes muss die soeben erwähnte Instanz der Klasse OutputStream verfolgt werden. Diese<br />

wurde dem RtpStreamReceiver bereits bei der Instanziierung übergeben, daher muss nach der<br />

Stelle gesucht werden, wo der RtpStreamReceiver erstellt wird. Die entsprechende Stelle fin‐<br />

det man in der Klasse JAudioLauncher:<br />

AudioFormat format = new AudioFormat(codec, sample_rate,<br />

8*sample_size, 1, sample_size, sample_rate, big_endian);<br />

audio_output = new AudioOutput(format);<br />

receiver = new RtpStreamReceiver(audio_output.getOuputStream(),<br />

socket);<br />

Hier wird eine Instanz der Klasse AudioOutput gebildet. Dabei wird auch das Format angegeben,<br />

in dem die Audiodaten vorliegen. Auf das Format der Audiodaten wird im späteren Verlauf noch ein‐<br />

gegangen. Der OutputStream wird dem RtpStreamReceiver folglich von der Klasse<br />

AudioOutput mit Hilfe der Methode getOutputStream() zur Verfügung gestellt.<br />

Betrachtet man die Klasse AudioOutput, so stellt man fest, dass dort die eigentliche Audioausgabe<br />

erfolgt. Dies geschieht mit Hilfe der Methode AudioSystem.getLine(). Die Klasse<br />

AudioSystem ist Teil von Java und stellt Methoden zur Verfügung, um die Audio‐Hardware an‐<br />

zusprechen. Das Ergebnis ist eine Instanz der Klasse SourceDataLine 16 . Mit Hilfe der Methode<br />

write() dieser Instanz kann man nun Audiodaten ausgeben lassen. Auch der OutputStream<br />

wird hier angelegt:<br />

audio_output_stream = new AudioOutputStream(source_line, format);<br />

Es ist zu erkennen, dass es sich bei diesem OutputStream um eine spezialisierte Form mit dem<br />

Namen AudioOutputStream handelt. Diese Klasse ist Bestandteil des VoIP‐Clienten. Der Instanz<br />

des AudioOutputStreams wird die SourceDataLine übergeben. Somit wurde die Verbin‐<br />

dung zwischen den ankommenden Paketen bis hin zur Audioausgabe hergestellt. Allerdings lässt sich<br />

bisher noch keine geeignete Stelle finden, an der man an die Audiodaten auch tatsächlich heran‐<br />

kommt.<br />

Nun ist es an der Zeit, die Klasse AudioOutputStream genauer zu untersuchen. Im Konstruktor<br />

der Klasse AudioOutputStream findet man folgende Zeilen:<br />

this.source_line = source_line;<br />

PipedInputStream piped_input_stream = new PipedInputStream();<br />

output_stream = new PipedOutputStream(piped_input_stream);<br />

AudioInputStream audio_input_stream = new AudioInputStream( piped_input_stream,<br />

format, -1);<br />

16 Eigentlich würde man unter Source (engl., die Quelle) eine Audioeingabe vermuten (z.B. Mikrofon). Aus der<br />

Sichtweise des Audio‐Mixers handelt es sich aber um eine Datenquelle.<br />

61

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!