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
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)
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()