mirror of
https://github.com/faiface/beep.git
synced 2026-05-19 14:19:08 -04:00
@@ -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
2
go.mod
@@ -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
4
go.sum
@@ -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=
|
||||
|
||||
Reference in New Issue
Block a user