32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
from PySide6.QtCore import QObject, QThread, Signal
|
|
from ..core.base import BaseImageSource, BaseControlSource
|
|
|
|
|
|
class CameraController(QObject):
|
|
new_frame = Signal(object)
|
|
errorOccurred = Signal(str)
|
|
|
|
def __init__(self, image_source: BaseImageSource, control_source: BaseControlSource, parent=None):
|
|
super().__init__(parent)
|
|
self.image_source = image_source
|
|
self.control_source = control_source
|
|
|
|
self.camera_thread = QThread()
|
|
self.moveToThread(self.camera_thread)
|
|
|
|
self.image_source.moveToThread(self.camera_thread)
|
|
self.control_source.moveToThread(self.camera_thread)
|
|
|
|
self.image_source.new_frame.connect(self.new_frame)
|
|
self.image_source.errorOccurred.connect(self.errorOccurred)
|
|
self.control_source.errorOccurred.connect(self.errorOccurred)
|
|
|
|
def start(self):
|
|
self.camera_thread.start()
|
|
self.image_source.start()
|
|
|
|
def stop(self):
|
|
self.image_source.stop()
|
|
self.camera_thread.quit()
|
|
self.camera_thread.wait()
|