in awstreamer/gst_pipeline/stream_graph.py [0:0]
def configure(self, k, v):
'''
Configure plugin k with values from dictionary v
'''
if k in list(self.keys()) and isinstance(v, dict):
config_params = v.keys()
plugin = self[k]
# Set linkable property
if "linkable" in v:
logger.info("Setting property 'linkable' for plugin '%s' to a value: %s" % (k, v["linkable"]))
self.get(k).linkable = v["linkable"]
# Set enabled property
if "enabled" in v:
logger.info("Setting property 'enabled' for plugin '%s' to a value: %s" % (k, v["enabled"]))
self.get(k).enabled = v["enabled"]
# Connect signals
if "signals" in v:
logger.info("signals:")
for signal, args in v["signals"].items():
logger.info("Connecting signal '%s' for plugin '%s' with args: %s" % (signal, k, args))
self[k].connect(signal, *args)
# Add probes
if "probes" in v:
logger.info("probes:")
for pad_name, callback in v["probes"].items():
logger.info("Connecting buffer probe for plugin '%s' to the pad: %s" % (k, pad_name))
pad = plugin.get_static_pad(pad_name)
if not pad:
logger.error("Unable to get %s pad of %s\n" % (pad_name, k))
else:
pad.add_probe(Gst.PadProbeType.BUFFER, self.callbacks["buffer_probe_callback"], callback)
# Set plug-in properties
if plugin is not None:
props = plugin.list_properties()
for p in props:
if p.name == "name":
continue
if p.name in config_params:
logger.info("Setting property '%s' for plugin '%s' to a value: %s" % (p.name, k, v[p.name]))
if p.name == "caps" and isinstance(v[p.name], str):
caps = Gst.caps_from_string(v[p.name])
plugin.set_property(p.name, caps)
else:
plugin.set_property(p.name, v[p.name])