audio is prepared, next is MXL part

This commit is contained in:
Dmitry Sergeev
2026-09-16 22:44:27 +03:00
parent ce547451a0
commit 70c966dbad
5 changed files with 333 additions and 5 deletions
+29 -5
View File
@@ -52,6 +52,7 @@ type appArgs struct {
audioChannels uint8
audioSamplingFreq string
audioLevel string
audioUUID string
}
@@ -160,7 +161,17 @@ func validateVideoArgs(args *appArgs) error {
}
func validateAudioArgs(args *appArgs) error {
if args.audioFlowDefFile != "" || args.audioChannels == 0 {
if args.audioFlowDefFile == "" && args.audioChannels == 0 {
return nil
}
if _, ok := audioLevels[args.audioLevel]; !ok {
return fmt.Errorf(
"unsupported audio level %q (supported: %s)",
args.audioLevel,
sortedMapKeys(audioLevels),
)
}
if args.audioFlowDefFile != "" {
return nil
}
if _, exists := samplingRates[args.audioSamplingFreq]; !exists {
@@ -272,6 +283,11 @@ var patterns = map[string]pattern{
},
}
var audioLevels = map[string]float64{
"ebu": audio.LevelEBUDBFS,
"smpte": audio.LevelSMPTEDBFS,
}
func listPatterns(w io.Writer) {
fmt.Fprintln(w, "List of available video patterns:")
names := make([]string, 0, len(patterns))
@@ -327,9 +343,10 @@ func addFlags(fs *pflag.FlagSet, args *appArgs) {
fs.StringVar(&args.videoFPS, "fps", "25", "Video pattern FPS")
fs.StringVar(&args.videoUUID, "video-id", "", "Video UUID. Will be created, if not provided")
// Audio pattern flags
fs.Uint8VarP(&args.audioChannels, "channel", "c", 0, "Amount of audio channels. Each channel: num * 1kHz. Zero = no sound [TODO]")
fs.StringVarP(&args.audioSamplingFreq, "freq", "f", "48", "Sampling frequency of test audio feed in kHz [TODO]")
fs.StringVar(&args.audioUUID, "audio-id", "", "Audio UUID. Will be created, if not provided [TODO]")
fs.Uint8VarP(&args.audioChannels, "channel", "c", 0, "Amount of audio channels. Each channel: num * 1kHz")
fs.StringVarP(&args.audioSamplingFreq, "freq", "f", "48", "Sampling frequency of test audio feed in kHz")
fs.StringVar(&args.audioLevel, "audio-level", "ebu", "Audio alignment level: ebu (-18 dBFS) or smpte (-20 dBFS)")
fs.StringVar(&args.audioUUID, "audio-id", "", "Audio UUID. Will be created, if not provided")
}
func parseArgs(argv []string, stdout, stderr io.Writer) (parseResult, error) {
@@ -425,6 +442,10 @@ func buildAudioConfig(args appArgs) (*audio.Config, error) {
if args.audioFlowDefFile == "" && args.audioChannels == 0 {
return nil, nil
}
levelDBFS, ok := audioLevels[args.audioLevel]
if !ok {
return nil, fmt.Errorf("unsupported audio level %q", args.audioLevel)
}
var definition flowdef.Audio
if args.audioFlowDefFile != "" {
@@ -452,7 +473,10 @@ func buildAudioConfig(args appArgs) (*audio.Config, error) {
}
}
return &audio.Config{Definition: definition}, nil
return &audio.Config{
Definition: definition,
LevelDBFS: levelDBFS,
}, nil
}
func main() {