| Index: talk/media/base/videoengine_unittest.h
 | 
| diff --git a/talk/media/base/videoengine_unittest.h b/talk/media/base/videoengine_unittest.h
 | 
| index 9e6b227011abd36366c1b93289c1d4cdb4cd5300..1e79d7fa61606039dd8dafdd3ebd5878dffbd0d6 100644
 | 
| --- a/talk/media/base/videoengine_unittest.h
 | 
| +++ b/talk/media/base/videoengine_unittest.h
 | 
| @@ -469,7 +469,9 @@ class VideoMediaChannelTest : public testing::Test,
 | 
|      network_interface_.SetDestination(channel_.get());
 | 
|      channel_->SetInterface(&network_interface_);
 | 
|      media_error_ = cricket::VideoMediaChannel::ERROR_NONE;
 | 
| -    channel_->SetRecvCodecs(engine_.codecs());
 | 
| +    cricket::VideoRecvParameters parameters;
 | 
| +    parameters.codecs = engine_.codecs();
 | 
| +    channel_->SetRecvParameters(parameters);
 | 
|      EXPECT_TRUE(channel_->AddSendStream(DefaultSendStreamParams()));
 | 
|      video_capturer_.reset(CreateFakeVideoCapturer());
 | 
|      cricket::VideoFormat format(640, 480,
 | 
| @@ -530,9 +532,6 @@ class VideoMediaChannelTest : public testing::Test,
 | 
|      return SetOneCodec(cricket::VideoCodec(pt, name, w, h, fr, 0));
 | 
|    }
 | 
|    bool SetOneCodec(const cricket::VideoCodec& codec) {
 | 
| -    std::vector<cricket::VideoCodec> codecs;
 | 
| -    codecs.push_back(codec);
 | 
| -
 | 
|      cricket::VideoFormat capture_format(codec.width, codec.height,
 | 
|          cricket::VideoFormat::FpsToInterval(codec.framerate),
 | 
|          cricket::FOURCC_I420);
 | 
| @@ -546,10 +545,14 @@ class VideoMediaChannelTest : public testing::Test,
 | 
|  
 | 
|      bool sending = channel_->sending();
 | 
|      bool success = SetSend(false);
 | 
| -    if (success)
 | 
| -      success = channel_->SetSendCodecs(codecs);
 | 
| -    if (success)
 | 
| +    if (success) {
 | 
| +      cricket::VideoSendParameters parameters;
 | 
| +      parameters.codecs.push_back(codec);
 | 
| +      success = channel_->SetSendParameters(parameters);
 | 
| +    }
 | 
| +    if (success) {
 | 
|        success = SetSend(sending);
 | 
| +    }
 | 
|      return success;
 | 
|    }
 | 
|    bool SetSend(bool send) {
 | 
| @@ -860,9 +863,10 @@ class VideoMediaChannelTest : public testing::Test,
 | 
|    void GetStatsMultipleRecvStreams() {
 | 
|      cricket::FakeVideoRenderer renderer1, renderer2;
 | 
|      EXPECT_TRUE(SetOneCodec(DefaultCodec()));
 | 
| -    cricket::VideoOptions vmo;
 | 
| -    vmo.conference_mode.Set(true);
 | 
| -    EXPECT_TRUE(channel_->SetOptions(vmo));
 | 
| +    cricket::VideoSendParameters parameters;
 | 
| +    parameters.codecs.push_back(DefaultCodec());
 | 
| +    parameters.options.conference_mode.Set(true);
 | 
| +    EXPECT_TRUE(channel_->SetSendParameters(parameters));
 | 
|      EXPECT_TRUE(SetSend(true));
 | 
|      EXPECT_TRUE(channel_->AddRecvStream(
 | 
|          cricket::StreamParams::CreateLegacy(1)));
 | 
| @@ -908,9 +912,10 @@ class VideoMediaChannelTest : public testing::Test,
 | 
|      // Normal setup; note that we set the SSRC explicitly to ensure that
 | 
|      // it will come first in the senders map.
 | 
|      EXPECT_TRUE(SetOneCodec(DefaultCodec()));
 | 
| -    cricket::VideoOptions vmo;
 | 
| -    vmo.conference_mode.Set(true);
 | 
| -    EXPECT_TRUE(channel_->SetOptions(vmo));
 | 
| +    cricket::VideoSendParameters parameters;
 | 
| +    parameters.codecs.push_back(DefaultCodec());
 | 
| +    parameters.options.conference_mode.Set(true);
 | 
| +    EXPECT_TRUE(channel_->SetSendParameters(parameters));
 | 
|      EXPECT_TRUE(channel_->AddRecvStream(
 | 
|          cricket::StreamParams::CreateLegacy(kSsrc)));
 | 
|      EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_));
 | 
| @@ -975,8 +980,12 @@ class VideoMediaChannelTest : public testing::Test,
 | 
|  
 | 
|    // Test that we can set the bandwidth.
 | 
