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/encoder_settings.cc b/webrtc/test/encoder_settings.cc
index 0eeb0b9..db064bb 100644
--- a/webrtc/test/encoder_settings.cc
+++ b/webrtc/test/encoder_settings.cc
@@ -12,8 +12,8 @@
#include <assert.h>
#include <string.h>
-#include "webrtc/video_encoder.h"
-#include "webrtc/video_engine/vie_defines.h"
+#include "webrtc/test/fake_decoder.h"
+#include "webrtc/video_decoder.h"
namespace webrtc {
namespace test {
@@ -53,33 +53,17 @@
return stream_settings;
}
-VideoCodec CreateDecoderVideoCodec(
+VideoReceiveStream::Decoder CreateMatchingDecoder(
const VideoSendStream::Config::EncoderSettings& encoder_settings) {
- VideoCodec codec;
- memset(&codec, 0, sizeof(codec));
-
- codec.plType = encoder_settings.payload_type;
- strcpy(codec.plName, encoder_settings.payload_name.c_str());
+ VideoReceiveStream::Decoder decoder;
+ decoder.payload_type = encoder_settings.payload_type;
+ decoder.payload_name = encoder_settings.payload_name;
if (encoder_settings.payload_name == "VP8") {
- codec.codecType = kVideoCodecVP8;
- } else if (encoder_settings.payload_name == "H264") {
- codec.codecType = kVideoCodecH264;
+ decoder.decoder = VideoDecoder::Create(VideoDecoder::kVp8);
} else {
- codec.codecType = kVideoCodecGeneric;
+ decoder.decoder = new FakeDecoder();
}
-
- if (codec.codecType == kVideoCodecVP8) {
- codec.codecSpecific.VP8 = VideoEncoder::GetDefaultVp8Settings();
- } else if (codec.codecType == kVideoCodecH264) {
- codec.codecSpecific.H264 = VideoEncoder::GetDefaultH264Settings();
- }
-
- codec.width = 320;
- codec.height = 180;
- codec.startBitrate = codec.minBitrate = codec.maxBitrate = 300;
-
- return codec;
+ return decoder;
}
-
} // namespace test
} // namespace webrtc