Added a lock to start_preview and caught errors

This commit is contained in:
Richard Bowman 2019-04-08 14:05:29 +01:00
parent 24ded8de32
commit ec50d245ab

View file

@ -228,10 +228,17 @@ class StreamingCamera(BaseCamera):
def start_preview(self, fullscreen=True, window=None) -> bool: def start_preview(self, fullscreen=True, window=None) -> bool:
"""Start the on board GPU camera preview.""" """Start the on board GPU camera preview."""
logging.info("Starting the GPU preview")
self.start_stream_recording() self.start_stream_recording()
self.camera.start_preview(fullscreen=fullscreen, window=window) try:
self.state['preview_active'] = True with self.lock:
time.sleep(0.2) self.camera.start_preview(fullscreen=fullscreen, window=window)
self.state['preview_active'] = True
time.sleep(0.2)
except picamera.exc.PiCameraMMALError as e:
logging.error("Suppressed a MMALError in start_preview. Exception: {}".format(e))
except picamera.exc.PiCameraValueError as e:
logging.error("Suppressed a ValueError exception in start_preview. Exception: {}".format(e))
return True return True
def stop_preview(self) -> bool: def stop_preview(self) -> bool:
@ -367,6 +374,8 @@ class StreamingCamera(BaseCamera):
format='mjpeg', format='mjpeg',
quality=self.config['jpeg_quality'], quality=self.config['jpeg_quality'],
bitrate=-1, # RWB: disable bitrate control bitrate=-1, # RWB: disable bitrate control
# (bitrate control makes JPEG size less good as a focus
# metric)
splitter_port=splitter_port) splitter_port=splitter_port)
except picamera.exc.PiCameraAlreadyRecording: except picamera.exc.PiCameraAlreadyRecording:
logging.info("Error while starting preview: Recording already running.") logging.info("Error while starting preview: Recording already running.")