audio integration to main

This commit is contained in:
Dmitry Sergeev
2026-09-16 22:01:53 +03:00
parent ce00305c25
commit ce547451a0
3 changed files with 130 additions and 0 deletions
+37
View File
@@ -20,6 +20,7 @@ import (
"github.com/qvest-digital/go-mxl/mxl"
"github.com/spf13/pflag"
"mxl-pattern-generator/internal/audio"
"mxl-pattern-generator/internal/flowdef"
"mxl-pattern-generator/internal/generator"
"mxl-pattern-generator/internal/video"
@@ -418,6 +419,42 @@ func buildVideoConfig(args appArgs) (video.Config, error) {
}, nil
}
// buildAudioConfig returns nil when audio is disabled. An explicit audio flow
// definition enables audio even when --channel is zero.
func buildAudioConfig(args appArgs) (*audio.Config, error) {
if args.audioFlowDefFile == "" && args.audioChannels == 0 {
return nil, nil
}
var definition flowdef.Audio
if args.audioFlowDefFile != "" {
data, err := os.ReadFile(args.audioFlowDefFile)
if err != nil {
return nil, fmt.Errorf("read audio flow definition %q: %w", args.audioFlowDefFile, err)
}
definition, err = flowdef.ParseFloat32Audio(data)
if err != nil {
return nil, fmt.Errorf("parse audio flow definition %q: %w", args.audioFlowDefFile, err)
}
} else {
rate, ok := samplingRates[args.audioSamplingFreq]
if !ok {
return nil, fmt.Errorf("unsupported audio sample rate %q", args.audioSamplingFreq)
}
var err error
definition, err = flowdef.NewFloat32Audio(
args.audioUUID,
uint(args.audioChannels),
flowdef.Rational{Numerator: uint(rate.Num), Denominator: uint(rate.Den)},
)
if err != nil {
return nil, fmt.Errorf("build audio flow definition: %w", err)
}
}
return &audio.Config{Definition: definition}, nil
}
func main() {
parsed, err := parseArgs(os.Args[1:], os.Stdout, os.Stderr)
if err != nil {