forked from Pissandshittium/pissandshittium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontrol.proto
226 lines (184 loc) · 7.44 KB
/
control.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Protocol for control messages.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package remoting.protocol;
import "layout_key_function.proto";
// Set the host resolution to match the client. If screen_id is omitted, then
// the message will be ignored unless there is only one host display.
//
// If none of the fields (apart from screen_id) are present, restore the host
// resolution instead.
message ClientResolution {
// Width and height of the client in Density-Independent Pixels.
optional int32 dips_width = 1;
optional int32 dips_height = 2;
// Deprecated width and height of the client in device pixels.
optional int32 width_deprecated = 3;
optional int32 height_deprecated = 4;
// Horizontal and vertical DPI of the screen. If either of these is zero or
// unset, the corresponding DPI should be assumed to be 96 (Windows' default)
optional int32 x_dpi = 5;
optional int32 y_dpi = 6;
// The screen_id from the most recent VideoTrackLayout message.
optional int64 screen_id = 7;
}
message VideoControl {
// Enables the video channel if true, pauses if false.
optional bool enable = 1;
message FramerateBoost {
// Indicates whether to enable or disable this feature. When enabled, the
// capture interval will be adjusted when remote input is received. The goal
// is to reduce the latency between when input is received and a new frame
// is generated which will lead to higher responsiveness when the user
// interacts with the host.
optional bool enabled = 1;
// Adjusting the capture interval will change the framerate, a lower
// interval value will typically lead to a higher FPS from the host.
// The minimum value is 1, maximum is 1000 but that would lead to 1 FPS
// which would be silly.
optional int32 capture_interval_ms = 2;
// Indicates the amount of time the capture interval will be boosted after
// each remote input event is received. Minimum value is 1, maximum is
// 1000 (1 second).
optional int32 boost_duration_ms = 3;
}
optional FramerateBoost framerate_boost = 4;
// Sets the target framerate for the host. Note that the actual framerate is
// variable so this value will update the rate at which frames are captured
// but the framerate will be lower if there aren't enough changes on the
// screen or the host is not capable of generating frames quickly enough.
optional uint32 target_framerate = 5;
// Lossless encode and color settings are no longer set via this message.
reserved 2, 3;
reserved "lossless_encode", "lossless_color";
}
message AudioControl {
// Enables the audio channel if true, pauses if false.
optional bool enable = 1;
}
message CursorShapeInfo {
// Width, height (in screen pixels) of the cursor.
optional int32 width = 1;
optional int32 height = 2;
// X,Y coordinates (relative to upper-left corner) of the cursor hotspot.
optional int32 hotspot_x = 3;
optional int32 hotspot_y = 4;
// Cursor pixmap data in 32-bit BGRA format.
optional bytes data = 5;
}
message Capabilities {
// List of capabilities supported by the sender (case sensitive, capabilities
// are separated by spaces).
optional string capabilities = 1;
}
message PairingRequest {
// Human-readable name of the client.
optional string client_name = 1;
}
message PairingResponse {
// Unique identifier for this client.
optional string client_id = 1;
// Shared secret for this client.
optional string shared_secret = 2;
}
message ExtensionMessage {
// The message type. This is used to dispatch the message to the correct
// recipient.
optional string type = 1;
// String-encoded message data. The client and host must agree on the encoding
// for each message type; different message types need not shared the same
// encoding.
optional string data = 2;
}
message VideoTrackLayout {
// Unique display identifier, from ScreenId in desktop_capture_types.h.
// In client-to-host messages, an unset screen_id indicates that the client is
// requesting a new display to be added to the display layout.
optional int64 screen_id = 8;
// Name of the video stream, from the WebRTC MediaStream.id property.
// Absent in client-to-host messages if the client is requesting a new
// display.
optional string media_stream_id = 1;
// Position of the top left corner of the rectangle covered by the video
// track in DIPs (device independent pixels).
optional int32 position_x = 2;
optional int32 position_y = 3;
// Size of the area covered by the video track in DIPs.
optional int32 width = 4;
optional int32 height = 5;
// DPI of the screen.
optional int32 x_dpi = 6;
optional int32 y_dpi = 7;
// TODO(yuweih): Add bpp to the message.
}
message VideoLayout {
// Layout for each video track.
repeated VideoTrackLayout video_track = 1;
// True if this display configuration supports capturing the entire desktop.
// Absent in client-to-host messages.
optional bool supports_full_desktop_capture = 2;
// Screen ID of the display to be associated with the main window on the
// client. Optional. If not set, the client will choose a sensible display to
// be associated with the main window.
//
// This field is ignored in client-to-host messages.
optional int64 primary_screen_id = 3;
}
message SelectDesktopDisplayRequest {
// Identifier for display to select. Valid strings are "0", "1", ...
// The "all" string is used to select the entire desktop.
optional string id = 1;
}
// Next ID: 2
message KeyboardLayout {
// Next ID: 3
message KeyAction {
oneof action {
LayoutKeyFunction function = 1;
string character = 2;
}
}
// Next ID: 2
message KeyBehavior {
// Maps 0-based shift level to key action. (Note: because this is zero-
// based, it will be one less than the corresponding ISO shift level.)
map<uint32, KeyAction> actions = 1;
}
// Map USB code to key behavior.
map<uint32, KeyBehavior> keys = 1;
}
// Next ID: 2
message TransportInfo {
// Transport layer protocol the message sender uses to connect to the relay
// server or the peer (if connection not relayed).
// Possible values are those defined in the protocol and relayProtocol fields
// in the RTCIceCandidateStats dictionary.
// If the host failed to get protocol using WebRTC API, this field will be set
// to "api-error".
optional string protocol = 1;
}
// Next ID: 5
message PeerConnectionParameters {
// Sets preferred minimum and maximum bitrates. Unset fields means no
// preference on the bitrate. Clients might need to keep track of existing
// parameters if they need to do incremental changes.
optional int32 preferred_min_bitrate_bps = 1;
optional int32 preferred_max_bitrate_bps = 2;
// Requests an ICE restart. This causes the host to initiate a new SDP
// offer/answer exchange, and restarts the ICE gathering/connection sequence.
// This can be used to re-establish a connection, without needing to
// re-authenticate the user.
optional bool request_ice_restart = 3;
// Requests the host to initiate a new SDP offer/answer exchange, without
// restarting ICE. This can be used to change SDP configuration (for example,
// switching to a different codec), without needing a full reconnection.
optional bool request_sdp_restart = 4;
}
// Next ID: 2
message ActiveDisplay {
optional int64 screen_id = 1;
}