audio integration to main
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user