* @return collection of audio outputs
*/
public List<AudioOutput> getAudioOutputs() {
Logger.debug("getAudioOutputs()");
List<AudioOutput> result = new ArrayList<AudioOutput>();
libvlc_audio_output_t audioOutputs = libvlc.libvlc_audio_output_list_get(instance);
if(audioOutputs != null) {
// Must prevent automatic synchronisation on the native structure, otherwise a
// fatal JVM crash will occur when the native release call is made - not quite
// sure why this is needed here
audioOutputs.setAutoSynch(false);
libvlc_audio_output_t audioOutput = audioOutputs;
while(audioOutput != null) {
// The native strings must be copied here, but not freed (they are freed natively
// in the subsequent release call
String name = NativeString.copyNativeString(libvlc, audioOutput.psz_name);
String description = NativeString.copyNativeString(libvlc, audioOutput.psz_description);