| Index: webrtc/examples/androidapp/start_loopback_stubbed_camera_saved_video_out.py
 | 
| diff --git a/webrtc/examples/androidapp/start_loopback_stubbed_camera_saved_video_out.py b/webrtc/examples/androidapp/start_loopback_stubbed_camera_saved_video_out.py
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..9427ccf90e1fd4215a2772f9e06f70deed88104d
 | 
| --- /dev/null
 | 
| +++ b/webrtc/examples/androidapp/start_loopback_stubbed_camera_saved_video_out.py
 | 
| @@ -0,0 +1,123 @@
 | 
| +# Copyright 2016 The WebRTC Project Authors. All rights reserved.
 | 
| +# Use of this source code is governed by a BSD-style license
 | 
| +# that can be found in the LICENSE file in the root of the source
 | 
| +# tree. An additional intellectual property rights grant can be found
 | 
| +# in the file PATENTS.  All contributing project authors may
 | 
| +# be found in the AUTHORS file in the root of the source tree.
 | 
| +
 | 
| +from optparse import OptionParser
 | 
| +import random
 | 
| +import string
 | 
| +import subprocess
 | 
| +import sys
 | 
| +import time
 | 
| +
 | 
| +from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
 | 
| +
 | 
| +def main():
 | 
| +  parser = OptionParser()
 | 
| +
 | 
| +  parser.add_option('--devname', dest='devname', help='The device id')
 | 
| +
 | 
| +  parser.add_option(
 | 
| +      '--videooutsave',
 | 
| +      dest='videooutsave',
 | 
| +      help='The path where to save the video out file on local computer')
 | 
| +
 | 
| +  parser.add_option(
 | 
| +      '--videoout',
 | 
| +      dest='videoout',
 | 
| +      help='The path where to put the video out file')
 | 
| +
 | 
| +  parser.add_option(
 | 
| +      '--videoout_width',
 | 
| +      dest='videoout_width',
 | 
| +      type='int',
 | 
| +      help='The width for the video out file')
 | 
| +
 | 
| +  parser.add_option(
 | 
| +      '--videoout_height',
 | 
| +      dest='videoout_height',
 | 
| +      type='int',
 | 
| +      help='The height for the video out file')
 | 
| +
 | 
| +  parser.add_option(
 | 
| +      '--videoin',
 | 
| +      dest='videoin',
 | 
| +      help='The path where to read input file instead of camera')
 | 
| +
 | 
| +  parser.add_option(
 | 
| +      '--call_length',
 | 
| +      dest='call_length',
 | 
| +      type='int',
 | 
| +      help='The length of the call')
 | 
| +
 | 
| +  (options, args) = parser.parse_args()
 | 
| +
 | 
| +  print (options, args)
 | 
| +
 | 
| +  devname = options.devname
 | 
| +
 | 
| +  videoin = options.videoin
 | 
| +
 | 
| +  videoout = options.videoout
 | 
| +  videoout_width = options.videoout_width
 | 
| +  videoout_height = options.videoout_height
 | 
| +
 | 
| +  videooutsave = options.videooutsave
 | 
| +
 | 
| +  call_length = options.call_length or 10
 | 
| +
 | 
| +  room = ''.join(random.choice(string.ascii_letters + string.digits)
 | 
| +      for _ in range(8))
 | 
| +
 | 
| +  # Delete output video file.
 | 
| +  if videoout:
 | 
| +    subprocess.Popen(['adb', '-s', devname, 'shell', 'rm',
 | 
| +        videoout])
 | 
| +
 | 
| +  device = MonkeyRunner.waitForConnection(2, devname)
 | 
| +
 | 
| +  extras = {
 | 
| +      'org.appspot.apprtc.USE_VALUES_FROM_INTENT': True,
 | 
| +      'org.appspot.apprtc.AUDIOCODEC': 'OPUS',
 | 
| +      'org.appspot.apprtc.LOOPBACK': True,
 | 
| +      'org.appspot.apprtc.VIDEOCODEC': 'VP8',
 | 
| +      'org.appspot.apprtc.CAPTURETOTEXTURE': False,
 | 
| +      'org.appspot.apprtc.CAMERA2': False,
 | 
| +      'org.appspot.apprtc.ROOMID': room}
 | 
| +
 | 
| +  if videoin:
 | 
| +    extras.update({'org.appspot.apprtc.VIDEO_FILE_AS_CAMERA': videoin})
 | 
| +
 | 
| +  if videoout:
 | 
| +    extras.update({
 | 
| +        'org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE': videoout,
 | 
| +        'org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE_WIDTH': videoout_width,
 | 
| +        'org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE_HEIGHT': videoout_height})
 | 
| +
 | 
| +  print extras
 | 
| +
 | 
| +  device.startActivity(data='https://appr.tc',
 | 
| +      action='android.intent.action.VIEW',
 | 
| +      component='org.appspot.apprtc/.ConnectActivity', extras=extras)
 | 
| +
 | 
| +  print 'Running a call for %d seconds' % call_length
 | 
| +  for _ in xrange(call_length):
 | 
| +    sys.stdout.write('.')
 | 
| +    sys.stdout.flush()
 | 
| +    time.sleep(1)
 | 
| +  print '\nEnding call.'
 | 
| +
 | 
| +  # Press back to end the call. Will end on both sides.
 | 
| +  device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)
 | 
| +
 | 
| +  if videooutsave:
 | 
| +    time.sleep(2)
 | 
| +
 | 
| +    subprocess.Popen(['adb', '-s', devname, 'pull',
 | 
| +        videoout, videooutsave])
 | 
| +
 | 
| +if __name__ == '__main__':
 | 
| +  main()
 | 
| +
 | 
| 
 |