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
diff --git a/samples/js/apprtc/apprtc.py b/samples/js/apprtc/apprtc.py
index 19b270b..4de7a05 100644
--- a/samples/js/apprtc/apprtc.py
+++ b/samples/js/apprtc/apprtc.py
@@ -119,25 +119,34 @@
     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 @@
     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 @@
         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,