Delete VideoReceiveStream channels in destructor.
R=stefan@webrtc.org BUG=1667 Review URL: https://webrtc-codereview.appspot.com/31909004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@7611 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
6de75ca3ed
commit
09cc686c8b
@ -2140,4 +2140,39 @@ TEST_F(EndToEndTest, NewReceiveStreamsRespectNetworkDown) {
|
|||||||
|
|
||||||
DestroyStreams();
|
DestroyStreams();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(pbos): Remove this regression test when VideoEngine is no longer used as
|
||||||
|
// a backend. This is to test that we hand channels back properly.
|
||||||
|
TEST_F(EndToEndTest, CanCreateAndDestroyManyVideoStreams) {
|
||||||
|
test::NullTransport transport;
|
||||||
|
scoped_ptr<Call> call(Call::Create(Call::Config(&transport)));
|
||||||
|
test::FakeDecoder fake_decoder;
|
||||||
|
test::FakeEncoder fake_encoder(Clock::GetRealTimeClock());
|
||||||
|
for (size_t i = 0; i < 100; ++i) {
|
||||||
|
VideoSendStream::Config send_config;
|
||||||
|
send_config.encoder_settings.encoder = &fake_encoder;
|
||||||
|
send_config.encoder_settings.payload_name = "FAKE";
|
||||||
|
send_config.encoder_settings.payload_type = 123;
|
||||||
|
|
||||||
|
VideoEncoderConfig encoder_config;
|
||||||
|
encoder_config.streams = test::CreateVideoStreams(1);
|
||||||
|
send_config.rtp.ssrcs.push_back(1);
|
||||||
|
VideoSendStream* send_stream =
|
||||||
|
call->CreateVideoSendStream(send_config, encoder_config);
|
||||||
|
call->DestroyVideoSendStream(send_stream);
|
||||||
|
|
||||||
|
VideoReceiveStream::Config receive_config;
|
||||||
|
receive_config.rtp.remote_ssrc = 1;
|
||||||
|
receive_config.rtp.local_ssrc = kReceiverLocalSsrc;
|
||||||
|
VideoReceiveStream::Decoder decoder;
|
||||||
|
decoder.decoder = &fake_decoder;
|
||||||
|
decoder.payload_type = 123;
|
||||||
|
decoder.payload_name = "FAKE";
|
||||||
|
receive_config.decoders.push_back(decoder);
|
||||||
|
VideoReceiveStream* receive_stream =
|
||||||
|
call->CreateVideoReceiveStream(receive_config);
|
||||||
|
call->DestroyVideoReceiveStream(receive_stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
@ -222,7 +222,6 @@ VideoReceiveStream::~VideoReceiveStream() {
|
|||||||
|
|
||||||
video_engine_base_->SetVoiceEngine(NULL);
|
video_engine_base_->SetVoiceEngine(NULL);
|
||||||
image_process_->Release();
|
image_process_->Release();
|
||||||
video_engine_base_->Release();
|
|
||||||
external_codec_->Release();
|
external_codec_->Release();
|
||||||
codec_->DeregisterDecoderObserver(channel_);
|
codec_->DeregisterDecoderObserver(channel_);
|
||||||
rtp_rtcp_->DeregisterReceiveChannelRtpStatisticsCallback(channel_,
|
rtp_rtcp_->DeregisterReceiveChannelRtpStatisticsCallback(channel_,
|
||||||
@ -233,6 +232,8 @@ VideoReceiveStream::~VideoReceiveStream() {
|
|||||||
network_->Release();
|
network_->Release();
|
||||||
render_->Release();
|
render_->Release();
|
||||||
rtp_rtcp_->Release();
|
rtp_rtcp_->Release();
|
||||||
|
video_engine_base_->DeleteChannel(channel_);
|
||||||
|
video_engine_base_->Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VideoReceiveStream::Start() {
|
void VideoReceiveStream::Start() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user