|
|
|
@ -13,6 +13,7 @@ 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"
|
|
|
|
|
"golang.org/x/exp/slices"
|
|
|
|
|
"io"
|
|
|
|
|
"log"
|
|
|
|
|
"sync"
|
|
|
|
@ -191,7 +192,7 @@ func NewStreamMount(source audio.Source, config *config.StreamConfig) *Mount {
|
|
|
|
|
func (m *Mount) removeDiscard(sampleNumber int64) {
|
|
|
|
|
for i, p := range m.keepBuffer {
|
|
|
|
|
if p.KeepMode() == packetizer.Discard && p.GetEndSampleNumber() <= sampleNumber {
|
|
|
|
|
m.keepBuffer = append(m.keepBuffer[:i], m.keepBuffer[i+1:]...)
|
|
|
|
|
m.keepBuffer = slices.Delete(m.keepBuffer, i, i+1)
|
|
|
|
|
m.removeDiscard(sampleNumber)
|
|
|
|
|
break
|
|
|
|
|
} else if p.GetEndSampleNumber() > sampleNumber {
|
|
|
|
@ -204,7 +205,7 @@ func (m *Mount) removeDiscard(sampleNumber int64) {
|
|
|
|
|
func (m *Mount) removeKeepLast(category int64) {
|
|
|
|
|
for i, p := range m.keepBuffer {
|
|
|
|
|
if p.Category() == category && p.KeepMode() == packetizer.KeepLast {
|
|
|
|
|
m.keepBuffer = append(m.keepBuffer[:i], m.keepBuffer[i+1:]...)
|
|
|
|
|
m.keepBuffer = slices.Delete(m.keepBuffer, i, i+1)
|
|
|
|
|
m.removeKeepLast(category)
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
@ -214,7 +215,7 @@ func (m *Mount) removeKeepLast(category int64) {
|
|
|
|
|
func (m *Mount) removeGroupKeep(category int64) {
|
|
|
|
|
for i, p := range m.keepBuffer {
|
|
|
|
|
if p.Category() == category && p.KeepMode() == packetizer.GroupKeep {
|
|
|
|
|
m.keepBuffer = append(m.keepBuffer[:i], m.keepBuffer[i+1:]...)
|
|
|
|
|
m.keepBuffer = slices.Delete(m.keepBuffer, i, i+1)
|
|
|
|
|
m.removeGroupKeep(category)
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
@ -243,7 +244,7 @@ func (m *Mount) RemoveListener(identifier string, direct ...bool) bool {
|
|
|
|
|
for i := range m.listeners {
|
|
|
|
|
l := m.listeners[i]
|
|
|
|
|
if l.Identifier() == identifier {
|
|
|
|
|
m.listeners = append(m.listeners[:i], m.listeners[i+1:]...)
|
|
|
|
|
m.listeners = slices.Delete(m.listeners, i, i+1)
|
|
|
|
|
l.Close()
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|