if frame size isn't divisable by 2 then use JPEG instead.

This commit is contained in:
KingKDot
2026-03-25 08:56:43 -05:00
parent 3a9c1029f6
commit 66fdf578b7
@@ -536,6 +536,10 @@ func buildFrame(img *image.RGBA, display int, quality int) (wire.Frame, time.Dur
codec := blockCodec() codec := blockCodec()
if codec == "h264" { if codec == "h264" {
if width%2 != 0 || height%2 != 0 {
log.Printf("capture: h264 skipped for odd dimensions (%dx%d), falling back to jpeg", width, height)
codec = "jpeg"
} else {
h264Bytes, err := encodeH264Frame(img) h264Bytes, err := encodeH264Frame(img)
if err == nil && len(h264Bytes) > 0 { if err == nil && len(h264Bytes) > 0 {
prevMu.Lock() prevMu.Lock()
@@ -555,6 +559,7 @@ func buildFrame(img *image.RGBA, display int, quality int) (wire.Frame, time.Dur
}) })
codec = "jpeg" codec = "jpeg"
} }
}
if !enableBlocks { if !enableBlocks {
jpegBytes, err := encodeJPEG(img, quality) jpegBytes, err := encodeJPEG(img, quality)
@@ -636,6 +641,10 @@ func buildFrameHVNC(img *image.RGBA, display int, quality int) (wire.Frame, time
now := time.Now() now := time.Now()
if codec == "h264" { if codec == "h264" {
if width%2 != 0 || height%2 != 0 {
log.Printf("hvnc capture: h264 skipped for odd dimensions (%dx%d), falling back to jpeg", width, height)
codec = "jpeg"
} else {
h264Bytes, err := encodeH264Frame(img) h264Bytes, err := encodeH264Frame(img)
if err == nil && len(h264Bytes) > 0 { if err == nil && len(h264Bytes) > 0 {
prevMu.Lock() prevMu.Lock()
@@ -656,6 +665,7 @@ func buildFrameHVNC(img *image.RGBA, display int, quality int) (wire.Frame, time
}) })
codec = "jpeg" codec = "jpeg"
} }
}
prevMu.Lock() prevMu.Lock()
pf := prevFrame pf := prevFrame