Go-based FM stereo transmitter with RDS, Windows-first and cross-platform
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

35 lignes
1011B

  1. package aoiprxkit
  2. import (
  3. "bytes"
  4. "testing"
  5. )
  6. func TestWriteAndReadPCM32Packet(t *testing.T) {
  7. var buf bytes.Buffer
  8. samples := []int32{1, -1, 10, -10}
  9. if err := WritePCM32Packet(&buf, 2, 48000, 2, 7, 1234, samples); err != nil {
  10. t.Fatalf("unexpected write error: %v", err)
  11. }
  12. hdr, err := ReadStreamHeader(&buf)
  13. if err != nil {
  14. t.Fatalf("unexpected read header error: %v", err)
  15. }
  16. if hdr.Codec != StreamCodecPCM_S32LE || hdr.Channels != 2 || hdr.SampleRateHz != 48000 || hdr.FrameSamples != 2 || hdr.Sequence != 7 || hdr.Timestamp != 1234 || hdr.PayloadBytes != 16 {
  17. t.Fatalf("unexpected header: %+v", hdr)
  18. }
  19. payload := make([]byte, hdr.PayloadBytes)
  20. if _, err := buf.Read(payload); err != nil {
  21. t.Fatalf("unexpected payload read error: %v", err)
  22. }
  23. got, err := DecodeS32LE(payload, 2)
  24. if err != nil {
  25. t.Fatalf("unexpected decode error: %v", err)
  26. }
  27. for i := range samples {
  28. if got[i] != samples[i] {
  29. t.Fatalf("sample %d mismatch: got=%d want=%d", i, got[i], samples[i])
  30. }
  31. }
  32. }