Index: webrtc/video_engine/vie_channel_group.cc |
diff --git a/webrtc/video_engine/vie_channel_group.cc b/webrtc/video_engine/vie_channel_group.cc |
index 055e1c3a19553e011744323dae5fc7aea7280fa6..cb041bda2e250ae73c72ca822feff7848bdb4b22 100644 |
--- a/webrtc/video_engine/vie_channel_group.cc |
+++ b/webrtc/video_engine/vie_channel_group.cc |
@@ -193,9 +193,11 @@ bool ChannelGroup::CreateSendChannel(int channel_id, |
int engine_id, |
Transport* transport, |
int number_of_cores, |
- size_t max_rtp_streams, |
+ const std::vector<uint32_t>& ssrcs, |
bool disable_default_encoder) { |
- DCHECK_GT(max_rtp_streams, 0u); |
+ // TODO(pbos): Remove checks for empty ssrcs and add this check when there's |
+ // no base channel. |
+ // DCHECK(!ssrcs.empty()); |
rtc::scoped_ptr<ViEEncoder> vie_encoder( |
new ViEEncoder(channel_id, number_of_cores, *config_.get(), |
*process_thread_, pacer_.get(), bitrate_allocator_.get(), |
@@ -205,8 +207,8 @@ bool ChannelGroup::CreateSendChannel(int channel_id, |
} |
ViEEncoder* encoder = vie_encoder.get(); |
if (!CreateChannel(channel_id, engine_id, transport, number_of_cores, |
- vie_encoder.release(), max_rtp_streams, true, |
- disable_default_encoder)) { |
+ vie_encoder.release(), ssrcs.empty() ? 1 : ssrcs.size(), |
+ true, disable_default_encoder)) { |
return false; |
} |
ViEChannel* channel = channel_map_[channel_id]; |
@@ -214,14 +216,11 @@ bool ChannelGroup::CreateSendChannel(int channel_id, |
encoder->StartThreadsAndSetSharedMembers(channel->send_payload_router(), |
channel->vcm_protection_callback()); |
- // Register the ViEEncoder to get key frame requests for this channel. |
- unsigned int ssrc = 0; |
- int stream_idx = 0; |
- channel->GetLocalSSRC(stream_idx, &ssrc); |
- encoder_state_feedback_->AddEncoder(ssrc, encoder); |
- std::vector<uint32_t> ssrcs; |
- ssrcs.push_back(ssrc); |
- encoder->SetSsrcs(ssrcs); |
+ if (!ssrcs.empty()) { |
+ encoder_state_feedback_->AddEncoder(ssrcs, encoder); |
+ std::vector<uint32_t> first_ssrc(1, ssrcs[0]); |
+ encoder->SetSsrcs(first_ssrc); |
+ } |
return true; |
} |