Use external VideoDecoders in VideoReceiveStream.
Removes direct VideoCodec use from the new API, exposes VideoDecoders
through webrtc/video_decoder.h similar to VideoEncoders.
Also includes some preparation for wiring up external decoders in
WebRtcVideoEngine2 by adding AllocatedDecoders that specify whether they
were allocated internally or externally.
Additionally addresses a data race in VideoReceiver that was exposed with this change.
R=mflodman@webrtc.org, stefan@webrtc.org
TBR=pthatcher@webrtc.org
BUG=2854,1667
Review URL: https://webrtc-codereview.appspot.com/27829004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7560 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/test/call_test.cc b/webrtc/test/call_test.cc
index 4e7fa9a..126c716 100644
--- a/webrtc/test/call_test.cc
+++ b/webrtc/test/call_test.cc
@@ -99,23 +99,15 @@
void CallTest::CreateMatchingReceiveConfigs() {
assert(!send_config_.rtp.ssrcs.empty());
assert(receive_configs_.empty());
- assert(fake_decoders_.empty());
+ assert(allocated_decoders_.empty());
VideoReceiveStream::Config config;
- VideoCodec codec =
- test::CreateDecoderVideoCodec(send_config_.encoder_settings);
- config.codecs.push_back(codec);
config.rtp.local_ssrc = kReceiverLocalSsrc;
- if (send_config_.encoder_settings.encoder == &fake_encoder_) {
- config.external_decoders.resize(1);
- config.external_decoders[0].payload_type =
- send_config_.encoder_settings.payload_type;
- }
for (size_t i = 0; i < send_config_.rtp.ssrcs.size(); ++i) {
- if (send_config_.encoder_settings.encoder == &fake_encoder_) {
- FakeDecoder* decoder = new FakeDecoder();
- fake_decoders_.push_back(decoder);
- config.external_decoders[0].decoder = decoder;
- }
+ VideoReceiveStream::Decoder decoder =
+ test::CreateMatchingDecoder(send_config_.encoder_settings);
+ allocated_decoders_.push_back(decoder.decoder);
+ config.decoders.clear();
+ config.decoders.push_back(decoder);
config.rtp.remote_ssrc = send_config_.rtp.ssrcs[i];
receive_configs_.push_back(config);
}
@@ -150,7 +142,7 @@
for (size_t i = 0; i < receive_streams_.size(); ++i)
receiver_call_->DestroyVideoReceiveStream(receive_streams_[i]);
receive_streams_.clear();
- fake_decoders_.clear();
+ allocated_decoders_.clear();
}
const unsigned int CallTest::kDefaultTimeoutMs = 30 * 1000;