Remove goconcurrentqueue dependency for channel based queue, update dependencies
continuous-integration/drone/push Build is passing Details

This commit is contained in:
DataHoarder 2022-10-02 14:28:41 +02:00
parent 5f7adf415b
commit 6ea83ecce7
Signed by: DataHoarder
SSH Key Fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk
4 changed files with 20 additions and 23 deletions

4
go.mod
View File

@ -3,10 +3,9 @@ module git.gammaspectra.live/S.O.N.G/MeteorLight
go 1.19
require (
git.gammaspectra.live/S.O.N.G/Kirika v0.0.0-20220910154422-15e4c8e6f889
git.gammaspectra.live/S.O.N.G/Kirika v0.0.0-20220915065938-f487b8f0b04a
github.com/BurntSushi/toml v1.2.0
github.com/dhowden/tag v0.0.0-20220618230019-adf36e896086
github.com/enriquebris/goconcurrentqueue v0.6.3
)
require (
@ -19,7 +18,6 @@ require (
git.gammaspectra.live/S.O.N.G/go-vorbis v0.0.0-20220728124510-303b3425eec0 // indirect
git.gammaspectra.live/S.O.N.G/goflac v0.0.0-20220515172202-6e490998d2a0 // indirect
github.com/aam335/aac-go v0.0.0-20200408070016-52c23bd38988 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dh1tw/gosamplerate v0.1.2 // indirect
github.com/edgeware/mp4ff v0.29.0 // indirect
github.com/hajimehoshi/go-mp3 v0.3.3 // indirect

11
go.sum
View File

@ -1,5 +1,5 @@
git.gammaspectra.live/S.O.N.G/Kirika v0.0.0-20220910154422-15e4c8e6f889 h1:lWAD5z3UGa3CbrO41+RCPlgn+aM+9qM6efxeVNQXaPc=
git.gammaspectra.live/S.O.N.G/Kirika v0.0.0-20220910154422-15e4c8e6f889/go.mod h1:74MyNr0STf4khX56PUoR6IMyNMM3GIVKbs1TS/IDP5I=
git.gammaspectra.live/S.O.N.G/Kirika v0.0.0-20220915065938-f487b8f0b04a h1:kYlTnwESq8w0FbyXgLnKNI9/iJvi2C2g7ZYv/Bh/v8c=
git.gammaspectra.live/S.O.N.G/Kirika v0.0.0-20220915065938-f487b8f0b04a/go.mod h1:y3dAETc57qpC0HbqmNzke7GOg4/IpPjx3PwYU87Zkjk=
git.gammaspectra.live/S.O.N.G/flacgo v0.0.0-20220726151057-28f458bc5391 h1:us3yKKsnMe0FZVHRSFZCw113ddiNrZgKf5M5PNr3SQ4=
git.gammaspectra.live/S.O.N.G/flacgo v0.0.0-20220726151057-28f458bc5391/go.mod h1:ZVHB/7Vrs9xxK1j98+SJ5TRYBc7Q9dIUaNJHEmysZcI=
git.gammaspectra.live/S.O.N.G/go-alac v0.0.0-20220421115623-d0b3bfe57e0f h1:CxN7zlk5FdAieyRKQSbwBGBsvQ2cDF8JVCODZpzcRkA=
@ -22,16 +22,12 @@ github.com/aam335/aac-go v0.0.0-20200408070016-52c23bd38988 h1:DZeJTINv0mpfBVfDt
github.com/aam335/aac-go v0.0.0-20200408070016-52c23bd38988/go.mod h1:JBA06GZmW2MVVBYRrKuaZ2AFMSDiPmafb/qmF/ATTUM=
github.com/cocoonlife/testify v0.0.0-20160218172820-792cc1faeb64 h1:LjPYdzoFSAJ5Tr/ElL8kzTJghXgpnOjJVbgd1UvZB1o=
github.com/d4l3k/messagediff v1.2.2-0.20190829033028-7e0a312ae40b/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dh1tw/gosamplerate v0.1.2 h1:oyqtZk67xB9B4l+vIZCZ3F0RYV/z66W58VOah11/ktI=
github.com/dh1tw/gosamplerate v0.1.2/go.mod h1:zooTyHpoR7hE+FLfdE3yjLHb2QA2NpMusNfuaZqEACM=
github.com/dhowden/tag v0.0.0-20220618230019-adf36e896086 h1:ORubSQoKnncsBnR4zD9CuYFJCPOCuSNEpWEZrDdBXkc=
github.com/dhowden/tag v0.0.0-20220618230019-adf36e896086/go.mod h1:Z3Lomva4pyMWYezjMAU5QWRh0p1VvO4199OHlFnyKkM=
github.com/edgeware/mp4ff v0.29.0 h1:wRW0ng0+inNGTpy7vCcSHQ7h/V71cQYnnM6woeQCHbw=
github.com/edgeware/mp4ff v0.29.0/go.mod h1:GNUeA6tEFksH2CrjJF2FSGdJolba8yPGmo16qZTXsm8=
github.com/enriquebris/goconcurrentqueue v0.6.3 h1:+ma7EEEFMDmJBIS6Q4KNJruChctgwYQFqlxdveIoEE4=
github.com/enriquebris/goconcurrentqueue v0.6.3/go.mod h1:OZ+KC2BcRYzjg0vgoUs1GFqdAjkD9mz2Ots7Jbm1yS4=
github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
github.com/hajimehoshi/go-mp3 v0.3.3 h1:cWnfRdpye2m9ElSoVqneYRcpt/l3ijttgjMeQh+r+FE=
@ -55,10 +51,8 @@ github.com/mewkiz/pkg v0.0.0-20220820102221-bbbca16e2a6c/go.mod h1:J/rDzvIiwiVpv
github.com/oov/audio v0.0.0-20171004131523-88a2be6dbe38 h1:4Upfs5rLQdx7KwBct3bmPYAhWsDDJdx660gYb7Lv9TQ=
github.com/oov/audio v0.0.0-20171004131523-88a2be6dbe38/go.mod h1:Xj06yMta9R1RSKiHmxL0Bo2TB8wiKVnMgA0KVopHHkk=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/sssgun/mp3 v0.0.0-20170810093403-85f2ec632081 h1:Qo/HswJzVywl0podyXMD62HIohsj/Ij2oXbD26aUIxM=
github.com/sssgun/mp3 v0.0.0-20170810093403-85f2ec632081/go.mod h1:ExwZtltybPz8zLO8c2lKRfpPk1HAxhrkp038QIBs+yg=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/viert/go-lame v0.0.0-20201108052322-bb552596b11d h1:LptdD7GTUZeklomtW5vZ1AHwBvDBUCZ2Ftpaz7uEI7g=
github.com/viert/go-lame v0.0.0-20201108052322-bb552596b11d/go.mod h1:EqTcYM7y4JlSfeTI47pmNu3EZQuCuLQefsQyg1Imlz8=
github.com/youpy/go-riff v0.1.0 h1:vZO/37nI4tIET8tQI0Qn0Y79qQh99aEpponTPiPut7k=
@ -74,4 +68,3 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=

View File

@ -105,7 +105,7 @@ func (q *Queue) AddTrack(entry *track.Entry, tail bool) error {
log.Printf("now playing \"%s\": %s - %s (%s)\n", e.Path, e.Metadata.Title, e.Metadata.Artist, e.Metadata.Album)
q.NowPlaying <- e
for _, mount := range q.mounts {
_ = mount.MetadataQueue.Enqueue(&metadata.Packet{
mount.QueueMetadata(&metadata.Packet{
//TODO: carry sample rate error
SampleNumber: (q.duration.Load() * int64(queue.GetSampleRate())) / int64(time.Second),
TrackEntry: e,

View File

@ -13,7 +13,6 @@ import (
"git.gammaspectra.live/S.O.N.G/MeteorLight/config"
"git.gammaspectra.live/S.O.N.G/MeteorLight/listener"
"git.gammaspectra.live/S.O.N.G/MeteorLight/queue/metadata"
"github.com/enriquebris/goconcurrentqueue"
"io"
"log"
"sync"
@ -28,7 +27,7 @@ type Mount struct {
SampleRate int
Channels int
OffsetStart bool
MetadataQueue *goconcurrentqueue.FIFO
metadataQueue chan *metadata.Packet
listeners []listener.Listener
listenersLock sync.RWMutex
keepBuffer []packetizer.Packet
@ -185,7 +184,7 @@ func NewStreamMount(source audio.Source, config *config.StreamConfig) *Mount {
OffsetStart: config.GetBoolOption("offset_start", true),
Channels: channels,
Options: options,
MetadataQueue: goconcurrentqueue.NewFIFO(),
metadataQueue: make(chan *metadata.Packet, 1),
}
}
@ -308,6 +307,12 @@ func (m *Mount) handlePacket(packet packetizer.Packet) {
}
}
func (m *Mount) QueueMetadata(meta *metadata.Packet) {
if meta != nil {
m.metadataQueue <- meta
}
}
func (m *Mount) Process(group *sync.WaitGroup) {
defer group.Done()
defer func() {
@ -320,20 +325,21 @@ func (m *Mount) Process(group *sync.WaitGroup) {
m.listenersLock.Unlock()
}()
var metadataPacket *metadata.Packet
for {
packet := m.Packetizer.GetPacket()
if packet == nil {
return
}
if item, err := m.MetadataQueue.Get(0); err == nil {
if metadataPacket, ok := item.(*metadata.Packet); ok {
if packet.GetEndSampleNumber() > metadataPacket.GetStartSampleNumber() {
m.MetadataQueue.Dequeue()
m.handlePacket(metadataPacket)
}
if metadataPacket == nil && len(m.metadataQueue) > 0 {
metadataPacket = <-m.metadataQueue
}
}
if metadataPacket != nil && packet.GetEndSampleNumber() > metadataPacket.GetStartSampleNumber() {
m.handlePacket(metadataPacket)
metadataPacket = nil
}
m.handlePacket(packet)