OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Protocol for video messages. | 5 // Protocol for video messages. |
6 | 6 |
7 syntax = "proto2"; | 7 syntax = "proto2"; |
8 | 8 |
9 option optimize_for = LITE_RUNTIME; | 9 option optimize_for = LITE_RUNTIME; |
10 | 10 |
11 package remoting; | 11 package remoting; |
12 | 12 |
13 message VideoPacketFormat { | 13 message VideoPacketFormat { |
| 14 // Reserved fields IDs used for removed fields: 1 to 4. |
| 15 |
14 // Identifies how the image was encoded. | 16 // Identifies how the image was encoded. |
15 enum Encoding { | 17 enum Encoding { |
16 ENCODING_INVALID = -1; | 18 ENCODING_INVALID = -1; |
17 ENCODING_VERBATIM = 0; | 19 ENCODING_VERBATIM = 0; |
18 ENCODING_ZLIB = 1; | 20 ENCODING_ZLIB = 1; |
19 ENCODING_VP8 = 2; | 21 ENCODING_VP8 = 2; |
20 ENCODING_VP9 = 3; | 22 ENCODING_VP9 = 3; |
21 }; | 23 }; |
22 | 24 |
23 // The encoding used for this image update. | 25 // The encoding used for this image update. |
(...skipping 10 matching lines...) Expand all Loading... |
34 } | 36 } |
35 | 37 |
36 message Rect { | 38 message Rect { |
37 optional int32 x = 1; | 39 optional int32 x = 1; |
38 optional int32 y = 2; | 40 optional int32 y = 2; |
39 optional int32 width = 3; | 41 optional int32 width = 3; |
40 optional int32 height = 4; | 42 optional int32 height = 4; |
41 } | 43 } |
42 | 44 |
43 message VideoPacket { | 45 message VideoPacket { |
| 46 // Reserved fields IDs used for removed fields: 1 to 3, 10, 11. |
| 47 |
44 optional VideoPacketFormat format = 4; | 48 optional VideoPacketFormat format = 4; |
45 | 49 |
46 optional bytes data = 5; | 50 optional bytes data = 5; |
47 | 51 |
48 // List of rectangles updated by this frame. | 52 // List of rectangles updated by this frame. |
49 repeated Rect dirty_rects = 6; | 53 repeated Rect dirty_rects = 6; |
50 | 54 |
51 // Time in milliseconds spent in capturing this video frame. | 55 // Time in milliseconds spent in capturing this video frame. |
52 optional int64 capture_time_ms = 7; | 56 optional int64 capture_time_ms = 7; |
53 | 57 |
54 // Time in milliseconds spent in encoding this video frame. | 58 // Time in milliseconds spent in encoding this video frame. |
55 optional int64 encode_time_ms = 8; | 59 optional int64 encode_time_ms = 8; |
56 | 60 |
57 // The client's timestamp of the latest event received by the host before | 61 // The client's timestamp of the latest event received by the host before |
58 // starting to capture this video frame. | 62 // starting to capture this video frame. |
59 optional int64 latest_event_timestamp = 9; | 63 optional int64 latest_event_timestamp = 9; |
60 | 64 |
61 // Provides the new shape for this frame, iff |use_desktop_shape| is true. | |
62 repeated Rect desktop_shape_rects = 10; | |
63 | |
64 // True when |desktop_shape_rects| should be used, false to indicate that | |
65 // the frame is un-shaped. If the shape has not changed since the preceding | |
66 // frame then this field should be omitted. | |
67 optional bool use_desktop_shape = 11; | |
68 | |
69 // Optional frame timestamp. Used in tests to estimate frame latency. | 65 // Optional frame timestamp. Used in tests to estimate frame latency. |
70 optional int64 timestamp = 12; | 66 optional int64 timestamp = 12; |
71 | 67 |
72 // Frame identifier used to match VideoFrame and VideoAck. | 68 // Frame identifier used to match VideoFrame and VideoAck. |
73 optional int32 frame_id = 13; | 69 optional int32 frame_id = 13; |
74 | 70 |
75 // Time from when the last event was received until capturing has started. | 71 // Time from when the last event was received until capturing has started. |
76 optional int64 capture_pending_time_ms = 14; | 72 optional int64 capture_pending_time_ms = 14; |
77 | 73 |
78 // Total overhead time for IPC and threading when capturing frames. | 74 // Total overhead time for IPC and threading when capturing frames. |
79 optional int64 capture_overhead_time_ms = 15; | 75 optional int64 capture_overhead_time_ms = 15; |
80 | 76 |
81 // Time between when the frame was captured and when encoder started encoding | 77 // Time between when the frame was captured and when encoder started encoding |
82 // it. | 78 // it. |
83 optional int64 encode_pending_time_ms = 16; | 79 optional int64 encode_pending_time_ms = 16; |
84 | 80 |
85 // Time for which the frame is blocked until it's sent to the client. | 81 // Time for which the frame is blocked until it's sent to the client. |
86 optional int64 send_pending_time_ms = 17; | 82 optional int64 send_pending_time_ms = 17; |
87 } | 83 } |
88 | 84 |
89 // VideoAck acknowledges that the frame in the VideoPacket with the same | 85 // VideoAck acknowledges that the frame in the VideoPacket with the same |
90 // frame_id has been rendered. VideoAck messages must be sent only for frames | 86 // frame_id has been rendered. VideoAck messages must be sent only for frames |
91 // that have frame_id field set. They must be sent the same order in which | 87 // that have frame_id field set. They must be sent the same order in which |
92 // the corresponding VideoPackets were received. | 88 // the corresponding VideoPackets were received. |
93 message VideoAck { | 89 message VideoAck { |
94 // Frame ID. | 90 // Frame ID. |
95 optional int32 frame_id = 1; | 91 optional int32 frame_id = 1; |
96 } | 92 } |
OLD | NEW |