real time face swap and one-click video deepfake with only a single image
This report summarizes scanner evidence for hacksider/Deep-Live-Cam, a Python project with 96,965 GitHub stars. SynthScan examined 10,452 lines of code across 61 source files, recording 261 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 50.1 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 80 finding(s).
Are imports declared and package/API names verified? 5 finding(s).
Are wrappers, guards, and repeated structures necessary? 208 finding(s).
Which changes need focused human review? 261 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 261 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | run.py | 43 | except ImportError: | CODE |
| HIGH | run.py | 46 | except FileNotFoundError: | CODE |
| HIGH | run.py | 31 | except (OSError, AttributeError): | CODE |
| HIGH | run.py | 89 | except OSError: | CODE |
| HIGH | benchmark_pipeline.py | 85 | except queue.Empty: | CODE |
| HIGH | benchmark_pipeline.py | 89 | except queue.Full: | CODE |
| HIGH | tests/test_ui_live_preview.py | 194 | except queue.Empty: | CODE |
| HIGH | modules/ui.py | 339 | except OSError: | CODE |
| HIGH | modules/ui.py | 376 | except FileNotFoundError: | CODE |
| HIGH | modules/ui.py | 378 | except (OSError, json.JSONDecodeError): | CODE |
| HIGH | modules/ui.py | 1688 | except Exception: | CODE |
| HIGH | modules/ui.py | 372 | except (TypeError, ValueError): | CODE |
| HIGH | modules/ui.py | 1391 | except Exception: | CODE |
| HIGH | modules/ui.py | 1415 | except Exception: | CODE |
| HIGH | modules/ui.py | 917 | except OSError: | CODE |
| HIGH | modules/ui.py | 1160 | except queue.Empty: | CODE |
| HIGH | modules/ui.py | 1164 | except queue.Full: | CODE |
| HIGH | modules/ui.py | 1318 | except queue.Empty: | CODE |
| HIGH | modules/ui.py | 1322 | except queue.Full: | CODE |
| HIGH | modules/model_downloader.py | 127 | except OSError: | CODE |
| HIGH | modules/model_downloader.py | 87 | except OSError: | CODE |
| HIGH | modules/gpu_processing.py | 48 | except Exception: | CODE |
| HIGH | modules/gpu_processing.py | 108 | except cv2.error: | CODE |
| HIGH | modules/gpu_processing.py | 136 | except cv2.error: | CODE |
| HIGH | modules/gpu_processing.py | 173 | except cv2.error: | CODE |
| HIGH | modules/gpu_processing.py | 220 | except cv2.error: | CODE |
| HIGH | modules/gpu_processing.py | 245 | except cv2.error: | CODE |
| HIGH | modules/gpu_processing.py | 271 | except cv2.error: | CODE |
| HIGH | modules/utilities.py | 58 | except ( | CODE |
| HIGH | modules/processors/frame/face_enhancer.py | 165 | except ImportError: | CODE |
| HIGH | modules/processors/frame/core.py | 406 | except Exception: | CODE |
| HIGH | modules/processors/frame/core.py | 318 | except Exception: | CODE |
| HIGH | modules/processors/frame/_onnx_enhancer.py | 89 | except Exception: | CODE |
| HIGH | modules/processors/frame/face_masking.py | 503 | except Exception as e: | CODE |
| HIGH | modules/processors/frame/face_swapper.py | 310 | except ImportError: | CODE |
| HIGH | modules/processors/frame/face_swapper.py | 1233 | except IndexError as idx_e: | CODE |
| HIGH | modules/processors/frame/face_swapper.py | 1295 | except Exception as e: | CODE |
| HIGH | modules/processors/frame/face_swapper.py | 1489 | except IndexError: | CODE |
| HIGH | modules/processors/frame/face_swapper.py | 123 | except Exception: | CODE |
| HIGH | modules/processors/frame/face_swapper.py | 378 | except Exception: | CODE |
| HIGH | modules/processors/frame/face_swapper.py | 703 | except cv2.error: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | modules/ui.py | 86 | # ─── constants ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 110 | # ─── modern dark stylesheet ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 257 | # ─── image utilities ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 313 | # ─── persistence ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 382 | # ─── thread-safe status bridge ─────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 398 | # ─── public API ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 428 | # ─── camera enumeration (unchanged from tk version) ────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 458 | # ─── main window ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 541 | # ── image row ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 595 | # ── options card ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 663 | # ── sliders card ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 704 | # ── action row ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 727 | # ── camera card ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 834 | # ── slot handlers ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 1080 | # ─── preview window (still-image / video scrub) ────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 1137 | # ─── webcam preview window ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 1431 | # ─── mapper dialogs (image/video + live) ──────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 1678 | # ─── entry point ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | modules/ui.py | 217 | # ─── module-level state ─────────────────────────────────────────────────── | STRING |
| MEDIUM⚡ | modules/gpu_processing.py | 52 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | modules/gpu_processing.py | 54 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 84 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 114 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 116 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 142 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 181 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 183 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 226 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 228 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 251 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 253 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 277 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/gpu_processing.py | 279 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/onnx_optimize.py | 102 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/onnx_optimize.py | 104 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/onnx_optimize.py | 214 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/onnx_optimize.py | 220 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/onnx_optimize.py | 356 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/onnx_optimize.py | 358 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/onnx_optimize.py | 431 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/onnx_optimize.py | 442 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/onnx_optimize.py | 536 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/onnx_optimize.py | 538 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | modules/processors/frame/face_swapper.py | 1108 | # ========================== | COMMENT |
| MEDIUM | modules/processors/frame/face_swapper.py | 1110 | # ========================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | modules/face_analyser.py | 245 | except Exception as e: # pragma: no cover - never break the swap | CODE |
| MEDIUM | modules/face_analyser.py | 246 | print(f"Error computing 2d106 landmarks: {e}") | CODE |
| MEDIUM | modules/ui.py | 440 | print(f"Error detecting cameras: {exc}") | CODE |
| LOW | modules/ui.py | 439 | except Exception as exc: | CODE |
| LOW | modules/ui.py | 914 | except Exception: | CODE |
| LOW | modules/ui.py | 923 | except Exception as exc: | CODE |
| LOW | modules/ui.py | 1391 | except Exception: | CODE |
| LOW | modules/ui.py | 1415 | except Exception: | CODE |
| LOW | modules/ui.py | 1688 | except Exception: | CODE |
| LOW | modules/__init__.py | 19 | except Exception: | CODE |
| LOW | modules/__init__.py | 37 | except Exception: | CODE |
| MEDIUM | modules/__init__.py | 13 | def imread_unicode(path, flags=cv2.IMREAD_COLOR): | CODE |
| MEDIUM | modules/__init__.py | 27 | def imwrite_unicode(path, img, params=None): | CODE |
| LOW | modules/core.py | 234 | except Exception as e: | CODE |
| MEDIUM | modules/core.py | 235 | print("Error copying file:", str(e)) | CODE |
| LOW⚡ | modules/gpu_processing.py | 48 | except Exception: | CODE |
| LOW | modules/platform_info.py | 26 | except Exception: | CODE |
| LOW | modules/platform_info.py | 34 | except Exception: | CODE |
| MEDIUM | modules/platform_info.py | 22 | def _detect_torch_cuda() -> bool: | CODE |
| MEDIUM | modules/platform_info.py | 30 | def _detect_onnx_providers() -> List[str]: | CODE |
| LOW | modules/utilities.py | 36 | except Exception as error: | CODE |
| LOW | modules/utilities.py | 354 | except Exception: | CODE |
| LOW | modules/video_capture.py | 72 | except Exception: | CODE |
| LOW | modules/video_capture.py | 109 | except Exception as e: | CODE |
| LOW | modules/video_capture.py | 155 | except Exception: | CODE |
| LOW | modules/onnx_optimize.py | 129 | except Exception: | CODE |
| LOW | modules/processors/frame/face_enhancer.py | 112 | except Exception as e: | CODE |
| LOW | modules/processors/frame/face_enhancer.py | 375 | except Exception as e: | CODE |
| LOW | modules/processors/frame/core.py | 71 | except Exception as e: | CODE |
| LOW | modules/processors/frame/core.py | 81 | except Exception as e: | CODE |
| LOW | modules/processors/frame/core.py | 106 | except Exception as e: | CODE |
| MEDIUM | modules/processors/frame/core.py | 107 | print(f"Error processing frame: {e}") | CODE |
| LOW | modules/processors/frame/core.py | 159 | except Exception as e: | CODE |
| LOW | modules/processors/frame/core.py | 312 | except Exception as e: | CODE |
| LOW | modules/processors/frame/core.py | 318 | except Exception: | CODE |
| LOW | modules/processors/frame/core.py | 398 | except Exception as e: | CODE |
| LOW | modules/processors/frame/core.py | 406 | except Exception: | CODE |
| LOW | modules/processors/frame/face_enhancer_gpen512.py | 49 | except Exception as error: | CODE |
| LOW | modules/processors/frame/face_enhancer_gpen512.py | 93 | except Exception as e: | CODE |
| LOW | modules/processors/frame/face_enhancer_gpen512.py | 98 | except Exception as e: | CODE |
| LOW | modules/processors/frame/_onnx_enhancer.py | 89 | except Exception: | CODE |
| LOW | modules/processors/frame/_onnx_enhancer.py | 114 | except Exception: | CODE |
| LOW | modules/processors/frame/_onnx_enhancer.py | 140 | except Exception as e: | CODE |
| LOW | modules/processors/frame/face_masking.py | 411 | except Exception as e: | CODE |
| LOW | modules/processors/frame/face_masking.py | 503 | except Exception as e: | CODE |
| LOW | modules/processors/frame/face_masking.py | 543 | except Exception as e: | CODE |
| LOW | modules/processors/frame/face_enhancer_gpen256.py | 49 | except Exception as error: | CODE |
| LOW | modules/processors/frame/face_enhancer_gpen256.py | 93 | except Exception as e: | CODE |
| LOW | modules/processors/frame/face_enhancer_gpen256.py | 98 | except Exception as e: | CODE |
| MEDIUM⚡ | modules/processors/frame/face_swapper.py | 574 | print(f"Error during face swap: {e}") | CODE |
| MEDIUM⚡ | modules/processors/frame/face_swapper.py | 1237 | print(f"Error in create_lower_mouth_mask: {e}") # Print unexpected errors | CODE |
| MEDIUM | modules/processors/frame/face_swapper.py | 1296 | # print(f"Error drawing text for visualization: {e}") # Optional debug | COMMENT |
| MEDIUM⚡ | modules/processors/frame/face_swapper.py | 1397 | print(f"Error applying mouth area: {e}") # Optional debug | CODE |
| MEDIUM⚡ | modules/processors/frame/face_swapper.py | 1476 | print(f"Error creating convex hull for face mask: {hull_e}") | CODE |
| MEDIUM | modules/processors/frame/face_swapper.py | 1283 | print(f"Error drawing polygon for visualization: {e}") # Optional debug | CODE |
| MEDIUM | modules/processors/frame/face_swapper.py | 1493 | print(f"Error creating face mask: {e}") # Print unexpected errors | CODE |
| LOW⚡ | modules/processors/frame/face_swapper.py | 573 | except Exception as e: | CODE |
| LOW⚡ | modules/processors/frame/face_swapper.py | 1236 | except Exception as e: | CODE |
| LOW⚡ | modules/processors/frame/face_swapper.py | 1396 | except Exception as e: | CODE |
| LOW⚡ | modules/processors/frame/face_swapper.py | 1475 | except Exception as hull_e: | CODE |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tkinter_fix.py | 8 | # Create a monkey patch for the internal _tkinter module | COMMENT |
| MEDIUM | tkinter_fix.py | 15 | # Define the missing ::tk::ScreenChanged procedure | COMMENT |
| MEDIUM | modules/tkinter_fix.py | 5 | # Create a monkey patch for the internal _tkinter module | COMMENT |
| MEDIUM | modules/tkinter_fix.py | 12 | # Define the missing ::tk::ScreenChanged procedure | COMMENT |
| MEDIUM | modules/processors/frame/face_masking.py | 55 | # Create a slightly larger convex hull for padding | COMMENT |
| MEDIUM | modules/processors/frame/face_masking.py | 129 | # Create the mask | COMMENT |
| MEDIUM⚡ | modules/processors/frame/face_swapper.py | 581 | # Create a mask for the target face | COMMENT |
| MEDIUM⚡ | modules/processors/frame/face_swapper.py | 584 | # Create the mouth mask using the ORIGINAL frame (before swap) for cutout | COMMENT |
| MEDIUM | modules/processors/frame/face_swapper.py | 1205 | # Create the mask ROI | COMMENT |
| MEDIUM | modules/processors/frame/face_swapper.py | 1330 | # Define the Region of Interest (ROI) on the target frame (swapped frame) | COMMENT |
| MEDIUM | modules/processors/frame/face_swapper.py | 1368 | # Create a mask based on the mouth_polygon, relative to the ROI | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_face_analyser_get_one_face.py | 59 | def test_uses_supplied_detected_faces_without_reanalysing_frame(self): | CODE |
| LOW | tests/test_face_analyser_get_one_face.py | 71 | def test_supplied_empty_detected_faces_returns_none(self): | CODE |
| LOW | tests/test_face_analyser_get_one_face.py | 81 | def test_without_supplied_faces_preserves_existing_detection_path(self): | CODE |
| LOW⚡ | tests/test_utilities.py | 46 | def test_detect_fps_returns_fraction_result(self) -> None: | CODE |
| LOW⚡ | tests/test_utilities.py | 54 | def test_detect_fps_falls_back_on_command_failure(self) -> None: | CODE |
| LOW⚡ | tests/test_utilities.py | 64 | def test_detect_fps_falls_back_on_malformed_output(self) -> None: | CODE |
| LOW⚡ | tests/test_utilities.py | 70 | def test_detect_fps_falls_back_on_zero_denominator(self) -> None: | CODE |
| LOW | tests/test_download_ssl_verification.py | 72 | def test_ssl_context_verifies_certificates(self): | CODE |
| LOW | tests/test_download_ssl_verification.py | 79 | def test_ssl_context_verifies_on_every_platform(self): | CODE |
| LOW | tests/test_download_ssl_verification.py | 90 | def test_passes_verifying_context_to_urlopen(self): | CODE |
| LOW | tests/test_download_ssl_verification.py | 110 | def test_download_passes_verifying_context_to_urlopen(self): | CODE |
| LOW | tests/test_core_map_faces_fallback.py | 10 | def _patched_core_import_stubs(calls, pipe_result=False): | CODE |
| LOW | tests/test_core_map_faces_fallback.py | 99 | def test_map_faces_disk_fallback_extracts_frames_before_processing(self): | CODE |
| LOW | tests/test_core_map_faces_fallback.py | 123 | def test_non_map_faces_pipe_success_does_not_extract_frames(self): | CODE |
| LOW | tests/test_ui_live_preview.py | 66 | def test_close_event_leaves_no_running_worker(self): | CODE |
| LOW | tests/test_ui_live_preview.py | 92 | def test_close_event_survives_failed_camera_start(self): | CODE |
| LOW | tests/test_ui_live_preview.py | 145 | def test_process_exits_cleanly(self): | STRING |
| LOW | tests/test_ui_live_preview.py | 166 | def test_switching_back_to_a_working_source_reloads_it(self): | CODE |
| LOW | tests/test_ui_live_preview.py | 245 | def test_failed_download_leaves_previous_image_intact(self): | CODE |
| LOW | tests/test_ui_live_preview.py | 266 | def test_successful_download_replaces_the_image(self): | CODE |
| LOW | modules/face_analyser.py | 284 | def get_unique_faces_from_target_image() -> Any: | CODE |
| LOW | modules/face_analyser.py | 307 | def get_unique_faces_from_target_video() -> Any: | CODE |
| LOW | modules/core.py | 127 | def encode_execution_providers(execution_providers: List[str]) -> List[str]: | CODE |
| LOW | modules/core.py | 131 | def decode_execution_providers(execution_providers: List[str]) -> List[str]: | CODE |
| LOW⚡ | modules/core.py | 142 | def suggest_default_execution_provider() -> str: | CODE |
| LOW⚡ | modules/core.py | 151 | def suggest_execution_providers() -> List[str]: | CODE |
| LOW⚡ | modules/core.py | 155 | def suggest_execution_threads() -> int: | CODE |
| LOW | modules/processors/frame/core.py | 32 | def load_frame_processor_module(frame_processor: str) -> Any: | CODE |
| LOW⚡ | modules/processors/frame/core.py | 48 | def get_frame_processors_modules(frame_processors: List[str]) -> List[ModuleType]: | CODE |
| LOW⚡ | modules/processors/frame/core.py | 58 | def set_frame_processors_modules_from_ui(frame_processors: List[str]) -> None: | CODE |
| LOW⚡ | modules/processors/frame/face_swapper.py | 1246 | def draw_mouth_mask_visualization( | CODE |
| LOW | modules/processors/frame/face_swapper.py | 440 | def _cuda_graph_swap_inference(blob: np.ndarray, latent: np.ndarray) -> np.ndarray: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | modules/face_analyser.py | 358 | CODE | |
| LOW | modules/face_analyser.py | 386 | CODE | |
| LOW | modules/ui.py | 343 | CODE | |
| LOW | modules/ui.py | 1178 | CODE | |
| LOW | modules/model_downloader.py | 71 | CODE | |
| LOW | modules/utilities.py | 85 | CODE | |
| LOW | modules/utilities.py | 292 | CODE | |
| LOW | modules/video_capture.py | 36 | CODE | |
| LOW | modules/onnx_optimize.py | 222 | CODE | |
| LOW | modules/onnx_optimize.py | 360 | CODE | |
| LOW | modules/onnx_optimize.py | 444 | CODE | |
| LOW | modules/processors/frame/face_enhancer.py | 294 | CODE | |
| LOW | modules/processors/frame/core.py | 58 | CODE | |
| LOW | modules/processors/frame/core.py | 84 | CODE | |
| LOW | modules/processors/frame/core.py | 118 | CODE | |
| LOW | modules/processors/frame/core.py | 258 | CODE | |
| LOW | modules/processors/frame/_onnx_enhancer.py | 25 | CODE | |
| LOW | modules/processors/frame/face_swapper.py | 68 | CODE | |
| LOW | modules/processors/frame/face_swapper.py | 233 | CODE | |
| LOW | modules/processors/frame/face_swapper.py | 746 | CODE | |
| LOW | modules/processors/frame/face_swapper.py | 783 | CODE | |
| LOW | modules/processors/frame/face_swapper.py | 912 | CODE | |
| LOW | modules/processors/frame/face_swapper.py | 1029 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | modules/ui.py | 401 | def update_status(text: str) -> None: | CODE |
| LOW | modules/ui.py | 836 | def set_status(self, text: str) -> None: | CODE |
| LOW | modules/ui.py | 1071 | def _update_tumbler(var: str, value: bool) -> None: | CODE |
| LOW | modules/ui.py | 1467 | def set_status(self, text: str) -> None: | CODE |
| LOW | modules/ui.py | 1567 | def set_status(self, text: str) -> None: | CODE |
| LOW | modules/core.py | 212 | def update_status(message: str, scope: str = 'DLC.CORE') -> None: | CODE |
| LOW | modules/video_capture.py | 158 | def set_frame_callback(self, callback: Callable[[np.ndarray], None]) -> None: | CODE |
| LOW⚡ | modules/processors/frame/core.py | 58 | def set_frame_processors_modules_from_ui(frame_processors: List[str]) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | modules/processors/frame/face_swapper.py | 580 | if mouth_mask_enabled: # Check if mouth_mask is enabled | CODE |
| LOW | modules/processors/frame/face_swapper.py | 802 | # Check if target is a file path (image or video) or live stream | COMMENT |
| LOW⚡ | modules/processors/frame/face_swapper.py | 814 | if target_info: # Check if target info exists | CODE |
| LOW⚡ | modules/processors/frame/face_swapper.py | 821 | if target_frames_data: # Check if frame data exists | CODE |
| LOW⚡ | modules/processors/frame/face_swapper.py | 825 | if faces_in_frame: # Check if faces exist | CODE |
| LOW | modules/processors/frame/face_swapper.py | 996 | # Check if processing actually returned a frame | COMMENT |
| LOW | modules/processors/frame/face_swapper.py | 1257 | # Check if polygon is valid for drawing | COMMENT |
| LOW | modules/processors/frame/face_swapper.py | 1353 | # Check if mouth_cutout has valid dimensions before resizing | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_utilities.py | 1 | CODE | |
| LOW | modules/run.py | 4 | CODE | |
| LOW | modules/ui.py | 11 | CODE | |
| LOW | modules/gpu_processing.py | 19 | CODE | |
| LOW | modules/platform_info.py | 10 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | modules/processors/frame/face_swapper.py | 1470 | # Fallback: use bounding box of landmarks? Or just return empty mask? | COMMENT |
| MEDIUM | modules/processors/frame/face_swapper.py | 124 | pass # fall through to the robust bbox-ellipse path below | CODE |
| LOW⚡ | modules/processors/frame/face_swapper.py | 1400 | pass # Don't crash, just return the frame as is | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | modules/gpu_processing.py | 21 | import os | COMMENT |
| LOW | modules/video_capture.py | 41 | # enumeration), so open with DSHOW first to preserve mapping. | COMMENT |
| LOW | modules/processors/frame/face_swapper.py | 1121 | if face is None or not hasattr(face, 'landmark_2d_106'): | COMMENT |