| from functools import partial |
|
|
| from facefusion import process_manager, state_manager |
| from facefusion.types import ErrorCode |
| from facefusion.workflows.core import clear, setup |
| from facefusion.workflows.to_video import analyse_video, extract_frames, finalize_video, merge_frames, process_disk_frames, process_memory_frames, restore_audio |
|
|
|
|
| def process(start_time : float) -> ErrorCode: |
| tasks =\ |
| [ |
| analyse_video, |
| clear, |
| setup |
| ] |
|
|
| if state_manager.get_item('workflow_strategy') == 'disk': |
| tasks.extend( |
| [ |
| extract_frames, |
| process_disk_frames, |
| merge_frames |
| ]) |
|
|
| if state_manager.get_item('workflow_strategy') == 'memory': |
| tasks.append(process_memory_frames) |
|
|
| tasks.extend( |
| [ |
| restore_audio, |
| partial(finalize_video, start_time), |
| clear |
| ]) |
| process_manager.start() |
|
|
| for task in tasks: |
| error_code = task() |
|
|
| if error_code > 0: |
| process_manager.end() |
| return error_code |
|
|
| process_manager.end() |
| return 0 |
|
|