Files
wehub-resource-sync ead81af521
CI / go (push) Waiting to run
CI / build (darwin, macos-14) (push) Waiting to run
CI / build (windows, windows-2025) (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Failing after 0s
chore: import upstream snapshot with attribution
2026-07-13 12:31:13 +08:00

68 lines
1.4 KiB
Go

package player
import "time"
// Engine is the interface used by the TUI model to control audio playback.
// It is satisfied by *Player and can be replaced with a mock for testing.
type Engine interface {
// Playback control
Play(path string, knownDuration time.Duration) error
PlayYTDL(pageURL string, knownDuration time.Duration) error
Preload(path string, knownDuration time.Duration) error
PreloadYTDL(pageURL string, knownDuration time.Duration) error
ClearPreload()
Stop()
Close()
TogglePause()
// Seeking
Seek(d time.Duration) error
SeekYTDL(d time.Duration) error
CancelSeekYTDL()
// State queries
IsPlaying() bool
IsPaused() bool
Drained() bool
HasPreload() bool
Seekable() bool
IsStreamSeek() bool
IsYTDLSeek() bool
GaplessAdvanced() bool
// Position and duration
Position() time.Duration
Duration() time.Duration
PositionAndDuration() (time.Duration, time.Duration)
// Volume
SetVolumeMin(db float64)
VolumeMin() float64
SetVolume(db float64)
Volume() float64
// Speed
SetSpeed(ratio float64)
Speed() float64
// Mono
ToggleMono()
Mono() bool
// EQ
SetEQBand(band int, dB float64)
EQBands() [10]float64
// Stream info
StreamErr() error
StreamTitle() string
StreamBytes() (downloaded, total int64)
// Audio samples for visualizer
SamplesInto(dst []float64) int
SampleRate() int
}
// Compile-time check that *Player satisfies Engine.
var _ Engine = (*Player)(nil)