Bladeren bron

fix: honor stereoEnabled in offline MPX path

tags/v0.5.0-pre
Jan Svabenik 1 maand geleden
bovenliggende
commit
9ecf97aa01
2 gewijzigde bestanden met toevoegingen van 31 en 0 verwijderingen
  1. +4
    -0
      internal/offline/generator.go
  2. +27
    -0
      internal/offline/generator_test.go

+ 4
- 0
internal/offline/generator.go Bestand weergeven

@@ -142,6 +142,10 @@ func (g *Generator) GenerateFrame(duration time.Duration) *output.CompositeFrame
// Stereo encode (produces mono, DSB-SC stereo, pilot)
preFrame := audio.NewFrame(audio.Sample(inL), audio.Sample(inR))
comps := stereoEncoder.Encode(preFrame)
if !g.cfg.FM.StereoEnabled {
comps.Stereo = 0
comps.Pilot = 0
}

// RDS
rdsValue := 0.0


+ 27
- 0
internal/offline/generator_test.go Bestand weergeven

@@ -52,6 +52,33 @@ func TestGenerateFrameCompositeOnly(t *testing.T) {
}
}

func TestStereoDisabledSuppressesPilotAndStereoDifference(t *testing.T) {
cfgStereo := cfgpkg.Default()
cfgStereo.FM.FMModulationEnabled = false
cfgStereo.FM.StereoEnabled = true
cfgStereo.Audio.ToneLeftHz = 1000
cfgStereo.Audio.ToneRightHz = 1600

cfgMono := cfgStereo
cfgMono.FM.StereoEnabled = false

stereoFrame := NewGenerator(cfgStereo).GenerateFrame(20 * time.Millisecond)
monoFrame := NewGenerator(cfgMono).GenerateFrame(20 * time.Millisecond)

if len(stereoFrame.Samples) != len(monoFrame.Samples) {
t.Fatal("frame length mismatch")
}

var diffEnergy float64
for i := range stereoFrame.Samples {
d := float64(stereoFrame.Samples[i].I - monoFrame.Samples[i].I)
diffEnergy += d * d
}
if diffEnergy == 0 {
t.Fatal("expected stereo-enabled and stereo-disabled composite output to differ")
}
}

func TestWriteFile(t *testing.T) {
cfg := cfgpkg.Default()
out := filepath.Join(t.TempDir(), "test.iqf32")


Laden…
Annuleren
Opslaan