diff --git a/src/robot_interface/core/config.py b/src/robot_interface/core/config.py index 8d4295d..a07e36e 100644 --- a/src/robot_interface/core/config.py +++ b/src/robot_interface/core/config.py @@ -68,7 +68,7 @@ class VideoConfig(object): ): self.camera_index = get_config(camera_index, "VIDEO__CAMERA_INDEX", 0, int) self.resolution = get_config(resolution, "VIDEO__RESOLUTION", 2, int) - self.color_space = get_config(color_space, "VIDEO__COLOR_SPACE", 11, int) + self.color_space = get_config(color_space, "VIDEO__COLOR_SPACE", 13, int) self.fps = get_config(fps, "VIDEO__FPS", 15, int) self.stream_name = get_config(stream_name, "VIDEO__STREAM_NAME", "Pepper Video") self.image_buffer = get_config(image_buffer, "VIDEO__IMAGE_BUFFER", 6, int) diff --git a/src/robot_interface/endpoints/video_sender.py b/src/robot_interface/endpoints/video_sender.py index bd2b12e..0777335 100644 --- a/src/robot_interface/endpoints/video_sender.py +++ b/src/robot_interface/endpoints/video_sender.py @@ -9,6 +9,8 @@ import zmq import threading import logging +import struct + from robot_interface.endpoints.socket_base import SocketBase from robot_interface.state import state from robot_interface.core.config import settings @@ -26,7 +28,7 @@ class VideoSender(SocketBase): """ def __init__(self, zmq_context, port=settings.agent_settings.video_sender_port): super(VideoSender, self).__init__("video") - self.create_socket(zmq_context, zmq.PUB, port, [(zmq.CONFLATE,1)]) + self.create_socket(zmq_context, zmq.PUB, port, [(zmq.SNDHWM,3)]) def start_video_rcv(self): """ @@ -59,10 +61,23 @@ class VideoSender(SocketBase): :param vid_stream_name: The name of a camera subscription on the video service object vid_service :type vid_stream_name: str """ - while not state.exit_event.is_set(): - try: - img = vid_service.getImageRemote(vid_stream_name) - #Possibly limit images sent if queuing issues arise - self.socket.send(img[settings.video_config.image_buffer]) - except: - logging.warn("Failed to retrieve video image from robot.") + try: + while not state.exit_event.is_set(): + try: + img = vid_service.getImageRemote(vid_stream_name) + if img is not None: + raw_data = img[6] + width = img[0] + height = img[1] + + width_bytes = struct.pack('