--no-video flag

This commit is contained in:
Dmitry Sergeev
2026-09-17 22:46:11 +03:00
parent e30cb7a168
commit 4d9485220a
4 changed files with 140 additions and 18 deletions
+22 -9
View File
@@ -19,22 +19,27 @@ const (
type Config struct {
Domain string
Video video.Config
Video *video.Config
Audio *audio.Config
}
func Run(ctx context.Context, cfg Config) (runErr error) {
if err := validateConfig(cfg); err != nil {
return err
}
log.Printf("%s %s", Name, Version)
log.Printf("Domain: %s", cfg.Domain)
log.Printf("Video: %dx%d %d/%d",
cfg.Video.Width(), cfg.Video.Height(), cfg.Video.Rate().Num, cfg.Video.Rate().Den)
log.Printf("Video ID: %s", cfg.Video.ID())
if cfg.Video != nil {
log.Printf("Video: %dx%d %d/%d",
cfg.Video.Width(), cfg.Video.Height(), cfg.Video.Rate().Num, cfg.Video.Rate().Den)
log.Printf("Video ID: %s", cfg.Video.ID())
}
if cfg.Audio != nil {
log.Printf("Audio: %d channels %d/%d Hz %.0f dBFS",
cfg.Audio.Channels(), cfg.Audio.Rate().Num, cfg.Audio.Rate().Den, cfg.Audio.LevelDBFS)
log.Printf("Audio ID: %s", cfg.Audio.ID())
}
inst, err := mxl.NewInstance(cfg.Domain, "")
if err != nil {
return fmt.Errorf("initialize MXL domain %q: %w", cfg.Domain, err)
@@ -45,13 +50,14 @@ func Run(ctx context.Context, cfg Config) (runErr error) {
}
}()
runners := []Runner{
{
runners := make([]Runner, 0, 2)
if cfg.Video != nil {
runners = append(runners, Runner{
Name: "video",
Run: func(ctx context.Context) error {
return video.Run(ctx, inst, cfg.Video)
return video.Run(ctx, inst, *cfg.Video)
},
},
})
}
if cfg.Audio != nil {
runners = append(runners, Runner{
@@ -64,3 +70,10 @@ func Run(ctx context.Context, cfg Config) (runErr error) {
return RunConcurrent(ctx, runners...)
}
func validateConfig(cfg Config) error {
if cfg.Video == nil && cfg.Audio == nil {
return fmt.Errorf("at least one media flow must be enabled")
}
return nil
}
+15
View File
@@ -0,0 +1,15 @@
package app
import (
"strings"
"testing"
)
func TestValidateConfigRejectsNoFlows(t *testing.T) {
err := validateConfig(Config{
Domain: "/unused",
})
if err == nil || !strings.Contains(err.Error(), "at least one media flow") {
t.Fatalf("error = %v, want no-flow validation error", err)
}
}