--no-video flag
This commit is contained in:
+22
-9
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user