Add StereoCodecAdapter classes
This CL is the step 1 for adding alpha channel support over the wire in webrtc.
- Add the footprint for adapter classes that wraps actual codecs.
- This CL does not add a webrtc::VideoFrame container that can carry alpha to
make the CL shorter for an easier review. Therefore, it exercises a code path
for when we receive no alpha input, just regular I420 frames.
- Unittest sends a video frame for encode/decode through these adapters and
checks the output PSNR.
- See https://webrtc-review.googlesource.com/c/src/+/7800 for the experimental
CL that gives an idea about how it will come together.
Design Doc: https://goo.gl/sFeSUT
Bug: webrtc:7671
Change-Id: I9d3be13647a0a958feceb8d7a9aa93852fc6a1fa
Reviewed-on: https://webrtc-review.googlesource.com/11841
Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20490}
diff --git a/media/engine/webrtcvideoengine_unittest.cc b/media/engine/webrtcvideoengine_unittest.cc
index 7fc5924..c3d3446 100644
--- a/media/engine/webrtcvideoengine_unittest.cc
+++ b/media/engine/webrtcvideoengine_unittest.cc
@@ -13,6 +13,8 @@
#include <memory>
#include <vector>
+#include "api/test/mock_video_decoder_factory.h"
+#include "api/test/mock_video_encoder_factory.h"
#include "api/video_codecs/sdp_video_format.h"
#include "api/video_codecs/video_decoder_factory.h"
#include "api/video_codecs/video_encoder.h"
@@ -863,44 +865,6 @@
ASSERT_EQ(1u, decoder_factory_->decoders().size());
}
-class MockVideoEncoderFactory : public webrtc::VideoEncoderFactory {
- public:
- MOCK_CONST_METHOD0(GetSupportedFormats,
- std::vector<webrtc::SdpVideoFormat>());
- MOCK_CONST_METHOD1(QueryVideoEncoder,
- CodecInfo(const webrtc::SdpVideoFormat&));
-
- // We need to proxy to a return type that is copyable.
- std::unique_ptr<webrtc::VideoEncoder> CreateVideoEncoder(
- const webrtc::SdpVideoFormat& format) {
- return std::unique_ptr<webrtc::VideoEncoder>(
- CreateVideoEncoderProxy(format));
- }
- MOCK_METHOD1(CreateVideoEncoderProxy,
- webrtc::VideoEncoder*(const webrtc::SdpVideoFormat&));
-
- MOCK_METHOD0(Die, void());
- ~MockVideoEncoderFactory() { Die(); }
-};
-
-class MockVideoDecoderFactory : public webrtc::VideoDecoderFactory {
- public:
- MOCK_CONST_METHOD0(GetSupportedFormats,
- std::vector<webrtc::SdpVideoFormat>());
-
- // We need to proxy to a return type that is copyable.
- std::unique_ptr<webrtc::VideoDecoder> CreateVideoDecoder(
- const webrtc::SdpVideoFormat& format) {
- return std::unique_ptr<webrtc::VideoDecoder>(
- CreateVideoDecoderProxy(format));
- }
- MOCK_METHOD1(CreateVideoDecoderProxy,
- webrtc::VideoDecoder*(const webrtc::SdpVideoFormat&));
-
- MOCK_METHOD0(Die, void());
- ~MockVideoDecoderFactory() { Die(); }
-};
-
TEST(WebRtcVideoEngineNewVideoCodecFactoryTest, NullFactories) {
std::unique_ptr<webrtc::VideoEncoderFactory> encoder_factory;
std::unique_ptr<webrtc::VideoDecoderFactory> decoder_factory;
@@ -911,8 +875,10 @@
TEST(WebRtcVideoEngineNewVideoCodecFactoryTest, EmptyFactories) {
// |engine| take ownership of the factories.
- MockVideoEncoderFactory* encoder_factory = new MockVideoEncoderFactory();
- MockVideoDecoderFactory* decoder_factory = new MockVideoDecoderFactory();
+ webrtc::MockVideoEncoderFactory* encoder_factory =
+ new webrtc::MockVideoEncoderFactory();
+ webrtc::MockVideoDecoderFactory* decoder_factory =
+ new webrtc::MockVideoDecoderFactory();
WebRtcVideoEngine engine(
(std::unique_ptr<webrtc::VideoEncoderFactory>(encoder_factory)),
(std::unique_ptr<webrtc::VideoDecoderFactory>(decoder_factory)));
@@ -928,8 +894,10 @@
// new factories.
TEST(WebRtcVideoEngineNewVideoCodecFactoryTest, Vp8) {
// |engine| take ownership of the factories.
- MockVideoEncoderFactory* encoder_factory = new MockVideoEncoderFactory();
- MockVideoDecoderFactory* decoder_factory = new MockVideoDecoderFactory();
+ webrtc::MockVideoEncoderFactory* encoder_factory =
+ new webrtc::MockVideoEncoderFactory();
+ webrtc::MockVideoDecoderFactory* decoder_factory =
+ new webrtc::MockVideoDecoderFactory();
WebRtcVideoEngine engine(
(std::unique_ptr<webrtc::VideoEncoderFactory>(encoder_factory)),
(std::unique_ptr<webrtc::VideoDecoderFactory>(decoder_factory)));