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); } } }
/** * Gets the list of available audio output modules. * * \return list of available audio outputs. It must be freed it with * * \see AudioOutputDescription::audioOutputListRelease() * * \see AudioOutputDescription . In case of error, NULL is returned. */ std::vector<AudioOutputDescription> audioOutputList() { libvlc_audio_output_t* result = libvlc_audio_output_list_get(*this); std::vector<AudioOutputDescription> res; if ( result == NULL ) return res; libvlc_audio_output_t* p = result; while ( p != NULL ) { res.emplace_back( p ); p = p->p_next; } libvlc_audio_output_list_release(result); return res; }
vector<VLC::deviceoutput> VLC::getDeviceOutputs(vector<string> &outputNames) { // Get all attached audio devices libvlc_audio_output_t *audioOutputs, *curAudioOutput; audioOutputs = libvlc_audio_output_list_get(libvlcInstance); curAudioOutput = audioOutputs; vector<deviceoutput> outputs; while (curAudioOutput) { libvlc_audio_output_device_t *audioDevices, *curAudioDevice; audioDevices = libvlc_audio_output_device_list_get(libvlcInstance, curAudioOutput->psz_name); curAudioDevice = audioDevices; while (curAudioDevice) { outputNames.push_back(string(curAudioDevice->psz_device)); outputs.push_back({string(curAudioOutput->psz_name), string(curAudioDevice->psz_device), string(curAudioDevice->psz_description)}); curAudioDevice = curAudioDevice->p_next; } libvlc_audio_output_device_list_release(audioDevices); audioDevices = NULL; curAudioOutput = curAudioOutput->p_next; } libvlc_audio_output_list_release(audioOutputs); audioOutputs = NULL; return outputs; }