feat(06-02): add freqCfgs parameter to RunSynthesis
- Change RunSynthesis signature to accept injected config map (D-10) - Replace hardcoded synth.ClassFreqConfigs with passed-in freqCfgs - Update all three RunSynthesis calls in encode tests to pass synth.ClassFreqConfigs
This commit is contained in:
+3
-2
@@ -41,9 +41,10 @@ func EncodeMP3(outputPath string, frames [][2]float64, sampleRate int) error {
|
||||
|
||||
// RunSynthesis consumes a slice of WindowSnapshots, renders audio via OscillatorBank,
|
||||
// and encodes to MP3 at outputPath.
|
||||
// freqCfgs is the merged config map from config.Load (D-10: injected, not hardcoded).
|
||||
// Returns an error if zero packets were captured (D-16 / OUT-03).
|
||||
// The zero-packet guard runs BEFORE file creation to avoid leaving an empty file on disk.
|
||||
func RunSynthesis(snapshots []classify.WindowSnapshot, outputPath string) error {
|
||||
func RunSynthesis(snapshots []classify.WindowSnapshot, outputPath string, freqCfgs map[classify.TrafficClass]synth.FreqConfig) error {
|
||||
// D-16 / OUT-03: Zero-packet guard — check BEFORE creating output file
|
||||
var totalPackets int64
|
||||
for _, snap := range snapshots {
|
||||
@@ -54,7 +55,7 @@ func RunSynthesis(snapshots []classify.WindowSnapshot, outputPath string) error
|
||||
}
|
||||
|
||||
// Render all windows to stereo frames
|
||||
bank := synth.NewBank(1.0, synth.ClassFreqConfigs) // tau=1.0s per D-07
|
||||
bank := synth.NewBank(1.0, freqCfgs) // tau=1.0s per D-07
|
||||
var allFrames [][2]float64
|
||||
for _, snap := range snapshots {
|
||||
frames := bank.RenderWindow(snap)
|
||||
|
||||
+3
-3
@@ -53,7 +53,7 @@ func TestMP3Valid(t *testing.T) {
|
||||
tmpFile.Close()
|
||||
defer os.Remove(tmpPath)
|
||||
|
||||
if err := RunSynthesis(snaps, tmpPath); err != nil {
|
||||
if err := RunSynthesis(snaps, tmpPath, synth.ClassFreqConfigs); err != nil {
|
||||
t.Fatalf("RunSynthesis: %v", err)
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ func TestZeroPacketError(t *testing.T) {
|
||||
tmpPath := "/tmp/netsynth-should-not-exist-" + t.Name() + ".mp3"
|
||||
defer os.Remove(tmpPath)
|
||||
|
||||
err := RunSynthesis([]classify.WindowSnapshot{}, tmpPath)
|
||||
err := RunSynthesis([]classify.WindowSnapshot{}, tmpPath, synth.ClassFreqConfigs)
|
||||
if err == nil {
|
||||
t.Fatal("expected error for empty snapshot slice, got nil")
|
||||
}
|
||||
@@ -118,7 +118,7 @@ func TestZeroPacketError(t *testing.T) {
|
||||
{Counts: map[classify.TrafficClass]int64{}, TotalPackets: 0, WindowIndex: 0},
|
||||
{Counts: map[classify.TrafficClass]int64{}, TotalPackets: 0, WindowIndex: 1},
|
||||
}
|
||||
err2 := RunSynthesis(zeroSnaps, tmpPath2)
|
||||
err2 := RunSynthesis(zeroSnaps, tmpPath2, synth.ClassFreqConfigs)
|
||||
if err2 == nil {
|
||||
t.Fatal("expected error for zero-packet snapshots, got nil")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user