/* global React */

// ─── Project: FPGA Video Processing System ───────────────────────────────────
// To edit: change any field below. Add/remove metrics rows as needed.
// cover options: "mod" | "scanlines" | "gf"
// ─────────────────────────────────────────────────────────────────────────────

window.PROJECT_fpga_video_processing = {
  order:  2,
  slug:   "fpga-video-processing",
  name:   "FPGA Video Processing",
  sub:    "Real-time video filters: Sobel, binary and morphological, grayscale, negative.",
  year:   "2026",
  stack:  ["VHDL", "FPGA", "Digital video processing"],
  status: "tested · clean",
  cover:  "scanlines",

  // Image path relative to portfolio root — leave null to show the texture placeholder
  image:  null,
  // e.g.: image: "assets/images/fpga-video.jpg"

  // 4 metrics shown across the top of the project page
  metrics: [
    ["platform",  "Basys-3 · Artix-7"],   // or whatever board you used
    ["pipeline",  "5-stage streaming · no DRAM"],
    ["output",    "VGA · 60 Hz"],
    ["latency",   "< 1 frame"],
  ],

  // Links: [label, url]
  links: [
    ["REPO", "https://github.com/helpmecleep/ece441_project"],
    // ["demo", "assets/videos/fpga-video-demo.mp4"],  // add file when ready
  ],

  problem:
    "Built a real-time video processing pipeline on an FPGA that captures live camera input and renders processed output over VGA, selectable filters operating at pixel rate with no inter-stage frame buffers.",
  approach:
    "Designed each filter as a streaming VHDL block with a small line-buffer for neighbourhood ops. Composed binary thresholding, morphological erosion / dilation, Sobel edge detection, grayscale conversion, and negative transformation into a switchable pipeline. Drove the VGA timing controller from a dedicated pixel clock; kept hsync/vsync derived from the same counter to avoid metastability.",

  result:
    "Live filter switching at 60 Hz, no dropped frames, sub-frame latency. The composition is modular, new filter blocks slot in by matching the streaming interface contract.",
};
