| Index: webrtc/modules/audio_processing/test/conversational_speech/multiend_call.cc
 | 
| diff --git a/webrtc/modules/audio_processing/test/conversational_speech/multiend_call.cc b/webrtc/modules/audio_processing/test/conversational_speech/multiend_call.cc
 | 
| index 624f981ae51f0e22b3928652a875c2e1618812f2..f83923cb15fe8412030836211799aad574050794 100644
 | 
| --- a/webrtc/modules/audio_processing/test/conversational_speech/multiend_call.cc
 | 
| +++ b/webrtc/modules/audio_processing/test/conversational_speech/multiend_call.cc
 | 
| @@ -24,36 +24,15 @@ MultiEndCall::MultiEndCall(
 | 
|      rtc::ArrayView<const Turn> timing, const std::string& audiotracks_path,
 | 
|      std::unique_ptr<WavReaderAbstractFactory> wavreader_abstract_factory)
 | 
|          : timing_(timing), audiotracks_path_(audiotracks_path),
 | 
| -          wavreader_abstract_factory_(std::move(wavreader_abstract_factory)) {
 | 
| +          wavreader_abstract_factory_(std::move(wavreader_abstract_factory)),
 | 
| +          valid_(false) {
 | 
|    FindSpeakerNames();
 | 
| -  CreateAudioTrackReaders();
 | 
| -  valid_ = CheckTiming();
 | 
| +  if (CreateAudioTrackReaders())
 | 
| +    valid_ = CheckTiming();
 | 
|  }
 | 
|  
 | 
|  MultiEndCall::~MultiEndCall() = default;
 | 
|  
 | 
| -const std::set<std::string>& MultiEndCall::speaker_names() const {
 | 
| -  return speaker_names_;
 | 
| -}
 | 
| -
 | 
| -const std::map<std::string, std::unique_ptr<WavReaderInterface>>&
 | 
| -    MultiEndCall::audiotrack_readers() const {
 | 
| -  return audiotrack_readers_;
 | 
| -}
 | 
| -
 | 
| -bool MultiEndCall::valid() const {
 | 
| -  return valid_;
 | 
| -}
 | 
| -
 | 
| -size_t MultiEndCall::total_duration_samples() const {
 | 
| -  return total_duration_samples_;
 | 
| -}
 | 
| -
 | 
| -const std::vector<MultiEndCall::SpeakingTurn>& MultiEndCall::speaking_turns()
 | 
| -    const {
 | 
| -  return speaking_turns_;
 | 
| -}
 | 
| -
 | 
|  void MultiEndCall::FindSpeakerNames() {
 | 
|    RTC_DCHECK(speaker_names_.empty());
 | 
|    for (const Turn& turn : timing_) {
 | 
| @@ -61,8 +40,9 @@ void MultiEndCall::FindSpeakerNames() {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -void MultiEndCall::CreateAudioTrackReaders() {
 | 
| +bool MultiEndCall::CreateAudioTrackReaders() {
 | 
|    RTC_DCHECK(audiotrack_readers_.empty());
 | 
| +  sample_rate_hz_ = 0;  // Sample rate will be set when reading the first track.
 | 
|    for (const Turn& turn : timing_) {
 | 
|      auto it = audiotrack_readers_.find(turn.audiotrack_file_name);
 | 
|      if (it != audiotrack_readers_.end())
 | 
| @@ -75,9 +55,24 @@ void MultiEndCall::CreateAudioTrackReaders() {
 | 
|      // Map the audiotrack file name to a new instance of WavReaderInterface.
 | 
|      std::unique_ptr<WavReaderInterface> wavreader =
 | 
|          wavreader_abstract_factory_->Create(audiotrack_file_path.pathname());
 | 
| +
 | 
| +    if (sample_rate_hz_ == 0) {
 | 
| +      sample_rate_hz_ = wavreader->SampleRate();
 | 
| +    } else if (sample_rate_hz_ != wavreader->SampleRate()) {
 | 
| +      LOG(LS_ERROR) << "All the audio tracks should have the same sample rate.";
 | 
| +      return false;
 | 
| +    }
 | 
| +
 | 
| +    if (wavreader->NumChannels() != 1) {
 | 
| +      LOG(LS_ERROR) << "Only mono audio tracks supported.";
 | 
| +      return false;
 | 
| +    }
 | 
| +
 | 
|      audiotrack_readers_.emplace(
 | 
|          turn.audiotrack_file_name, std::move(wavreader));
 | 
|    }
 | 
| +
 | 
| +  return true;
 | 
|  }
 | 
|  
 | 
|  bool MultiEndCall::CheckTiming() {
 | 
| 
 |