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
11281cff8cd679728fe395f7f0203c05e763c0c789pbos@webrtc.org#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_android.h"
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <android/log.h>
14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <stdio.h>
15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
168d6e944bee3e0228ca0e52e23fabea8ed787d5ecandresp@webrtc.org#include "webrtc/modules/video_capture/video_capture_internal.h"
178d6e944bee3e0228ca0e52e23fabea8ed787d5ecandresp@webrtc.org#include "webrtc/modules/video_render/video_render_internal.h"
18281cff8cd679728fe395f7f0203c05e763c0c789pbos@webrtc.org#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h"
198d6e944bee3e0228ca0e52e23fabea8ed787d5ecandresp@webrtc.org#include "webrtc/video_engine/test/auto_test/interface/vie_autotest.h"
20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgint ViEAutoTestAndroid::RunAutotest(int testSelection, int subTestSelection,
22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                    void* window1, void* window2,
2381cd5ca677e30076888b865dc28b35ed293bb4bcfischman@webrtc.org                                    JavaVM* javaVM, void* env, void* context) {
24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  ViEAutoTest vieAutoTest(window1, window2);
25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  ViETest::Log("RunAutoTest(%d, %d)", testSelection, subTestSelection);
268d6e944bee3e0228ca0e52e23fabea8ed787d5ecandresp@webrtc.org  webrtc::SetCaptureAndroidVM(javaVM, static_cast<jobject>(context));
278d6e944bee3e0228ca0e52e23fabea8ed787d5ecandresp@webrtc.org  webrtc::SetRenderAndroidVM(javaVM);
28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_ANDROID_OPENSLES
29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  // voice engine calls into ADM directly
30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoiceEngine::SetAndroidObjects(javaVM, env, context);
31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif
32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  if (subTestSelection == 0) {
34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Run all selected test
35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    switch (testSelection) {
36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      case 0:
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        vieAutoTest.ViEStandardTest();
38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        break;
39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      case 1:
40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        vieAutoTest.ViEAPITest();
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        break;
42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      case 2:
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        vieAutoTest.ViEExtendedTest();
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        break;
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      case 3:
46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        vieAutoTest.ViELoopbackCall();
47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        break;
48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      default:
49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        break;
50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  }
52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  switch (testSelection) {
54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    case 0: // Specific standard test
55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      switch (subTestSelection) {
56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case 1: // base
57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViEBaseStandardTest();
58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case 2: // capture
61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViECaptureStandardTest();
62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case 3: // codec
65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViECodecStandardTest();
66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
680291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 6: // image process
69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViEImageProcessStandardTest();
70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
7201d8e222e75d3ccd4fbe1d7f4085cc2025a626cdfischman@webrtc.org#if 0  // vie_autotest_network.cc isn't actually pulled into the build at all!
730291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 7: // network
74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViENetworkStandardTest();
75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
7601d8e222e75d3ccd4fbe1d7f4085cc2025a626cdfischman@webrtc.org#endif
77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
780291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 8: // Render
79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViERenderStandardTest();
80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
820291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 9: // RTP/RTCP
83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViERtpRtcpStandardTest();
84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        default:
87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      }
89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      break;
90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    case 1:// specific API
92b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      switch (subTestSelection) {
93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case 1: // base
94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViEBaseAPITest();
95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case 2: // capture
98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViECaptureAPITest();
99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case 3: // codec
102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViECodecAPITest();
103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1050291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 6: // image process
106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViEImageProcessAPITest();
107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
10901d8e222e75d3ccd4fbe1d7f4085cc2025a626cdfischman@webrtc.org#if 0  // vie_autotest_network.cc isn't actually pulled into the build at all!
1100291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 7: // network
111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViENetworkAPITest();
112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
11301d8e222e75d3ccd4fbe1d7f4085cc2025a626cdfischman@webrtc.org#endif
114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1150291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 8: // Render
116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViERenderAPITest();
117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1190291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 9: // RTP/RTCP
120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViERtpRtcpAPITest();
121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
1220291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 10:
123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
125b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        default:
126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      }
128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      break;
129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    case 2:// specific extended
131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      switch (subTestSelection) {
132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case 1: // base
133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViEBaseExtendedTest();
134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case 2: // capture
137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViECaptureExtendedTest();
138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case 3: // codec
141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViECodecExtendedTest();
142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1440291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 6: // image process
145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViEImageProcessExtendedTest();
146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1480291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 7: // Render
149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViERenderExtendedTest();
150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1520291c803da147cf113e829562f281479be8f2c11mflodman@webrtc.org        case 8: // RTP/RTCP
153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          vieAutoTest.ViERtpRtcpExtendedTest();
154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        default:
157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org          break;
158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      }
159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      break;
160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    case 3:
162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      vieAutoTest.ViELoopbackCall();
163b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      break;
164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
165b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    default:
166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      break;
167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  return 0;
170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgint main(int argc, char** argv) {
173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  // TODO(leozwang): Add real tests here
174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  return 0;
175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
176