diff --git a/src/video_engine/vie_channel_manager.cc b/src/video_engine/vie_channel_manager.cc index 208ce26319..d0fc416e0b 100644 --- a/src/video_engine/vie_channel_manager.cc +++ b/src/video_engine/vie_channel_manager.cc @@ -304,14 +304,9 @@ bool ViEChannelManager::CreateChannelObject(int channel_id, delete vie_channel; return false; } - - VideoCodec encoder; - vie_encoder->GetEncoder(encoder); - if (vie_channel->SetSendCodec(encoder) != 0) { - vie_encoder = NULL; - } - // Register the channel at the encoder. + // Need to call RegisterSendRtpRtcpModule before SetSendCodec since + // the SetSendCodec call use the default rtp/rtcp module. RtpRtcp* send_rtp_rtcp_module = vie_encoder->SendRtpRtcpModule(); if (vie_channel->RegisterSendRtpRtcpModule(*send_rtp_rtcp_module) != 0) { delete vie_channel; @@ -320,6 +315,12 @@ bool ViEChannelManager::CreateChannelObject(int channel_id, return false; } + VideoCodec encoder; + vie_encoder->GetEncoder(encoder); + if (vie_channel->SetSendCodec(encoder) != 0) { + vie_encoder = NULL; + } + // Store the channel, add it to the channel group and save the vie_encoder. channel_map_[channel_id] = vie_channel; vie_encoder_map_[channel_id] = vie_encoder;