MCPcopy
hub / github.com/nikopueringer/CorridorKey / _read_input_frame

Method _read_input_frame

backend/service.py:426–458  ·  view source on GitHub ↗

Read a single input frame. Returns: (image_float32, stem_name, is_linear_override)

(
        self,
        clip: ClipEntry,
        frame_index: int,
        input_files: list[str],
        input_cap: Any | None,
        input_is_linear: bool,
    )

Source from the content-addressed store, hash-verified

424 # --- Frame I/O Helpers ---
425
426 def _read_input_frame(
427 self,
428 clip: ClipEntry,
429 frame_index: int,
430 input_files: list[str],
431 input_cap: Any | None,
432 input_is_linear: bool,
433 ) -> tuple[np.ndarray | None, str, bool]:
434 """Read a single input frame.
435
436 Returns:
437 (image_float32, stem_name, is_linear_override)
438 """
439 logger.debug(f"Reading input frame {frame_index} for '{clip.name}'")
440 input_stem = f"{frame_index:05d}"
441
442 if input_cap:
443 ret, frame = input_cap.read()
444 if not ret:
445 return None, input_stem, False
446 img_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
447 return img_rgb.astype(np.float32) / 255.0, input_stem, input_is_linear
448 else:
449 if frame_index >= len(input_files):
450 logger.warning(
451 f"Clip '{clip.name}': frame_index {frame_index} out of range (have {len(input_files)} frames)"
452 )
453 return None, f"{frame_index:05d}", input_is_linear
454 fpath = os.path.join(clip.input_asset.path, input_files[frame_index])
455 input_stem = os.path.splitext(input_files[frame_index])[0]
456 img = read_image_frame(fpath)
457 validate_frame_read(img, clip.name, frame_index, fpath)
458 return img, input_stem, input_is_linear
459
460 def _read_alpha_frame(
461 self,

Callers 1

_prefetch_framesMethod · 0.95

Calls 2

read_image_frameFunction · 0.85
validate_frame_readFunction · 0.85

Tested by

no test coverage detected