You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit fbf3d03
Browse filesBrowse the repository at this point in the historyBrowse files
fix: report live video as macOS-only on Windows and Linux builds
Non-macOS builds link native_stubs.c instead of the macOS native bridge, so
neither iOS simulator nor Android emulator H.264 streaming can work there.
The browser previously showed the raw JSON stub error in the stream area and
kept retrying WebRTC offers that could never succeed.
Server:
- Add platform.rs as the single source of truth for the live-video
capability, its user-facing reason, and the CLI note.
- Report `hostOs` and a `liveVideo` block from /api/health and
/api/stream-quality.
- Reject WebRTC offers early with 501 and the platform explanation via a new
AppError::Unsupported variant.
- Print a "Live video:" note after the service URLs on non-macOS hosts.
- Share one clear message across the H.264 encoder stubs; drop the unused
WIP helper and the duplicated #[test] attribute.
Client:
- Parse `{"error": ...}` bodies from failed offer and stream-config posts.
- Read `liveVideo` from the stream-quality response, pause the live stream,
and show the reason in the viewport instead of the reconnect loop.
- Disable the stream transport, encoder, frame rate, and resolution controls
with a "Requires macOS" note when the server cannot stream.
Docs: platform support table, health/REST field docs, video guide, and a
troubleshooting entry for the message.
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,7 +39,7 @@ view inside the editor.
39
39
40
40
## Features
41
41
42
-
- Supports native H.264 streaming for both iOS simulators and Android emulators
42
+
- Supports native H.264 streaming for both iOS simulators and Android emulators (live video requires the macOS build; the Windows and Linux CLIs manage Android emulators without a browser stream)
43
43
- Full simulator control & inspection using private iOS accessibility APIs and Android UIAutomator - available using `simdeck` CLI
44
44
- Real-time screen `describe` command using accessibility view tree - available in token-efficient format for agents
45
45
- Profiling built-in: CPU, memory, disk writes, network throughput, hang signals, and stack sampling
|`videoCodec`| Requested codec mode: `auto`, `hardware`, or `software`|
52
+
|`hostOs`| Server build target: `macos`, `windows`, or `linux`|
53
+
|`liveVideo`| Whether this build can encode the live H.264 stream |
50
54
|`androidGpu`| Android emulator renderer mode for SimDeck-owned boots |
51
55
|`streamQuality`| Active stream profile and limits |
52
56
|`webRtc`| ICE settings the browser should use |
53
57
58
+
`liveVideo` is `{ "supported": true, "requires": "macos" }` on macOS. Windows
59
+
and Linux builds return `supported: false` plus a `reason` string, because live
60
+
H.264 encoding for both iOS simulators and Android emulators lives in the macOS
61
+
native bridge. Clients should show that reason instead of opening a WebRTC
62
+
offer; the offer endpoint answers `501 Not Implemented` with the same message.
63
+
`GET /api/stream-quality` includes the same `liveVideo` block.
64
+
54
65
When auth is required, the `401` JSON body still includes `serverId`, `advertiseHost`, `hostId`, `hostName`, `httpPort`, and `serverKind` so native clients can group endpoints before pairing.
Copy file name to clipboardExpand all lines: docs/guide/video.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,18 @@ SimDeck streams live device video to the browser. Local iOS sessions default to
5
5
iOS simulator H.264 uses VideoToolbox for hardware encoding and x264 for software encoding.
6
6
Android emulator H.264 uses the emulator gRPC `streamScreenshot` API when SimDeck owns the boot. SimDeck receives raw RGBA frames, pads odd dimensions for H.264, and encodes them on the Mac. If the gRPC endpoint is unavailable, SimDeck falls back to the emulator `-share-vid` display surface and reads BGRA frames from the `videmulator<console-port>` shared memory region.
7
7
8
+
## Platform requirement
9
+
10
+
Live video needs the macOS build. Both encoders above live in the macOS native
11
+
bridge, so the Windows and Linux CLIs link a stub instead and cannot stream iOS
12
+
simulators or Android emulators to the browser. Those builds still manage
13
+
Android emulators, but `--video-codec`, stream quality, and the encoder menu
14
+
have no effect there. The service reports this through `liveVideo` in
15
+
`GET /api/health` and `GET /api/stream-quality`, prints a `Live video:` note
16
+
when it starts, and answers WebRTC offers with `501 Not Implemented` and the
17
+
same explanation. The browser client hides the retry loop and shows that
18
+
message in place of the device screen.
19
+
8
20
## When encoding runs
9
21
10
22
SimDeck starts encoding when a browser stream needs H.264 frames. For iOS, the
0 commit comments