From f7fe93d133673f314319702d2e483029acc2f99c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Mon, 27 Apr 2015 01:11:59 -0400 Subject: [PATCH] pulseaudio: fix memory corruption Refs #71680 Change-Id: Ibe64bc2fa323c589c2323d2bea4a80269a2a84e0 --- src/media/audio/pulseaudio/pulselayer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/media/audio/pulseaudio/pulselayer.cpp b/src/media/audio/pulseaudio/pulselayer.cpp index 57561c267c..be8f0b5d30 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); -- GitLab