Playout video at constant frames per sec

Change-Id: Ia81412abe2b2ffb17151d490691625aa784ef4c0
diff --git a/person_detection/base_camera.py b/person_detection/base_camera.py
index 28ee57d..fd4d653 100644
--- a/person_detection/base_camera.py
+++ b/person_detection/base_camera.py
@@ -4,28 +4,38 @@
 class BaseCamera(object):
     process = {} # background process that reads frames from camera
     frame = {} # frame queue
+    last_frame = {}
 
-    def __init__(self, device=None, idle=False):
+    def __init__(self, device):
         """Start the background camera process if it isn't running yet."""
         self.device = device
+        BaseCamera.last_frame[self.device] = None
+
         if self.device not in BaseCamera.process:
             BaseCamera.process[self.device] = None
+
         if BaseCamera.process[self.device] is None:
 
-            self.frame[device] = Queue(100)
+            BaseCamera.frame[device] = Queue(100)
 
             # start background frame process
             BaseCamera.process[self.device] = Process(target=self._process, args=(self.device))
             BaseCamera.process[self.device].start()
 
             # wait until frames are available
-            _ = self.get_frame()
+            BaseCamera.last_frame[self.device] = self.get_frame()
 
     def get_frame(self):
         """Return the current camera frame."""
 
-        # blocks
-        return BaseCamera.frame[self.device].get(block=True)
+        if  BaseCamera.last_frame[self.device] is None:
+            BaseCamera.last_frame[self.device] = BaseCamera.frame[self.device].get(block=True)
+            return BaseCamera.last_frame[self.device]
+        elif not BaseCamera.frame[self.device].empty():
+            BaseCamera.last_frame[self.device] = BaseCamera.frame[self.device].get()
+            return BaseCamera.last_frame[self.device]
+        else:
+            return BaseCamera.last_frame[self.device]
 
     def frames(self):
         """"Generator that returns frames from the camera."""