1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Use of this source code is governed by a BSD-style license
5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  that can be found in the LICENSE file in the root of the source
6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  tree. An additional intellectual property rights grant can be found
7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  in the file PATENTS.  All contributing project authors may
8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// vie_autotest_image_process.cc
13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//
14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Settings
16281cff8cd679728fe395f7f0203c05e763c0c789pbos@webrtc.org#include "webrtc/engine_configurations.h"
17281cff8cd679728fe395f7f0203c05e763c0c789pbos@webrtc.org#include "webrtc/video_engine/test/auto_test/interface/vie_autotest.h"
18281cff8cd679728fe395f7f0203c05e763c0c789pbos@webrtc.org#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h"
19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
20281cff8cd679728fe395f7f0203c05e763c0c789pbos@webrtc.org#include "webrtc/video_engine/test/libvietest/include/tb_capture_device.h"
21281cff8cd679728fe395f7f0203c05e763c0c789pbos@webrtc.org#include "webrtc/video_engine/test/libvietest/include/tb_interfaces.h"
22281cff8cd679728fe395f7f0203c05e763c0c789pbos@webrtc.org#include "webrtc/video_engine/test/libvietest/include/tb_video_channel.h"
23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass MyEffectFilter: public webrtc::ViEEffectFilter
25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic:
27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    MyEffectFilter() {}
28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ~MyEffectFilter() {}
30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
319d10769e109601915022fea44ec392645c3b0704wu@webrtc.org    virtual int Transform(int size,
329d10769e109601915022fea44ec392645c3b0704wu@webrtc.org                          unsigned char* frame_buffer,
339d10769e109601915022fea44ec392645c3b0704wu@webrtc.org                          int64_t ntp_time_ms,
349d10769e109601915022fea44ec392645c3b0704wu@webrtc.org                          unsigned int timestamp,
359d10769e109601915022fea44ec392645c3b0704wu@webrtc.org                          unsigned int width,
36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                          unsigned int height)
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // Black and white
399d10769e109601915022fea44ec392645c3b0704wu@webrtc.org        memset(frame_buffer + (2 * size) / 3, 0x7f, size / 3);
40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        return 0;
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid ViEAutoTest::ViEImageProcessStandardTest()
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //***************************************************************
47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //	Begin create/initialize WebRTC Video Engine for testing
48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //***************************************************************
49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int rtpPort = 6000;
50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Create VIE
51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TbInterfaces ViE("ViEImageProcessAPITest");
52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Create a video channel
53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecVP8);
54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Create a capture device
55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TbCaptureDevice tbCapture(ViE);
56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    tbCapture.ConnectTo(tbChannel.videoChannel);
58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    tbChannel.StartReceive(rtpPort);
59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    tbChannel.StartSend(rtpPort);
60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    MyEffectFilter effectFilter;
62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    RenderCaptureDeviceAndOutputStream(&ViE, &tbChannel, &tbCapture);
64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ViETest::Log("Capture device is renderered in Window 1");
66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ViETest::Log("Remote stream is renderered in Window 2");
675dee0551c0a2d86cf524e80c033936d3827a20c6stefan@webrtc.org    AutoTestSleep(kAutoTestSleepTimeMs);
68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //***************************************************************
70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //	Engine ready. Begin testing class
71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //***************************************************************
72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->RegisterCaptureEffectFilter(
75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, effectFilter));
76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ViETest::Log("Black and white filter registered for capture device, "
78b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                 "affects both windows");
795dee0551c0a2d86cf524e80c033936d3827a20c6stefan@webrtc.org    AutoTestSleep(kAutoTestSleepTimeMs);
80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->DeregisterCaptureEffectFilter(
82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId));
83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->RegisterRenderEffectFilter(
85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, effectFilter));
86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ViETest::Log("Remove capture effect filter, adding filter for incoming "
88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                 "stream");
89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ViETest::Log("Only Window 2 should be black and white");
905dee0551c0a2d86cf524e80c033936d3827a20c6stefan@webrtc.org    AutoTestSleep(kAutoTestSleepTimeMs);
91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
92b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.render->StopRender(tbCapture.captureId));
93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.render->RemoveRenderer(tbCapture.captureId));
94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int rtpPort2 = rtpPort + 100;
96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Create a video channel
97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TbVideoChannel tbChannel2(ViE, webrtc::kVideoCodecVP8);
98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    tbCapture.ConnectTo(tbChannel2.videoChannel);
100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    tbChannel2.StartReceive(rtpPort2);
101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    tbChannel2.StartSend(rtpPort2);
102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.render->AddRenderer(
104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel2.videoChannel, _window1, 1, 0.0, 0.0, 1.0, 1.0));
105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.render->StartRender(tbChannel2.videoChannel));
106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->DeregisterRenderEffectFilter(
107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel));
108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ViETest::Log("Local renderer removed, added new channel and rendering in "
110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                 "Window1.");
111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->RegisterCaptureEffectFilter(
113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, effectFilter));
114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ViETest::Log("Black and white filter registered for capture device, "
116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                 "affects both windows");
1175dee0551c0a2d86cf524e80c033936d3827a20c6stefan@webrtc.org    AutoTestSleep(kAutoTestSleepTimeMs);
118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->DeregisterCaptureEffectFilter(
120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId));
121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->RegisterSendEffectFilter(
123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, effectFilter));
124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
125b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ViETest::Log("Capture filter removed.");
126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ViETest::Log("Black and white filter registered for one channel, Window2 "
127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                 "should be black and white");
1285dee0551c0a2d86cf524e80c033936d3827a20c6stefan@webrtc.org    AutoTestSleep(kAutoTestSleepTimeMs);
129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->DeregisterSendEffectFilter(
131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel));
132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //***************************************************************
134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //	Testing finished. Tear down Video Engine
135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //***************************************************************
136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid ViEAutoTest::ViEImageProcessExtendedTest()
139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid ViEAutoTest::ViEImageProcessAPITest()
143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TbInterfaces ViE("ViEImageProcessAPITest");
145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecVP8);
146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TbCaptureDevice tbCapture(ViE);
147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    tbCapture.ConnectTo(tbChannel.videoChannel);
149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    MyEffectFilter effectFilter;
151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //
153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Capture effect filter
154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //
155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Add effect filter
156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->RegisterCaptureEffectFilter(
157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, effectFilter));
158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Add again -> error
159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_NE(0, ViE.image_process->RegisterCaptureEffectFilter(
160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, effectFilter));
161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->DeregisterCaptureEffectFilter(
162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId));
163022615bd918aec7671968ad2b873d1487365980cmflodman@webrtc.org    EXPECT_EQ(0, ViE.image_process->DeregisterCaptureEffectFilter(
164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId));
165022615bd918aec7671968ad2b873d1487365980cmflodman@webrtc.org
166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Non-existing capture device
167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_NE(0, ViE.image_process->RegisterCaptureEffectFilter(
168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, effectFilter));
169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //
171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Render effect filter
172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //
173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->RegisterRenderEffectFilter(
174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, effectFilter));
175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_NE(0, ViE.image_process->RegisterRenderEffectFilter(
176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, effectFilter));
177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->DeregisterRenderEffectFilter(
178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel));
179022615bd918aec7671968ad2b873d1487365980cmflodman@webrtc.org    EXPECT_EQ(0, ViE.image_process->DeregisterRenderEffectFilter(
180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel));
181b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
182b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Non-existing channel id
183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_NE(0, ViE.image_process->RegisterRenderEffectFilter(
184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, effectFilter));
185b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
186b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //
187b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Send effect filter
188b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //
189b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->RegisterSendEffectFilter(
190b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, effectFilter));
191b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_NE(0, ViE.image_process->RegisterSendEffectFilter(
192b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, effectFilter));
193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->DeregisterSendEffectFilter(
194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel));
195022615bd918aec7671968ad2b873d1487365980cmflodman@webrtc.org    EXPECT_EQ(0, ViE.image_process->DeregisterSendEffectFilter(
196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel));
197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_NE(0, ViE.image_process->RegisterSendEffectFilter(
198b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, effectFilter));
199b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
200b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //
201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Deflickering
202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //
203b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->EnableDeflickering(
204b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, true));
205b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_NE(0, ViE.image_process->EnableDeflickering(
206b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, true));
207b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->EnableDeflickering(
208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, false));
209b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_NE(0, ViE.image_process->EnableDeflickering(
210b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, false));
211b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_NE(0, ViE.image_process->EnableDeflickering(
212b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, true));
213b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
214b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //
215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Color enhancement
216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //
217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->EnableColorEnhancement(
218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, false));
219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->EnableColorEnhancement(
220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, true));
221b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_EQ(0, ViE.image_process->EnableColorEnhancement(
222b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbChannel.videoChannel, false));
223b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EXPECT_NE(0, ViE.image_process->EnableColorEnhancement(
224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        tbCapture.captureId, true));
225b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
226