feat(restream): add ConfigWebRTC per-process field
Adds the per-process WebRTC egress toggle + codec/payload-type knobs described in the M2 spec. Clone() carries it forward. No behavior change yet \u2014 the subsystem wiring comes later in M2.
This commit is contained in:
parent
c38036de94
commit
eaeefee753
1 changed files with 19 additions and 0 deletions
|
|
@ -18,6 +18,23 @@ type ConfigIO struct {
|
||||||
Cleanup []ConfigIOCleanup `json:"cleanup"`
|
Cleanup []ConfigIOCleanup `json:"cleanup"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ConfigWebRTC carries per-process WebRTC egress settings.
|
||||||
|
//
|
||||||
|
// When Enabled is true the restream manager will (via the app/webrtc
|
||||||
|
// subsystem) append an additional FFmpeg output leg that emits H.264/Opus
|
||||||
|
// RTP to a loopback UDP port the subsystem allocates. The subsystem reads
|
||||||
|
// that RTP and fans it out to WHEP subscribers.
|
||||||
|
type ConfigWebRTC struct {
|
||||||
|
Enabled bool `json:"enabled"`
|
||||||
|
VideoPT uint8 `json:"video_pt"`
|
||||||
|
AudioPT uint8 `json:"audio_pt"`
|
||||||
|
ForceTranscode bool `json:"force_transcode"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clone returns a deep copy of the WebRTC config (currently a value copy;
|
||||||
|
// provided for symmetry with other Clone methods and future-proofing).
|
||||||
|
func (w ConfigWebRTC) Clone() ConfigWebRTC { return w }
|
||||||
|
|
||||||
func (io ConfigIO) Clone() ConfigIO {
|
func (io ConfigIO) Clone() ConfigIO {
|
||||||
clone := ConfigIO{
|
clone := ConfigIO{
|
||||||
ID: io.ID,
|
ID: io.ID,
|
||||||
|
|
@ -47,6 +64,7 @@ type Config struct {
|
||||||
LimitCPU float64 `json:"limit_cpu_usage"` // percent
|
LimitCPU float64 `json:"limit_cpu_usage"` // percent
|
||||||
LimitMemory uint64 `json:"limit_memory_bytes"` // bytes
|
LimitMemory uint64 `json:"limit_memory_bytes"` // bytes
|
||||||
LimitWaitFor uint64 `json:"limit_waitfor_seconds"` // seconds
|
LimitWaitFor uint64 `json:"limit_waitfor_seconds"` // seconds
|
||||||
|
WebRTC ConfigWebRTC `json:"webrtc"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (config *Config) Clone() *Config {
|
func (config *Config) Clone() *Config {
|
||||||
|
|
@ -61,6 +79,7 @@ func (config *Config) Clone() *Config {
|
||||||
LimitCPU: config.LimitCPU,
|
LimitCPU: config.LimitCPU,
|
||||||
LimitMemory: config.LimitMemory,
|
LimitMemory: config.LimitMemory,
|
||||||
LimitWaitFor: config.LimitWaitFor,
|
LimitWaitFor: config.LimitWaitFor,
|
||||||
|
WebRTC: config.WebRTC.Clone(),
|
||||||
}
|
}
|
||||||
|
|
||||||
clone.Input = make([]ConfigIO, len(config.Input))
|
clone.Input = make([]ConfigIO, len(config.Input))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue