from class BaseImageSource(QObject): frameReady = Signal(QPixmap) errorOccurred = Signal(str) def start(self): ... def stop(self): ... class BaseControlSource(QObject): errorOccurred = Signal(str) parameterChanged = Signal(str, object) def set_parameter(self, name: str, value): ... def get_parameter(self, name: str): ... def list_parameters(self) -> dict: ...