{"id":51011972,"url":"https://github.com/weeblabs/pidvd","last_synced_at":"2026-06-21T04:01:30.796Z","repository":{"id":364876675,"uuid":"1267068853","full_name":"WeebLabs/PiDVD","owner":"WeebLabs","description":"Field-accurate DVD player for Raspberry Pi 3 — native interlaced 15kHz output (576i/480i) to CRTs via composite and VGA666/RGB, full menu support","archived":false,"fork":false,"pushed_at":"2026-06-14T22:40:12.000Z","size":138,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-14T23:20:38.513Z","etag":null,"topics":["15khz","buildroot","crt","dvd","mpeg2","raspberry-pi","retro"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WeebLabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-12T07:33:51.000Z","updated_at":"2026-06-14T22:40:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/WeebLabs/PiDVD","commit_stats":null,"previous_names":["weeblabs/pidvd"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/WeebLabs/PiDVD","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeebLabs%2FPiDVD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeebLabs%2FPiDVD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeebLabs%2FPiDVD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeebLabs%2FPiDVD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeebLabs","download_url":"https://codeload.github.com/WeebLabs/PiDVD/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeebLabs%2FPiDVD/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34593129,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["15khz","buildroot","crt","dvd","mpeg2","raspberry-pi","retro"],"created_at":"2026-06-21T04:01:24.560Z","updated_at":"2026-06-21T04:01:30.790Z","avatar_url":"https://github.com/WeebLabs.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PiDVD\n\nA field-accurate DVD player appliance for the Raspberry Pi 3.\n\nPiDVD boots a minimal Buildroot Linux image straight into a custom KMS player that\nplays DVD-Video ISOs (decrypted) with full menu support, outputting **native\ninterlaced 15 kHz video** — 480i59.94 or 576i50, auto-selected from the disc's IFO\nvideo attributes. No scaling, no deinterlacing, no 480p. Scanout is pixel-exact\nBT.601: 720 active samples per line at a 13.5 MHz dot clock.\n\n## Signal chain\n\n```\nDVD ISO (USB drive)\n  └─ player core: libdvdread/libdvdnav → libmpeg2 + a52dec → SPU overlay\n       └─ field-accurate presenter (honors TFF/RFF, native 3:2 cadence)\n            ├─ Milestone 1: composite (VEC)            → CRT\n            ├─ Milestone 3: VGA666 (18-bit DPI) → UMSA → SCART CRT\n            └─ audio: USB S/PDIF (IEC 61937 AC-3 passthrough / PCM)\n```\n\n## Repository layout\n\n```\nplayer/      Player core + tools. OS-agnostic C against a thin platform layer.\n             Builds on the macOS host too (tools/dvdinfo) for fast development.\nbuildroot/   BR2_EXTERNAL tree: defconfig, board files, rootfs overlay,\n             pidvd-player package.\ndocker/      Linux build container (Buildroot does not build on macOS).\nscripts/     Build entry points.\ndocs/        Architecture, decisions, risk register.\n```\n\n## Quick start\n\n### Host tool (macOS) — inspect an ISO\n\n```sh\nbrew install libdvdread\ncmake -S player -B player/build \u0026\u0026 cmake --build player/build\nplayer/build/dvdinfo /path/to/movie.iso\n```\n\n### Pi image (via Docker)\n\n```sh\n./scripts/build-image.sh        # downloads Buildroot, builds sdcard.img\n# flash output/images/sdcard.img to an SD card\n```\n\n## Hardware\n\n- Raspberry Pi 3B / 3B+ (Pi Zero 2 W compatible — same SoC family)\n- VGA666 (Gert van Loo's passive DPI DAC, GPIO 0–21) → UMSA → SCART\n- USB S/PDIF adapter (class-compliant). **S/PDIF/I2S HATs are incompatible:**\n  DPI consumes GPIO 18–21 (the I2S pins).\n- IR receiver (TSOP-style) on a free GPIO (22–27) — optional, later milestone\n- USB drive holding decrypted `.iso` files; USB keyboard / 2.4 GHz media remote\n\nSee `docs/ARCHITECTURE.md` for the full design and milestone plan.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweeblabs%2Fpidvd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweeblabs%2Fpidvd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweeblabs%2Fpidvd/lists"}