Home | History | Annotate | Download | only in proto
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Protocol for video messages.
      6 
      7 syntax = "proto2";
      8 
      9 option optimize_for = LITE_RUNTIME;
     10 
     11 package remoting;
     12 
     13 message VideoPacketFormat {
     14   // Identifies how the image was encoded.
     15   enum Encoding {
     16     ENCODING_INVALID = -1;
     17     ENCODING_VERBATIM = 0;
     18     ENCODING_ZLIB = 1;
     19     ENCODING_VP8 = 2;
     20     ENCODING_VP9 = 3;
     21   };
     22 
     23   // The encoding used for this image update.
     24   optional Encoding encoding = 5 [default = ENCODING_INVALID];
     25 
     26   // Width and height of the whole screen.
     27   optional int32 screen_width = 6;
     28   optional int32 screen_height = 7;
     29 
     30   // Horizontal and vertical DPI of the screen. If either of these is zero or
     31   // unset, the corresponding DPI should be assumed to be 96 (Windows' default)
     32   optional int32 x_dpi = 8;
     33   optional int32 y_dpi = 9;
     34 }
     35 
     36 // TODO(hclam): Remove this message once we can obtain dirty rects from libvpx.
     37 message Rect {
     38   optional int32 x = 1;
     39   optional int32 y = 2;
     40   optional int32 width = 3;
     41   optional int32 height = 4;
     42 }
     43 
     44 message VideoPacket {
     45   optional VideoPacketFormat format = 4;
     46 
     47   optional bytes data = 5;
     48 
     49   // List of rectangles updated by this frame.
     50   repeated Rect dirty_rects = 6;
     51 
     52   // Time in milliseconds spent in capturing this video frame.
     53   optional int32 capture_time_ms = 7;
     54 
     55   // Time in milliseconds spent in encoding this video frame.
     56   optional int32 encode_time_ms = 8;
     57 
     58   // The most recent sequence number received from the client on the event
     59   // channel.
     60   optional int64 client_sequence_number = 9;
     61 
     62   repeated Rect desktop_shape_rects = 10;
     63 
     64   // True when |desktop_shape_rects| should be used.
     65   optional bool use_desktop_shape = 11;
     66 
     67   // Optional frame timestamp. Used in tests to estimate frame latency.
     68   optional int64 timestamp = 12;
     69 }
     70