Merge pull request #111 from cswank/flac-seek

Seek for flac
This commit is contained in:
Allen Ray
2021-08-17 00:27:30 -04:00
committed by GitHub
3 changed files with 26 additions and 10 deletions

View File

@@ -23,7 +23,15 @@ func Decode(r io.Reader) (s beep.StreamSeekCloser, format beep.Format, err error
}
}
}()
d.stream, err = flac.New(r)
rs, seeker := r.(io.ReadSeeker)
if seeker {
d.stream, err = flac.NewSeek(rs)
d.seekEnabled = true
} else {
d.stream, err = flac.New(r)
}
if err != nil {
return nil, beep.Format{}, errors.Wrap(err, "flac")
}
@@ -36,11 +44,12 @@ func Decode(r io.Reader) (s beep.StreamSeekCloser, format beep.Format, err error
}
type decoder struct {
r io.Reader
stream *flac.Stream
buf [][2]float64
pos int
err error
r io.Reader
stream *flac.Stream
buf [][2]float64
pos int
err error
seekEnabled bool
}
func (d *decoder) Stream(samples [][2]float64) (n int, ok bool) {
@@ -138,8 +147,15 @@ func (d *decoder) Position() int {
return d.pos
}
// p represents flac sample num perhaps?
func (d *decoder) Seek(p int) error {
return errors.New("flac.decoder.Seek: not yet implemented")
if !d.seekEnabled {
return errors.New("flac.decoder.Seek: not enabled")
}
pos, err := d.stream.Seek(uint64(p))
d.pos = int(pos)
return err
}
func (d *decoder) Close() error {

2
go.mod
View File

@@ -7,6 +7,6 @@ require (
github.com/hajimehoshi/go-mp3 v0.3.0
github.com/hajimehoshi/oto v0.7.1
github.com/jfreymuth/oggvorbis v1.0.1
github.com/mewkiz/flac v1.0.6
github.com/mewkiz/flac v1.0.7
github.com/pkg/errors v0.9.1
)

4
go.sum
View File

@@ -28,8 +28,8 @@ github.com/lucasb-eyer/go-colorful v1.0.2 h1:mCMFu6PgSozg9tDNMMK3g18oJBX7oYGrC09
github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s=
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mewkiz/flac v1.0.6 h1:OnMwCWZPAnjDndjEzLynOZ71Y2U+/QYHoVI4JEKgKkk=
github.com/mewkiz/flac v1.0.6/go.mod h1:yU74UH277dBUpqxPouHSQIar3G1X/QIclVbFahSd1pU=
github.com/mewkiz/flac v1.0.7 h1:uIXEjnuXqdRaZttmSFM5v5Ukp4U6orrZsnYGGR3yow8=
github.com/mewkiz/flac v1.0.7/go.mod h1:yU74UH277dBUpqxPouHSQIar3G1X/QIclVbFahSd1pU=
github.com/mewkiz/pkg v0.0.0-20190919212034-518ade7978e2 h1:EyTNMdePWaoWsRSGQnXiSoQu0r6RS1eA557AwJhlzHU=
github.com/mewkiz/pkg v0.0.0-20190919212034-518ade7978e2/go.mod h1:3E2FUC/qYUfM8+r9zAwpeHJzqRVVMIYnpzD/clwWxyA=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=