// Play buffers the source audio to the audio device and starts // to play the source. // If the player paused or stopped, it reuses the previously buffered // resources to keep playing from the time it has paused or stopped. func (p *Player) Play() error { if p == nil { return nil } // Prepares if the track hasn't been buffered before. if err := p.prepare(0, false); err != nil { return err } al.PlaySources(p.source) return lastErr() }
// Seek moves the play head to the given offset relative to the start of the source. func (p *Player) Seek(offset time.Duration) error { if p == nil { return nil } if err := p.Stop(); err != nil { return err } size := durToByteOffset(p.t, offset) if err := p.prepare(size, true); err != nil { return err } al.PlaySources(p.source) return lastErr() }