diff --git a/player/AudioSRC.cpp b/player/AudioSRC.cpp index cb091c46..2af4433f 100644 --- a/player/AudioSRC.cpp +++ b/player/AudioSRC.cpp @@ -113,6 +113,7 @@ int AudioPlayer::getPCMChannel() { } int AudioPlayer::getPCMData(char *buf, int size) { + lock_guard lck(_mtx); if (_buffer.size() < size) { return 0; } @@ -121,6 +122,7 @@ int AudioPlayer::getPCMData(char *buf, int size) { return size; } -void AudioPlayer::inputFrame(const char *data, size_t size){ +void AudioPlayer::inputFrame(const char *data, size_t size) { + lock_guard lck(_mtx); _buffer.append(data, size); } diff --git a/player/AudioSRC.h b/player/AudioSRC.h index 54324847..1b552d09 100644 --- a/player/AudioSRC.h +++ b/player/AudioSRC.h @@ -79,6 +79,7 @@ private: private: int _sample_rate, _channel; SDL_AudioFormat _format; + mutex _mtx; BufferLikeString _buffer; SDLAudioDevice::Ptr _device; };