optimize streaming

This commit is contained in:
KingKDot
2026-04-08 14:14:09 -05:00
parent 67d81d1b75
commit b711efe6bd
10 changed files with 113 additions and 9 deletions
+11 -1
View File
@@ -130,6 +130,8 @@ func CaptureAndSend(ctx context.Context, env *rt.Env) error {
quality := jpegQuality()
frame, encodeDur, err := buildFrame(img, display, quality)
PutRGBA(img)
img = nil
if err != nil {
return err
}
@@ -142,6 +144,9 @@ func CaptureAndSend(ctx context.Context, env *rt.Env) error {
if ctx.Err() != nil {
return nil
}
if !AcquireFrameSlot() {
return nil // backpressure: server hasn't acked previous frames
}
sendStart := time.Now()
err = wire.WriteMsg(ctx, env.Conn, frame)
sendDur := time.Since(sendStart)
@@ -263,14 +268,19 @@ func captureAllDisplaysAndSend(ctx context.Context, env *rt.Env) error {
cH = ry
}
}
canvas := image.NewRGBA(image.Rect(0, 0, cW, cH))
canvas := GetRGBA(cW, cH)
for _, sp := range scaled {
dst := image.Rect(sp.offX, sp.offY, sp.offX+sp.img.Rect.Dx(), sp.offY+sp.img.Rect.Dy())
draw.Draw(canvas, dst, sp.img, sp.img.Rect.Min, draw.Src)
}
for _, part := range parts {
PutRGBA(part.img)
}
quality := jpegQuality()
frame, _, err := buildFrame(canvas, 0, quality)
PutRGBA(canvas)
canvas = nil
if err != nil {
return err
}