Just a simple media player
  • C++ 94.5%
  • CMake 3.6%
  • C 1.9%
Find a file
ZachBacon 22cf57ae85
All checks were successful
CI / build (linux-x64) (push) Successful in 2m6s
CI / build (windows-x64) (push) Successful in 2m6s
CI / Publish Release (push) Has been skipped
Ensure that ICU is included
2026-06-07 13:37:44 -04:00
.forgejo/workflows Various changes to get working without ffmpeg 2026-06-07 12:01:22 -04:00
include/shriek Various changes to get working without ffmpeg 2026-06-07 12:01:22 -04:00
src Various changes to get working without ffmpeg 2026-06-07 12:01:22 -04:00
third_party/minimp4 Various changes to get working without ffmpeg 2026-06-07 12:01:22 -04:00
triplets Initial commit 2026-03-22 21:00:56 -04:00
.gitignore Initial commit 2026-03-22 21:00:56 -04:00
CMakeLists.txt Various changes to get working without ffmpeg 2026-06-07 12:01:22 -04:00
CMakePresets.json Add some more compiler presets 2026-06-06 15:14:39 -04:00
README.md Various changes to get working without ffmpeg 2026-06-07 12:01:22 -04:00
vcpkg-configuration.json Initial commit 2026-03-22 21:00:56 -04:00
vcpkg.json Ensure that ICU is included 2026-06-07 13:37:44 -04:00

Shriek

A cover-art-focused media player built with wxWidgets, FAudio, and SQLite.

Dependencies

Library Purpose
wxWidgets GUI toolkit
libFLAC / libvorbis / opusfile FLAC / Ogg Vorbis / Opus decoding
minimp3 / minimp4 + FDK-AAC MP3 / MP4 (AAC) decoding
FAudio Audio output (XAudio2-compatible)
SQLite3 Library database

All dependencies are managed via vcpkg (manifest mode). The core has no FFmpeg dependency; FFmpeg support (extra formats + rich metadata/cover art) is provided by an optional, separately-built decoder plugin — see plugins/ffmpeg.

Prerequisites

  • CMake 3.24+
  • Ninja (recommended generator)
  • vcpkg — set VCPKG_ROOT environment 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
├── include/
│   └── shriek/decoder_plugin.h Decoder plugin ABI (shared with plugins)
├── third_party/
│   └── minimp4/                Vendored MP4 demuxer (single header)
├── plugins/
│   └── ffmpeg/                 Optional FFmpeg decoder plugin (own build)
└── 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             Built-in + plugin decoders → float PCM
    ├── plugin/
    │   └── PluginManager       Loads decoder plugins from plugins/
    ├── 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)