From f354e1f587eb73eef8b77f5f20061f84b9f111c2 Mon Sep 17 00:00:00 2001 From: "braveyao@webrtc.org" Date: Wed, 20 Mar 2013 00:23:55 +0000 Subject: [PATCH] Add audio/video only option in apprtc ISSUE = issue 1507 TEST = Review URL: https://webrtc-codereview.appspot.com/1216007 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3692 4adac7df-926f-26a2-2b94-8c16560cd09d --- samples/js/apprtc/apprtc.py | 48 ++++++++++++++++++++++-------------- samples/js/apprtc/index.html | 2 +- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/samples/js/apprtc/apprtc.py b/samples/js/apprtc/apprtc.py index 19b270be27..4de7a05840 100644 --- a/samples/js/apprtc/apprtc.py +++ b/samples/js/apprtc/apprtc.py @@ -119,25 +119,34 @@ def on_message(room, user, message): new_message.put() logging.info('Saved message for user ' + user) -def make_media_constraints_by_resolution(min_re, max_re): - constraints = { 'optional': [], 'mandatory': {} } - if min_re: - min_sizes = min_re.split('x') - if len(min_sizes) == 2: - constraints['mandatory']['minWidth'] = min_sizes[0] - constraints['mandatory']['minHeight'] = min_sizes[1] - else: - logging.info('Ignored invalid min_re: ' + min_re); +def make_media_constraints(media, min_re, max_re): + video_constraints = { 'optional': [], 'mandatory': {} } + media_constraints = { 'video':video_constraints, 'audio':True } - if max_re: - max_sizes = max_re.split('x') - if len(max_sizes) == 2: - constraints['mandatory']['maxWidth'] = max_sizes[0] - constraints['mandatory']['maxHeight'] = max_sizes[1] - else: - logging.info('Ignored invalid max_re: ' + max_re); + # Media: audio:audio only; video:video only; (default):both. + if media.lower() == 'audio': + media_constraints['video'] = False + elif media.lower() == 'video': + media_constraints['audio'] = False - return constraints + if media.lower() != 'audio' : + if min_re: + min_sizes = min_re.split('x') + if len(min_sizes) == 2: + video_constraints['mandatory']['minWidth'] = min_sizes[0] + video_constraints['mandatory']['minHeight'] = min_sizes[1] + else: + logging.info('Ignored invalid min_re: ' + min_re); + if max_re: + max_sizes = max_re.split('x') + if len(max_sizes) == 2: + video_constraints['mandatory']['maxWidth'] = max_sizes[0] + video_constraints['mandatory']['maxHeight'] = max_sizes[1] + else: + logging.info('Ignored invalid max_re: ' + max_re); + media_constraints['video'] = video_constraints + + return media_constraints def make_pc_constraints(compat): constraints = { 'optional': [] } @@ -309,6 +318,7 @@ class MainPage(webapp2.RequestHandler): if hd_video.lower() == 'true': min_re = '1280x720' ts_pwd = self.request.get('tp') + media = self.request.get('media') # set compat to true by default. compat = 'true' if self.request.get('compat'): @@ -362,13 +372,13 @@ class MainPage(webapp2.RequestHandler): logging.info('Room ' + room_key + ' is full') return - room_link = base_url + '/?r=' + room_key + room_link = base_url + '?r=' + room_key room_link = append_url_arguments(self.request, room_link) token = create_channel(room, user, token_timeout) pc_config = make_pc_config(stun_server, turn_server, ts_pwd) pc_constraints = make_pc_constraints(compat) offer_constraints = make_offer_constraints(compat) - media_constraints = make_media_constraints_by_resolution(min_re, max_re) + media_constraints = make_media_constraints(media, min_re, max_re) template_values = {'token': token, 'me': user, 'room_key': room_key, diff --git a/samples/js/apprtc/index.html b/samples/js/apprtc/index.html index 10a93d9515..ebf35beaa9 100644 --- a/samples/js/apprtc/index.html +++ b/samples/js/apprtc/index.html @@ -160,7 +160,7 @@ // Call into getUserMedia via the polyfill (adapter.js). var constraints = {{ media_constraints|safe }}; try { - getUserMedia({'audio':true, 'video':constraints}, onUserMediaSuccess, + getUserMedia(constraints, onUserMediaSuccess, onUserMediaError); console.log("Requested access to local media with mediaConstraints:\n" + " \"" + JSON.stringify(constraints) + "\"");