to be continued

This commit is contained in:
TonyChyi
2022-10-12 11:23:14 +08:00
parent f1fe154e01
commit c64db4a7a5
4 changed files with 46 additions and 19 deletions

View File

@@ -43,7 +43,7 @@ func ExampleOptions() *Options {
Video: VideoOptions{
Height: 768,
Width: 1024,
FPS: 60,
FPS: 30,
},
}
}

View File

@@ -2,7 +2,6 @@ package qemuserver
import (
"fmt"
"io"
"net/url"
"os"
"time"
@@ -29,7 +28,7 @@ type Server struct {
qemu *qemu.Domain
audioHeader chan *audio.WavHeader
pcm chan []byte
ppm chan io.ReadCloser
ppm chan video.Frame
}
var DefaultServer *Server
@@ -39,7 +38,7 @@ func NewServer(o *Options) (*Server, error) {
options: o,
audioHeader: make(chan *audio.WavHeader, 1),
pcm: make(chan []byte),
ppm: make(chan io.ReadCloser, 1), // to be configured
ppm: make(chan video.Frame), // to be configured
}
u, err := url.Parse(o.QmpAddress)
@@ -120,17 +119,21 @@ func (s *Server) Run() error {
defer ticker.Stop()
for { // to be configured
now := time.Now()
ppm, err := s.qemu.ScreenDump()
if err != nil {
logrus.Error(err)
continue
}
select {
case s.ppm <- ppm:
case s.ppm <- video.Frame{
Time: now,
Image: ppm,
}:
<-ticker.C
case <-ticker.C:
continue
}
<-ticker.C
}
}()
@@ -156,12 +159,14 @@ func (s *Server) Run() error {
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 {
logrus.Error(err)
}
select {
case s.pcm <- b:
<-ticker.C
case <-ticker.C:
}
}