from typing import Optional, List, Dict import hashlib from facefusion.typing import Frame, Face FACES_CACHE : Dict[str, List[Face]] = {} def get_faces_cache(frame : Frame) -> Optional[List[Face]]: frame_hash = create_frame_hash(frame) if frame_hash in FACES_CACHE: return FACES_CACHE[frame_hash] return None def set_faces_cache(frame : Frame, faces : List[Face]) -> None: frame_hash = create_frame_hash(frame) if frame_hash: FACES_CACHE[frame_hash] = faces def clear_faces_cache() -> None: global FACES_CACHE FACES_CACHE = {} def create_frame_hash(frame : Frame) -> Optional[str]: return hashlib.sha1(frame.tobytes()).hexdigest() if frame.any() else None