Remove channel ids from various interfaces.

Starts by removing channel/engine id from ViEChannel which propagates
down to the RTP/RTCP module as well as the transport class.

IncomingVideoStream::RenderFrame() is untouched for now but receives a
fake id instead of the previous channel id. Added a TODO to remove it
later but the RenderFrame call is implemented in a lot of
platform-dependent files and should probably remove the "manager" aspect
of renderers, so preferring to do it separately

BUG=webrtc:1695
R=henrika@webrtc.org, mflodman@webrtc.org

Review URL: https://codereview.webrtc.org/1335353005 .

Cr-Commit-Position: refs/heads/master@{#9978}
diff --git a/talk/media/webrtc/webrtcvoiceengine.h b/talk/media/webrtc/webrtcvoiceengine.h
index aa7d7da..5bf1899 100644
--- a/talk/media/webrtc/webrtcvoiceengine.h
+++ b/talk/media/webrtc/webrtcvoiceengine.h
@@ -333,13 +333,13 @@
                          VoiceMediaChannel::Error* error) override;
 
   // implements Transport interface
-  int SendPacket(int channel, const void* data, size_t len) override {
+  int SendPacket(const void* data, size_t len) override {
     rtc::Buffer packet(reinterpret_cast<const uint8_t*>(data), len,
                        kMaxRtpPacketLen);
     return VoiceMediaChannel::SendPacket(&packet) ? static_cast<int>(len) : -1;
   }
 
-  int SendRTCPPacket(int channel, const void* data, size_t len) override {
+  int SendRTCPPacket(const void* data, size_t len) override {
     rtc::Buffer packet(reinterpret_cast<const uint8_t*>(data), len,
                        kMaxRtpPacketLen);
     return VoiceMediaChannel::SendRtcp(&packet) ? static_cast<int>(len) : -1;
diff --git a/webrtc/common_types.h b/webrtc/common_types.h
index 059bd10..7be74e6 100644
--- a/webrtc/common_types.h
+++ b/webrtc/common_types.h
@@ -166,15 +166,14 @@
 };
 
 // External transport callback interface
-class Transport
-{
-public:
-    virtual int SendPacket(int channel, const void *data, size_t len) = 0;
-    virtual int SendRTCPPacket(int channel, const void *data, size_t len) = 0;
+class Transport {
+ public:
+  virtual int SendPacket(const void* data, size_t len) = 0;
+  virtual int SendRTCPPacket(const void* data, size_t len) = 0;
 
-protected:
-    virtual ~Transport() {}
-    Transport() {}
+ protected:
+  virtual ~Transport() {}
+  Transport() {}
 };
 
 // Statistics for an RTCP channel
diff --git a/webrtc/modules/rtp_rtcp/interface/rtp_receiver.h b/webrtc/modules/rtp_rtcp/interface/rtp_receiver.h
index 6283566..2fb8ac5 100644
--- a/webrtc/modules/rtp_rtcp/interface/rtp_receiver.h
+++ b/webrtc/modules/rtp_rtcp/interface/rtp_receiver.h
@@ -37,14 +37,14 @@
  public:
   // Creates a video-enabled RTP receiver.
   static RtpReceiver* CreateVideoReceiver(
-      int id, Clock* clock,
+      Clock* clock,
       RtpData* incoming_payload_callback,
       RtpFeedback* incoming_messages_callback,
       RTPPayloadRegistry* rtp_payload_registry);
 
   // Creates an audio-enabled RTP receiver.
   static RtpReceiver* CreateAudioReceiver(
-      int id, Clock* clock,
+      Clock* clock,
       RtpAudioFeedback* incoming_audio_feedback,
       RtpData* incoming_payload_callback,
       RtpFeedback* incoming_messages_callback,
diff --git a/webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h b/webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h
index 15e0ffc..4dfb1dd 100644
--- a/webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h
+++ b/webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h
@@ -57,7 +57,6 @@
     *  paced_sender             - Spread any bursts of packets into smaller
     *                             bursts to minimize packet loss.
     */
-    int32_t id;
     bool audio;
     bool receiver_only;
     Clock* clock;
diff --git a/webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h b/webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h
index 8f3500e..73fb96c 100644
--- a/webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h
+++ b/webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h
@@ -242,28 +242,24 @@
     *   channels    - number of channels in codec (1 = mono, 2 = stereo)
     */
     virtual int32_t OnInitializeDecoder(
-        const int32_t id,
         const int8_t payloadType,
         const char payloadName[RTP_PAYLOAD_NAME_SIZE],
         const int frequency,
         const uint8_t channels,
         const uint32_t rate) = 0;
 
-    virtual void OnIncomingSSRCChanged( const int32_t id,
-                                        const uint32_t ssrc) = 0;
+    virtual void OnIncomingSSRCChanged(const uint32_t ssrc) = 0;
 
-    virtual void OnIncomingCSRCChanged( const int32_t id,
-                                        const uint32_t CSRC,
-                                        const bool added) = 0;
+    virtual void OnIncomingCSRCChanged(const uint32_t CSRC,
+                                       const bool added) = 0;
 };
 
 class RtpAudioFeedback {
  public:
-
-  virtual void OnPlayTelephoneEvent(const int32_t id,
-                                    const uint8_t event,
+  virtual void OnPlayTelephoneEvent(const uint8_t event,
                                     const uint16_t lengthMs,
                                     const uint8_t volume) = 0;
+
  protected:
   virtual ~RtpAudioFeedback() {}
 };
@@ -348,8 +344,7 @@
  public:
   virtual ~NullRtpFeedback() {}
 
-  int32_t OnInitializeDecoder(const int32_t id,
-                              const int8_t payloadType,
+  int32_t OnInitializeDecoder(const int8_t payloadType,
                               const char payloadName[RTP_PAYLOAD_NAME_SIZE],
                               const int frequency,
                               const uint8_t channels,
@@ -357,11 +352,8 @@
     return 0;
   }
 
-  void OnIncomingSSRCChanged(const int32_t id, const uint32_t ssrc) override {}
-
-  void OnIncomingCSRCChanged(const int32_t id,
-                             const uint32_t CSRC,
-                             const bool added) override {}
+  void OnIncomingSSRCChanged(const uint32_t ssrc) override {}
+  void OnIncomingCSRCChanged(const uint32_t CSRC, const bool added) override {}
 };
 
 // Null object version of RtpData.
@@ -385,8 +377,7 @@
  public:
   virtual ~NullRtpAudioFeedback() {}
 
-  void OnPlayTelephoneEvent(const int32_t id,
-                            const uint8_t event,
+  void OnPlayTelephoneEvent(const uint8_t event,
                             const uint16_t lengthMs,
                             const uint8_t volume) override {}
 };
diff --git a/webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc b/webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc
index 9edf3ed..d32d09f 100644
--- a/webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc
@@ -26,7 +26,6 @@
 using namespace webrtc;
 
 const int kVideoNackListSize = 30;
-const int kTestId = 123;
 const uint32_t kTestSsrc = 3456;
 const uint16_t kTestSequenceNumber = 2345;
 const uint32_t kTestNumberOfPackets = 1350;
@@ -57,7 +56,7 @@
   TestRtpFeedback(RtpRtcp* rtp_rtcp) : rtp_rtcp_(rtp_rtcp) {}
   virtual ~TestRtpFeedback() {}
 
-  void OnIncomingSSRCChanged(const int32_t id, const uint32_t ssrc) override {
+  void OnIncomingSSRCChanged(const uint32_t ssrc) override {
     rtp_rtcp_->SetRemoteSSRC(ssrc);
   }
 
@@ -96,7 +95,7 @@
     packet_loss_ = 0;
   }
 
-  int SendPacket(int channel, const void* data, size_t len) override {
+  int SendPacket(const void* data, size_t len) override {
     count_++;
     const unsigned char* ptr = static_cast<const unsigned  char*>(data);
     uint32_t ssrc = (ptr[8] << 24) + (ptr[9] << 16) + (ptr[10] << 8) + ptr[11];
@@ -155,7 +154,7 @@
     return static_cast<int>(len);
   }
 
-  int SendRTCPPacket(int channel, const void* data, size_t len) override {
+  int SendRTCPPacket(const void* data, size_t len) override {
     if (module_->IncomingRtcpPacket((const uint8_t*)data, len) == 0) {
       return static_cast<int>(len);
     }
@@ -186,7 +185,6 @@
 
   void SetUp() override {
     RtpRtcp::Configuration configuration;
-    configuration.id = kTestId;
     configuration.audio = false;
     configuration.clock = &fake_clock;
     receive_statistics_.reset(ReceiveStatistics::Create(&fake_clock));
@@ -197,7 +195,7 @@
     rtp_feedback_.reset(new TestRtpFeedback(rtp_rtcp_module_));
 
     rtp_receiver_.reset(RtpReceiver::CreateVideoReceiver(
-        kTestId, &fake_clock, &receiver_, rtp_feedback_.get(),
+        &fake_clock, &receiver_, rtp_feedback_.get(),
         &rtp_payload_registry_));
 
     rtp_rtcp_module_->SetSSRC(kTestSsrc);
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_format_remb_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_format_remb_unittest.cc
index 394fa68..a03af24 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_format_remb_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_format_remb_unittest.cc
@@ -31,14 +31,8 @@
     rtcp_receiver_(rtcp_receiver) {
   }
 
-  int SendPacket(int /*channel*/,
-                 const void* /*data*/,
-                 size_t /*len*/) override {
-    return -1;
-  }
-  int SendRTCPPacket(int /*channel*/,
-                     const void* packet,
-                     size_t packetLength) override {
+  int SendPacket(const void* /*data*/, size_t /*len*/) override { return -1; }
+  int SendRTCPPacket(const void* packet, size_t packetLength) override {
     RTCPUtility::RTCPParserV2 rtcpParser((uint8_t*)packet,
                                          packetLength,
                                          true); // Allow non-compound RTCP
@@ -88,14 +82,13 @@
 
 void RtcpFormatRembTest::SetUp() {
   RtpRtcp::Configuration configuration;
-  configuration.id = 0;
   configuration.audio = false;
   configuration.clock = system_clock_;
   configuration.remote_bitrate_estimator = remote_bitrate_estimator_.get();
   dummy_rtp_rtcp_impl_ = new ModuleRtpRtcpImpl(configuration);
-  rtcp_sender_ = new RTCPSender(0, false, system_clock_,
-                                receive_statistics_.get(), NULL);
-  rtcp_receiver_ = new RTCPReceiver(0, system_clock_, false, NULL, NULL, NULL,
+  rtcp_sender_ =
+      new RTCPSender(false, system_clock_, receive_statistics_.get(), NULL);
+  rtcp_receiver_ = new RTCPReceiver(system_clock_, false, NULL, NULL, NULL,
                                     dummy_rtp_rtcp_impl_);
   test_transport_ = new TestTransport(rtcp_receiver_);
 
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc b/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc
index f9dc96e..4392f52 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc
@@ -30,7 +30,6 @@
 const int kRrTimeoutIntervals = 3;
 
 RTCPReceiver::RTCPReceiver(
-    int32_t id,
     Clock* clock,
     bool receiver_only,
     RtcpPacketTypeCounterObserver* packet_type_counter_observer,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_receiver.h b/webrtc/modules/rtp_rtcp/source/rtcp_receiver.h
index 6ae47a6..9392e51 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver.h
@@ -29,8 +29,7 @@
 class RTCPReceiver : public TMMBRHelp
 {
 public:
- RTCPReceiver(int32_t id,
-              Clock* clock,
+ RTCPReceiver(Clock* clock,
               bool receiver_only,
               RtcpPacketTypeCounterObserver* packet_type_counter_observer,
               RtcpBandwidthObserver* rtcp_bandwidth_observer,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
index ce66613..6ef2a14 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
@@ -39,15 +39,12 @@
   void SetRTCPReceiver(RTCPReceiver* rtcp_receiver) {
     rtcp_receiver_ = rtcp_receiver;
   }
-  int SendPacket(int /*ch*/, const void* /*data*/, size_t /*len*/) override {
+  int SendPacket(const void* /*data*/, size_t /*len*/) override {
     ADD_FAILURE();  // FAIL() gives a compile error.
     return -1;
   }
 
-  // Injects an RTCP packet into the receiver.
-  int SendRTCPPacket(int /* ch */,
-                     const void* packet,
-                     size_t packet_len) override {
+  int SendRTCPPacket(const void* packet, size_t packet_len) override {
     ADD_FAILURE();
     return 0;
   }
@@ -76,14 +73,13 @@
     test_transport_ = new TestTransport();
 
     RtpRtcp::Configuration configuration;
-    configuration.id = 0;
     configuration.audio = false;
     configuration.clock = &system_clock_;
     configuration.outgoing_transport = test_transport_;
     configuration.remote_bitrate_estimator = remote_bitrate_estimator_.get();
     rtp_rtcp_impl_ = new ModuleRtpRtcpImpl(configuration);
-    rtcp_receiver_ = new RTCPReceiver(0, &system_clock_, false, NULL, NULL,
-                                      NULL, rtp_rtcp_impl_);
+    rtcp_receiver_ = new RTCPReceiver(&system_clock_, false, NULL, NULL, NULL,
+                                      rtp_rtcp_impl_);
     test_transport_->SetRTCPReceiver(rtcp_receiver_);
   }
   ~RtcpReceiverTest() {
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc
index ea7931f..8b7bbb3 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc
@@ -132,13 +132,11 @@
 };
 
 RTCPSender::RTCPSender(
-    int32_t id,
     bool audio,
     Clock* clock,
     ReceiveStatistics* receive_statistics,
     RtcpPacketTypeCounterObserver* packet_type_counter_observer)
-    : id_(id),
-      audio_(audio),
+    : audio_(audio),
       clock_(clock),
       method_(kRtcpOff),
       critical_section_transport_(
@@ -1119,7 +1117,7 @@
 int32_t RTCPSender::SendToNetwork(const uint8_t* dataBuffer, size_t length) {
   CriticalSectionScoped lock(critical_section_transport_.get());
   if (cbTransport_) {
-    if (cbTransport_->SendRTCPPacket(id_, dataBuffer, length) > 0)
+    if (cbTransport_->SendRTCPPacket(dataBuffer, length) > 0)
       return 0;
   }
   return -1;
@@ -1218,18 +1216,17 @@
 
   class Sender : public rtcp::RtcpPacket::PacketReadyCallback {
    public:
-    Sender(Transport* transport, int32_t id)
-        : transport_(transport), id_(id), send_failure_(false) {}
+    Sender(Transport* transport)
+        : transport_(transport), send_failure_(false) {}
 
     void OnPacketReady(uint8_t* data, size_t length) override {
-      if (transport_->SendRTCPPacket(id_, data, length) <= 0)
+      if (transport_->SendRTCPPacket(data, length) <= 0)
         send_failure_ = true;
     }
 
     Transport* const transport_;
-    int32_t id_;
     bool send_failure_;
-  } sender(cbTransport_, id_);
+  } sender(cbTransport_);
 
   uint8_t buffer[IP_PACKET_SIZE];
   return packet.BuildExternalBuffer(buffer, IP_PACKET_SIZE, &sender) &&
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_sender.h b/webrtc/modules/rtp_rtcp/source/rtcp_sender.h
index 083ce78..e0195f1 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_sender.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_sender.h
@@ -73,8 +73,7 @@
    ModuleRtpRtcpImpl* module;
  };
 
- RTCPSender(int32_t id,
-            bool audio,
+ RTCPSender(bool audio,
             Clock* clock,
             ReceiveStatistics* receive_statistics,
             RtcpPacketTypeCounterObserver* packet_type_counter_observer);
@@ -227,7 +226,6 @@
      EXCLUSIVE_LOCKS_REQUIRED(critical_section_rtcp_sender_);
 
 private:
- const int32_t id_;
  const bool audio_;
  Clock* const clock_;
  RTCPMethod method_ GUARDED_BY(critical_section_rtcp_sender_);
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc
index d9b975a..9a6bf11 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc
@@ -199,10 +199,10 @@
  public:
   TestTransport() {}
 
-  int SendPacket(int /*ch*/, const void* /*data*/, size_t /*len*/) override {
+  int SendPacket(const void* /*data*/, size_t /*len*/) override {
     return -1;
   }
-  int SendRTCPPacket(int /*ch*/, const void* data, size_t len) override {
+  int SendRTCPPacket(const void* data, size_t len) override {
     parser_.Parse(static_cast<const uint8_t*>(data), len);
     return static_cast<int>(len);
   }
@@ -225,14 +225,13 @@
       : clock_(1335900000),
         receive_statistics_(ReceiveStatistics::Create(&clock_)) {
     RtpRtcp::Configuration configuration;
-    configuration.id = 0;
     configuration.audio = false;
     configuration.clock = &clock_;
     configuration.outgoing_transport = &test_transport_;
 
     rtp_rtcp_impl_.reset(new ModuleRtpRtcpImpl(configuration));
-    rtcp_sender_.reset(new RTCPSender(configuration.id, false, &clock_,
-                                      receive_statistics_.get(), nullptr));
+    rtcp_sender_.reset(
+        new RTCPSender(false, &clock_, receive_statistics_.get(), nullptr));
     rtcp_sender_->SetSSRC(kSenderSsrc);
     rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
     EXPECT_EQ(0, rtcp_sender_->RegisterSendTransport(&test_transport_));
@@ -669,7 +668,7 @@
 TEST_F(RtcpSenderTest, TestRegisterRtcpPacketTypeObserver) {
   RtcpPacketTypeCounterObserverImpl observer;
   rtcp_sender_.reset(
-      new RTCPSender(0, false, &clock_, receive_statistics_.get(), &observer));
+      new RTCPSender(false, &clock_, receive_statistics_.get(), &observer));
   rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
   EXPECT_EQ(0, rtcp_sender_->RegisterSendTransport(&test_transport_));
   rtcp_sender_->SetRTCPStatus(kRtcpNonCompound);
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc b/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc
index c9a1adf..d7bf405 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc
@@ -20,17 +20,15 @@
 
 namespace webrtc {
 RTPReceiverStrategy* RTPReceiverStrategy::CreateAudioStrategy(
-    int32_t id, RtpData* data_callback,
+    RtpData* data_callback,
     RtpAudioFeedback* incoming_messages_callback) {
-  return new RTPReceiverAudio(id, data_callback, incoming_messages_callback);
+  return new RTPReceiverAudio(data_callback, incoming_messages_callback);
 }
 
-RTPReceiverAudio::RTPReceiverAudio(const int32_t id,
-                                   RtpData* data_callback,
+RTPReceiverAudio::RTPReceiverAudio(RtpData* data_callback,
                                    RtpAudioFeedback* incoming_messages_callback)
     : RTPReceiverStrategy(data_callback),
       TelephoneEventHandler(),
-      id_(id),
       last_received_frequency_(8000),
       telephone_event_forward_to_decoder_(false),
       telephone_event_payload_type_(-1),
@@ -263,16 +261,13 @@
 
 int32_t RTPReceiverAudio::InvokeOnInitializeDecoder(
     RtpFeedback* callback,
-    int32_t id,
     int8_t payload_type,
     const char payload_name[RTP_PAYLOAD_NAME_SIZE],
     const PayloadUnion& specific_payload) const {
-  if (-1 == callback->OnInitializeDecoder(id,
-                                          payload_type,
-                                          payload_name,
-                                          specific_payload.Audio.frequency,
-                                          specific_payload.Audio.channels,
-                                          specific_payload.Audio.rate)) {
+  if (-1 ==
+      callback->OnInitializeDecoder(
+          payload_type, payload_name, specific_payload.Audio.frequency,
+          specific_payload.Audio.channels, specific_payload.Audio.rate)) {
     LOG(LS_ERROR) << "Failed to create decoder for payload type: "
                   << payload_name << "/" << static_cast<int>(payload_type);
     return -1;
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h b/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h
index a7efcbb..176852e 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h
@@ -28,8 +28,7 @@
 class RTPReceiverAudio : public RTPReceiverStrategy,
                          public TelephoneEventHandler {
  public:
-  RTPReceiverAudio(const int32_t id,
-                   RtpData* data_callback,
+  RTPReceiverAudio(RtpData* data_callback,
                    RtpAudioFeedback* incoming_messages_callback);
   virtual ~RTPReceiverAudio() {}
 
@@ -74,7 +73,6 @@
 
   int32_t InvokeOnInitializeDecoder(
       RtpFeedback* callback,
-      int32_t id,
       int8_t payload_type,
       const char payload_name[RTP_PAYLOAD_NAME_SIZE],
       const PayloadUnion& specific_payload) const override;
@@ -106,8 +104,6 @@
       const AudioPayload& audio_specific,
       bool is_red);
 
-  int32_t id_;
-
   uint32_t last_received_frequency_;
 
   bool telephone_event_forward_to_decoder_;
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.cc b/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.cc
index 6be0c5a..40612a6 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.cc
@@ -27,7 +27,7 @@
 using RtpUtility::StringCompare;
 
 RtpReceiver* RtpReceiver::CreateVideoReceiver(
-    int id, Clock* clock,
+    Clock* clock,
     RtpData* incoming_payload_callback,
     RtpFeedback* incoming_messages_callback,
     RTPPayloadRegistry* rtp_payload_registry) {
@@ -36,13 +36,13 @@
   if (!incoming_messages_callback)
     incoming_messages_callback = NullObjectRtpFeedback();
   return new RtpReceiverImpl(
-      id, clock, NullObjectRtpAudioFeedback(), incoming_messages_callback,
+      clock, NullObjectRtpAudioFeedback(), incoming_messages_callback,
       rtp_payload_registry,
       RTPReceiverStrategy::CreateVideoStrategy(incoming_payload_callback));
 }
 
 RtpReceiver* RtpReceiver::CreateAudioReceiver(
-    int id, Clock* clock,
+    Clock* clock,
     RtpAudioFeedback* incoming_audio_feedback,
     RtpData* incoming_payload_callback,
     RtpFeedback* incoming_messages_callback,
@@ -54,25 +54,24 @@
   if (!incoming_messages_callback)
     incoming_messages_callback = NullObjectRtpFeedback();
   return new RtpReceiverImpl(
-      id, clock, incoming_audio_feedback, incoming_messages_callback,
+      clock, incoming_audio_feedback, incoming_messages_callback,
       rtp_payload_registry,
-      RTPReceiverStrategy::CreateAudioStrategy(id, incoming_payload_callback,
+      RTPReceiverStrategy::CreateAudioStrategy(incoming_payload_callback,
                                                incoming_audio_feedback));
 }
 
-RtpReceiverImpl::RtpReceiverImpl(int32_t id,
-                         Clock* clock,
-                         RtpAudioFeedback* incoming_audio_messages_callback,
-                         RtpFeedback* incoming_messages_callback,
-                         RTPPayloadRegistry* rtp_payload_registry,
-                         RTPReceiverStrategy* rtp_media_receiver)
+RtpReceiverImpl::RtpReceiverImpl(
+    Clock* clock,
+    RtpAudioFeedback* incoming_audio_messages_callback,
+    RtpFeedback* incoming_messages_callback,
+    RTPPayloadRegistry* rtp_payload_registry,
+    RTPReceiverStrategy* rtp_media_receiver)
     : clock_(clock),
       rtp_payload_registry_(rtp_payload_registry),
       rtp_media_receiver_(rtp_media_receiver),
-      id_(id),
       cb_rtp_feedback_(incoming_messages_callback),
       critical_section_rtp_receiver_(
-        CriticalSectionWrapper::CreateCriticalSection()),
+          CriticalSectionWrapper::CreateCriticalSection()),
       last_receive_time_(0),
       last_received_payload_length_(0),
       ssrc_(0),
@@ -90,8 +89,7 @@
 
 RtpReceiverImpl::~RtpReceiverImpl() {
   for (int i = 0; i < num_csrcs_; ++i) {
-    cb_rtp_feedback_->OnIncomingCSRCChanged(id_, current_remote_csrc_[i],
-                                            false);
+    cb_rtp_feedback_->OnIncomingCSRCChanged(current_remote_csrc_[i], false);
   }
 }
 
@@ -299,13 +297,14 @@
   if (new_ssrc) {
     // We need to get this to our RTCP sender and receiver.
     // We need to do this outside critical section.
-    cb_rtp_feedback_->OnIncomingSSRCChanged(id_, rtp_header.ssrc);
+    cb_rtp_feedback_->OnIncomingSSRCChanged(rtp_header.ssrc);
   }
 
   if (re_initialize_decoder) {
-    if (-1 == cb_rtp_feedback_->OnInitializeDecoder(
-        id_, rtp_header.payloadType, payload_name,
-        rtp_header.payload_type_frequency, channels, rate)) {
+    if (-1 ==
+        cb_rtp_feedback_->OnInitializeDecoder(
+            rtp_header.payloadType, payload_name,
+            rtp_header.payload_type_frequency, channels, rate)) {
       // New stream, same codec.
       LOG(LS_ERROR) << "Failed to create decoder for payload type: "
                     << static_cast<int>(rtp_header.payloadType);
@@ -397,9 +396,9 @@
   }  // End critsect.
 
   if (re_initialize_decoder) {
-    if (-1 == rtp_media_receiver_->InvokeOnInitializeDecoder(
-        cb_rtp_feedback_, id_, payload_type, payload_name,
-        *specific_payload)) {
+    if (-1 ==
+        rtp_media_receiver_->InvokeOnInitializeDecoder(
+            cb_rtp_feedback_, payload_type, payload_name, *specific_payload)) {
       return -1;  // Wrong payload type.
     }
   }
@@ -456,7 +455,7 @@
     if (!found_match && csrc) {
       // Didn't find it, report it as new.
       have_called_callback = true;
-      cb_rtp_feedback_->OnIncomingCSRCChanged(id_, csrc, true);
+      cb_rtp_feedback_->OnIncomingCSRCChanged(csrc, true);
     }
   }
   // Search for old CSRC in new array.
@@ -473,7 +472,7 @@
     if (!found_match && csrc) {
       // Did not find it, report as removed.
       have_called_callback = true;
-      cb_rtp_feedback_->OnIncomingCSRCChanged(id_, csrc, false);
+      cb_rtp_feedback_->OnIncomingCSRCChanged(csrc, false);
     }
   }
   if (!have_called_callback) {
@@ -481,9 +480,9 @@
     // Using CSRC 0 to signal this event, not interop safe, other
     // implementations might have CSRC 0 as a valid value.
     if (num_csrcs_diff > 0) {
-      cb_rtp_feedback_->OnIncomingCSRCChanged(id_, 0, true);
+      cb_rtp_feedback_->OnIncomingCSRCChanged(0, true);
     } else if (num_csrcs_diff < 0) {
-      cb_rtp_feedback_->OnIncomingCSRCChanged(id_, 0, false);
+      cb_rtp_feedback_->OnIncomingCSRCChanged(0, false);
     }
   }
 }
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.h b/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.h
index c904e1f..d6fbf2e 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.h
@@ -25,8 +25,7 @@
   // Callbacks passed in here may not be NULL (use Null Object callbacks if you
   // want callbacks to do nothing). This class takes ownership of the media
   // receiver but nothing else.
-  RtpReceiverImpl(int32_t id,
-                  Clock* clock,
+  RtpReceiverImpl(Clock* clock,
                   RtpAudioFeedback* incoming_audio_messages_callback,
                   RtpFeedback* incoming_messages_callback,
                   RTPPayloadRegistry* rtp_payload_registry,
@@ -79,8 +78,6 @@
   RTPPayloadRegistry* rtp_payload_registry_;
   rtc::scoped_ptr<RTPReceiverStrategy> rtp_media_receiver_;
 
-  int32_t id_;
-
   RtpFeedback* cb_rtp_feedback_;
 
   rtc::scoped_ptr<CriticalSectionWrapper> critical_section_rtp_receiver_;
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_strategy.h b/webrtc/modules/rtp_rtcp/source/rtp_receiver_strategy.h
index 9c09f8e..a9e85ec 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_strategy.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_strategy.h
@@ -28,7 +28,7 @@
  public:
   static RTPReceiverStrategy* CreateVideoStrategy(RtpData* data_callback);
   static RTPReceiverStrategy* CreateAudioStrategy(
-      int32_t id, RtpData* data_callback,
+      RtpData* data_callback,
       RtpAudioFeedback* incoming_messages_callback);
 
   virtual ~RTPReceiverStrategy() {}
@@ -70,7 +70,6 @@
   // Invokes the OnInitializeDecoder callback in a media-specific way.
   virtual int32_t InvokeOnInitializeDecoder(
       RtpFeedback* callback,
-      int32_t id,
       int8_t payload_type,
       const char payload_name[RTP_PAYLOAD_NAME_SIZE],
       const PayloadUnion& specific_payload) const = 0;
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.cc b/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.cc
index 7537d8e..a8db0d2 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.cc
@@ -111,14 +111,13 @@
 
 int32_t RTPReceiverVideo::InvokeOnInitializeDecoder(
     RtpFeedback* callback,
-    int32_t id,
     int8_t payload_type,
     const char payload_name[RTP_PAYLOAD_NAME_SIZE],
     const PayloadUnion& specific_payload) const {
   // For video we just go with default values.
   if (-1 ==
-      callback->OnInitializeDecoder(
-          id, payload_type, payload_name, kVideoPayloadTypeFrequency, 1, 0)) {
+      callback->OnInitializeDecoder(payload_type, payload_name,
+                                    kVideoPayloadTypeFrequency, 1, 0)) {
     LOG(LS_ERROR) << "Failed to created decoder for payload type: "
                   << static_cast<int>(payload_type);
     return -1;
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.h b/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.h
index 8528a7d..23128df 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_video.h
@@ -49,7 +49,6 @@
 
   int32_t InvokeOnInitializeDecoder(
       RtpFeedback* callback,
-      int32_t id,
       int8_t payload_type,
       const char payload_name[RTP_PAYLOAD_NAME_SIZE],
       const PayloadUnion& specific_payload) const override;
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
index 451360a..b245e81 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
@@ -27,8 +27,7 @@
 namespace webrtc {
 
 RtpRtcp::Configuration::Configuration()
-    : id(-1),
-      audio(false),
+    : audio(false),
       receiver_only(false),
       clock(nullptr),
       receive_statistics(NullObjectReceiveStatistics()),
@@ -60,8 +59,7 @@
 }
 
 ModuleRtpRtcpImpl::ModuleRtpRtcpImpl(const Configuration& configuration)
-    : rtp_sender_(configuration.id,
-                  configuration.audio,
+    : rtp_sender_(configuration.audio,
                   configuration.clock,
                   configuration.outgoing_transport,
                   configuration.audio_messages,
@@ -71,20 +69,17 @@
                   configuration.send_bitrate_observer,
                   configuration.send_frame_count_observer,
                   configuration.send_side_delay_observer),
-      rtcp_sender_(configuration.id,
-                   configuration.audio,
+      rtcp_sender_(configuration.audio,
                    configuration.clock,
                    configuration.receive_statistics,
                    configuration.rtcp_packet_type_counter_observer),
-      rtcp_receiver_(configuration.id,
-                     configuration.clock,
+      rtcp_receiver_(configuration.clock,
                      configuration.receiver_only,
                      configuration.rtcp_packet_type_counter_observer,
                      configuration.bandwidth_callback,
                      configuration.intra_frame_callback,
                      this),
       clock_(configuration.clock),
-      id_(configuration.id),
       audio_(configuration.audio),
       collision_detected_(false),
       last_process_time_(configuration.clock->TimeInMilliseconds()),
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h
index fe69437..11403a0 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h
@@ -353,7 +353,6 @@
 
   bool TimeToSendFullNackList(int64_t now) const;
 
-  int32_t id_;
   const bool audio_;
   bool collision_detected_;
   int64_t last_process_time_;
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
index 12630f7..881985d 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
@@ -62,7 +62,7 @@
     clock_ = clock;
     delay_ms_ = delay_ms;
   }
-  int SendPacket(int /*ch*/, const void* data, size_t len) override {
+  int SendPacket(const void* data, size_t len) override {
     RTPHeader header;
     rtc::scoped_ptr<RtpHeaderParser> parser(RtpHeaderParser::Create());
     EXPECT_TRUE(parser->Parse(static_cast<const uint8_t*>(data), len, &header));
@@ -70,7 +70,7 @@
     last_rtp_header_ = header;
     return static_cast<int>(len);
   }
-  int SendRTCPPacket(int /*ch*/, const void* data, size_t len) override {
+  int SendRTCPPacket(const void* data, size_t len) override {
     test::RtcpPacketParser parser;
     parser.Parse(static_cast<const uint8_t*>(data), len);
     last_nack_list_ = parser.nack_item()->last_nack_list();
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
index 8e1f77a..f683f14 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
@@ -97,8 +97,7 @@
   uint32_t ssrc_;
 };
 
-RTPSender::RTPSender(int32_t id,
-                     bool audio,
+RTPSender::RTPSender(bool audio,
                      Clock* clock,
                      Transport* transport,
                      RtpAudioFeedback* audio_feedback,
@@ -115,10 +114,8 @@
                       TickTime::MillisecondTimestamp()),
       bitrates_(new BitrateAggregator(bitrate_callback)),
       total_bitrate_sent_(clock, bitrates_->total_bitrate_observer()),
-      id_(id),
       audio_configured_(audio),
-      audio_(audio ? new RTPSenderAudio(id, clock, this, audio_feedback)
-                   : nullptr),
+      audio_(audio ? new RTPSenderAudio(clock, this, audio_feedback) : nullptr),
       video_(audio ? nullptr : new RTPSenderVideo(clock, this)),
       paced_sender_(paced_sender),
       packet_router_(packet_router),
@@ -740,7 +737,7 @@
 bool RTPSender::SendPacketToNetwork(const uint8_t *packet, size_t size) {
   int bytes_sent = -1;
   if (transport_) {
-    bytes_sent = transport_->SendPacket(id_, packet, size);
+    bytes_sent = transport_->SendPacket(packet, size);
   }
   TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
                        "RTPSender::SendPacketToNetwork", "size", size, "sent",
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.h b/webrtc/modules/rtp_rtcp/source/rtp_sender.h
index 6d11e80..f10cb75 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.h
@@ -86,8 +86,7 @@
 
 class RTPSender : public RTPSenderInterface {
  public:
-  RTPSender(int32_t id,
-            bool audio,
+  RTPSender(bool audio,
             Clock* clock,
             Transport* transport,
             RtpAudioFeedback* audio_feedback,
@@ -388,8 +387,6 @@
   rtc::scoped_ptr<BitrateAggregator> bitrates_;
   Bitrate total_bitrate_sent_;
 
-  int32_t id_;
-
   const bool audio_configured_;
   rtc::scoped_ptr<RTPSenderAudio> audio_;
   rtc::scoped_ptr<RTPSenderVideo> video_;
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender_audio.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender_audio.cc
index de728f0..2f3faf5 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender_audio.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender_audio.cc
@@ -20,34 +20,31 @@
 
 static const int kDtmfFrequencyHz = 8000;
 
-RTPSenderAudio::RTPSenderAudio(const int32_t id,
-                               Clock* clock,
+RTPSenderAudio::RTPSenderAudio(Clock* clock,
                                RTPSender* rtpSender,
-                               RtpAudioFeedback* audio_feedback) :
-    _id(id),
-    _clock(clock),
-    _rtpSender(rtpSender),
-    _audioFeedback(audio_feedback),
-    _sendAudioCritsect(CriticalSectionWrapper::CreateCriticalSection()),
-    _packetSizeSamples(160),
-    _dtmfEventIsOn(false),
-    _dtmfEventFirstPacketSent(false),
-    _dtmfPayloadType(-1),
-    _dtmfTimestamp(0),
-    _dtmfKey(0),
-    _dtmfLengthSamples(0),
-    _dtmfLevel(0),
-    _dtmfTimeLastSent(0),
-    _dtmfTimestampLastSent(0),
-    _REDPayloadType(-1),
-    _inbandVADactive(false),
-    _cngNBPayloadType(-1),
-    _cngWBPayloadType(-1),
-    _cngSWBPayloadType(-1),
-    _cngFBPayloadType(-1),
-    _lastPayloadType(-1),
-    _audioLevel_dBov(0) {
-}
+                               RtpAudioFeedback* audio_feedback)
+    : _clock(clock),
+      _rtpSender(rtpSender),
+      _audioFeedback(audio_feedback),
+      _sendAudioCritsect(CriticalSectionWrapper::CreateCriticalSection()),
+      _packetSizeSamples(160),
+      _dtmfEventIsOn(false),
+      _dtmfEventFirstPacketSent(false),
+      _dtmfPayloadType(-1),
+      _dtmfTimestamp(0),
+      _dtmfKey(0),
+      _dtmfLengthSamples(0),
+      _dtmfLevel(0),
+      _dtmfTimeLastSent(0),
+      _dtmfTimestampLastSent(0),
+      _REDPayloadType(-1),
+      _inbandVADactive(false),
+      _cngNBPayloadType(-1),
+      _cngWBPayloadType(-1),
+      _cngSWBPayloadType(-1),
+      _cngFBPayloadType(-1),
+      _lastPayloadType(-1),
+      _audioLevel_dBov(0) {}
 
 RTPSenderAudio::~RTPSenderAudio() {
 }
@@ -204,7 +201,7 @@
   }
   if (dtmfToneStarted) {
     if (_audioFeedback)
-      _audioFeedback->OnPlayTelephoneEvent(_id, key, dtmfLengthMS, _dtmfLevel);
+      _audioFeedback->OnPlayTelephoneEvent(key, dtmfLengthMS, _dtmfLevel);
   }
 
   // A source MAY send events and coded audio packets for the same time
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender_audio.h b/webrtc/modules/rtp_rtcp/source/rtp_sender_audio.h
index 762668a..dd16fe5 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender_audio.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender_audio.h
@@ -22,10 +22,9 @@
 class RTPSenderAudio: public DTMFqueue
 {
 public:
-    RTPSenderAudio(const int32_t id,
-                   Clock* clock,
-                   RTPSender* rtpSender,
-                   RtpAudioFeedback* audio_feedback);
+ RTPSenderAudio(Clock* clock,
+                RTPSender* rtpSender,
+                RtpAudioFeedback* audio_feedback);
     virtual ~RTPSenderAudio();
 
     int32_t RegisterAudioPayload(const char payloadName[RTP_PAYLOAD_NAME_SIZE],
@@ -73,7 +72,6 @@
                    const int8_t payloadType);
 
 private:
- const int32_t _id;
  Clock* const _clock;
  RTPSender* const _rtpSender;
  RtpAudioFeedback* const _audioFeedback;
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index 409be1a6..9086ea1 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -78,7 +78,7 @@
   ~LoopbackTransportTest() {
     STLDeleteContainerPointers(sent_packets_.begin(), sent_packets_.end());
   }
-  int SendPacket(int channel, const void *data, size_t len) override {
+  int SendPacket(const void *data, size_t len) override {
     packets_sent_++;
     rtc::Buffer* buffer =
         new rtc::Buffer(reinterpret_cast<const uint8_t*>(data), len);
@@ -88,7 +88,7 @@
     sent_packets_.push_back(buffer);
     return static_cast<int>(len);
   }
-  int SendRTCPPacket(int channel, const void* data, size_t len) override {
+  int SendRTCPPacket(const void* data, size_t len) override {
     return -1;
   }
   int packets_sent_;
@@ -114,9 +114,9 @@
   }
 
   void SetUp() override {
-    rtp_sender_.reset(new RTPSender(0, false, &fake_clock_, &transport_,
-                                    nullptr, &mock_paced_sender_, nullptr,
-                                    nullptr, nullptr, nullptr, nullptr));
+    rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr,
+                                    &mock_paced_sender_, nullptr, nullptr,
+                                    nullptr, nullptr, nullptr));
     rtp_sender_->SetSequenceNumber(kSeqNum);
   }
 
@@ -826,7 +826,7 @@
 
 TEST_F(RtpSenderTest, SendRedundantPayloads) {
   MockTransport transport;
-  rtp_sender_.reset(new RTPSender(0, false, &fake_clock_, &transport, nullptr,
+  rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport, nullptr,
                                   &mock_paced_sender_, nullptr, nullptr,
                                   nullptr, nullptr, nullptr));
   rtp_sender_->SetSequenceNumber(kSeqNum);
@@ -862,28 +862,26 @@
   // Send 10 packets of increasing size.
   for (size_t i = 0; i < kNumPayloadSizes; ++i) {
     int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
-    EXPECT_CALL(transport, SendPacket(_, _, _))
-        .WillOnce(testing::ReturnArg<2>());
+    EXPECT_CALL(transport, SendPacket(_, _)).WillOnce(testing::ReturnArg<1>());
     SendPacket(capture_time_ms, kPayloadSizes[i]);
     rtp_sender_->TimeToSendPacket(seq_num++, capture_time_ms, false);
     fake_clock_.AdvanceTimeMilliseconds(33);
   }
   // The amount of padding to send it too small to send a payload packet.
-  EXPECT_CALL(transport,
-              SendPacket(_, _, kMaxPaddingSize + rtp_header_len))
-      .WillOnce(testing::ReturnArg<2>());
+  EXPECT_CALL(transport, SendPacket(_, kMaxPaddingSize + rtp_header_len))
+      .WillOnce(testing::ReturnArg<1>());
   EXPECT_EQ(kMaxPaddingSize, rtp_sender_->TimeToSendPadding(49));
 
-  EXPECT_CALL(transport, SendPacket(_, _, kPayloadSizes[0] +
-                                    rtp_header_len + kRtxHeaderSize))
-      .WillOnce(testing::ReturnArg<2>());
+  EXPECT_CALL(transport,
+              SendPacket(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize))
+      .WillOnce(testing::ReturnArg<1>());
   EXPECT_EQ(kPayloadSizes[0], rtp_sender_->TimeToSendPadding(500));
 
-  EXPECT_CALL(transport, SendPacket(_, _, kPayloadSizes[kNumPayloadSizes - 1] +
-                                    rtp_header_len + kRtxHeaderSize))
-      .WillOnce(testing::ReturnArg<2>());
-  EXPECT_CALL(transport, SendPacket(_, _, kMaxPaddingSize + rtp_header_len))
-      .WillOnce(testing::ReturnArg<2>());
+  EXPECT_CALL(transport, SendPacket(_, kPayloadSizes[kNumPayloadSizes - 1] +
+                                           rtp_header_len + kRtxHeaderSize))
+      .WillOnce(testing::ReturnArg<1>());
+  EXPECT_CALL(transport, SendPacket(_, kMaxPaddingSize + rtp_header_len))
+      .WillOnce(testing::ReturnArg<1>());
   EXPECT_EQ(kPayloadSizes[kNumPayloadSizes - 1] + kMaxPaddingSize,
             rtp_sender_->TimeToSendPadding(999));
 }
@@ -960,7 +958,7 @@
     FrameCounts frame_counts_;
   } callback;
 
-  rtp_sender_.reset(new RTPSender(0, false, &fake_clock_, &transport_, nullptr,
+  rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr,
                                   &mock_paced_sender_, nullptr, nullptr,
                                   nullptr, &callback, nullptr));
 
@@ -1013,7 +1011,7 @@
     BitrateStatistics total_stats_;
     BitrateStatistics retransmit_stats_;
   } callback;
-  rtp_sender_.reset(new RTPSender(0, false, &fake_clock_, &transport_, nullptr,
+  rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr,
                                   &mock_paced_sender_, nullptr, nullptr,
                                   &callback, nullptr, nullptr));
 
@@ -1072,7 +1070,7 @@
 
   void SetUp() override {
     payload_ = kAudioPayload;
-    rtp_sender_.reset(new RTPSender(0, true, &fake_clock_, &transport_, nullptr,
+    rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr,
                                     &mock_paced_sender_, nullptr, nullptr,
                                     nullptr, nullptr, nullptr));
     rtp_sender_->SetSequenceNumber(kSeqNum);
diff --git a/webrtc/modules/rtp_rtcp/test/testAPI/test_api.cc b/webrtc/modules/rtp_rtcp/test/testAPI/test_api.cc
index bba1065..5b43f00 100644
--- a/webrtc/modules/rtp_rtcp/test/testAPI/test_api.cc
+++ b/webrtc/modules/rtp_rtcp/test/testAPI/test_api.cc
@@ -30,7 +30,7 @@
   packet_loss_ = n;
 }
 
-int LoopBackTransport::SendPacket(int channel, const void* data, size_t len) {
+int LoopBackTransport::SendPacket(const void* data, size_t len) {
   count_++;
   if (packet_loss_ > 0) {
     if ((count_ % packet_loss_) == 0) {
@@ -56,9 +56,7 @@
   return len;
 }
 
-int LoopBackTransport::SendRTCPPacket(int channel,
-                                      const void* data,
-                                      size_t len) {
+int LoopBackTransport::SendRTCPPacket(const void* data, size_t len) {
   if (rtp_rtcp_module_->IncomingRtcpPacket((const uint8_t*)data, len) < 0) {
     return -1;
   }
@@ -82,7 +80,6 @@
   RtpRtcpAPITest() : fake_clock_(123456) {
     test_csrcs_.push_back(1234);
     test_csrcs_.push_back(2345);
-    test_id = 123;
     test_ssrc_ = 3456;
     test_timestamp_ = 4567;
     test_sequence_number_ = 2345;
@@ -91,17 +88,15 @@
 
   void SetUp() override {
     RtpRtcp::Configuration configuration;
-    configuration.id = test_id;
     configuration.audio = true;
     configuration.clock = &fake_clock_;
     module_.reset(RtpRtcp::CreateRtpRtcp(configuration));
     rtp_payload_registry_.reset(new RTPPayloadRegistry(
             RTPPayloadStrategy::CreateStrategy(true)));
     rtp_receiver_.reset(RtpReceiver::CreateAudioReceiver(
-        test_id, &fake_clock_, NULL, NULL, NULL, rtp_payload_registry_.get()));
+        &fake_clock_, NULL, NULL, NULL, rtp_payload_registry_.get()));
   }
 
-  int test_id;
   rtc::scoped_ptr<RTPPayloadRegistry> rtp_payload_registry_;
   rtc::scoped_ptr<RtpReceiver> rtp_receiver_;
   rtc::scoped_ptr<RtpRtcp> module_;
diff --git a/webrtc/modules/rtp_rtcp/test/testAPI/test_api.h b/webrtc/modules/rtp_rtcp/test/testAPI/test_api.h
index 069cdc7..0ec1cfb 100644
--- a/webrtc/modules/rtp_rtcp/test/testAPI/test_api.h
+++ b/webrtc/modules/rtp_rtcp/test/testAPI/test_api.h
@@ -35,8 +35,8 @@
                      RtpReceiver* receiver,
                      ReceiveStatistics* receive_statistics);
   void DropEveryNthPacket(int n);
-  int SendPacket(int channel, const void* data, size_t len) override;
-  int SendRTCPPacket(int channel, const void* data, size_t len) override;
+  int SendPacket(const void* data, size_t len) override;
+  int SendRTCPPacket(const void* data, size_t len) override;
 
  private:
   int count_;
diff --git a/webrtc/modules/rtp_rtcp/test/testAPI/test_api_audio.cc b/webrtc/modules/rtp_rtcp/test/testAPI/test_api_audio.cc
index 61923aa..745386d 100644
--- a/webrtc/modules/rtp_rtcp/test/testAPI/test_api_audio.cc
+++ b/webrtc/modules/rtp_rtcp/test/testAPI/test_api_audio.cc
@@ -61,8 +61,7 @@
 
 class RTPCallback : public NullRtpFeedback {
  public:
-  int32_t OnInitializeDecoder(const int32_t id,
-                              const int8_t payloadType,
+  int32_t OnInitializeDecoder(const int8_t payloadType,
                               const char payloadName[RTP_PAYLOAD_NAME_SIZE],
                               const int frequency,
                               const uint8_t channels,
@@ -80,7 +79,6 @@
   RtpRtcpAudioTest() : fake_clock(123456) {
     test_CSRC[0] = 1234;
     test_CSRC[2] = 2345;
-    test_id = 123;
     test_ssrc = 3456;
     test_timestamp = 4567;
     test_sequence_number = 2345;
@@ -104,7 +102,6 @@
         RTPPayloadStrategy::CreateStrategy(true)));
 
     RtpRtcp::Configuration configuration;
-    configuration.id = test_id;
     configuration.audio = true;
     configuration.clock = &fake_clock;
     configuration.receive_statistics = receive_statistics1_.get();
@@ -113,18 +110,17 @@
 
     module1 = RtpRtcp::CreateRtpRtcp(configuration);
     rtp_receiver1_.reset(RtpReceiver::CreateAudioReceiver(
-        test_id, &fake_clock, audioFeedback, data_receiver1, NULL,
+        &fake_clock, audioFeedback, data_receiver1, NULL,
         rtp_payload_registry1_.get()));
 
-    configuration.id = test_id + 1;
     configuration.receive_statistics = receive_statistics2_.get();
     configuration.outgoing_transport = transport2;
     configuration.audio_messages = audioFeedback;
 
     module2 = RtpRtcp::CreateRtpRtcp(configuration);
     rtp_receiver2_.reset(RtpReceiver::CreateAudioReceiver(
-            test_id + 1, &fake_clock, audioFeedback, data_receiver2, NULL,
-            rtp_payload_registry2_.get()));
+        &fake_clock, audioFeedback, data_receiver2, NULL,
+        rtp_payload_registry2_.get()));
 
     transport1->SetSendModule(module2, rtp_payload_registry2_.get(),
                               rtp_receiver2_.get(), receive_statistics2_.get());
@@ -143,7 +139,6 @@
     delete rtp_callback;
   }
 
-  int test_id;
   RtpRtcp* module1;
   RtpRtcp* module2;
   rtc::scoped_ptr<ReceiveStatistics> receive_statistics1_;
diff --git a/webrtc/modules/rtp_rtcp/test/testAPI/test_api_rtcp.cc b/webrtc/modules/rtp_rtcp/test/testAPI/test_api_rtcp.cc
index 4fc89a9..e1d5e07 100644
--- a/webrtc/modules/rtp_rtcp/test/testAPI/test_api_rtcp.cc
+++ b/webrtc/modules/rtp_rtcp/test/testAPI/test_api_rtcp.cc
@@ -55,8 +55,7 @@
   TestRtpFeedback(RtpRtcp* rtp_rtcp) : rtp_rtcp_(rtp_rtcp) {}
   virtual ~TestRtpFeedback() {}
 
-  virtual void OnIncomingSSRCChanged(const int32_t id,
-                                     const uint32_t ssrc) {
+  void OnIncomingSSRCChanged(const uint32_t ssrc) override {
     rtp_rtcp_->SetRemoteSSRC(ssrc);
   }
 
@@ -69,7 +68,6 @@
   RtpRtcpRtcpTest() : fake_clock(123456) {
     test_csrcs.push_back(1234);
     test_csrcs.push_back(2345);
-    test_id = 123;
     test_ssrc = 3456;
     test_timestamp = 4567;
     test_sequence_number = 2345;
@@ -87,7 +85,6 @@
     receive_statistics2_.reset(ReceiveStatistics::Create(&fake_clock));
 
     RtpRtcp::Configuration configuration;
-    configuration.id = test_id;
     configuration.audio = true;
     configuration.clock = &fake_clock;
     configuration.receive_statistics = receive_statistics1_.get();
@@ -104,11 +101,10 @@
     rtp_feedback1_.reset(new TestRtpFeedback(module1));
 
     rtp_receiver1_.reset(RtpReceiver::CreateAudioReceiver(
-        test_id, &fake_clock, NULL, receiver, rtp_feedback1_.get(),
+        &fake_clock, NULL, receiver, rtp_feedback1_.get(),
         rtp_payload_registry1_.get()));
 
     configuration.receive_statistics = receive_statistics2_.get();
-    configuration.id = test_id + 1;
     configuration.outgoing_transport = transport2;
     configuration.intra_frame_callback = myRTCPFeedback2;
 
@@ -117,7 +113,7 @@
     rtp_feedback2_.reset(new TestRtpFeedback(module2));
 
     rtp_receiver2_.reset(RtpReceiver::CreateAudioReceiver(
-        test_id + 1, &fake_clock, NULL, receiver, rtp_feedback2_.get(),
+        &fake_clock, NULL, receiver, rtp_feedback2_.get(),
         rtp_payload_registry2_.get()));
 
     transport1->SetSendModule(module2, rtp_payload_registry2_.get(),
@@ -179,7 +175,6 @@
     delete receiver;
   }
 
-  int test_id;
   rtc::scoped_ptr<TestRtpFeedback> rtp_feedback1_;
   rtc::scoped_ptr<TestRtpFeedback> rtp_feedback2_;
   rtc::scoped_ptr<ReceiveStatistics> receive_statistics1_;
diff --git a/webrtc/modules/rtp_rtcp/test/testAPI/test_api_video.cc b/webrtc/modules/rtp_rtcp/test/testAPI/test_api_video.cc
index e28d5ce..ead8368 100644
--- a/webrtc/modules/rtp_rtcp/test/testAPI/test_api_video.cc
+++ b/webrtc/modules/rtp_rtcp/test/testAPI/test_api_video.cc
@@ -33,13 +33,11 @@
 class RtpRtcpVideoTest : public ::testing::Test {
  protected:
   RtpRtcpVideoTest()
-      : test_id_(123),
-        rtp_payload_registry_(RTPPayloadStrategy::CreateStrategy(false)),
+      : rtp_payload_registry_(RTPPayloadStrategy::CreateStrategy(false)),
         test_ssrc_(3456),
         test_timestamp_(4567),
         test_sequence_number_(2345),
-        fake_clock(123456) {
-  }
+        fake_clock(123456) {}
   ~RtpRtcpVideoTest() {}
 
   virtual void SetUp() {
@@ -47,14 +45,13 @@
     receiver_ = new TestRtpReceiver();
     receive_statistics_.reset(ReceiveStatistics::Create(&fake_clock));
     RtpRtcp::Configuration configuration;
-    configuration.id = test_id_;
     configuration.audio = false;
     configuration.clock = &fake_clock;
     configuration.outgoing_transport = transport_;
 
     video_module_ = RtpRtcp::CreateRtpRtcp(configuration);
     rtp_receiver_.reset(RtpReceiver::CreateVideoReceiver(
-        test_id_, &fake_clock, receiver_, NULL, &rtp_payload_registry_));
+        &fake_clock, receiver_, NULL, &rtp_payload_registry_));
 
     video_module_->SetRTCPStatus(kRtcpCompound);
     video_module_->SetSSRC(test_ssrc_);
diff --git a/webrtc/modules/video_coding/main/test/rtp_player.cc b/webrtc/modules/video_coding/main/test/rtp_player.cc
index e53a4ab..74a5b95 100644
--- a/webrtc/modules/video_coding/main/test/rtp_player.cc
+++ b/webrtc/modules/video_coding/main/test/rtp_player.cc
@@ -217,11 +217,10 @@
 
     RtpRtcp::Configuration configuration;
     configuration.clock = clock;
-    configuration.id = 1;
     configuration.audio = false;
     handler->rtp_module_.reset(RtpReceiver::CreateVideoReceiver(
-        configuration.id, configuration.clock, handler->payload_sink_.get(),
-        NULL, handler->rtp_payload_registry_.get()));
+        configuration.clock, handler->payload_sink_.get(), NULL,
+        handler->rtp_payload_registry_.get()));
     if (handler->rtp_module_.get() == NULL) {
       return -1;
     }
diff --git a/webrtc/test/channel_transport/udp_transport_impl.cc b/webrtc/test/channel_transport/udp_transport_impl.cc
index ab7a1ff..e16c742 100644
--- a/webrtc/test/channel_transport/udp_transport_impl.cc
+++ b/webrtc/test/channel_transport/udp_transport_impl.cc
@@ -1931,10 +1931,7 @@
     return -1;
 }
 
-int UdpTransportImpl::SendPacket(int /*channel*/,
-                                 const void* data,
-                                 size_t length)
-{
+int UdpTransportImpl::SendPacket(const void* data, size_t length) {
     WEBRTC_TRACE(kTraceStream, kTraceTransport, _id, "%s", __FUNCTION__);
 
     CriticalSectionScoped cs(_crit);
@@ -2000,10 +1997,7 @@
     return -1;
 }
 
-int UdpTransportImpl::SendRTCPPacket(int /*channel*/, const void* data,
-                                     size_t length)
-{
-
+int UdpTransportImpl::SendRTCPPacket(const void* data, size_t length) {
     CriticalSectionScoped cs(_crit);
     if(_destIP[0] == 0)
     {
diff --git a/webrtc/test/channel_transport/udp_transport_impl.h b/webrtc/test/channel_transport/udp_transport_impl.h
index 5dbf5d8..cbc53bc 100644
--- a/webrtc/test/channel_transport/udp_transport_impl.h
+++ b/webrtc/test/channel_transport/udp_transport_impl.h
@@ -116,8 +116,8 @@
                              size_t length,
                              uint16_t rtcpPort) override;
     // Transport functions
-    int SendPacket(int channel, const void* data, size_t length) override;
-    int SendRTCPPacket(int channel, const void* data, size_t length) override;
+    int SendPacket(const void* data, size_t length) override;
+    int SendRTCPPacket(const void* data, size_t length) override;
 
     // UdpTransport functions continue.
     int32_t SetSendIP(const char* ipaddr) override;
diff --git a/webrtc/test/mock_transport.h b/webrtc/test/mock_transport.h
index 5b1cb8d..823baf4 100644
--- a/webrtc/test/mock_transport.h
+++ b/webrtc/test/mock_transport.h
@@ -18,10 +18,8 @@
 
 class MockTransport : public webrtc::Transport {
  public:
-  MOCK_METHOD3(SendPacket,
-      int(int channel, const void* data, size_t len));
-  MOCK_METHOD3(SendRTCPPacket,
-      int(int channel, const void* data, size_t len));
+  MOCK_METHOD2(SendPacket, int(const void* data, size_t len));
+  MOCK_METHOD2(SendRTCPPacket, int(const void* data, size_t len));
 };
 }  // namespace webrtc
 #endif  // WEBRTC_TEST_MOCK_TRANSPORT_H_
diff --git a/webrtc/video/rtc_event_log_unittest.cc b/webrtc/video/rtc_event_log_unittest.cc
index 6c1786b..cc8a8d2 100644
--- a/webrtc/video/rtc_event_log_unittest.cc
+++ b/webrtc/video/rtc_event_log_unittest.cc
@@ -295,8 +295,7 @@
   RTC_CHECK_GE(packet_size, 16 + 4 * csrcs_count + 4 * kNumExtensions);
   Clock* clock = Clock::GetRealTimeClock();
 
-  RTPSender rtp_sender(0,         // int32_t id
-                       false,     // bool audio
+  RTPSender rtp_sender(false,     // bool audio
                        clock,     // Clock* clock
                        nullptr,   // Transport*
                        nullptr,   // RtpAudioFeedback*
diff --git a/webrtc/video/transport_adapter.cc b/webrtc/video/transport_adapter.cc
index e5c9f61..653e55c 100644
--- a/webrtc/video/transport_adapter.cc
+++ b/webrtc/video/transport_adapter.cc
@@ -20,9 +20,7 @@
   RTC_DCHECK(nullptr != transport);
 }
 
-int TransportAdapter::SendPacket(int /*channel*/,
-                                 const void* packet,
-                                 size_t length) {
+int TransportAdapter::SendPacket(const void* packet, size_t length) {
   if (enabled_.Value() == 0)
     return false;
 
@@ -31,9 +29,7 @@
   return success ? static_cast<int>(length) : -1;
 }
 
-int TransportAdapter::SendRTCPPacket(int /*channel*/,
-                                     const void* packet,
-                                     size_t length) {
+int TransportAdapter::SendRTCPPacket(const void* packet, size_t length) {
   if (enabled_.Value() == 0)
     return false;
 
diff --git a/webrtc/video/transport_adapter.h b/webrtc/video/transport_adapter.h
index cd27d7c..c9a7938 100644
--- a/webrtc/video/transport_adapter.h
+++ b/webrtc/video/transport_adapter.h
@@ -21,10 +21,8 @@
  public:
   explicit TransportAdapter(newapi::Transport* transport);
 
-  int SendPacket(int /*channel*/, const void* packet, size_t length) override;
-  int SendRTCPPacket(int /*channel*/,
-                     const void* packet,
-                     size_t length) override;
+  int SendPacket(const void* packet, size_t length) override;
+  int SendRTCPPacket(const void* packet, size_t length) override;
 
   void Enable();
   void Disable();
diff --git a/webrtc/video/video_receive_stream.cc b/webrtc/video/video_receive_stream.cc
index efa97c7..2c8d8f8 100644
--- a/webrtc/video/video_receive_stream.cc
+++ b/webrtc/video/video_receive_stream.cc
@@ -140,7 +140,7 @@
       channel_group_(channel_group),
       channel_id_(channel_id) {
   RTC_CHECK(channel_group_->CreateReceiveChannel(
-      channel_id_, 0, &transport_adapter_, num_cpu_cores));
+      channel_id_, &transport_adapter_, num_cpu_cores));
 
   vie_channel_ = channel_group_->GetChannel(channel_id_);
 
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc
index 2ab4eaa..462d252 100644
--- a/webrtc/video/video_send_stream.cc
+++ b/webrtc/video/video_send_stream.cc
@@ -118,8 +118,8 @@
       use_config_bitrate_(true),
       stats_proxy_(Clock::GetRealTimeClock(), config) {
   RTC_DCHECK(!config_.rtp.ssrcs.empty());
-  RTC_CHECK(channel_group->CreateSendChannel(
-      channel_id_, 0, &transport_adapter_, num_cpu_cores, config_.rtp.ssrcs));
+  RTC_CHECK(channel_group->CreateSendChannel(channel_id_, &transport_adapter_,
+                                             num_cpu_cores, config_.rtp.ssrcs));
   vie_channel_ = channel_group_->GetChannel(channel_id_);
   vie_encoder_ = channel_group_->GetEncoder(channel_id_);
 
diff --git a/webrtc/video/video_send_stream_tests.cc b/webrtc/video/video_send_stream_tests.cc
index a70490a..2ff411d 100644
--- a/webrtc/video/video_send_stream_tests.cc
+++ b/webrtc/video/video_send_stream_tests.cc
@@ -328,7 +328,7 @@
         // Receive statistics reporting having lost 50% of the packets.
         FakeReceiveStatistics lossy_receive_stats(
             kSendSsrcs[0], header.sequenceNumber, send_count_ / 2, 127);
-        RTCPSender rtcp_sender(0, false, Clock::GetRealTimeClock(),
+        RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(),
                                &lossy_receive_stats, nullptr);
         EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_));
 
@@ -410,8 +410,8 @@
         uint16_t nack_sequence_number = header.sequenceNumber - 1;
         nacked_sequence_number_ = nack_sequence_number;
         NullReceiveStatistics null_stats;
-        RTCPSender rtcp_sender(
-            0, false, Clock::GetRealTimeClock(), &null_stats, nullptr);
+        RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &null_stats,
+                               nullptr);
         EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_));
 
         rtcp_sender.SetRTCPStatus(kRtcpNonCompound);
@@ -592,7 +592,7 @@
         // Receive statistics reporting having lost 50% of the packets.
         FakeReceiveStatistics lossy_receive_stats(
             kSendSsrcs[0], header.sequenceNumber, packet_count_ / 2, 127);
-        RTCPSender rtcp_sender(0, false, Clock::GetRealTimeClock(),
+        RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(),
                                &lossy_receive_stats, nullptr);
         EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_));
 
@@ -823,7 +823,7 @@
         EXCLUSIVE_LOCKS_REQUIRED(crit_) {
       FakeReceiveStatistics receive_stats(
           kSendSsrcs[0], last_sequence_number_, rtp_count_, 0);
-      RTCPSender rtcp_sender(0, false, clock_, &receive_stats, nullptr);
+      RTCPSender rtcp_sender(false, clock_, &receive_stats, nullptr);
       EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_));
 
       rtcp_sender.SetRTCPStatus(kRtcpNonCompound);
@@ -882,8 +882,8 @@
         observation_complete_->Set();
       // Receive statistics reporting having lost 50% of the packets.
       FakeReceiveStatistics receive_stats(kSendSsrcs[0], 1, 1, 0);
-      RTCPSender rtcp_sender(0, false, Clock::GetRealTimeClock(),
-                             &receive_stats, nullptr);
+      RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &receive_stats,
+                             nullptr);
       EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_));
 
       rtcp_sender.SetRTCPStatus(kRtcpNonCompound);
diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc
index e941326..b812926 100644
--- a/webrtc/video_engine/vie_channel.cc
+++ b/webrtc/video_engine/vie_channel.cc
@@ -77,9 +77,7 @@
   ViEChannel* owner_;
 };
 
-ViEChannel::ViEChannel(int32_t channel_id,
-                       int32_t engine_id,
-                       uint32_t number_of_cores,
+ViEChannel::ViEChannel(uint32_t number_of_cores,
                        Transport* transport,
                        ProcessThread* module_process_thread,
                        RtcpIntraFrameObserver* intra_frame_observer,
@@ -91,9 +89,7 @@
                        PacketRouter* packet_router,
                        size_t max_rtp_streams,
                        bool sender)
-    : channel_id_(channel_id),
-      engine_id_(engine_id),
-      number_of_cores_(number_of_cores),
+    : number_of_cores_(number_of_cores),
       sender_(sender),
       module_process_thread_(module_process_thread),
       crit_(CriticalSectionWrapper::CreateCriticalSection()),
@@ -102,7 +98,7 @@
       vcm_(VideoCodingModule::Create(Clock::GetRealTimeClock(),
                                      nullptr,
                                      nullptr)),
-      vie_receiver_(channel_id, vcm_, remote_bitrate_estimator, this),
+      vie_receiver_(vcm_, remote_bitrate_estimator, this),
       vie_sync_(vcm_),
       stats_observer_(new ChannelStatsObserver(this)),
       receive_stats_callback_(nullptr),
@@ -121,8 +117,7 @@
       rtt_sum_ms_(0),
       num_rtts_(0),
       rtp_rtcp_modules_(
-          CreateRtpRtcpModules(ViEModuleId(engine_id_, channel_id_),
-                               !sender,
+          CreateRtpRtcpModules(!sender,
                                vie_receiver_.GetReceiveStatistics(),
                                transport,
                                sender ? intra_frame_observer_ : nullptr,
@@ -1023,11 +1018,11 @@
 int32_t ViEChannel::FrameToRender(VideoFrame& video_frame) {  // NOLINT
   CriticalSectionScoped cs(crit_.get());
 
-
   if (pre_render_callback_ != NULL)
     pre_render_callback_->FrameCallback(&video_frame);
 
-  incoming_video_stream_->RenderFrame(channel_id_, video_frame);
+  // TODO(pbos): Remove stream id argument.
+  incoming_video_stream_->RenderFrame(0xFFFFFFFF, video_frame);
   return 0;
 }
 
@@ -1134,7 +1129,6 @@
 }
 
 std::vector<RtpRtcp*> ViEChannel::CreateRtpRtcpModules(
-    int32_t id,
     bool receiver_only,
     ReceiveStatistics* receive_statistics,
     Transport* outgoing_transport,
@@ -1153,7 +1147,6 @@
   RTC_DCHECK_GT(num_modules, 0u);
   RtpRtcp::Configuration configuration;
   ReceiveStatistics* null_receive_statistics = configuration.receive_statistics;
-  configuration.id = id;
   configuration.audio = false;
   configuration.receiver_only = receiver_only;
   configuration.receive_statistics = receive_statistics;
@@ -1231,7 +1224,6 @@
 // TODO(pbos): Remove OnInitializeDecoder which is called from the RTP module,
 // any decoder resetting should be handled internally within the VCM.
 int32_t ViEChannel::OnInitializeDecoder(
-    const int32_t id,
     const int8_t payload_type,
     const char payload_name[RTP_PAYLOAD_NAME_SIZE],
     const int frequency,
@@ -1244,17 +1236,11 @@
   return 0;
 }
 
-void ViEChannel::OnIncomingSSRCChanged(const int32_t id, const uint32_t ssrc) {
-  RTC_DCHECK_EQ(channel_id_, ChannelId(id));
+void ViEChannel::OnIncomingSSRCChanged(const uint32_t ssrc) {
   rtp_rtcp_modules_[0]->SetRemoteSSRC(ssrc);
 }
 
-void ViEChannel::OnIncomingCSRCChanged(const int32_t id,
-                                       const uint32_t CSRC,
-                                       const bool added) {
-  RTC_DCHECK_EQ(channel_id_, ChannelId(id));
-  CriticalSectionScoped cs(crit_.get());
-}
+void ViEChannel::OnIncomingCSRCChanged(const uint32_t CSRC, const bool added) {}
 
 void ViEChannel::RegisterSendFrameCountObserver(
     FrameCountObserver* observer) {
diff --git a/webrtc/video_engine/vie_channel.h b/webrtc/video_engine/vie_channel.h
index 834c933..fc01592 100644
--- a/webrtc/video_engine/vie_channel.h
+++ b/webrtc/video_engine/vie_channel.h
@@ -65,9 +65,7 @@
   friend class ChannelStatsObserver;
   friend class ViEChannelProtectionCallback;
 
-  ViEChannel(int32_t channel_id,
-             int32_t engine_id,
-             uint32_t number_of_cores,
+  ViEChannel(uint32_t number_of_cores,
              Transport* transport,
              ProcessThread* module_process_thread,
              RtcpIntraFrameObserver* intra_frame_observer,
@@ -192,18 +190,13 @@
   void RegisterSendBitrateObserver(BitrateStatisticsObserver* observer);
 
   // Implements RtpFeedback.
-  virtual int32_t OnInitializeDecoder(
-      const int32_t id,
-      const int8_t payload_type,
-      const char payload_name[RTP_PAYLOAD_NAME_SIZE],
-      const int frequency,
-      const uint8_t channels,
-      const uint32_t rate);
-  virtual void OnIncomingSSRCChanged(const int32_t id,
-                                     const uint32_t ssrc);
-  virtual void OnIncomingCSRCChanged(const int32_t id,
-                                     const uint32_t CSRC,
-                                     const bool added);
+  int32_t OnInitializeDecoder(const int8_t payload_type,
+                              const char payload_name[RTP_PAYLOAD_NAME_SIZE],
+                              const int frequency,
+                              const uint8_t channels,
+                              const uint32_t rate) override;
+  void OnIncomingSSRCChanged(const uint32_t ssrc) override;
+  void OnIncomingCSRCChanged(const uint32_t CSRC, const bool added) override;
 
   int32_t SetRemoteSSRCType(const StreamType usage, const uint32_t SSRC);
 
@@ -296,7 +289,6 @@
 
  private:
   static std::vector<RtpRtcp*> CreateRtpRtcpModules(
-      int32_t id,
       bool receiver_only,
       ReceiveStatistics* receive_statistics,
       Transport* outgoing_transport,
@@ -410,8 +402,6 @@
         GUARDED_BY(critsect_);
   } rtcp_packet_type_counter_observer_;
 
-  const int32_t channel_id_;
-  const int32_t engine_id_;
   const uint32_t number_of_cores_;
   const bool sender_;
 
diff --git a/webrtc/video_engine/vie_channel_group.cc b/webrtc/video_engine/vie_channel_group.cc
index 5c55aaa..42f6c85 100644
--- a/webrtc/video_engine/vie_channel_group.cc
+++ b/webrtc/video_engine/vie_channel_group.cc
@@ -186,7 +186,6 @@
 }
 
 bool ChannelGroup::CreateSendChannel(int channel_id,
-                                     int engine_id,
                                      Transport* transport,
                                      int number_of_cores,
                                      const std::vector<uint32_t>& ssrcs) {
@@ -198,7 +197,7 @@
     return false;
   }
   ViEEncoder* encoder = vie_encoder.get();
-  if (!CreateChannel(channel_id, engine_id, transport, number_of_cores,
+  if (!CreateChannel(channel_id, transport, number_of_cores,
                      vie_encoder.release(), ssrcs.size(), true)) {
     return false;
   }
@@ -214,22 +213,20 @@
 }
 
 bool ChannelGroup::CreateReceiveChannel(int channel_id,
-                                        int engine_id,
                                         Transport* transport,
                                         int number_of_cores) {
-  return CreateChannel(channel_id, engine_id, transport, number_of_cores,
+  return CreateChannel(channel_id, transport, number_of_cores,
                        nullptr, 1, false);
 }
 
 bool ChannelGroup::CreateChannel(int channel_id,
-                                 int engine_id,
                                  Transport* transport,
                                  int number_of_cores,
                                  ViEEncoder* vie_encoder,
                                  size_t max_rtp_streams,
                                  bool sender) {
   rtc::scoped_ptr<ViEChannel> channel(new ViEChannel(
-      channel_id, engine_id, number_of_cores, transport, process_thread_,
+      number_of_cores, transport, process_thread_,
       encoder_state_feedback_->GetRtcpIntraFrameObserver(),
       bitrate_controller_->CreateRtcpBandwidthObserver(), nullptr,
       remote_bitrate_estimator_.get(), call_stats_->rtcp_rtt_stats(),
diff --git a/webrtc/video_engine/vie_channel_group.h b/webrtc/video_engine/vie_channel_group.h
index f1faa80..ec17083 100644
--- a/webrtc/video_engine/vie_channel_group.h
+++ b/webrtc/video_engine/vie_channel_group.h
@@ -44,12 +44,10 @@
   explicit ChannelGroup(ProcessThread* process_thread);
   ~ChannelGroup();
   bool CreateSendChannel(int channel_id,
-                         int engine_id,
                          Transport* transport,
                          int number_of_cores,
                          const std::vector<uint32_t>& ssrcs);
   bool CreateReceiveChannel(int channel_id,
-                            int engine_id,
                             Transport* transport,
                             int number_of_cores);
   void DeleteChannel(int channel_id);
@@ -75,7 +73,6 @@
   typedef std::map<int, ViEEncoder*> EncoderMap;
 
   bool CreateChannel(int channel_id,
-                     int engine_id,
                      Transport* transport,
                      int number_of_cores,
                      ViEEncoder* vie_encoder,
diff --git a/webrtc/video_engine/vie_receiver.cc b/webrtc/video_engine/vie_receiver.cc
index a3ef2cf..f10f287 100644
--- a/webrtc/video_engine/vie_receiver.cc
+++ b/webrtc/video_engine/vie_receiver.cc
@@ -33,8 +33,7 @@
 
 static const int kPacketLogIntervalMs = 10000;
 
-ViEReceiver::ViEReceiver(const int32_t channel_id,
-                         VideoCodingModule* module_vcm,
+ViEReceiver::ViEReceiver(VideoCodingModule* module_vcm,
                          RemoteBitrateEstimator* remote_bitrate_estimator,
                          RtpFeedback* rtp_feedback)
     : receive_cs_(CriticalSectionWrapper::CreateCriticalSection()),
@@ -43,8 +42,7 @@
       rtp_payload_registry_(
           new RTPPayloadRegistry(RTPPayloadStrategy::CreateStrategy(false))),
       rtp_receiver_(
-          RtpReceiver::CreateVideoReceiver(channel_id,
-                                           clock_,
+          RtpReceiver::CreateVideoReceiver(clock_,
                                            this,
                                            rtp_feedback,
                                            rtp_payload_registry_.get())),
diff --git a/webrtc/video_engine/vie_receiver.h b/webrtc/video_engine/vie_receiver.h
index 781f14f..c7d4c33 100644
--- a/webrtc/video_engine/vie_receiver.h
+++ b/webrtc/video_engine/vie_receiver.h
@@ -36,7 +36,7 @@
 
 class ViEReceiver : public RtpData {
  public:
-  ViEReceiver(const int32_t channel_id, VideoCodingModule* module_vcm,
+  ViEReceiver(VideoCodingModule* module_vcm,
               RemoteBitrateEstimator* remote_bitrate_estimator,
               RtpFeedback* rtp_feedback);
   ~ViEReceiver();
diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc
index a8fb179..7f315df 100644
--- a/webrtc/voice_engine/channel.cc
+++ b/webrtc/voice_engine/channel.cc
@@ -218,14 +218,10 @@
 }
 
 int
-Channel::SendPacket(int channel, const void *data, size_t len)
+Channel::SendPacket(const void *data, size_t len)
 {
-    channel = VoEChannelId(channel);
-    assert(channel == _channelId);
-
     WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId),
-                 "Channel::SendPacket(channel=%d, len=%" PRIuS ")", channel,
-                 len);
+                 "Channel::SendPacket(channel=%d, len=%" PRIuS ")", len);
 
     CriticalSectionScoped cs(&_callbackCritSect);
 
@@ -240,8 +236,7 @@
     uint8_t* bufferToSendPtr = (uint8_t*)data;
     size_t bufferLength = len;
 
-    int n = _transportPtr->SendPacket(channel, bufferToSendPtr,
-                                      bufferLength);
+    int n = _transportPtr->SendPacket(bufferToSendPtr, bufferLength);
     if (n < 0) {
       std::string transport_name =
           _externalTransport ? "external transport" : "WebRtc sockets";
@@ -255,14 +250,10 @@
 }
 
 int
-Channel::SendRTCPPacket(int channel, const void *data, size_t len)
+Channel::SendRTCPPacket(const void *data, size_t len)
 {
-    channel = VoEChannelId(channel);
-    assert(channel == _channelId);
-
     WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId),
-                 "Channel::SendRTCPPacket(channel=%d, len=%" PRIuS ")", channel,
-                 len);
+                 "Channel::SendRTCPPacket(len=%" PRIuS ")", len);
 
     CriticalSectionScoped cs(&_callbackCritSect);
     if (_transportPtr == NULL)
@@ -277,9 +268,7 @@
     uint8_t* bufferToSendPtr = (uint8_t*)data;
     size_t bufferLength = len;
 
-    int n = _transportPtr->SendRTCPPacket(channel,
-                                          bufferToSendPtr,
-                                          bufferLength);
+    int n = _transportPtr->SendRTCPPacket(bufferToSendPtr, bufferLength);
     if (n < 0) {
       std::string transport_name =
           _externalTransport ? "external transport" : "WebRtc sockets";
@@ -292,15 +281,12 @@
     return n;
 }
 
-void
-Channel::OnPlayTelephoneEvent(int32_t id,
-                              uint8_t event,
-                              uint16_t lengthMs,
-                              uint8_t volume)
-{
+void Channel::OnPlayTelephoneEvent(uint8_t event,
+                                   uint16_t lengthMs,
+                                   uint8_t volume) {
     WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId),
-                 "Channel::OnPlayTelephoneEvent(id=%d, event=%u, lengthMs=%u,"
-                 " volume=%u)", id, event, lengthMs, volume);
+                 "Channel::OnPlayTelephoneEvent(event=%u, lengthMs=%u,"
+                 " volume=%u)", event, lengthMs, volume);
 
     if (!_playOutbandDtmfEvent || (event > 15))
     {
@@ -317,40 +303,31 @@
 }
 
 void
-Channel::OnIncomingSSRCChanged(int32_t id, uint32_t ssrc)
+Channel::OnIncomingSSRCChanged(uint32_t ssrc)
 {
     WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
-                 "Channel::OnIncomingSSRCChanged(id=%d, SSRC=%d)",
-                 id, ssrc);
+                 "Channel::OnIncomingSSRCChanged(SSRC=%d)", ssrc);
 
     // Update ssrc so that NTP for AV sync can be updated.
     _rtpRtcpModule->SetRemoteSSRC(ssrc);
 }
 
-void Channel::OnIncomingCSRCChanged(int32_t id,
-                                    uint32_t CSRC,
-                                    bool added)
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
-                 "Channel::OnIncomingCSRCChanged(id=%d, CSRC=%d, added=%d)",
-                 id, CSRC, added);
+void Channel::OnIncomingCSRCChanged(uint32_t CSRC, bool added) {
+  WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
+               "Channel::OnIncomingCSRCChanged(CSRC=%d, added=%d)", CSRC,
+               added);
 }
 
-int32_t
-Channel::OnInitializeDecoder(
-    int32_t id,
+int32_t Channel::OnInitializeDecoder(
     int8_t payloadType,
     const char payloadName[RTP_PAYLOAD_NAME_SIZE],
     int frequency,
     uint8_t channels,
-    uint32_t rate)
-{
+    uint32_t rate) {
     WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
-                 "Channel::OnInitializeDecoder(id=%d, payloadType=%d, "
+                 "Channel::OnInitializeDecoder(payloadType=%d, "
                  "payloadName=%s, frequency=%u, channels=%u, rate=%u)",
-                 id, payloadType, payloadName, frequency, channels, rate);
-
-    assert(VoEChannelId(id) == _channelId);
+                 payloadType, payloadName, frequency, channels, rate);
 
     CodecInst receiveCodec = {0};
     CodecInst dummyCodec = {0};
@@ -732,8 +709,7 @@
     rtp_receive_statistics_(
         ReceiveStatistics::Create(Clock::GetRealTimeClock())),
     rtp_receiver_(
-        RtpReceiver::CreateAudioReceiver(VoEModuleId(instanceId, channelId),
-                                         Clock::GetRealTimeClock(),
+        RtpReceiver::CreateAudioReceiver(Clock::GetRealTimeClock(),
                                          this,
                                          this,
                                          this,
@@ -823,7 +799,6 @@
     _outputAudioLevel.Clear();
 
     RtpRtcp::Configuration configuration;
-    configuration.id = VoEModuleId(instanceId, channelId);
     configuration.audio = true;
     configuration.outgoing_transport = this;
     configuration.audio_messages = this;
@@ -3896,11 +3871,11 @@
     }
     if (!RTCP)
     {
-        return _transportPtr->SendPacket(_channelId, data, len);
+        return _transportPtr->SendPacket(data, len);
     }
     else
     {
-        return _transportPtr->SendRTCPPacket(_channelId, data, len);
+        return _transportPtr->SendRTCPPacket(data, len);
     }
 }
 
diff --git a/webrtc/voice_engine/channel.h b/webrtc/voice_engine/channel.h
index 66eaff1..d9e4575 100644
--- a/webrtc/voice_engine/channel.h
+++ b/webrtc/voice_engine/channel.h
@@ -364,24 +364,22 @@
                            size_t packet_length) override;
 
     // From RtpFeedback in the RTP/RTCP module
-    int32_t OnInitializeDecoder(int32_t id,
-                                int8_t payloadType,
+    int32_t OnInitializeDecoder(int8_t payloadType,
                                 const char payloadName[RTP_PAYLOAD_NAME_SIZE],
                                 int frequency,
                                 uint8_t channels,
                                 uint32_t rate) override;
-    void OnIncomingSSRCChanged(int32_t id, uint32_t ssrc) override;
-    void OnIncomingCSRCChanged(int32_t id, uint32_t CSRC, bool added) override;
+    void OnIncomingSSRCChanged(uint32_t ssrc) override;
+    void OnIncomingCSRCChanged(uint32_t CSRC, bool added) override;
 
     // From RtpAudioFeedback in the RTP/RTCP module
-    void OnPlayTelephoneEvent(int32_t id,
-                              uint8_t event,
+    void OnPlayTelephoneEvent(uint8_t event,
                               uint16_t lengthMs,
                               uint8_t volume) override;
 
     // From Transport (called by the RTP/RTCP module)
-    int SendPacket(int /*channel*/, const void* data, size_t len) override;
-    int SendRTCPPacket(int /*channel*/, const void* data, size_t len) override;
+    int SendPacket(const void* data, size_t len) override;
+    int SendRTCPPacket(const void* data, size_t len) override;
 
     // From MixerParticipant
     int32_t GetAudioFrame(int32_t id, AudioFrame* audioFrame) override;
diff --git a/webrtc/voice_engine/mock/mock_transport.h b/webrtc/voice_engine/mock/mock_transport.h
index 3f80a16..c356f44 100644
--- a/webrtc/voice_engine/mock/mock_transport.h
+++ b/webrtc/voice_engine/mock/mock_transport.h
@@ -18,8 +18,8 @@
 
 class MockTransport : public Transport {
  public:
-  MOCK_METHOD3(SendPacket, int(int channel, const void* data, size_t len));
-  MOCK_METHOD3(SendRTCPPacket, int(int channel, const void* data, size_t len));
+  MOCK_METHOD2(SendPacket, int(const void* data, size_t len));
+  MOCK_METHOD2(SendRTCPPacket, int(const void* data, size_t len));
 };
 
 }  // namespace webrtc
diff --git a/webrtc/voice_engine/test/auto_test/fakes/conference_transport.cc b/webrtc/voice_engine/test/auto_test/fakes/conference_transport.cc
index ef245e9..54a6b8e 100644
--- a/webrtc/voice_engine/test/auto_test/fakes/conference_transport.cc
+++ b/webrtc/voice_engine/test/auto_test/fakes/conference_transport.cc
@@ -108,14 +108,13 @@
   EXPECT_TRUE(webrtc::VoiceEngine::Delete(local_voe_));
 }
 
-int ConferenceTransport::SendPacket(int channel, const void* data, size_t len) {
-  StorePacket(Packet::Rtp, channel, data, len);
+int ConferenceTransport::SendPacket(const void* data, size_t len) {
+  StorePacket(Packet::Rtp, data, len);
   return static_cast<int>(len);
 }
 
-int ConferenceTransport::SendRTCPPacket(int channel, const void* data,
-                                        size_t len) {
-  StorePacket(Packet::Rtcp, channel, data, len);
+int ConferenceTransport::SendRTCPPacket(const void* data, size_t len) {
+  StorePacket(Packet::Rtcp, data, len);
   return static_cast<int>(len);
 }
 
@@ -129,11 +128,12 @@
   return -1;
 }
 
-void ConferenceTransport::StorePacket(Packet::Type type, int channel,
-                                      const void* data, size_t len) {
+void ConferenceTransport::StorePacket(Packet::Type type,
+                                      const void* data,
+                                      size_t len) {
   {
     webrtc::CriticalSectionScoped lock(pq_crit_.get());
-    packet_queue_.push_back(Packet(type, channel, data, len, rtc::Time()));
+    packet_queue_.push_back(Packet(type, data, len, rtc::Time()));
   }
   packet_event_->Set();
 }
diff --git a/webrtc/voice_engine/test/auto_test/fakes/conference_transport.h b/webrtc/voice_engine/test/auto_test/fakes/conference_transport.h
index 10bf411..e7afccb 100644
--- a/webrtc/voice_engine/test/auto_test/fakes/conference_transport.h
+++ b/webrtc/voice_engine/test/auto_test/fakes/conference_transport.h
@@ -98,24 +98,20 @@
   bool GetReceiverStatistics(unsigned int id, webrtc::CallStatistics* stats);
 
   // Inherit from class webrtc::Transport.
-  int SendPacket(int channel, const void *data, size_t len) override;
-  int SendRTCPPacket(int channel, const void *data, size_t len) override;
+  int SendPacket(const void *data, size_t len) override;
+  int SendRTCPPacket(const void *data, size_t len) override;
 
  private:
   struct Packet {
     enum Type { Rtp, Rtcp, } type_;
 
     Packet() : len_(0) {}
-    Packet(Type type, int channel, const void* data, size_t len, uint32 time_ms)
-        : type_(type),
-          channel_(channel),
-          len_(len),
-          send_time_ms_(time_ms) {
+    Packet(Type type, const void* data, size_t len, uint32 time_ms)
+        : type_(type), len_(len), send_time_ms_(time_ms) {
       EXPECT_LE(len_, kMaxPacketSizeByte);
       memcpy(data_, data, len_);
     }
 
-    int channel_;
     uint8_t data_[kMaxPacketSizeByte];
     size_t len_;
     uint32 send_time_ms_;
@@ -126,8 +122,7 @@
   }
 
   int GetReceiverChannelForSsrc(unsigned int sender_ssrc) const;
-  void StorePacket(Packet::Type type, int channel, const void* data,
-                   size_t len);
+  void StorePacket(Packet::Type type, const void* data, size_t len);
   void SendPacket(const Packet& packet);
   bool DispatchPackets();
 
diff --git a/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h b/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h
index cee5a58..11397c1 100644
--- a/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h
+++ b/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h
@@ -15,6 +15,7 @@
 
 #include "webrtc/base/scoped_ptr.h"
 #include "webrtc/common_types.h"
+#include "webrtc/modules/rtp_rtcp/source/byte_io.h"
 #include "webrtc/system_wrappers/interface/atomic32.h"
 #include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
 #include "webrtc/system_wrappers/interface/event_wrapper.h"
@@ -26,24 +27,27 @@
 
 class LoopBackTransport : public webrtc::Transport {
  public:
-  LoopBackTransport(webrtc::VoENetwork* voe_network)
+  LoopBackTransport(webrtc::VoENetwork* voe_network, int channel)
       : crit_(webrtc::CriticalSectionWrapper::CreateCriticalSection()),
         packet_event_(webrtc::EventWrapper::Create()),
-        thread_(webrtc::ThreadWrapper::CreateThread(
-            NetworkProcess, this, "LoopBackTransport")),
-        voe_network_(voe_network), transmitted_packets_(0) {
+        thread_(webrtc::ThreadWrapper::CreateThread(NetworkProcess,
+                                                    this,
+                                                    "LoopBackTransport")),
+        channel_(channel),
+        voe_network_(voe_network),
+        transmitted_packets_(0) {
     thread_->Start();
   }
 
   ~LoopBackTransport() { thread_->Stop(); }
 
-  int SendPacket(int channel, const void* data, size_t len) override {
-    StorePacket(Packet::Rtp, channel, data, len);
+  int SendPacket(const void* data, size_t len) override {
+    StorePacket(Packet::Rtp, data, len);
     return static_cast<int>(len);
   }
 
-  int SendRTCPPacket(int channel, const void* data, size_t len) override {
-    StorePacket(Packet::Rtcp, channel, data, len);
+  int SendRTCPPacket(const void* data, size_t len) override {
+    StorePacket(Packet::Rtcp, data, len);
     return static_cast<int>(len);
   }
 
@@ -57,28 +61,32 @@
     }
   }
 
+  void AddChannel(uint32_t ssrc, int channel) {
+    webrtc::CriticalSectionScoped lock(crit_.get());
+    channels_[ssrc] = channel;
+  }
+
  private:
   struct Packet {
     enum Type { Rtp, Rtcp, } type;
 
     Packet() : len(0) {}
-    Packet(Type type, int channel, const void* data, size_t len)
-        : type(type), channel(channel), len(len) {
+    Packet(Type type, const void* data, size_t len)
+        : type(type), len(len) {
       assert(len <= 1500);
       memcpy(this->data, data, len);
     }
 
-    int channel;
     uint8_t data[1500];
     size_t len;
   };
 
-  void StorePacket(Packet::Type type, int channel,
+  void StorePacket(Packet::Type type,
                    const void* data,
                    size_t len) {
     {
       webrtc::CriticalSectionScoped lock(crit_.get());
-      packet_queue_.push_back(Packet(type, channel, data, len));
+      packet_queue_.push_back(Packet(type, data, len));
     }
     packet_event_->Set();
   }
@@ -100,21 +108,34 @@
 
     while (true) {
       Packet p;
+      int channel = channel_;
       {
         webrtc::CriticalSectionScoped lock(crit_.get());
         if (packet_queue_.empty())
           break;
         p = packet_queue_.front();
         packet_queue_.pop_front();
+
+        if (p.type == Packet::Rtp) {
+          uint32_t ssrc =
+              webrtc::ByteReader<uint32_t>::ReadBigEndian(&p.data[8]);
+          if (channels_[ssrc] != 0)
+            channel = channels_[ssrc];
+        }
+        // TODO(pbos): Add RTCP SSRC muxing/demuxing if anything requires it.
       }
 
+      // Minimum RTP header size.
+      if (p.len < 12)
+        continue;
+
       switch (p.type) {
         case Packet::Rtp:
-          voe_network_->ReceivedRTPPacket(p.channel, p.data, p.len,
+          voe_network_->ReceivedRTPPacket(channel, p.data, p.len,
                                           webrtc::PacketTime());
           break;
         case Packet::Rtcp:
-          voe_network_->ReceivedRTCPPacket(p.channel, p.data, p.len);
+          voe_network_->ReceivedRTCPPacket(channel, p.data, p.len);
           break;
       }
       ++transmitted_packets_;
@@ -126,6 +147,8 @@
   const rtc::scoped_ptr<webrtc::EventWrapper> packet_event_;
   const rtc::scoped_ptr<webrtc::ThreadWrapper> thread_;
   std::deque<Packet> packet_queue_ GUARDED_BY(crit_.get());
+  const int channel_;
+  std::map<uint32_t, int> channels_ GUARDED_BY(crit_.get());
   webrtc::VoENetwork* const voe_network_;
   webrtc::Atomic32 transmitted_packets_;
 };
diff --git a/webrtc/voice_engine/test/auto_test/fixtures/before_streaming_fixture.cc b/webrtc/voice_engine/test/auto_test/fixtures/before_streaming_fixture.cc
index 488f448..abcb2a6 100644
--- a/webrtc/voice_engine/test/auto_test/fixtures/before_streaming_fixture.cc
+++ b/webrtc/voice_engine/test/auto_test/fixtures/before_streaming_fixture.cc
@@ -61,7 +61,7 @@
 }
 
 void BeforeStreamingFixture::SetUpLocalPlayback() {
-  transport_ = new LoopBackTransport(voe_network_);
+  transport_ = new LoopBackTransport(voe_network_, channel_);
   EXPECT_EQ(0, voe_network_->RegisterExternalTransport(channel_, *transport_));
 
   webrtc::CodecInst codec;
diff --git a/webrtc/voice_engine/test/auto_test/standard/mixing_test.cc b/webrtc/voice_engine/test/auto_test/standard/mixing_test.cc
index 2a5732b..3c61956 100644
--- a/webrtc/voice_engine/test/auto_test/standard/mixing_test.cc
+++ b/webrtc/voice_engine/test/auto_test/standard/mixing_test.cc
@@ -35,7 +35,7 @@
       : output_filename_(test::OutputPath() + "mixing_test_output.pcm") {
   }
   void SetUp() {
-    transport_ = new LoopBackTransport(voe_network_);
+    transport_ = new LoopBackTransport(voe_network_, 0);
   }
   void TearDown() {
     delete transport_;
@@ -182,6 +182,9 @@
   void StartRemoteStream(int stream, const CodecInst& codec_inst, int port) {
     EXPECT_EQ(0, voe_codec_->SetRecPayloadType(stream, codec_inst));
     EXPECT_EQ(0, voe_network_->RegisterExternalTransport(stream, *transport_));
+    EXPECT_EQ(0, voe_rtp_rtcp_->SetLocalSSRC(
+                     stream, static_cast<unsigned int>(stream)));
+    transport_->AddChannel(stream, stream);
     EXPECT_EQ(0, voe_base_->StartReceive(stream));
     EXPECT_EQ(0, voe_base_->StartPlayout(stream));
     EXPECT_EQ(0, voe_codec_->SetSendCodec(stream, codec_inst));
diff --git a/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_extensions.cc b/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_extensions.cc
index 7344338..4f92e06 100644
--- a/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_extensions.cc
+++ b/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_extensions.cc
@@ -28,7 +28,7 @@
         audio_level_id_(-1),
         absolute_sender_time_id_(-1) {}
 
-  int SendPacket(int channel, const void* data, size_t len) override {
+  int SendPacket(const void* data, size_t len) override {
     webrtc::RTPHeader header;
     if (parser_->Parse(reinterpret_cast<const uint8_t*>(data), len, &header)) {
       bool ok = true;
@@ -51,7 +51,7 @@
     return static_cast<int>(len);
   }
 
-  int SendRTCPPacket(int channel, const void* data, size_t len) override {
+  int SendRTCPPacket(const void* data, size_t len) override {
     return static_cast<int>(len);
   }
 
diff --git a/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_test.cc b/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_test.cc
index 236232b..9574646 100644
--- a/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_test.cc
+++ b/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_test.cc
@@ -63,7 +63,7 @@
     second_channel_ = voe_base_->CreateChannel();
     EXPECT_GE(second_channel_, 0);
 
-    transport_ = new LoopBackTransport(voe_network_);
+    transport_ = new LoopBackTransport(voe_network_, second_channel_);
     EXPECT_EQ(0, voe_network_->RegisterExternalTransport(second_channel_,
                                                          *transport_));