| Index: webrtc/common_types.h
 | 
| diff --git a/webrtc/common_types.h b/webrtc/common_types.h
 | 
| index 2999bc95bc82a353fd820e87506059c29d552d8c..c59bc6240277ba5b1d773f0e4cdc295c7242c696 100644
 | 
| --- a/webrtc/common_types.h
 | 
| +++ b/webrtc/common_types.h
 | 
| @@ -11,6 +11,7 @@
 | 
|  #ifndef WEBRTC_COMMON_TYPES_H_
 | 
|  #define WEBRTC_COMMON_TYPES_H_
 | 
|  
 | 
| +#include <assert.h>
 | 
|  #include <stddef.h>
 | 
|  #include <string.h>
 | 
|  
 | 
| @@ -791,6 +792,17 @@ struct RtpPacketCounter {
 | 
|      packets += other.packets;
 | 
|    }
 | 
|  
 | 
| +  void Subtract(const RtpPacketCounter& other) {
 | 
| +    assert(header_bytes >= other.header_bytes);
 | 
| +    header_bytes -= other.header_bytes;
 | 
| +    assert(payload_bytes >= other.payload_bytes);
 | 
| +    payload_bytes -= other.payload_bytes;
 | 
| +    assert(padding_bytes >= other.padding_bytes);
 | 
| +    padding_bytes -= other.padding_bytes;
 | 
| +    assert(packets >= other.packets);
 | 
| +    packets -= other.packets;
 | 
| +  }
 | 
| +
 | 
|    void AddPacket(size_t packet_length, const RTPHeader& header) {
 | 
|      ++packets;
 | 
|      header_bytes += header.headerLength;
 | 
| @@ -825,6 +837,18 @@ struct StreamDataCounters {
 | 
|      }
 | 
|    }
 | 
|  
 | 
| +  void Subtract(const StreamDataCounters& other) {
 | 
| +    transmitted.Subtract(other.transmitted);
 | 
| +    retransmitted.Subtract(other.retransmitted);
 | 
| +    fec.Subtract(other.fec);
 | 
| +    if (other.first_packet_time_ms != -1 &&
 | 
| +        (other.first_packet_time_ms > first_packet_time_ms ||
 | 
| +         first_packet_time_ms == -1)) {
 | 
| +      // Use youngest time.
 | 
| +      first_packet_time_ms = other.first_packet_time_ms;
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
|    int64_t TimeSinceFirstPacketInMs(int64_t now_ms) const {
 | 
|      return (first_packet_time_ms == -1) ? -1 : (now_ms - first_packet_time_ms);
 | 
|    }
 | 
| 
 |