// Copyright (c) 2012 The Chromium Authors. All rights reserved. // 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; // Controls whether lossless encode and color translation are requested. optional bool lossless_encode = 2; optional bool lossless_color = 3; } 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. optional int64 screen_id = 8; // Name of the video stream, from the WebRTC MediaStream.id property. 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; } message VideoLayout { // Layout for each video track. repeated VideoTrackLayout video_track = 1; // True if this display configuration supports capturing the entire desktop. optional bool supports_full_desktop_capture = 2; } 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; } message DesktopDisplayInfo { // Unique display identifier. optional int64 id = 1; // Position of the top left corner of this display (in pixels). optional int32 x = 2; optional int32 y = 3; // Size of the display (in pixels). optional int32 width = 4; optional int32 height = 5; // DPI of the screen. optional int32 dpi = 6; // Bits per pixel. optional int32 bpp = 7; // True if this is the default display. optional bool is_default = 8; } // 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 actions = 1; } // Map USB code to key behavior. map 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; }