mirror of
https://github.com/iperov/DeepFaceLive
synced 2025-07-16 10:03:42 -07:00
fix ffmpeg and FileSource error handling.
This commit is contained in:
parent
552b9d49f2
commit
e1aa8a82f1
6 changed files with 51 additions and 59 deletions
|
@ -24,8 +24,6 @@ class BackendConnectionData:
|
|||
self._weak_heap_refs = {}
|
||||
self._weak_heap_image_infos = {}
|
||||
|
||||
self._errors = []
|
||||
|
||||
self._uid = uid
|
||||
self._is_frame_reemitted = None
|
||||
|
||||
|
@ -76,9 +74,6 @@ class BackendConnectionData:
|
|||
return np.ndarray(shape, dtype=dtype, buffer=buffer)
|
||||
return None
|
||||
|
||||
def add_error(self, err : str):
|
||||
self._errors.append(err)
|
||||
|
||||
def get_uid(self) -> int: return self._uid
|
||||
|
||||
def get_is_frame_reemitted(self) -> Union[bool, None]: return self._is_frame_reemitted
|
||||
|
|
|
@ -112,7 +112,7 @@ class FileSourceWorker(BackendWorker):
|
|||
|
||||
def on_cs_input_paths(self, paths, prev_paths):
|
||||
state, cs = self.get_state(), self.get_control_sheet()
|
||||
cs.input_paths_error.set_error(None)
|
||||
cs.error.set_error(None)
|
||||
|
||||
input_type = state.input_type
|
||||
input_path = paths[0] if len(paths) != 0 else None
|
||||
|
@ -174,7 +174,7 @@ class FileSourceWorker(BackendWorker):
|
|||
cs.seek_begin.enable()
|
||||
cs.seek_end.enable()
|
||||
else:
|
||||
cs.input_paths_error.set_error(err)
|
||||
cs.error.set_error(err)
|
||||
cs.input_paths.set_paths(prev_paths, block_event=True)
|
||||
self.save_state()
|
||||
|
||||
|
@ -263,6 +263,9 @@ class FileSourceWorker(BackendWorker):
|
|||
cs.seek_backward.enable()
|
||||
cs.seek_forward.enable()
|
||||
|
||||
if pr.new_error is not None:
|
||||
cs.error.set_error(pr.new_error)
|
||||
|
||||
if pr.new_frame_idx is not None:
|
||||
cs.frame_index.set_number(pr.new_frame_idx, block_event=True)
|
||||
|
||||
|
@ -284,16 +287,11 @@ class FileSourceWorker(BackendWorker):
|
|||
bcd.set_frame_num(p_frame.frame_num)
|
||||
bcd.set_frame_fps(p_frame.fps)
|
||||
bcd.set_frame_timestamp(p_frame.timestamp)
|
||||
|
||||
bcd.set_frame_name(p_frame.name)
|
||||
|
||||
image = ImageProcessor(p_frame.image).to_uint8().get_image('HWC')
|
||||
|
||||
bcd.set_image(p_frame.name, image)
|
||||
|
||||
if p_frame.error is not None:
|
||||
bcd.add_error(p_frame.error)
|
||||
|
||||
self.stop_profile_timing()
|
||||
self.pending_bcd = bcd
|
||||
|
||||
|
@ -325,7 +323,7 @@ class Sheet:
|
|||
super().__init__()
|
||||
self.input_type = lib_csw.DynamicSingleSwitch.Client()
|
||||
self.input_paths = lib_csw.Paths.Client()
|
||||
self.input_paths_error = lib_csw.Error.Client()
|
||||
self.error = lib_csw.Error.Client()
|
||||
|
||||
self.target_width = lib_csw.Number.Client()
|
||||
self.fps = lib_csw.Number.Client()
|
||||
|
@ -348,7 +346,7 @@ class Sheet:
|
|||
super().__init__()
|
||||
self.input_type = lib_csw.DynamicSingleSwitch.Host()
|
||||
self.input_paths = lib_csw.Paths.Host()
|
||||
self.input_paths_error = lib_csw.Error.Host()
|
||||
self.error = lib_csw.Error.Host()
|
||||
|
||||
self.target_width = lib_csw.Number.Host()
|
||||
self.fps = lib_csw.Number.Host()
|
||||
|
|
|
@ -22,32 +22,32 @@ class QFileSource(QBackendPanel):
|
|||
def __init__(self, backend : FileSource):
|
||||
cs = backend.get_control_sheet()
|
||||
|
||||
q_input_type = self._q_input_type = QButtonCSWDynamicSingleSwitch(cs.input_type, horizontal=True, radio_buttons=True)
|
||||
q_input_paths = self._q_input_paths = QPathEditCSWPaths(cs.input_paths)
|
||||
q_input_paths_error = self._q_input_paths_error = QErrorCSWError(cs.input_paths_error)
|
||||
q_input_type = QButtonCSWDynamicSingleSwitch(cs.input_type, horizontal=True, radio_buttons=True)
|
||||
q_input_paths = QPathEditCSWPaths(cs.input_paths)
|
||||
q_error = QErrorCSWError(cs.error)
|
||||
|
||||
q_target_width_label = QLabelPopupInfo(label=L('@QFileSource.target_width'), popup_info_text=L('@QFileSource.help.target_width') )
|
||||
q_target_width = self._q_target_width = QSpinBoxCSWNumber(cs.target_width, reflect_state_widgets=[q_target_width_label])
|
||||
q_target_width = QSpinBoxCSWNumber(cs.target_width, reflect_state_widgets=[q_target_width_label])
|
||||
|
||||
q_fps_label = QLabelPopupInfo(label=L('@QFileSource.fps'), popup_info_text=L('@QFileSource.help.fps') )
|
||||
q_fps = self._q_fps = QSpinBoxCSWNumber(cs.fps, reflect_state_widgets=[q_fps_label])
|
||||
q_fps = QSpinBoxCSWNumber(cs.fps, reflect_state_widgets=[q_fps_label])
|
||||
|
||||
q_is_realtime_label = QLabelPopupInfo(label=L('@QFileSource.is_realtime'), popup_info_text=L('@QFileSource.help.is_realtime') )
|
||||
q_is_realtime = self._q_is_realtime = QCheckBoxCSWFlag(cs.is_realtime, reflect_state_widgets=[q_is_realtime_label])
|
||||
q_is_realtime = QCheckBoxCSWFlag(cs.is_realtime, reflect_state_widgets=[q_is_realtime_label])
|
||||
|
||||
q_is_autorewind_label = QLabelPopupInfo(label=L('@QFileSource.is_autorewind'))
|
||||
q_is_autorewind = self._q_is_autorewind = QCheckBoxCSWFlag(cs.is_autorewind, reflect_state_widgets=[q_is_autorewind_label])
|
||||
q_is_autorewind = QCheckBoxCSWFlag(cs.is_autorewind, reflect_state_widgets=[q_is_autorewind_label])
|
||||
|
||||
btn_size=(32,32)
|
||||
btn_color= '#E01010'
|
||||
btn_play = self._btn_play = QXPushButtonCSWSignal(cs.play, image=QXImageDB.play_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_pause = self._btn_pause = QXPushButtonCSWSignal(cs.pause, image=QXImageDB.pause_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_seek_backward = self._btn_seek_backward = QXPushButtonCSWSignal(cs.seek_backward, image=QXImageDB.play_back_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_seek_forward = self._btn_seek_forward = QXPushButtonCSWSignal(cs.seek_forward, image=QXImageDB.play_forward_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_seek_begin = self._btn_seek_begin = QXPushButtonCSWSignal(cs.seek_begin, image=QXImageDB.play_skip_back_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_seek_end = self._btn_seek_end = QXPushButtonCSWSignal(cs.seek_end, image=QXImageDB.play_skip_forward_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_play = QXPushButtonCSWSignal(cs.play, image=QXImageDB.play_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_pause = QXPushButtonCSWSignal(cs.pause, image=QXImageDB.pause_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_seek_backward = QXPushButtonCSWSignal(cs.seek_backward, image=QXImageDB.play_back_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_seek_forward = QXPushButtonCSWSignal(cs.seek_forward, image=QXImageDB.play_forward_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_seek_begin = QXPushButtonCSWSignal(cs.seek_begin, image=QXImageDB.play_skip_back_circle_outline(btn_color), button_size=btn_size )
|
||||
btn_seek_end = QXPushButtonCSWSignal(cs.seek_end, image=QXImageDB.play_skip_forward_circle_outline(btn_color), button_size=btn_size )
|
||||
|
||||
q_frame_slider = self._q_frame_slider = QSliderCSWNumbers(cs.frame_index, cs.frame_count)
|
||||
q_frame_slider = QSliderCSWNumbers(cs.frame_index, cs.frame_count)
|
||||
|
||||
grid_l = lib_qt.QXGridLayout(spacing=5)
|
||||
row = 0
|
||||
|
@ -68,7 +68,7 @@ class QFileSource(QBackendPanel):
|
|||
|
||||
main_l = lib_qt.QXVBoxLayout([q_input_type,
|
||||
q_input_paths,
|
||||
q_input_paths_error,
|
||||
q_error,
|
||||
grid_l
|
||||
], spacing=5)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue