Merge pull request #8239 from ZappoMan/codecPlugins

fix razor blades in your ears when switching between domains with no codecs installed
This commit is contained in:
Chris Collins 2016-07-13 17:25:47 -07:00 committed by GitHub
commit 1c6b5e89ac

View file

@ -535,14 +535,18 @@ void AudioClient::handleSelectedAudioFormat(QSharedPointer<ReceivedMessage> mess
_selectedCodecName = message->readString(); _selectedCodecName = message->readString();
qDebug() << "Selected Codec:" << _selectedCodecName; qDebug() << "Selected Codec:" << _selectedCodecName;
auto codecPlugins = PluginManager::getInstance()->getCodecPlugins();
for (auto& plugin : codecPlugins) {
if (_selectedCodecName == plugin->getName()) {
// release any old codec encoder/decoder first... // release any old codec encoder/decoder first...
if (_codec && _encoder) { if (_codec && _encoder) {
_codec->releaseEncoder(_encoder); _codec->releaseEncoder(_encoder);
_encoder = nullptr; _encoder = nullptr;
_codec = nullptr;
} }
_receivedAudioStream.cleanupCodec();
auto codecPlugins = PluginManager::getInstance()->getCodecPlugins();
for (auto& plugin : codecPlugins) {
if (_selectedCodecName == plugin->getName()) {
_codec = plugin; _codec = plugin;
_receivedAudioStream.setupCodec(plugin, _selectedCodecName, AudioConstants::STEREO); _receivedAudioStream.setupCodec(plugin, _selectedCodecName, AudioConstants::STEREO);
_encoder = plugin->createEncoder(AudioConstants::SAMPLE_RATE, AudioConstants::MONO); _encoder = plugin->createEncoder(AudioConstants::SAMPLE_RATE, AudioConstants::MONO);
@ -822,7 +826,6 @@ void AudioClient::handleAudioInput() {
audioTransform.setRotation(_orientationGetter()); audioTransform.setRotation(_orientationGetter());
// FIXME find a way to properly handle both playback audio and user audio concurrently // FIXME find a way to properly handle both playback audio and user audio concurrently
// TODO - codec encode goes here
QByteArray decocedBuffer(reinterpret_cast<char*>(networkAudioSamples), numNetworkBytes); QByteArray decocedBuffer(reinterpret_cast<char*>(networkAudioSamples), numNetworkBytes);
QByteArray encodedBuffer; QByteArray encodedBuffer;
if (_encoder) { if (_encoder) {
@ -841,7 +844,6 @@ void AudioClient::handleRecordedAudioInput(const QByteArray& audio) {
audioTransform.setTranslation(_positionGetter()); audioTransform.setTranslation(_positionGetter());
audioTransform.setRotation(_orientationGetter()); audioTransform.setRotation(_orientationGetter());
// TODO - codec encode goes here
QByteArray encodedBuffer; QByteArray encodedBuffer;
if (_encoder) { if (_encoder) {
_encoder->encode(audio, encodedBuffer); _encoder->encode(audio, encodedBuffer);