blob: 491af38f68e9e8ca864848db19ce6f2ac8a5bc20 [file] [log] [blame]
mandermo64e1a322016-10-18 08:47:51 -07001# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS. All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9from optparse import OptionParser
10import random
11import string
12import subprocess
13import sys
14import time
15
16from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
17
18def main():
19 parser = OptionParser()
20
21 parser.add_option('--devname', dest='devname', help='The device id')
22
23 parser.add_option(
24 '--videooutsave',
25 dest='videooutsave',
26 help='The path where to save the video out file on local computer')
27
28 parser.add_option(
29 '--videoout',
30 dest='videoout',
31 help='The path where to put the video out file')
32
33 parser.add_option(
34 '--videoout_width',
35 dest='videoout_width',
36 type='int',
37 help='The width for the video out file')
38
39 parser.add_option(
40 '--videoout_height',
41 dest='videoout_height',
42 type='int',
43 help='The height for the video out file')
44
45 parser.add_option(
46 '--videoin',
47 dest='videoin',
48 help='The path where to read input file instead of camera')
49
50 parser.add_option(
51 '--call_length',
52 dest='call_length',
53 type='int',
54 help='The length of the call')
55
56 (options, args) = parser.parse_args()
57
58 print (options, args)
59
60 devname = options.devname
61
62 videoin = options.videoin
63
64 videoout = options.videoout
65 videoout_width = options.videoout_width
66 videoout_height = options.videoout_height
67
68 videooutsave = options.videooutsave
69
70 call_length = options.call_length or 10
71
72 room = ''.join(random.choice(string.ascii_letters + string.digits)
73 for _ in range(8))
74
75 # Delete output video file.
76 if videoout:
mandermo007cdb52016-11-16 02:31:25 -080077 subprocess.check_call(['adb', '-s', devname, 'shell', 'rm', '-f',
mandermo64e1a322016-10-18 08:47:51 -070078 videoout])
79
80 device = MonkeyRunner.waitForConnection(2, devname)
81
82 extras = {
83 'org.appspot.apprtc.USE_VALUES_FROM_INTENT': True,
84 'org.appspot.apprtc.AUDIOCODEC': 'OPUS',
85 'org.appspot.apprtc.LOOPBACK': True,
86 'org.appspot.apprtc.VIDEOCODEC': 'VP8',
87 'org.appspot.apprtc.CAPTURETOTEXTURE': False,
88 'org.appspot.apprtc.CAMERA2': False,
89 'org.appspot.apprtc.ROOMID': room}
90
91 if videoin:
92 extras.update({'org.appspot.apprtc.VIDEO_FILE_AS_CAMERA': videoin})
93
94 if videoout:
95 extras.update({
96 'org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE': videoout,
97 'org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE_WIDTH': videoout_width,
98 'org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE_HEIGHT': videoout_height})
99
100 print extras
101
102 device.startActivity(data='https://appr.tc',
103 action='android.intent.action.VIEW',
104 component='org.appspot.apprtc/.ConnectActivity', extras=extras)
105
106 print 'Running a call for %d seconds' % call_length
107 for _ in xrange(call_length):
108 sys.stdout.write('.')
109 sys.stdout.flush()
110 time.sleep(1)
111 print '\nEnding call.'
112
113 # Press back to end the call. Will end on both sides.
114 device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)
115
116 if videooutsave:
117 time.sleep(2)
118
mandermo3e79dbd2016-11-02 09:19:45 -0700119 subprocess.check_call(['adb', '-s', devname, 'pull',
mandermo64e1a322016-10-18 08:47:51 -0700120 videoout, videooutsave])
121
122if __name__ == '__main__':
123 main()
124