Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: media/remoting/proto/remoting_rpc_message.proto

Issue 2261503002: Define remote playback proto buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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 buffer for Media Remoting.
6
7 syntax = "proto2";
8
9 option optimize_for = LITE_RUNTIME;
10
11 package media.remoting.pb;
12
13 enum RpcProc {
14 // Remoting setup
15 RPC_INTERNAL = 0;
16 RPC_ACQUIRE_RENDERER = 1;
17 RPC_ACQUIRE_RENDERER_DONE = 2;
18 RPC_ACQUIRE_CDM = 3;
19 RPC_ACQUIRE_CDM_DONE = 4;
20 // Renderer message
21 RPC_R_INITIALIZE = 1000;
22 RPC_R_FLUSH = 1001;
23 RPC_R_STARTPLAYINGFROM = 1002;
24 RPC_R_SETPLAYBACKRATE = 1003;
25 RPC_R_SETVOLUME = 1004;
26 RPC_R_SETCDM = 1005;
27 // Renderer callbacks
28 RPC_R_INITIALIZE_CALLBACK = 1100;
29 RPC_R_FLUSH_CALLBACK = 1101;
30 RPC_R_SETCDM_CALLBACK = 1102;
31 // Renderer client message
32 RPC_RC_ONTIMEUPDATE = 2000;
33 RPC_RC_ONBUFFERINGSTATECHANGE = 2001;
34 RPC_RC_ONENDED = 2002;
35 RPC_RC_ONERROR = 2003;
36 RPC_RC_ONVIDEONATURALSIZECHANGE = 2004;
37 RPC_RC_ONVIDEOOPACITYCHANGE = 2005;
38 // DemuxerStream message
39 RPC_DS_INITIALIZE = 3000;
40 RPC_DS_READUNTIL = 3001;
41 RPC_DS_ENABLEBITSTREAMCONVERTER = 3002;
42 // DemuxerStream callbacks
43 RPC_DS_INITIALIZE_CALLBACK = 3100;
44 RPC_DS_READUNTIL_CALLBACK = 3101;
45 // ContentDecryptionModule
46 RPC_CDM_SETCLIENT = 4000;
47 RPC_CDM_INITIALIZE = 4001;
48 RPC_CDM_SETSERVERCERTIFICATE = 4002;
49 RPC_CDM_CREATESESSIONANDGENERATEREQUEST = 4003;
50 RPC_CDM_LOADSESSION = 4004;
51 RPC_CDM_UPDATESESSION = 4005;
52 RPC_CDM_CLOSESESSION = 4006;
53 RPC_CDM_REMOVESESSION = 4007;
54 // ContentDecryptionModule callbacks
55 RPC_CDM_INITIALIZE_CALLBACK = 4100;
56 RPC_CDM_SETSERVERCERTIFICATE_CALLBACK = 4101;
57 RPC_CDM_CREATESESSIONANDGENERATEREQUEST_CALLBACK = 4102;
58 RPC_CDM_LOADSESSION_CALLBACK = 4103;
59 RPC_CDM_UPDATESESSION_CALLBACK = 4104;
60 RPC_CDM_CLOSESESSION_CALLBACK = 4105;
61 RPC_CDM_REMOVESESSION_CALLBACK = 4106;
62 // ContentDecryptionModule client
63 RPC_CDMC_ONSESSIONMESSAGE = 5000;
64 RPC_CDMC_ONSESSIONCLOSED = 5001;
65 RPC_CDMC_ONLEGACYSESSIONERROR = 5002;
66 RPC_CDMC_ONSESSIONKEYSCHANGE = 5003;
67 RPC_CDMC_ONSESSIONEXPIRATIONUPDATE = 5004;
68 };
69
70 // DecoderBuffer information which will be sent using RTP packets. The actual
71 // decoder buffer is not included in this proto data structure.
72 message DecoderBuffer {
73 optional int64 timestamp_usec = 1;
74 optional int64 duration_usec = 2;
75 optional bool is_key_frame = 3;
76 optional DecryptConfig decrypt_config = 4;
77 optional int64 front_discard_usec = 5;
78 optional int64 back_discard_usec = 6;
79 optional int64 splice_timestamp_usec = 7;
80 optional bytes side_data = 8;
81 // To distinguish from valid 0-length buffers
82 optional bool is_eos = 9;
83 }
84
85 // Utility proto data structure
86 message Size {
87 optional int32 width = 1;
88 optional int32 height = 2;
89 }
90
91 message EncryptionScheme {
92 // Align with EncryptionScheme::CipherMode
93 enum CipherMode {
94 CIPHER_MODE_UNENCRYPTED = 0;
95 CIPHER_MODE_AES_CTR = 1;
96 CIPHER_MODE_AES_CBC = 2;
97 }
98
99 optional CipherMode mode = 1;
100 optional uint32 encrypt_blocks = 2;
101 optional uint32 skip_blocks = 3;
102 }
103
104 message AudioDecoderConfig {
105 // Should align with ::media::Codec
106 enum Codec {
107 kUnknownAudioCodec = 0;
108 kCodecAAC = 1;
109 kCodecMP3 = 2;
110 kCodecPCM = 3;
111 kCodecVorbis = 4;
112 kCodecFLAC = 5;
113 kCodecAMR_NB = 6;
114 kCodecAMR_WB = 7;
115 kCodecPCM_MULAW = 8;
116 kCodecGSM_MS = 9;
117 kCodecPCM_S16BE = 10;
118 kCodecPCM_S24BE = 11;
119 kCodecOpus = 12;
120 kCodecEAC3 = 13;
121 kCodecPCM_ALAW = 14;
122 kCodecALAC = 15;
123 kCodecAC3 = 16;
124 }
125
126 // Should align with ::media::SampleFormat
127 enum SampleFormat {
128 kUnknownSampleFormat = 0;
129 kSampleFormatU8 = 1;
130 kSampleFormatS16 = 2;
131 kSampleFormatS32 = 3;
132 kSampleFormatF32 = 4;
133 kSampleFormatPlanarS16 = 5;
134 kSampleFormatPlanarF32 = 6;
135 kSampleFormatPlanarS32 = 7;
136 kSampleFormatS24 = 8;
137 };
138
139 // Should align with ::media::ChannelLayout
140 enum ChannelLayout {
141 CHANNEL_LAYOUT_NONE = 0;
142 CHANNEL_LAYOUT_UNSUPPORTED = 1;
143 CHANNEL_LAYOUT_MONO = 2;
144 CHANNEL_LAYOUT_STEREO = 3;
145 CHANNEL_LAYOUT_2_1 = 4;
146 CHANNEL_LAYOUT_SURROUND = 5;
147 CHANNEL_LAYOUT_4_0 = 6;
148 CHANNEL_LAYOUT_2_2 = 7;
149 CHANNEL_LAYOUT_QUAD = 8;
150 CHANNEL_LAYOUT_5_0 = 9;
151 CHANNEL_LAYOUT_5_1 = 10;
152 CHANNEL_LAYOUT_5_0_BACK = 11;
153 CHANNEL_LAYOUT_5_1_BACK = 12;
154 CHANNEL_LAYOUT_7_0 = 13;
155 CHANNEL_LAYOUT_7_1 = 14;
156 CHANNEL_LAYOUT_7_1_WIDE = 15;
157 CHANNEL_LAYOUT_STEREO_DOWNMIX = 16;
158 CHANNEL_LAYOUT_2POINT1 = 17;
159 CHANNEL_LAYOUT_3_1 = 18;
160 CHANNEL_LAYOUT_4_1 = 19;
161 CHANNEL_LAYOUT_6_0 = 20;
162 CHANNEL_LAYOUT_6_0_FRONT = 21;
163 CHANNEL_LAYOUT_HEXAGONAL = 22;
164 CHANNEL_LAYOUT_6_1 = 23;
165 CHANNEL_LAYOUT_6_1_BACK = 24;
166 CHANNEL_LAYOUT_6_1_FRONT = 25;
167 CHANNEL_LAYOUT_7_0_FRONT = 26;
168 CHANNEL_LAYOUT_7_1_WIDE_BACK = 27;
169 CHANNEL_LAYOUT_OCTAGONAL = 28;
170 CHANNEL_LAYOUT_DISCRETE = 29;
171 CHANNEL_LAYOUT_STEREO_AND_KEYBOARD_MIC = 30;
172 CHANNEL_LAYOUT_4_1_QUAD_SIDE = 31;
173 };
174
175 optional Codec codec = 1;
176 optional EncryptionScheme encryption_scheme = 2;
177 optional SampleFormat sample_format = 3;
178 optional ChannelLayout channel_layout = 4;
179 optional int32 samples_per_second = 5;
180 optional int64 seek_preroll_usec = 6;
181 optional int32 codec_delay = 7;
182 optional bytes extra_data = 8;
183 }
184
185 message Rect {
186 optional int32 x = 1;
187 optional int32 y = 2;
188 optional int32 width = 3;
189 optional int32 height = 4;
190 }
191
192 message VideoDecoderConfig {
193 // Should align with ::media::VideoCodec
194 enum Codec {
195 kUnknownVideoCodec = 0;
196 kCodecH264 = 1;
197 kCodecVC1 = 2;
198 kCodecMPEG2 = 3;
199 kCodecMPEG4 = 4;
200 kCodecTheora = 5;
201 kCodecVP8 = 6;
202 kCodecVP9 = 7;
203 kCodecHEVC = 8;
204 }
205
206 // Should align with ::media::VideoCodecProfile
207 enum Profile {
208 VIDEO_CODEC_PROFILE_UNKNOWN = -1;
209 H264PROFILE_BASELINE = 0;
210 H264PROFILE_MAIN = 1;
211 H264PROFILE_EXTENDED = 2;
212 H264PROFILE_HIGH = 3;
213 H264PROFILE_HIGH10PROFILE = 4;
214 H264PROFILE_HIGH422PROFILE = 5;
215 H264PROFILE_HIGH444PREDICTIVEPROFILE = 6;
216 H264PROFILE_SCALABLEBASELINE = 7;
217 H264PROFILE_SCALABLEHIGH = 8;
218 H264PROFILE_STEREOHIGH = 9;
219 H264PROFILE_MULTIVIEWHIGH = 10;
220 VP8PROFILE_ANY = 11;
221 VP9PROFILE_PROFILE0 = 12;
222 VP9PROFILE_PROFILE1 = 13;
223 VP9PROFILE_PROFILE2 = 14;
224 VP9PROFILE_PROFILE3 = 15;
225 HEVCPROFILE_MAIN = 16;
226 HEVCPROFILE_MAIN10 = 17;
227 HEVCPROFILE_MAIN_STILL_PICTURE = 18;
228 };
229
230 // Should align with ::media::VideoPixelFormat
231 enum Format {
232 PIXEL_FORMAT_UNKNOWN = 0;
233 PIXEL_FORMAT_I420 = 1;
234 PIXEL_FORMAT_YV12 = 2;
235 PIXEL_FORMAT_YV16 = 3;
236 PIXEL_FORMAT_YV12A = 4;
237 PIXEL_FORMAT_YV24 = 5;
238 PIXEL_FORMAT_NV12 = 6;
239 PIXEL_FORMAT_NV21 = 7;
240 PIXEL_FORMAT_UYVY = 8;
241 PIXEL_FORMAT_YUY2 = 9;
242 PIXEL_FORMAT_ARGB = 10;
243 PIXEL_FORMAT_XRGB = 11;
244 PIXEL_FORMAT_RGB24 = 12;
245 PIXEL_FORMAT_RGB32 = 13;
246 PIXEL_FORMAT_MJPEG = 14;
247 PIXEL_FORMAT_MT21 = 15;
248 PIXEL_FORMAT_YUV420P9 = 16;
249 PIXEL_FORMAT_YUV420P10 = 17;
250 PIXEL_FORMAT_YUV422P9 = 18;
251 PIXEL_FORMAT_YUV422P10 = 19;
252 PIXEL_FORMAT_YUV444P9 = 20;
253 PIXEL_FORMAT_YUV444P10 = 21;
254 };
255
256 // Should align with ::media::ColorSpace
257 enum ColorSpace {
258 COLOR_SPACE_UNSPECIFIED = 0;
259 COLOR_SPACE_JPEG = 1;
260 COLOR_SPACE_HD_REC709 = 2;
261 COLOR_SPACE_SD_REC601 = 3;
262 };
263
264 optional Codec codec = 1;
265 optional EncryptionScheme encryption_scheme = 2;
266 optional Profile profile = 3;
267 optional Format format = 4;
268 optional ColorSpace color_space = 5;
269 optional Size coded_size = 6;
270 optional Rect visible_rect = 7;
271 optional Size natural_size = 8;
272 optional bytes extra_data = 9;
273 }
274
275 message DecryptConfig {
276 message SubSample {
277 optional uint32 clear_bytes = 1;
278 optional uint32 cypher_bytes = 2;
279 }
280
281 optional bytes key_id = 1;
282 optional bytes iv = 2;
283 repeated SubSample sub_samples = 3;
284 }
285
286 message CdmKeyInformation {
287 // Align with CdmKeyInformation::KeyStatus
288 enum KeyStatus {
289 USABLE = 0;
290 INTERNAL_ERROR = 1;
291 EXPIRED = 2;
292 OUTPUT_RESTRICTED = 3;
293 OUTPUT_DOWNSCALED = 4;
294 KEY_STATUS_PENDING = 5;
295 RELEASED = 6;
296 }
297
298 optional bytes key_id = 1;
299 optional KeyStatus status = 2;
300 optional uint32 system_code = 3;
301 }
302
303 // Should align with MediaKeys::Exception
304 enum MediaKeysException {
305 NOT_SUPPORTED_ERROR = 0;
306 INVALID_STATE_ERROR = 1;
307 INVALID_ACCESS_ERROR = 2;
308 QUOTA_EXCEEDED_ERROR = 3;
309 UNKNOWN_ERROR = 4;
310 CLIENT_ERROR = 5;
311 OUTPUT_ERROR = 6;
312 }
313
314 // Should align with MediaKeys::MessageType
315 enum MediaKeysMessageType {
316 LICENSE_REQUEST = 0;
317 LICENSE_RENEWAL = 1;
318 LICENSE_RELEASE = 2;
319 }
320
321 // Custom proto data structure
322 message RendererInitialize {
323 optional int32 client_handle = 1;
324 optional int32 audio_demuxer_handle = 2;
325 optional int32 video_demuxer_handle = 3;
326 optional int32 callback_handle = 4;
327 }
328
329 message RendererStartPlayingFrom {
330 optional int64 time_delta_usec = 1;
331 }
332
333 message RendererSetCdm {
334 optional int32 cdm_id = 1;
335 optional int32 callback_handle = 2;
336 }
337
338 message RendererClientOnTimeUpdate {
339 optional int64 time_usec = 1;
340 optional int64 max_time_usec = 2;
341 }
342
343 message DemuxerStreamReadUntil {
344 optional int32 callback_handle = 1;
345 optional int32 frame_id = 2;
346 }
347
348 message DemuxerStreamInitializeCallback {
349 optional int32 type = 1;
350 optional AudioDecoderConfig audio_decoder_config = 2;
351 optional VideoDecoderConfig video_decoder_config = 3;
352 }
353
354 message DemuxerStreamReadUntilCallback {
355 optional int32 status = 1;
356 optional int32 frame_id = 2;
357 optional AudioDecoderConfig audio_decoder_config = 3;
358 optional VideoDecoderConfig video_decoder_config = 4;
359 }
360
361 message CdmInitialize {
362 optional string key_system = 1;
363 optional string security_origin = 2;
364 optional bool allow_distinctive_identifier = 3;
365 optional bool allow_persistent_state = 4;
366 optional bool use_hw_secure_codecs = 5;
367 optional int32 callback_handle = 6;
368 }
369
370 message CdmSetServerCertificate {
371 optional int32 callback_handle = 1;
372 optional bytes certificate_data = 2;
373 }
374
375 message CdmCreateSessionAndGenerateRequest {
376 optional int32 session_type = 1;
377 optional int32 init_data_type = 2;
378 optional int32 callback_handle = 3;
379 optional bytes init_data = 4;
380 }
381
382 message CdmLoadSession {
383 optional int32 session_type = 1;
384 optional string session_id = 2;
385 optional int32 callback_handle = 3;
386 }
387
388 message CdmUpdateSession {
389 optional string session_id = 1;
390 optional int32 callback_handle = 2;
391 optional bytes response = 3;
392 }
393
394 message CdmCloseSession {
395 optional string session_id = 1;
396 optional int32 callback_handle = 2;
397 }
398
399 message CdmRemoveSession {
400 optional string session_id = 1;
401 optional int32 callback_handle = 2;
402 }
403
404 message CdmPromise {
405 // These two fields are used only for RPC_CDM_INITIALIZE_CALLBACK
406 optional int32 cdm_id = 1;
407 optional int32 decryptor_handle = 2;
408
409 optional string session_id = 3;
410 optional bool success = 4;
411 optional MediaKeysException exception = 5;
412 optional uint32 system_code = 6;
413 optional string error_message = 7;
414 }
415
416 message CdmClientOnSessionMessage {
417 optional string session_id = 1;
418 optional MediaKeysMessageType message_type = 2;
419 optional string legacy_destination_url = 3;
420 optional bytes message = 4;
421 }
422
423 message CdmClientOnLegacySessionError {
424 optional string session_id = 1;
425 optional MediaKeysException exception = 2;
426 optional uint32 system_code = 3;
427 optional string error_message = 4;
428 }
429
430 message CdmClientOnSessionKeysChange {
431 optional string session_id = 1;
432 optional bool has_additional_usable_key = 2;
433 repeated CdmKeyInformation key_information = 3;
434 }
435
436 message CdmClientOnSessionExpirationUpdate {
437 optional string session_id = 1;
438 optional double new_expiry_time_sec = 2;
439 }
440
441 message RpcMessage {
442 // Handle of this RPC message
443 optional int32 handle = 1;
444
445 // RpcProc of this RPC message
446 optional RpcProc proc = 2;
447
448 oneof rpc_oneof {
449 // For simple RPC which only passes one parameters can use the following
450 // various data type variables without using specific proto data structure.
451 // RPC_ACQUIRE_RENDERER
452 // RPC_ACQUIRE_RENDERER_DONE
453 // RPC_ACQUIRE_CDM
454 // RPC_ACQUIRE_CDM_DONE
455 // RPC_R_FLUSH
456 // RPC_RC_ONBUFFERINGSTATECHANGE
457 // RPC_DS_INITIALIZE_CALLBACK
458 // RPC_DS_READ
459 // RPC_CDM_SETCLIENT
460 int32 integer_value = 3;
461
462 // RPC_R_SETPLAYBACKRATE
463 // RPC_R_SETVOLUME
464 double double_value = 4;
465
466 // RPC_R_INITIALIZE_CALLBACK
467 // RPC_R_SETCDM_CALLBACK
468 // RPC_RC_ONVIDEOOPACITYCHANGE
469 bool boolean_value = 5;
470
471 // string only:
472 // RPC_CDMC_ONSESSIONCLOSED
473 string string_value = 6;
474
475 // RPC_R_INITIALIZE
476 RendererInitialize renderer_initialize_rpc = 100;
477
478 // RPC_R_STARTPLAYINGFROM
479 RendererStartPlayingFrom renderer_startplayingfrom_rpc = 101;
480
481 // RPC_R_SETCDM
482 RendererSetCdm renderer_set_cdm_rpc = 102;
483
484 // RPC_RC_ONTIMEUPDATE
485 RendererClientOnTimeUpdate rendererclient_ontimeupdate_rpc = 200;
486 // RPC_RC_ONVIDEONATURALSIZECHANGE
487 Size rendererclient_onvideonatualsizechange_rpc = 201;
488
489 // RPC_DS_READUNTIL
490 DemuxerStreamReadUntil demuxerstream_readuntil_rpc = 300;
491
492 // RPC_DS_INITIALIZE_CALLBACK
493 DemuxerStreamInitializeCallback demuxerstream_initializecb_rpc = 400;
494 // RPC_DS_READUNTIL_CALLBACK
495 DemuxerStreamReadUntilCallback demuxerstream_readuntilcb_rpc = 401;
496
497 // RPC_CDM_INITIALIZE
498 CdmInitialize cdm_initialize_rpc = 500;
499 // RPC_CDM_SETSERVERCERTIFICATE
500 CdmSetServerCertificate cdm_setservercertificate_rpc = 501;
501 // RPC_CDM_CREATESESSIONANDGENERATEREQUEST
502 CdmCreateSessionAndGenerateRequest cdm_createsessionandgeneraterequest_rpc =
503 502;
504 // RPC_CDM_LOADSESSION
505 CdmLoadSession cdm_loadsession_rpc = 503;
506 // RPC_CDM_UPDATESESSION
507 CdmUpdateSession cdm_updatesession_rpc = 504;
508 // RPC_CDM_CLOSESESSION
509 CdmCloseSession cdm_closesession_rpc = 505;
510 // RPC_CDM_REMOVESESSION
511 CdmRemoveSession cdm_removesession_rpc = 506;
512
513 // CdmPromise message type used for the following procedure
514 // RPC_CDM_INITIALIZE_CALLBACK
515 // RPC_CDM_SETSERVERCERTIFICATE_CALLBACK
516 // RPC_CDM_CREATESESSIONANDGENERATEREQUEST_CALLBACK
517 // RPC_CDM_LOADSESSION_CALLBACK
518 // RPC_CDM_UPDATESESSION_CALLBACK
519 // RPC_CDM_CLOSESESSION_CALLBACK
520 // RPC_CDM_REMOVESESSION_CALLBACK
521 CdmPromise cdm_promise_rpc = 600;
522
523 // RPC_CDMC_ONSESSIONMESSAGE
524 CdmClientOnSessionMessage cdm_onsessionmessage_rpc = 601;
525 // RPC_CDMC_ONLEGACYSESSIONERROR
526 CdmClientOnLegacySessionError cdm_onlegacysessionerror_rpc = 602;
527 // RPC_CDMC_ONSESSIONKEYSCHANGE
528 CdmClientOnSessionKeysChange cdm_onsessionkeychange_rpc = 603;
529 // RPC_CDMC_ONSESSIONEXPIRATIONUPDATE
530 CdmClientOnSessionExpirationUpdate cdm_onsessionexpirationupdate_rpc = 604;
531 };
532 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698