Skip to content
Snippets Groups Projects
Commit baf1f4a9 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

recorder: protect filters when flushing

Change-Id: Ideffd7329a39559ef76f4af615dbfdde23d59c95
parent 4505c8f5
Branches
No related tags found
No related merge requests found
...@@ -207,10 +207,13 @@ MediaRecorder::startRecording() ...@@ -207,10 +207,13 @@ MediaRecorder::startRecording()
{ {
std::lock_guard<std::mutex> lk(mutexStreamSetup_); std::lock_guard<std::mutex> lk(mutexStreamSetup_);
for (auto& media : streams_) { for (auto& media : streams_) {
if (media.second->info.isVideo) if (media.second->info.isVideo) {
std::lock_guard<std::mutex> lk2(mutexFilterVideo_);
setupVideoOutput(); setupVideoOutput();
else } else {
std::lock_guard<std::mutex> lk2(mutexFilterAudio_);
setupAudioOutput(); setupAudioOutput();
}
media.second->isEnabled = true; media.second->isEnabled = true;
} }
} }
...@@ -685,21 +688,20 @@ MediaRecorder::buildAudioFilter(const std::vector<MediaStream>& peers) const ...@@ -685,21 +688,20 @@ MediaRecorder::buildAudioFilter(const std::vector<MediaStream>& peers) const
void void
MediaRecorder::flush() MediaRecorder::flush()
{ {
if (videoFilter_) { {
std::lock_guard<std::mutex> lk(mutexFilterVideo_); std::lock_guard<std::mutex> lk(mutexFilterVideo_);
if (videoFilter_)
videoFilter_->flush(); videoFilter_->flush();
if (outputVideoFilter_) { if (outputVideoFilter_)
outputVideoFilter_->flush(); outputVideoFilter_->flush();
} }
} {
if (audioFilter_) {
std::lock_guard<std::mutex> lk(mutexFilterAudio_); std::lock_guard<std::mutex> lk(mutexFilterAudio_);
if (audioFilter_)
audioFilter_->flush(); audioFilter_->flush();
if (outputAudioFilter_) { if (outputAudioFilter_)
outputAudioFilter_->flush(); outputAudioFilter_->flush();
} }
}
if (encoder_) if (encoder_)
encoder_->flush(); encoder_->flush();
} }
...@@ -717,18 +719,14 @@ MediaRecorder::reset() ...@@ -717,18 +719,14 @@ MediaRecorder::reset()
{ {
std::lock_guard<std::mutex> lk2(mutexFilterVideo_); std::lock_guard<std::mutex> lk2(mutexFilterVideo_);
videoFilter_.reset(); videoFilter_.reset();
if (outputVideoFilter_) {
outputVideoFilter_.reset(); outputVideoFilter_.reset();
} }
}
{ {
std::lock_guard<std::mutex> lk2(mutexFilterAudio_); std::lock_guard<std::mutex> lk2(mutexFilterAudio_);
audioFilter_.reset(); audioFilter_.reset();
if (outputAudioFilter_) {
outputAudioFilter_.reset(); outputAudioFilter_.reset();
} }
} }
}
encoder_.reset(); encoder_.reset();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment