adjusted play rate by adding sleep to the player if message timestamp is in the future

This commit is contained in:
amit bezalel 2017-07-14 17:57:22 +03:00
parent 01f050ae21
commit 680859b0ad
4 changed files with 9 additions and 5 deletions

View File

@ -102,9 +102,7 @@ func (fbm *FramebufferUpdateMessage) Read(c common.IClientConn, r *common.RfbRea
logger.Errorf("unsupported encoding type: %d, %s", encodingTypeInt, encType) logger.Errorf("unsupported encoding type: %d, %s", encodingTypeInt, encType)
return nil, fmt.Errorf("unsupported encoding type: %d, %s", encodingTypeInt, encType) return nil, fmt.Errorf("unsupported encoding type: %d, %s", encodingTypeInt, encType)
} }
} }
} }
return &FramebufferUpdateMessage{rects}, nil return &FramebufferUpdateMessage{rects}, nil

View File

@ -13,7 +13,7 @@ import (
type FbsReader struct { type FbsReader struct {
reader io.Reader reader io.Reader
buffer bytes.Buffer buffer bytes.Buffer
currentTimestamp uint32 currentTimestamp int
pixelFormat *common.PixelFormat pixelFormat *common.PixelFormat
encodings []common.Encoding encodings []common.Encoding
} }
@ -26,7 +26,7 @@ func (fbs *FbsReader) Read(p []byte) (n int, err error) {
return 0, err return 0, err
} }
fbs.buffer.Write(seg.bytes) fbs.buffer.Write(seg.bytes)
fbs.currentTimestamp = seg.timestamp fbs.currentTimestamp = int(seg.timestamp)
} }
return fbs.buffer.Read(p) return fbs.buffer.Read(p)
} }

View File

@ -68,6 +68,12 @@ func (h *ServerMessageHandler) sendFbsMessage() {
logger.Error("TestServer.NewConnHandler: Error unknown message type: ", messageType) logger.Error("TestServer.NewConnHandler: Error unknown message type: ", messageType)
return return
} }
timeSinceStart := int(time.Now().UnixNano()/int64(time.Millisecond)) - h.startTime
timeToSleep := fbs.currentTimestamp - timeSinceStart
if timeToSleep > 0 {
time.Sleep(time.Duration(timeToSleep) * time.Millisecond)
}
err = msg.CopyTo(fbs, h.Conn, fbs) err = msg.CopyTo(fbs, h.Conn, fbs)
if err != nil { if err != nil {
logger.Error("TestServer.NewConnHandler: Error in reading FBS segment: ", err) logger.Error("TestServer.NewConnHandler: Error in reading FBS segment: ", err)

View File

@ -36,7 +36,7 @@ func NewRecorder(saveFilePath string) *Recorder {
rec := Recorder{RBSFileName: saveFilePath, startTime: getNowMillisec()} rec := Recorder{RBSFileName: saveFilePath, startTime: getNowMillisec()}
var err error var err error
rec.maxWriteSize = 65536 rec.maxWriteSize = 65535
rec.writer, err = os.OpenFile(saveFilePath, os.O_RDWR|os.O_CREATE, 0755) rec.writer, err = os.OpenFile(saveFilePath, os.O_RDWR|os.O_CREATE, 0755)
if err != nil { if err != nil {