Repository navigation
spice: decode h264 streams on the phone - #14
Open
ElCruncharino wants to merge 3 commits into
Open
ElCruncharino wants to merge 3 commits into
ElCruncharino wants to merge 3 commits into
Conversation
added 3 commits
October 23, 2026 15:49
backends that get h264 from their protocol can hand the frames to mediacodec and get nv12 planes back. the decoder lives in common so every backend uses the same one. frames carry their colour matrix and range, and the jni callback is optional, so backends without video don't notice.
a gl layer behind the desktop view draws each video region from its nv12 planes, so the colour conversion happens on the gpu. damage over a video region hands it back to the cpu. what the video had left of that region is repainted from its last frame, so the mirror doesn't flash the old picture. screenshots and the session thumbnail paint video over the backend's picture, which is stale under video.
spice sends h264 for regions it thinks are video. those used to be refused, which left a still picture behind. the phone decodes them now, and the capability is only offered on android where the decoder is. spice doesn't say which range its video is in, so limited range is assumed.
ElCruncharino
marked this pull request as draft
October 23, 2026 19:57
ElCruncharino
force-pushed
the
gpu-video-spice
branch
from
October 23, 2026 20:05
2848d11 to
400a8a6
Compare
ElCruncharino
marked this pull request as ready for review
October 23, 2026 20:07
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
SPICE sends H.264 for regions it thinks are video. Those used to be
refused, which left a still picture behind. The phone decodes them now,
and the H.264 capability is only offered on Android, where the decoder is.
Frames go to the GPU the same way the RDP backends' do. SPICE does not say
which range its video is in, so limited range is assumed.
Builds and installs. Not run against a SPICE server yet, so the picture is
unverified.
Stacked on #12.