Just a simple media player
- C++ 97%
- CMake 3%
|
|
||
|---|---|---|
| src | ||
| triplets | ||
| .gitignore | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| README.md | ||
| vcpkg-configuration.json | ||
| vcpkg.json | ||
Shriek
A cover-art-focused media player built with wxWidgets, FFmpeg, FAudio, and SQLite.
Dependencies
| Library | Purpose |
|---|---|
| wxWidgets | GUI toolkit |
| FFmpeg (libavformat, libavcodec, libswresample) | Audio decoding & metadata |
| FAudio | Audio output (XAudio2-compatible) |
| SQLite3 | Library database |
All dependencies are managed via vcpkg (manifest mode).
Prerequisites
- CMake 3.24+
- Ninja (recommended generator)
- vcpkg — set
VCPKG_ROOTenvironment variable to your vcpkg clone
Windows
- Visual Studio 2022 (or Build Tools) with C++ workload
macOS
- Xcode command-line tools
Building
Windows (static, Release)
cmake --preset windows-x64-static
cmake --build --preset windows-release
Windows (Debug)
cmake --preset windows-x64-debug
cmake --build --preset windows-debug
macOS (Apple Silicon)
cmake --preset macos-arm64-static
cmake --build --preset macos-arm64
Linux
cmake --preset linux-x64
cmake --build --preset linux-x64
Project Structure
Shriek/
├── CMakeLists.txt Root build script
├── CMakePresets.json Build presets (Win/Mac/Linux)
├── vcpkg.json vcpkg manifest
├── vcpkg-configuration.json vcpkg registry config
└── src/
├── main.cpp Entry point
├── app/
│ └── ShriekApp wxApp subclass
├── ui/
│ ├── MainWindow Top-level frame
│ ├── AlbumGridPanel Scrollable album cover grid
│ ├── NowPlayingPanel Current-track art & info
│ └── PlaybackControlsPanel Transport & volume
├── audio/
│ ├── AudioEngine FAudio playback engine
│ └── Decoder FFmpeg decoder → float PCM
├── db/
│ ├── Database SQLite wrapper
│ └── LibraryScanner Recursive folder scanner
└── models/
├── Album.h
└── Track.h
Roadmap
- Album deduplication on scan
- Playlist / queue management
- Seek bar integration
- Gapless playback
- Podcasting 2.0 support (RSS feeds, chapters, value tags)