# Passport-C Media Player Passport-C Media Player is a low-dependency SDL2 + FFmpeg prototype that recreates the 2004-era Passport DCT cable guide with live-seeking channels. ## Features - Live-TV epoch clock based on `time(NULL)` - 200 ms black-screen channel tuning delay - Fullscreen and guide modes - 5-row Passport-style guide with a 90-minute timeline - Background decoder thread with a bounded frame queue - Automatic channel discovery from `./media` ## Layout - `src/` - application, UI, channel scan, and playback code - `media/` - channel video files - `guide-ui.jpg` - visual reference used for proportions and palette ## Controls - `Up` / `Down` - surf channels - `Tab` - toggle guide - `Esc` - exit guide or quit the app ## Build Install development packages for SDL2, SDL2_ttf, and FFmpeg headers before building. Typical Debian or Ubuntu packages: ```bash sudo apt install build-essential libsdl2-dev libsdl2-ttf-dev libavformat-dev libavcodec-dev libswscale-dev libswresample-dev libavutil-dev ``` Then build and run: ```bash make ./passport-c-media-player ``` ## AppImage Build To create a portable AppImage that can run on any Linux distribution: ```bash make appimage ``` This creates `Passport-C-Media-Player-0.1-x86_64.AppImage`, a self-contained executable that includes all dependencies. Users can run it directly: ```bash ./Passport-C-Media-Player-0.1-x86_64.AppImage ``` For a fully portable setup, create a `media/` directory in the same folder as the AppImage and add your channel videos there. The AppImage will automatically detect and load channels from this directory. ## Media The player scans `./media` for channel directories. Each subdirectory is treated as one channel, and the supported video files inside it are played in alphabetical order as that channel's schedule. Optional metadata can be provided with `description.txt` inside each channel directory: ```txt name=Reading number=56 description=Books, documentaries, and reading-focused programming. ``` Example layout: ```txt media/ reading/ description.txt 01-intro.mp4 02-feature.mp4 computers/ description.txt 01-chronicles.mp4 02-demo.mp4 ``` ## Fonts The UI tries `BigBlueTermPlus Nerd Font` first, then falls back to common Linux monospace fonts.