to be continued
This commit is contained in:
@@ -43,7 +43,7 @@ func ExampleOptions() *Options {
|
||||
Video: VideoOptions{
|
||||
Height: 768,
|
||||
Width: 1024,
|
||||
FPS: 60,
|
||||
FPS: 30,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@@ -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:
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user