to be continued
This commit is contained in:
@@ -39,7 +39,7 @@ func NewServer(o *Options) (*Server, error) {
|
||||
options: o,
|
||||
audioHeader: make(chan *audio.WavHeader, 1),
|
||||
pcm: make(chan []byte),
|
||||
ppm: make(chan io.ReadCloser, 60), // to be configured
|
||||
ppm: make(chan io.ReadCloser, int(o.Video.FPS)), // to be configured
|
||||
}
|
||||
|
||||
u, err := url.Parse(o.QmpAddress)
|
||||
@@ -115,13 +115,22 @@ func (s *Server) Run() error {
|
||||
go func() {
|
||||
logrus.Debug("screen capture start")
|
||||
defer close(s.ppm)
|
||||
for range time.Tick(time.Second / time.Duration(s.options.Video.FPS)) { // to be configured
|
||||
|
||||
ticker := time.NewTicker(time.Second / time.Duration(s.options.Video.FPS))
|
||||
defer ticker.Stop()
|
||||
|
||||
for { // to be configured
|
||||
ppm, err := s.qemu.ScreenDump()
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
continue
|
||||
}
|
||||
s.ppm <- ppm
|
||||
select {
|
||||
case s.ppm <- ppm:
|
||||
case <-ticker.C:
|
||||
continue
|
||||
}
|
||||
//<-ticker.C
|
||||
}
|
||||
}()
|
||||
|
||||
@@ -144,6 +153,8 @@ func (s *Server) Run() error {
|
||||
|
||||
logrus.Debug("start reading PCM")
|
||||
defer close(s.pcm)
|
||||
ticker := time.NewTicker(waveHeader.GetLatnecy(s.options.Audio.BufferSize))
|
||||
defer ticker.Stop()
|
||||
for {
|
||||
b := make([]byte, s.options.Audio.BufferSize) // to be configured
|
||||
if _, err := f.Read(b[:]); err != nil {
|
||||
@@ -151,7 +162,7 @@ func (s *Server) Run() error {
|
||||
}
|
||||
select {
|
||||
case s.pcm <- b:
|
||||
case <-time.After(waveHeader.GetLatnecy(s.options.Audio.BufferSize)):
|
||||
case <-ticker.C:
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
Reference in New Issue
Block a user