package wyoming import ( "fmt" "net" "github.com/AlexxIT/go2rtc/pkg/core" ) func (s *Server) HandleMic(conn net.Conn) error { defer conn.Close() var closed core.Waiter var timestamp int api := NewAPI(conn) mic := newMicConsumer(func(chunk []byte) { data := fmt.Sprintf(`{"rate":16000,"width":2,"channels":1,"timestamp":%d}`, timestamp) evt := &Event{Type: "audio-chunk", Data: []byte(data), Payload: chunk} if err := api.WriteEvent(evt); err != nil { closed.Done(nil) } timestamp += len(chunk) / 2 }) mic.RemoteAddr = api.conn.RemoteAddr().String() if err := s.MicHandler(mic); err != nil { return err } defer mic.Stop() return closed.Wait() }