Index: webrtc/video_engine/vie_channel.cc |
diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc |
index 61096b39630eacb83fa325e278fa2fed7796c491..2eb7a5c6d0ad5c61c8aacb6da8114ec912809137 100644 |
--- a/webrtc/video_engine/vie_channel.cc |
+++ b/webrtc/video_engine/vie_channel.cc |
@@ -347,9 +347,7 @@ void ViEChannel::UpdateHistogramsAtStopSend() { |
int32_t ViEChannel::SetSendCodec(const VideoCodec& video_codec, |
bool new_stream) { |
- if (!sender_) { |
- return 0; |
- } |
+ DCHECK(sender_); |
if (video_codec.codecType == kVideoCodecRED || |
video_codec.codecType == kVideoCodecULPFEC) { |
LOG_F(LS_ERROR) << "Not a valid send codec " << video_codec.codecType; |
@@ -571,6 +569,7 @@ int32_t ViEChannel::SetSendCodec(const VideoCodec& video_codec, |
} |
int32_t ViEChannel::SetReceiveCodec(const VideoCodec& video_codec) { |
+ DCHECK(!sender_); |
if (!vie_receiver_.SetReceiveCodec(video_codec)) { |
return -1; |
} |
@@ -604,6 +603,7 @@ int32_t ViEChannel::RegisterExternalDecoder(const uint8_t pl_type, |
VideoDecoder* decoder, |
bool buffered_rendering, |
int32_t render_delay) { |
+ DCHECK(!sender_); |
int32_t result; |
result = vcm_->RegisterExternalDecoder(decoder, pl_type, buffered_rendering); |
if (result != VCM_OK) { |
@@ -613,6 +613,7 @@ int32_t ViEChannel::RegisterExternalDecoder(const uint8_t pl_type, |
} |
int32_t ViEChannel::DeRegisterExternalDecoder(const uint8_t pl_type) { |
+ DCHECK(!sender_); |
VideoCodec current_receive_codec; |
int32_t result = 0; |
result = vcm_->ReceiveCodec(¤t_receive_codec); |
@@ -1368,20 +1369,18 @@ bool ViEChannel::Sending() { |
return rtp_rtcp_->Sending(); |
} |
-int32_t ViEChannel::StartReceive() { |
- if (StartDecodeThread() != 0) { |
- vie_receiver_.StopReceive(); |
- return -1; |
- } |
+void ViEChannel::StartReceive() { |
+ if (!sender_) |
+ StartDecodeThread(); |
vie_receiver_.StartReceive(); |
- return 0; |
} |
-int32_t ViEChannel::StopReceive() { |
+void ViEChannel::StopReceive() { |
vie_receiver_.StopReceive(); |
- StopDecodeThread(); |
- vcm_->ResetDecoder(); |
- return 0; |
+ if (!sender_) { |
+ StopDecodeThread(); |
+ vcm_->ResetDecoder(); |
+ } |
} |
int32_t ViEChannel::ReceivedRTPPacket(const void* rtp_packet, |
@@ -1530,8 +1529,6 @@ bool ViEChannel::ChannelDecodeThreadFunction(void* obj) { |
} |
bool ViEChannel::ChannelDecodeProcess() { |
- // TODO(pbos): Make sure the decoder thread doesn't run for send-only |
- // channels. |
vcm_->Decode(kMaxDecodeWaitTimeMs); |
return true; |
} |
@@ -1628,30 +1625,25 @@ RtpRtcp* ViEChannel::CreateRtpRtcpModule() { |
return RtpRtcp::CreateRtpRtcp(CreateRtpRtcpConfiguration()); |
} |
-int32_t ViEChannel::StartDecodeThread() { |
+void ViEChannel::StartDecodeThread() { |
+ DCHECK(!sender_); |
// Start the decode thread |
- if (decode_thread_) { |
- // Already started. |
- return 0; |
- } |
+ if (decode_thread_) |
+ return; |
decode_thread_ = ThreadWrapper::CreateThread(ChannelDecodeThreadFunction, |
this, "DecodingThread"); |
decode_thread_->Start(); |
decode_thread_->SetPriority(kHighestPriority); |
- return 0; |
} |
-int32_t ViEChannel::StopDecodeThread() { |
- if (!decode_thread_) { |
- return 0; |
- } |
+void ViEChannel::StopDecodeThread() { |
+ if (!decode_thread_) |
+ return; |
vcm_->TriggerDecoderShutdown(); |
decode_thread_->Stop(); |
decode_thread_.reset(); |
- |
- return 0; |
} |
int32_t ViEChannel::SetVoiceChannel(int32_t ve_channel_id, |