Roll src/third_party/WebKit 3a0ba1e:fcd7003 (svn 191141:191149)
[chromium-blink-merge.git] / remoting / proto / video.proto
blob211b0231ddbeae5c1b2b460f6244cded5fcbf6aa
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.
5 // Protocol for video messages.
7 syntax = "proto2";
9 option optimize_for = LITE_RUNTIME;
11 package remoting;
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   };
23   // The encoding used for this image update.
24   optional Encoding encoding = 5 [default = ENCODING_INVALID];
26   // Width and height of the whole screen.
27   optional int32 screen_width = 6;
28   optional int32 screen_height = 7;
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;
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;
44 message VideoPacket {
45   optional VideoPacketFormat format = 4;
47   optional bytes data = 5;
49   // List of rectangles updated by this frame.
50   repeated Rect dirty_rects = 6;
52   // Time in milliseconds spent in capturing this video frame.
53   optional int64 capture_time_ms = 7;
55   // Time in milliseconds spent in encoding this video frame.
56   optional int64 encode_time_ms = 8;
58   // The client's timestamp of the latest event received by the host before
59   // starting to capture this video frame.
60   optional int64 latest_event_timestamp = 9;
62   repeated Rect desktop_shape_rects = 10;
64   // True when |desktop_shape_rects| should be used.
65   optional bool use_desktop_shape = 11;
67   // Optional frame timestamp. Used in tests to estimate frame latency.
68   optional int64 timestamp = 12;
70   // Frame identifier used to match VideoFrame and VideoAck.
71   optional int32 frame_id = 13;
74 // VideoAck acknowledges that the frame in the VideoPacket with the same
75 // frame_id has been rendered. VideoAck messages must be sent only for frames
76 // that have frame_id field set. They must be sent the same order in which
77 // the corresponding VideoPackets were received.
78 message VideoAck {
79   // Frame ID.
80   optional int32 frame_id = 1;