diff --git a/src/media/audio/pulseaudio/pulselayer.cpp b/src/media/audio/pulseaudio/pulselayer.cpp index 57561c267c1f210e62066c7258c09666b180ca0e..be8f0b5d3016c30984ff58121b0e5895becb91ee 100644 --- a/src/media/audio/pulseaudio/pulselayer.cpp +++ b/src/media/audio/pulseaudio/pulselayer.cpp @@ -468,7 +468,7 @@ void PulseLayer::writeToSpeaker() pa_stream *s = playback_->pulseStream(); const pa_sample_spec* sample_spec = pa_stream_get_sample_spec(s); size_t sample_size = pa_frame_size(sample_spec); - const AudioFormat format(playback_->getFormat()); + const AudioFormat format(sample_spec->rate, sample_spec->channels); // available bytes to be written in pulseaudio internal buffer int ret = pa_stream_writable_size(s); @@ -554,9 +554,10 @@ void PulseLayer::writeToSpeaker() pa_stream_begin_write(s, (void**)&data, &resampledBytes); - playbackBuffer_.setFormat(format); + playbackBuffer_.setFormat(mainBufferAudioFormat); playbackBuffer_.resize(readableSamples); Manager::instance().getRingBufferPool().getData(playbackBuffer_, RingBufferPool::DEFAULT_ID); + playbackBuffer_.setChannelNum(format.nb_channels, true); if (resample) { AudioBuffer rsmpl_out(nResampled, format);