|
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 |
|
|