mediamtx/internal/test/static_source_parent.go
Alessandro Ros f5f03562d3
Some checks are pending
code_lint / go (push) Waiting to run
code_lint / go_mod (push) Waiting to run
code_lint / docs (push) Waiting to run
code_lint / api_docs (push) Waiting to run
code_test / test_64 (push) Waiting to run
code_test / test_32 (push) Waiting to run
code_test / test_e2e (push) Waiting to run
rewrite Unit definition (#5079)
Stream units now share the same struct, with a specialized payload.
2025-10-11 12:18:51 +02:00

61 lines
1.5 KiB
Go

package test
import (
"github.com/bluenviron/mediamtx/internal/defs"
"github.com/bluenviron/mediamtx/internal/logger"
"github.com/bluenviron/mediamtx/internal/stream"
"github.com/bluenviron/mediamtx/internal/unit"
)
// StaticSourceParent is a dummy static source parent.
type StaticSourceParent struct {
stream *stream.Stream
reader *stream.Reader
Unit chan *unit.Unit
}
// Log implements logger.Writer.
func (*StaticSourceParent) Log(logger.Level, string, ...interface{}) {}
// Initialize initializes StaticSourceParent.
func (p *StaticSourceParent) Initialize() {
p.Unit = make(chan *unit.Unit)
}
// Close closes StaticSourceParent.
func (p *StaticSourceParent) Close() {
p.stream.RemoveReader(p.reader)
}
// SetReady implements parent.
func (p *StaticSourceParent) SetReady(req defs.PathSourceStaticSetReadyReq) defs.PathSourceStaticSetReadyRes {
p.stream = &stream.Stream{
WriteQueueSize: 512,
RTPMaxPayloadSize: 1450,
Desc: req.Desc,
GenerateRTPPackets: req.GenerateRTPPackets,
Parent: p,
}
err := p.stream.Initialize()
if err != nil {
panic(err)
}
p.reader = &stream.Reader{Parent: NilLogger}
p.reader.OnData(
req.Desc.Medias[0],
req.Desc.Medias[0].Formats[0],
func(u *unit.Unit) error {
p.Unit <- u
close(p.Unit)
return nil
})
p.stream.AddReader(p.reader)
return defs.PathSourceStaticSetReadyRes{Stream: p.stream}
}
// SetNotReady implements parent.
func (StaticSourceParent) SetNotReady(_ defs.PathSourceStaticSetNotReadyReq) {}