def __init__(self, mediaStreamDescriptor):
        try:
            # media descriptor holding input data format
            self._mediaStreamDescriptor = mediaStreamDescriptor

            # Get how data will be transferred
            if self._mediaStreamDescriptor.WhichOneof(
                    "data_transfer_properties") is None:
                self._contentTransferType = TransferType.BYTES
            elif self._mediaStreamDescriptor.HasField(
                    "shared_memory_buffer_transfer_properties"):
                self._contentTransferType = TransferType.REFERENCE
            elif self._mediaStreamDescriptor.HasField(
                    "shared_memory_segments_transfer_properties"):
                self._contentTransferType = TransferType.HANDLE

            # Setup if shared mem used
            if self._contentTransferType == TransferType.REFERENCE:
                # Create shared memory accessor specific to the client
                self._sharedMemoryManager = SharedMemoryManager(
                    name=self._mediaStreamDescriptor.
                    shared_memory_buffer_transfer_properties.handle_name,
                    size=self._mediaStreamDescriptor.
                    shared_memory_buffer_transfer_properties.length_bytes)
            else:
                self._sharedMemoryManager = None

        except:
            PrintGetExceptionDetails()
            raise
def get_detector_shared_manager(detector_type,
                                device="CPU",
                                precision="FP32",
                                init_shared_mem=True):
    try:
        if init_shared_mem:
            shared_manager = SharedMemoryManager(image_file_handle, shm_size)
        else:
            shared_manager = None
    except:
        logging.warn("Shared memory not present")
        raise

    if detector_type == "opencv":
        from ssd_object_detection import Detector

        detector = Detector(use_gpu=True, people_only=True)
    elif detector_type == "openvino":
        from ssd_object_detection_openvino import OpenVinoDetector

        detector = OpenVinoDetector(device_name=device)
    else:
        raise ValueError("Unknown detector type")

    return shared_manager, detector