Multiple cameras partially working

Change-Id: I27279ef2e3c302946fb25c2a0c5eb32e9279d6b2
diff --git a/person_detection/app.py b/person_detection/app.py
index 13e7abc..5e3a5c7 100644
--- a/person_detection/app.py
+++ b/person_detection/app.py
@@ -8,7 +8,7 @@
 if os.environ.get('CAMERA'):
     Camera = import_module('camera_' + os.environ['CAMERA']).Camera
 else:
-    #from camera import Camera
+    # from camera import Camera
     from person_detection import Camera
 
 # Raspberry Pi camera module (requires picamera package)
@@ -20,7 +20,7 @@
 @app.route('/')
 def index():
     """Video streaming home page."""
-    return render_template('index.html')
+    return render_template('index.html', devices=[0, 1])
 
 
 def gen(camera):
@@ -30,14 +30,17 @@
         yield (b'--frame\r\n'
                b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
 
-
-@app.route('/video_feed')
-def video_feed():
+@app.route('/video_feed/<device>')
+def video_feed(device):
     """Video streaming route. Put this in the src attribute of an img tag."""
-    camera = Camera(args)
+    global args
+    camera = Camera(int(device), args)
     return Response(gen(camera),
                     mimetype='multipart/x-mixed-replace; boundary=frame')
 
+def name_to_port(name):
+    return int(name)
+
 def build_argparser():
     parser = ArgumentParser(add_help=False)
     args = parser.add_argument_group('Options')
@@ -61,6 +64,7 @@
 
     return parser
 
+
 if __name__ == '__main__':
     args = build_argparser().parse_args()
     app.run(host='0.0.0.0', threaded=True)
diff --git a/person_detection/base_camera.py b/person_detection/base_camera.py
index 74b8f08..a479166 100644
--- a/person_detection/base_camera.py
+++ b/person_detection/base_camera.py
@@ -56,6 +56,7 @@
     frame = None  # current frame is stored here by background thread
     last_access = 0  # time of last client access to the camera
     event = CameraEvent()
+    port = 0 # default starting port offset
 
     def __init__(self):
         """Start the background camera thread if it isn't running yet."""
diff --git a/person_detection/person_detection.py b/person_detection/person_detection.py
index f5963fb..32d2bc2 100644
--- a/person_detection/person_detection.py
+++ b/person_detection/person_detection.py
@@ -43,7 +43,7 @@
 
 class Camera(BaseCamera):
 
-    def __init__(self, args):
+    def __init__(self, port, args):
         log.basicConfig(format="[ %(levelname)s ] %(message)s", level=log.INFO, stream=sys.stdout)
         model_xml = args.model
         model_bin = os.path.splitext(model_xml)[0] + ".bin"
@@ -66,7 +66,7 @@
             self.input_stream = 0
         elif args.input == 'gstreamer':
             # gst rtp sink
-            self.input_stream = 'udpsrc port=5000 caps = " application/x-rtp, encoding-name=JPEG,payload=26" ! rtpjpegdepay ! decodebin ! videoconvert ! appsink'
+            self.input_stream = 'udpsrc port=' + port + 'caps = " application/x-rtp, encoding-name=JPEG,payload=26" ! rtpjpegdepay ! decodebin ! videoconvert ! appsink'
             #input_stream = 'udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! decodebin ! videoconvert ! appsink'
         else:
             self.input_stream = args.input
@@ -78,6 +78,7 @@
         else:
             self.labels_map = None
 
+        self.port = port
         self.args = args
 
         super(Camera, self).__init__()
diff --git a/person_detection/templates/index.html b/person_detection/templates/index.html
index 26ab1e8..43a4c6b 100644
--- a/person_detection/templates/index.html
+++ b/person_detection/templates/index.html
@@ -4,6 +4,8 @@
   </head>
   <body>
     <h1>Person Detection - Aether Edge Application</h1>
-    <img src="{{ url_for('video_feed') }}">
+    {% for x in devices %}
+      <img src="{{ url_for('video_feed', device=x) }}">
+    {% endfor %}
   </body>
 </html>