|    void SetSendBandwidth() {
 | 
| -    EXPECT_TRUE(channel_->SetMaxSendBandwidth(-1));  // <= 0 means unlimited.
 | 
| -    EXPECT_TRUE(channel_->SetMaxSendBandwidth(128 * 1024));
 | 
| +    cricket::VideoSendParameters parameters;
 | 
| +    parameters.codecs.push_back(DefaultCodec());
 | 
| +    parameters.max_bandwidth_bps = -1;  // <= 0 means unlimited.
 | 
| +    EXPECT_TRUE(channel_->SetSendParameters(parameters));
 | 
| +    parameters.max_bandwidth_bps = 128 * 1024;
 | 
| +    EXPECT_TRUE(channel_->SetSendParameters(parameters));
 | 
|    }
 | 
|    // Test that we can set the SSRC for the default send source.
 | 
|    void SetSendSsrc() {
 | 
| @@ -1082,33 +1091,13 @@ class VideoMediaChannelTest : public testing::Test,
 | 
|      EXPECT_EQ(789u, ssrc);
 | 
|    }
 | 
|  
 | 
| -  // Tests adding streams already exists returns false.
 | 
| -  void AddRecvStreamsAlreadyExist() {
 | 
| -    cricket::VideoOptions vmo;
 | 
| -    vmo.conference_mode.Set(true);
 | 
| -    EXPECT_TRUE(channel_->SetOptions(vmo));
 | 
| -
 | 
| -    EXPECT_FALSE(channel_->AddRecvStream(
 | 
| -        cricket::StreamParams::CreateLegacy(0)));
 | 
| -
 | 
| -    EXPECT_TRUE(channel_->AddRecvStream(
 | 
| -        cricket::StreamParams::CreateLegacy(1)));
 | 
| -    EXPECT_FALSE(channel_->AddRecvStream(
 | 
| -        cricket::StreamParams::CreateLegacy(1)));
 | 
| -
 | 
| -    EXPECT_TRUE(channel_->RemoveRecvStream(1));
 | 
| -    EXPECT_FALSE(channel_->AddRecvStream(
 | 
| -        cricket::StreamParams::CreateLegacy(0)));
 | 
| -    EXPECT_TRUE(channel_->AddRecvStream(
 | 
| -        cricket::StreamParams::CreateLegacy(1)));
 | 
| -  }
 | 
| -
 | 
|    // Tests setting up and configuring multiple incoming streams.
 | 
