How clementine-player/clementine works
Clementine is a cross-platform music player and library organizer. The principal workflow is managing a playlist and playing audio through the GStreamer engine; the sampled engine code shows it coordinating playback pipelines and handling track, buffering, metadata, and error events. Other product branches include device management and music storage, album-cover management, moodbar analysis, and network-remote playback with HTTP media streaming. Several of these are documented by the tree and README-level product description, but their connections to the central workflow are not established by the excerpts, so those links are omitted.
Main entry points: remoteengine.cpp Remote renderer engine · pipelineresponder.cpp HTTP stream responder · gstengine.cpp GStreamer engine · gstenginepipeline.cpp Playback pipeline
Components 16
Audio playback
- GStreamer engine
src/engines/gstengine.cpp - Playback pipeline
src/engines/gstenginepipeline.cpp - GStreamer
Library and playlists
- Playlist manager
src/playlist/playlistmanager.cpp
Devices and storage
- Music storage interface
src/core/musicstorage.h - Filesystem storage
src/core/filesystemmusicstorage.cpp - Device manager
src/devices/devicemanager.cpp
Media enrichment
- Moodbar analysis
src/moodbar/moodbarpipeline.cpp - Album-cover manager
src/ui/albumcovermanager.cpp - Cover providers
Remote playback
- Remote renderer engine
src/networkremote/streaming/remoteengine.cpp - HTTP stream responder
src/networkremote/streaming/pipelineresponder.cpp - Network renderer
Other components
- Listener
- Media source
- Renderer HTTP client
Connections 14
- Listener → Playlist manager: manages playlists
- Listener → GStreamer engine: controls playback
- GStreamer engine → Playback pipeline: creates and coordinates
- Playback pipeline → GStreamer: configures playback
- Moodbar analysis → GStreamer: analyzes audio
- Listener → Device manager: manages devices
- Device manager → Music storage interface: uses storage operations
- Listener → Album-cover manager: manages covers
- Album-cover manager → Cover providers: fetches covers
- Network renderer → Remote renderer engine: sends playback commands
- Remote renderer engine → Network renderer: sends renderer commands
- Media source → HTTP stream responder: provides media URL
- HTTP stream responder → Renderer HTTP client: streams HTTP audio
- Remote renderer engine → HTTP stream responder: publishes stream URL