add record
This commit is contained in:
parent
3f2cb53ebf
commit
ca7c8f71df
@ -1,5 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
import struct
|
import struct
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import cupy as cp
|
import cupy as cp
|
||||||
import cv2
|
import cv2
|
||||||
@ -8,7 +9,7 @@ import zmq
|
|||||||
|
|
||||||
from config import PLAYBACK_SOCKET, VIDEO_WIDTH, VIDEO_HEIGHT, LIVE_SOCKET
|
from config import PLAYBACK_SOCKET, VIDEO_WIDTH, VIDEO_HEIGHT, LIVE_SOCKET
|
||||||
from nodes.Node import Node
|
from nodes.Node import Node
|
||||||
from utils.Msg import BMMsg, ImageArgMsg, KillMsg, SeqMetaMsg, SetPlayMode, SetDeviceConfigMsg
|
from utils.Msg import BMMsg, ImageArgMsg, KillMsg, SeqMetaMsg, SetPlayMode, SetDeviceConfigMsg, SetRecordMsg
|
||||||
from utils.RfFile import RfFrame, RfSequenceMeta
|
from utils.RfFile import RfFrame, RfSequenceMeta
|
||||||
from utils.RfMat import RfMat
|
from utils.RfMat import RfMat
|
||||||
|
|
||||||
@ -16,12 +17,15 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class Beamformer(Node):
|
class Beamformer(Node):
|
||||||
topics = [ImageArgMsg, SeqMetaMsg, SetPlayMode, SetDeviceConfigMsg]
|
topics = [ImageArgMsg, SeqMetaMsg, SetPlayMode, SetDeviceConfigMsg, SetRecordMsg]
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(Beamformer, self).__init__()
|
super(Beamformer, self).__init__()
|
||||||
self.arg = ImageArgMsg('', v1=1499)
|
self.arg = ImageArgMsg('', v1=1499)
|
||||||
self.seq_meta = None
|
self.seq_meta = None
|
||||||
|
self.record_enable = False
|
||||||
|
self.record_commit = None
|
||||||
|
self.record_path: Path | None = None
|
||||||
|
|
||||||
def process(self, data: RfMat):
|
def process(self, data: RfMat):
|
||||||
if data is None:
|
if data is None:
|
||||||
@ -62,6 +66,8 @@ class Beamformer(Node):
|
|||||||
encoder=encoder,
|
encoder=encoder,
|
||||||
sequence_id=sequence_id,
|
sequence_id=sequence_id,
|
||||||
), self.seq_meta)
|
), self.seq_meta)
|
||||||
|
if self.record_enable:
|
||||||
|
(self.record_path / mat.frame_meta.filename).write_bytes(mat.__bytes__())
|
||||||
|
|
||||||
if self.c.sub in socks and socks[self.c.sub] == zmq.POLLIN:
|
if self.c.sub in socks and socks[self.c.sub] == zmq.POLLIN:
|
||||||
msg = self.recv()
|
msg = self.recv()
|
||||||
@ -79,5 +85,13 @@ class Beamformer(Node):
|
|||||||
elif msg.value == 'playback':
|
elif msg.value == 'playback':
|
||||||
device_socket.disconnect(f"tcp://{LIVE_SOCKET}")
|
device_socket.disconnect(f"tcp://{LIVE_SOCKET}")
|
||||||
device_socket.connect(f"tcp://{PLAYBACK_SOCKET}")
|
device_socket.connect(f"tcp://{PLAYBACK_SOCKET}")
|
||||||
|
if isinstance(msg, SetRecordMsg):
|
||||||
|
self.record_enable = msg.enable
|
||||||
|
if msg.enable:
|
||||||
|
self.record_commit = msg.commit
|
||||||
|
self.seq_meta.commit = msg.commit
|
||||||
|
p = Path('/tmp/flandre_record') / self.seq_meta.name
|
||||||
|
p.mkdir(parents=True, exist_ok=True)
|
||||||
|
self.record_path = p
|
||||||
|
|
||||||
self.process(mat)
|
self.process(mat)
|
||||||
|
|||||||
@ -8,7 +8,7 @@ from PyQt6.QtWidgets import QMainWindow, QApplication, QFrame
|
|||||||
from Main import Ui_MainWindow
|
from Main import Ui_MainWindow
|
||||||
from utils.Msg import KillMsg, Msg, ImageArgMsg, SelectSeqMsg, SeqIdMinMax, MoveAxisMsg, SeqListMsg, SetBaseMsg, \
|
from utils.Msg import KillMsg, Msg, ImageArgMsg, SelectSeqMsg, SeqIdMinMax, MoveAxisMsg, SeqListMsg, SetBaseMsg, \
|
||||||
SeqMetaMsg, SetPlayMode, DeviceConnectedMsg, DeviceEnabledMsg, DeviceOnlineMsg, SetDeviceEnabledMsg, \
|
SeqMetaMsg, SetPlayMode, DeviceConnectedMsg, DeviceEnabledMsg, DeviceOnlineMsg, SetDeviceEnabledMsg, \
|
||||||
SetDeviceConnectedMsg, DeviceConfigListMsg, SetDeviceConfigMsg
|
SetDeviceConnectedMsg, DeviceConfigListMsg, SetDeviceConfigMsg, SetRecordMsg
|
||||||
from ZMQReceiver import ZMQReceiver
|
from ZMQReceiver import ZMQReceiver
|
||||||
from nodes.Node import Node
|
from nodes.Node import Node
|
||||||
from utils.RfFile import RfSequenceMeta
|
from utils.RfFile import RfSequenceMeta
|
||||||
@ -59,10 +59,13 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
|
|
||||||
def on_record(self):
|
def on_record(self):
|
||||||
if self.record:
|
if self.record:
|
||||||
|
self.p.send(SetRecordMsg(False))
|
||||||
self.record = False
|
self.record = False
|
||||||
self.b_record.setStyleSheet('')
|
self.b_record.setStyleSheet('')
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
if self.l_record_commit.text() != '':
|
||||||
|
self.p.send(SetRecordMsg(True, self.l_record_commit.text()))
|
||||||
self.record = True
|
self.record = True
|
||||||
self.b_record.setStyleSheet('background-color: red;')
|
self.b_record.setStyleSheet('background-color: red;')
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,7 @@ class BG(Enum):
|
|||||||
SetDeviceConfigMsg = auto()
|
SetDeviceConfigMsg = auto()
|
||||||
DeviceOnlineMsg = auto()
|
DeviceOnlineMsg = auto()
|
||||||
DeviceConfigListMsg = auto()
|
DeviceConfigListMsg = auto()
|
||||||
|
SetRecordMsg = auto()
|
||||||
|
|
||||||
|
|
||||||
class Msg:
|
class Msg:
|
||||||
@ -110,6 +111,12 @@ class DeviceOnlineMsg(BoolMsg):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass
|
||||||
|
class SetRecordMsg(Msg):
|
||||||
|
enable: bool
|
||||||
|
commit: str = ''
|
||||||
|
|
||||||
|
|
||||||
class SetDeviceConfigMsg(StrMsg):
|
class SetDeviceConfigMsg(StrMsg):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user