|    void AddRemoveRecvStreams() {
 | 
|      cricket::FakeVideoRenderer renderer1, renderer2;
 | 
| -    cricket::VideoOptions vmo;
 | 
| -    vmo.conference_mode.Set(true);
 | 
| -    EXPECT_TRUE(channel_->SetOptions(vmo));
 | 
| +    cricket::VideoSendParameters parameters;
 | 
| +    parameters.codecs.push_back(DefaultCodec());
 | 
| +    EXPECT_TRUE(channel_->SetSendParameters(parameters));
 | 
| +
 | 
|      // Ensure we can't set the renderer on a non-existent stream.
 | 
|      EXPECT_FALSE(channel_->SetRenderer(1, &renderer1));
 | 
|      EXPECT_FALSE(channel_->SetRenderer(2, &renderer2));
 | 
| @@ -1238,9 +1227,10 @@ class VideoMediaChannelTest : public testing::Test,
 | 
|    void SimulateConference() {
 | 
|      cricket::FakeVideoRenderer renderer1, renderer2;
 | 
|      EXPECT_TRUE(SetDefaultCodec());
 | 
| -    cricket::VideoOptions vmo;
 | 
| -    vmo.conference_mode.Set(true);
 | 
| -    EXPECT_TRUE(channel_->SetOptions(vmo));
 | 
| +    cricket::VideoSendParameters parameters;
 | 
| +    parameters.codecs.push_back(DefaultCodec());
 | 
| +    parameters.options.conference_mode.Set(true);
 | 
| +    EXPECT_TRUE(channel_->SetSendParameters(parameters));
 | 
|      EXPECT_TRUE(SetSend(true));
 | 
|      EXPECT_TRUE(channel_->SetRender(true));
 | 
|      EXPECT_TRUE(channel_->AddRecvStream(
 | 
| @@ -1758,10 +1748,10 @@ class VideoMediaChannelTest : public testing::Test,
 | 
|  
 | 
|    // Tests that we can send and receive frames with early receive.
 | 
|    void TwoStreamsSendAndUnsignalledRecv(const cricket::VideoCodec& codec) {
 | 
| -    cricket::VideoOptions vmo;
 | 
| -    vmo.conference_mode.Set(true);
 | 
| -    vmo.unsignalled_recv_stream_limit.Set(1);
 | 
| -    EXPECT_TRUE(channel_->SetOptions(vmo));
 | 
| +    cricket::VideoSendParameters parameters;
 | 
| +    parameters.options.conference_mode.Set(true);
 | 
| +    parameters.options.unsignalled_recv_stream_limit.Set(1);
 | 
| +    EXPECT_TRUE(channel_->SetSendParameters(parameters));
 | 
|      SetUpSecondStreamWithNoRecv();
 | 
|      // Test sending and receiving on first stream.
 | 
|      EXPECT_TRUE(channel_->SetRender(true));
 | 
| @@ -1788,65 +1778,6 @@ class VideoMediaChannelTest : public testing::Test,
 | 
|      EXPECT_EQ_WAIT(1, renderer2_.num_rendered_frames(), kTimeout);
 | 
|    }
 | 
|  
 | 
| -  // Tests that we cannot receive key frames with unsignalled recv disabled.
 | 
| -  void TwoStreamsSendAndFailUnsignalledRecv(const cricket::VideoCodec& codec) {
 | 
| -    cricket::VideoOptions vmo;
 | 
| -    vmo.conference_mode.Set(true);
 | 
| -    vmo.unsignalled_recv_stream_limit.Set(0);
 | 
| -    EXPECT_TRUE(channel_->SetOptions(vmo));
 | 
| -    SetUpSecondStreamWithNoRecv();
 | 
| -    // Test sending and receiving on first stream.
 | 
| -    EXPECT_TRUE(channel_->SetRender(true));
 | 
| -    Send(codec);
 | 
| -    EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout);
 | 
| -    rtc::Thread::Current()->ProcessMessages(100);
 | 
| -    EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout);
 | 
| -    EXPECT_EQ_WAIT(0, renderer2_.num_rendered_frames(), kTimeout);
 | 
| -    // Give a chance for the decoder to process before adding the receiver.
 | 
| -    rtc::Thread::Current()->ProcessMessages(10);
 | 
| -    // Test sending and receiving on second stream.
 | 
| -    EXPECT_TRUE(channel_->AddRecvStream(
 | 
| -        cricket::StreamParams::CreateLegacy(kSsrc + 2)));
 | 
| -    EXPECT_TRUE(channel_->SetRenderer(kSsrc + 2, &renderer2_));
 | 
| -    SendFrame();
 | 
| -    EXPECT_TRUE_WAIT(renderer_.num_rendered_frames() >= 1, kTimeout);
 | 
| -    EXPECT_EQ_WAIT(4, NumRtpPackets(), kTimeout);
 | 
| -    // We dont expect any frames here, because the key frame would have been
 | 
| -    // lost in the earlier packet. This is the case we want to solve with early
 | 
| -    // receive.
 | 
| -    EXPECT_EQ(0, renderer2_.num_rendered_frames());
 | 
| -  }
 | 
| -
 | 
| -  // Tests that we drop key frames when conference mode is disabled and we
 | 
| -  // receive rtp packets on unsignalled streams.
 | 
| -  void TwoStreamsSendAndFailUnsignalledRecvInOneToOne(
 | 
| -      const cricket::VideoCodec& codec) {
 | 
| -    cricket::VideoOptions vmo;
 | 
| -    vmo.conference_mode.Set(false);
 | 
| -    vmo.unsignalled_recv_stream_limit.Set(1);
 | 
| -    EXPECT_TRUE(channel_->SetOptions(vmo));
 | 
| -    SetUpSecondStreamWithNoRecv();
 | 
| -    // Test sending and receiving on first stream.
 | 
| -    EXPECT_TRUE(channel_->SetRender(true));
 | 
| -    Send(codec);
 | 
| -    EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout);
 | 
| -    // In one-to-one mode, we deliver frames to the default channel if there
 | 
| -    // is no registered recv channel for the ssrc.
 | 
| -    EXPECT_TRUE_WAIT(renderer_.num_rendered_frames() >= 1, kTimeout);
 | 
| -    // Give a chance for the decoder to process before adding the receiver.
 | 
| -    rtc::Thread::Current()->ProcessMessages(100);
 | 
| -    // Test sending and receiving on second stream.
 | 
| -    EXPECT_TRUE(channel_->AddRecvStream(
 | 
| -        cricket::StreamParams::CreateLegacy(kSsrc + 2)));
 | 
| -    EXPECT_TRUE(channel_->SetRenderer(kSsrc + 2, &renderer2_));
 | 
| -    SendFrame();
 | 
| -    EXPECT_TRUE_WAIT(renderer_.num_rendered_frames() >= 1, kTimeout);
 | 
| -    EXPECT_EQ_WAIT(4, NumRtpPackets(), kTimeout);
 | 
| -    // We dont expect any frames here, because the key frame would have been
 | 
| -    // delivered to default channel.
 | 
| -    EXPECT_EQ(0, renderer2_.num_rendered_frames());
 | 
| -  }
 | 
| -
 | 
|    // Tests that we drop key frames when conference mode is enabled and we
 | 
|    // receive rtp packets on unsignalled streams. Removal of a unsignalled recv
 | 
|    // stream is successful.
 | 
| 
 |