Exemplo n.º 1
0
 def deserialize(self, name, value):
     status = True
     self.filterchain_name = name
     lst_filter = value.get("lst_filter", [])
     self.default_media_name = value.get("default_media_name", None)
     self.filters = []
     index = 0
     # add default filter
     self.add_filter(Filter(keys.get_empty_filter_name()))
     for filter_to_ser in lst_filter:
         filter_name = filter_to_ser.get("filter_name", None)
         o_filter = self.resource.create_filter(filter_name, index)
         index += 1
         if not o_filter:
             log.print_function(
                 logger.warning,
                 "Cannot create filter %s, maybe it not exists." %
                 filter_name)
             continue
         status &= o_filter.deserialize(filter_to_ser)
         self.add_filter(o_filter)
     if status:
         log.print_function(logger.info,
                            "Deserialize filterchain %s success." % name)
     else:
         log.print_function(logger.warning,
                            "Deserialize filterchain %s failed." % name)
     return status
Exemplo n.º 2
0
def _create_python_code(mod, modname, cppcode):
    # param variable size
    p = {}
    pip = py_init_param
    pip_global = py_init_global_param
    py_notify = Filter().notify_output_observers
    image = np.zeros((1, 1), dtype=np.uint8)
    image_original = np.zeros((1, 1), dtype=np.uint8)
    dct_global_param = {}

    # help
    func = ext_tools.ext_function('help_' + modname, help_code(), [])
    mod.add_function(func)

    # __init__
    func = ext_tools.ext_function(
        'init_' + modname, init_code("void init()" in cppcode),
        ['p', 'pip', 'py_notify', 'dct_global_param', 'pip_global'])
    func.customize.add_support_code(params_code())
    func.customize.add_support_code(notify_code())
    mod.add_function(func)

    # configure
    if "void configure()" in cppcode:
        has_configure = True
        func = ext_tools.ext_function('config_' + modname, config_code(), [])
        func.customize.add_support_code(params_code())
        func.customize.add_support_code(cppcode)
        func.customize.add_support_code(notify_code())
        mod.add_function(func)
    else:
        has_configure = False

    # destroy
    if "void destroy()" in cppcode:
        has_destroy = True
        func = ext_tools.ext_function('destroy_' + modname, destroy_code(), [])
        mod.add_function(func)
    else:
        has_destroy = False

    # set original image
    func = ext_tools.ext_function('set_original_image_' + modname,
                                  set_original_image_code(),
                                  ['image_original'])
    mod.add_function(func)

    # set global params
    func = ext_tools.ext_function('set_global_params_' + modname,
                                  set_global_params_code(),
                                  ['dct_global_param'])
    mod.add_function(func)

    # execute
    # Get the size of parameter
    func = ext_tools.ext_function('exec_' + modname, execute_code(), ['image'])
    func.customize.add_support_code(params_code())
    func.customize.add_support_code(cppcode)
    func.customize.add_support_code(notify_code())
    mod.add_function(func)
Exemplo n.º 3
0
    def __init__(self,
                 filterchain_name,
                 serialize=None,
                 default_media_name=None):
        # to limit the infini import, we import in the init
        from resource import Resource

        self.resource = Resource()

        self.filters = []
        # {"filter_name":[observator,]}
        self.image_observers = {}
        self.filter_output_observers = []
        self.filterchain_name = filterchain_name
        self.original_image_observer = []
        self.dct_global_param = {}
        self.dct_media_param = {}
        # If starting filterchain with empty media_name, we take the default
        # media
        self.default_media_name = default_media_name

        if serialize:
            self.deserialize(filterchain_name, serialize)
        else:
            # add default filter
            self.add_filter(Filter(keys.get_empty_filter_name()))

        self.do_configure()