Commit 85d8fed
rdeangel
fix(graphics): don't require CONTEXT block on every progressive frame
Per MS-RDPEGFX 2.2.4.2 the SYNC + CONTEXT blocks establish a codec
context once (keyed by codec_context_id) and are not repeated on
subsequent frames that reference the same context. The decoder's strict
requirement that CONTEXT be present on every decode_bitmap call rejected
every frame after the first with MissingBlock("CONTEXT"), freezing the
image on the coarse first pass.
Real-world servers (xrdp, GNOME Remote Desktop) omit the CONTEXT block
on every frame after the first one that established the context. Fall
back to the value stored when the context was first created; only error
when the very first frame for a context arrives without CONTEXT.1 parent 2046639 commit 85d8fed
1 file changed
Lines changed: 24 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1076 | 1076 | | |
1077 | 1077 | | |
1078 | 1078 | | |
1079 | | - | |
1080 | | - | |
1081 | | - | |
1082 | | - | |
1083 | | - | |
1084 | | - | |
1085 | | - | |
1086 | | - | |
1087 | | - | |
1088 | | - | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + | |
| 1094 | + | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
1089 | 1103 | | |
1090 | 1104 | | |
1091 | 1105 | | |
| |||
0 commit comments