fix update preview bug (#1205)

* fix update preview bug

* fix update preview bug

* remove guard

* add is_vision_frame
This commit is contained in:
Harisreedhar
2026-07-27 17:34:17 +05:30
committed by GitHub
parent 7990faa38c
commit 66d4cad568
3 changed files with 9 additions and 6 deletions
+3 -3
View File
@@ -5,7 +5,7 @@ from typing import Optional, cast
import numpy
from facefusion import ffmpeg, ffprobe, frame_store
from facefusion import ffmpeg, ffprobe, frame_store, vision
from facefusion.common_helper import get_first, get_last
from facefusion.types import Fps, Resolution, VideoPoolSet, VideoReader, VideoWriter, VisionFrame, VisionFrameSet
@@ -105,14 +105,13 @@ def collect_video_frames(video_reader : VideoReader, frame_start : int, frame_en
for frame_number in range(video_reader.get('frame_number'), frame_end + 1):
vision_frame = read_video_frame(video_reader)
if numpy.any(vision_frame):
if vision.is_vision_frame(vision_frame):
frame_store.set_frame(reader_id, frame_number, vision_frame)
def close_video_reader(video_reader : VideoReader) -> None:
video_reader.get('process').kill()
video_reader.get('process').wait()
frame_store.clear_frames(video_reader.get('id'))
def get_writer(video_path : str, temp_video_fps : Fps, temp_video_resolution : Resolution, output_video_resolution : Resolution, output_video_fps : Fps) -> VideoWriter:
@@ -146,6 +145,7 @@ def close_video_writer(video_writer : VideoWriter) -> bool:
def clear_video_pool() -> None:
for video_reader in VIDEO_POOL_SET.get('reader').values():
close_video_reader(video_reader)
frame_store.clear_frames(video_reader.get('id'))
for video_writer in VIDEO_POOL_SET.get('writer').values():
close_video_writer(video_writer)
+4
View File
@@ -310,6 +310,10 @@ def create_empty_vision_frame() -> VisionFrame:
return numpy.zeros((1, 1, 3)).astype(numpy.uint8)
def is_vision_frame(vision_frame : VisionFrame) -> bool:
return numpy.ndim(vision_frame) == 3
def create_tile_frames(vision_frame : VisionFrame, size : Size) -> Tuple[List[VisionFrame], int, int]:
tile_width = size[0] - 2 * size[2]
pad_size_top = size[1] + size[2]
+2 -3
View File
@@ -142,8 +142,6 @@ def test_close_video_reader() -> None:
if is_linux() or is_macos():
assert video_reader.get('process').returncode == -9
assert get_frame_store(video_reader.get('id')) == {}
def test_get_writer() -> None:
target_path = get_test_example_file('target-240p-25fps.mp4')
@@ -186,8 +184,9 @@ def test_close_video_writer() -> None:
def test_clear_video_pool() -> None:
target_path = get_test_example_file('target-240p-25fps.mp4')
create_temp_directory(target_path)
video_reader = get_reader(target_path, 'read_video_frame')
video_reader = get_reader(target_path, 'select_video_frames')
video_writer = get_writer(target_path, 25.0, (426, 226), (426, 226), 25.0)
read_video_frames(video_reader, 0, 4)
write_video_frame(video_writer, read_video_frame(video_reader))
clear_video_pool()