| Index: webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.cc
 | 
| diff --git a/webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.cc b/webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.cc
 | 
| index 319a97bfcaa749703545f8da61beec7b5e9fe5b6..911e0510da86067113c5616cb83a20a3f00d0e68 100644
 | 
| --- a/webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.cc
 | 
| +++ b/webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.cc
 | 
| @@ -91,16 +91,106 @@ void Logging::Log(const char format[], ...) {
 | 
|  }
 | 
|  
 | 
|  void Logging::Plot(int figure, double value) {
 | 
| +  Plot(figure, value, "");
 | 
| +}
 | 
| +
 | 
| +void Logging::Plot(int figure, double value, const std::string& alg_name) {
 | 
|    CriticalSectionScoped cs(crit_sect_.get());
 | 
|    ThreadMap::iterator it = thread_map_.find(ThreadWrapper::GetThreadId());
 | 
|    assert(it != thread_map_.end());
 | 
|    const State& state = it->second.stack.top();
 | 
| +  std::string label = state.tag + '@' + alg_name;
 | 
| +  std::string prefix("Available");
 | 
| +  if (alg_name.compare(0, prefix.length(), prefix) == 0) {
 | 
| +    std::string receiver("Receiver");
 | 
| +    size_t start_pos = label.find(receiver);
 | 
| +    if (start_pos != std::string::npos) {
 | 
| +      label.replace(start_pos, receiver.length(), "Sender");
 | 
| +    }
 | 
| +  }
 | 
|    if (state.enabled) {
 | 
| -    printf("PLOT\t%d\t%s\t%f\t%f\n", figure, state.tag.c_str(),
 | 
| +    printf("PLOT\t%d\t%s\t%f\t%f\n", figure, label.c_str(),
 | 
|             state.timestamp_ms * 0.001, value);
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +void Logging::PlotBar(int figure,
 | 
| +                      const std::string& name,
 | 
| +                      double value,
 | 
| +                      int flow_id) {
 | 
| +  CriticalSectionScoped cs(crit_sect_.get());
 | 
| +  ThreadMap::iterator it = thread_map_.find(ThreadWrapper::GetThreadId());
 | 
| +  assert(it != thread_map_.end());
 | 
| +  const State& state = it->second.stack.top();
 | 
| +  if (state.enabled) {
 | 
| +    printf("BAR\t%d\t%s_%d\t%f\n", figure, name.c_str(), flow_id, value);
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +void Logging::PlotBaselineBar(int figure,
 | 
| +                              const std::string& name,
 | 
| +                              double value,
 | 
| +                              int flow_id) {
 | 
| +  CriticalSectionScoped cs(crit_sect_.get());
 | 
| +  ThreadMap::iterator it = thread_map_.find(ThreadWrapper::GetThreadId());
 | 
| +  assert(it != thread_map_.end());
 | 
| +  const State& state = it->second.stack.top();
 | 
| +  if (state.enabled) {
 | 
| +    printf("BASELINE\t%d\t%s_%d\t%f\n", figure, name.c_str(), flow_id, value);
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +void Logging::PlotErrorBar(int figure,
 | 
| +                           const std::string& name,
 | 
| +                           double value,
 | 
| +                           double ylow,
 | 
| +                           double yhigh,
 | 
| +                           const std::string& error_title,
 | 
| +                           int flow_id) {
 | 
| +  CriticalSectionScoped cs(crit_sect_.get());
 | 
| +  ThreadMap::iterator it = thread_map_.find(ThreadWrapper::GetThreadId());
 | 
| +  assert(it != thread_map_.end());
 | 
| +  const State& state = it->second.stack.top();
 | 
| +  if (state.enabled) {
 | 
| +    printf("ERRORBAR\t%d\t%s_%d\t%f\t%f\t%f\t%s\n", figure, name.c_str(),
 | 
| +           flow_id, value, ylow, yhigh, error_title.c_str());
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +void Logging::PlotLimitErrorBar(int figure,
 | 
| +                                const std::string& name,
 | 
| +                                double value,
 | 
| +                                double ylow,
 | 
| +                                double yhigh,
 | 
| +                                const std::string& error_title,
 | 
| +                                double ymax,
 | 
| +                                const std::string& limit_title,
 | 
| +                                int flow_id) {
 | 
| +  CriticalSectionScoped cs(crit_sect_.get());
 | 
| +  ThreadMap::iterator it = thread_map_.find(ThreadWrapper::GetThreadId());
 | 
| +  assert(it != thread_map_.end());
 | 
| +  const State& state = it->second.stack.top();
 | 
| +  if (state.enabled) {
 | 
| +    printf("LIMITERRORBAR\t%d\t%s_%d\t%f\t%f\t%f\t%s\t%f\t%s\n", figure,
 | 
| +           name.c_str(), flow_id, value, ylow, yhigh, error_title.c_str(), ymax,
 | 
| +           limit_title.c_str());
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +void Logging::PlotLabel(int figure,
 | 
| +                        const std::string& title,
 | 
| +                        const std::string& y_label,
 | 
| +                        int num_flows) {
 | 
| +  CriticalSectionScoped cs(crit_sect_.get());
 | 
| +  ThreadMap::iterator it = thread_map_.find(ThreadWrapper::GetThreadId());
 | 
| +  assert(it != thread_map_.end());
 | 
| +  const State& state = it->second.stack.top();
 | 
| +  if (state.enabled) {
 | 
| +    printf("LABEL\t%d\t%s\t%s\t%d\n", figure, title.c_str(), y_label.c_str(),
 | 
| +           num_flows);
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  Logging::Logging()
 | 
|      : crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
 | 
|        thread_map_() {
 | 
| 
 |