bool AudioOutput::setOutputDevice(int device) { if (i_device == device) return true; const QList<AudioDevice> deviceList = p_backend->deviceManager()->audioOutputDevices(); if (device >= 0 && device < deviceList.size()) { i_device = device; const QByteArray deviceName = deviceList.at(device).vlcId; libvlc_audio_output_set(vlc_instance, (char *) deviceList.at(device).vlcId.data()); qDebug() << "set aout " << deviceList.at(device).vlcId.data(); // if (deviceName == DEFAULT_ID) { // libvlc_audio_device_set(p_vlc_instance, DEFAULT, vlc_exception); // vlcExceptionRaised(); // } else if (deviceName.startsWith(ALSA_ID)) { // qDebug() << "setting ALSA " << deviceList.at(device).hwId.data(); // libvlc_audio_device_set(p_vlc_instance, ALSA, vlc_exception); // vlcExceptionRaised(); // libvlc_audio_alsa_device_set(p_vlc_instance, // deviceList.at(device).hwId, // vlc_exception); // vlcExceptionRaised(); } return true; }
void AudioOutputStreamHandler::SetOutputParameters(String type, String typeDevice, String device, bool isAudioOutputToStream) { this->isAudioOutputToStream = isAudioOutputToStream; if (isAudioOutputToStream) { libvlc_audio_set_callbacks(mediaPlayer, audioPlayCallbackProxy, nullptr, nullptr, nullptr, nullptr, this); } else { auto *node = libvlc_audio_output_list_get(vlc); char *_type = type.CreateUTF8String(); char *_typeDevice = typeDevice.CreateUTF8String(); char *_device = device.CreateUTF8String(); if (_type) { int i = libvlc_audio_output_set(mediaPlayer, _type); if (_device) { libvlc_audio_output_device_set(mediaPlayer, _typeDevice, _device); } } if (_type != nullptr) { Free(_type); } if (_typeDevice != nullptr) { Free(_typeDevice); } if (_device != nullptr) { Free(_device); } } }
jboolean Java_org_videolan_libvlc_MediaPlayer_nativeSetAudioOutput(JNIEnv *env, jobject thiz, jstring jaout) { const char* psz_aout; int i_ret; vlcjni_object *p_obj = VLCJniObject_getInstance(env, thiz); if (!p_obj) return false; if (!jaout || !(psz_aout = (*env)->GetStringUTFChars(env, jaout, 0))) { throw_IllegalArgumentException(env, "aout invalid"); return false; } i_ret = libvlc_audio_output_set(p_obj->u.p_mp, psz_aout); (*env)->ReleaseStringUTFChars(env, jaout, psz_aout); return i_ret == 0 ? true : false; }