// Copyright 2016 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 buffer for Media Remoting.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package media.remoting.pb;

// DecoderBuffer information which will be sent using RTP packets. The actual
// decoder buffer is not included in this proto data structure.
message DecoderBuffer {
  optional int64 timestamp_usec = 1;
  optional int64 duration_usec = 2;
  optional bool is_key_frame = 3;
  optional DecryptConfig decrypt_config = 4;
  optional int64 front_discard_usec = 5;
  optional int64 back_discard_usec = 6;
  optional int64 splice_timestamp_usec = 7 [deprecated=true];
  optional bytes side_data = 8;
  // To distinguish from valid 0-length buffers
  optional bool is_eos = 9;
}

// Utility proto data structure
message Size {
  optional int32 width = 1;
  optional int32 height = 2;
}

message EncryptionScheme {
  // Proto version of EncryptionScheme::CipherMode.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum CipherMode {
    CIPHER_MODE_UNENCRYPTED = 0;
    CIPHER_MODE_AES_CTR = 1;
    CIPHER_MODE_AES_CBC = 2;
  }

  optional CipherMode mode = 1;
  optional uint32 encrypt_blocks = 2;
  optional uint32 skip_blocks = 3;
}

message AudioDecoderConfig {
  // Proto version of media::Codec.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum Codec {
    kUnknownAudioCodec = 0;
    kCodecAAC = 1;
    kCodecMP3 = 2;
    kCodecPCM = 3;
    kCodecVorbis = 4;
    kCodecFLAC = 5;
    kCodecAMR_NB = 6;
    kCodecAMR_WB = 7;
    kCodecPCM_MULAW = 8;
    kCodecGSM_MS = 9;
    kCodecPCM_S16BE = 10;
    kCodecPCM_S24BE = 11;
    kCodecOpus = 12;
    kCodecEAC3 = 13;
    kCodecPCM_ALAW = 14;
    kCodecALAC = 15;
    kCodecAC3 = 16;
    kCodecMpegHAudio = 17;
  }

  // Proto version of media::SampleFormat.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum SampleFormat {
    kUnknownSampleFormat = 0;
    kSampleFormatU8 = 1;
    kSampleFormatS16 = 2;
    kSampleFormatS32 = 3;
    kSampleFormatF32 = 4;
    kSampleFormatPlanarS16 = 5;
    kSampleFormatPlanarF32 = 6;
    kSampleFormatPlanarS32 = 7;
    kSampleFormatS24 = 8;
    kSampleFormatAc3 = 9;
    kSampleFormatEac3 = 10;
    kSampleFormatMpegHAudio = 11;
  };

  // Proto version of media::ChannelLayout.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum ChannelLayout {
    CHANNEL_LAYOUT_NONE = 0;
    CHANNEL_LAYOUT_UNSUPPORTED = 1;
    CHANNEL_LAYOUT_MONO = 2;
    CHANNEL_LAYOUT_STEREO = 3;
    CHANNEL_LAYOUT_2_1 = 4;
    CHANNEL_LAYOUT_SURROUND = 5;
    CHANNEL_LAYOUT_4_0 = 6;
    CHANNEL_LAYOUT_2_2 = 7;
    CHANNEL_LAYOUT_QUAD = 8;
    CHANNEL_LAYOUT_5_0 = 9;
    CHANNEL_LAYOUT_5_1 = 10;
    CHANNEL_LAYOUT_5_0_BACK = 11;
    CHANNEL_LAYOUT_5_1_BACK = 12;
    CHANNEL_LAYOUT_7_0 = 13;
    CHANNEL_LAYOUT_7_1 = 14;
    CHANNEL_LAYOUT_7_1_WIDE = 15;
    CHANNEL_LAYOUT_STEREO_DOWNMIX = 16;
    CHANNEL_LAYOUT_2POINT1 = 17;
    CHANNEL_LAYOUT_3_1 = 18;
    CHANNEL_LAYOUT_4_1 = 19;
    CHANNEL_LAYOUT_6_0 = 20;
    CHANNEL_LAYOUT_6_0_FRONT = 21;
    CHANNEL_LAYOUT_HEXAGONAL = 22;
    CHANNEL_LAYOUT_6_1 = 23;
    CHANNEL_LAYOUT_6_1_BACK = 24;
    CHANNEL_LAYOUT_6_1_FRONT = 25;
    CHANNEL_LAYOUT_7_0_FRONT = 26;
    CHANNEL_LAYOUT_7_1_WIDE_BACK = 27;
    CHANNEL_LAYOUT_OCTAGONAL = 28;
    CHANNEL_LAYOUT_DISCRETE = 29;
    CHANNEL_LAYOUT_STEREO_AND_KEYBOARD_MIC = 30;
    CHANNEL_LAYOUT_4_1_QUAD_SIDE = 31;
    CHANNEL_LAYOUT_BITSTREAM = 32;
  };

  optional Codec codec = 1;
  optional EncryptionScheme encryption_scheme = 2;
  optional SampleFormat sample_format = 3;
  optional ChannelLayout channel_layout = 4;
  optional int32 samples_per_second = 5;
  optional int64 seek_preroll_usec = 6;
  optional int32 codec_delay = 7;
  optional bytes extra_data = 8;
}

message Rect {
  optional int32 x = 1;
  optional int32 y = 2;
  optional int32 width = 3;
  optional int32 height = 4;
}

message VideoDecoderConfig {
  // Proto version of media::VideoCodec.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum Codec {
    kUnknownVideoCodec = 0;
    kCodecH264 = 1;
    kCodecVC1 = 2;
    kCodecMPEG2 = 3;
    kCodecMPEG4 = 4;
    kCodecTheora = 5;
    kCodecVP8 = 6;
    kCodecVP9 = 7;
    kCodecHEVC = 8;
    kCodecDolbyVision = 9;
    kCodecAV1 = 10;
  }

  // Proto version of media::VideoCodecProfile.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum Profile {
    VIDEO_CODEC_PROFILE_UNKNOWN = -1;
    H264PROFILE_BASELINE = 0;
    H264PROFILE_MAIN = 1;
    H264PROFILE_EXTENDED = 2;
    H264PROFILE_HIGH = 3;
    H264PROFILE_HIGH10PROFILE = 4;
    H264PROFILE_HIGH422PROFILE = 5;
    H264PROFILE_HIGH444PREDICTIVEPROFILE = 6;
    H264PROFILE_SCALABLEBASELINE = 7;
    H264PROFILE_SCALABLEHIGH = 8;
    H264PROFILE_STEREOHIGH = 9;
    H264PROFILE_MULTIVIEWHIGH = 10;
    VP8PROFILE_ANY = 11;
    VP9PROFILE_PROFILE0 = 12;
    VP9PROFILE_PROFILE1 = 13;
    VP9PROFILE_PROFILE2 = 14;
    VP9PROFILE_PROFILE3 = 15;
    HEVCPROFILE_MAIN = 16;
    HEVCPROFILE_MAIN10 = 17;
    HEVCPROFILE_MAIN_STILL_PICTURE = 18;
    DOLBYVISION_PROFILE0 = 19;
    DOLBYVISION_PROFILE4 = 20;
    DOLBYVISION_PROFILE5 = 21;
    DOLBYVISION_PROFILE7 = 22;
    THEORAPROFILE_ANY = 23;
    AV1PROFILE_PROFILE_MAIN = 24;
    AV1PROFILE_PROFILE_HIGH = 25;
    AV1PROFILE_PROFILE_PRO = 26;
  };

  // Proto version of media::VideoPixelFormat.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum Format {
    PIXEL_FORMAT_UNKNOWN = 0;
    PIXEL_FORMAT_I420 = 1;
    PIXEL_FORMAT_YV12 = 2;
    PIXEL_FORMAT_I422 = 3;
    PIXEL_FORMAT_I420A = 4;
    PIXEL_FORMAT_I444 = 5;
    PIXEL_FORMAT_NV12 = 6;
    PIXEL_FORMAT_NV21 = 7;
    PIXEL_FORMAT_UYVY = 8;
    PIXEL_FORMAT_YUY2 = 9;
    PIXEL_FORMAT_ARGB = 10;
    PIXEL_FORMAT_XRGB = 11;
    PIXEL_FORMAT_RGB24 = 12;
    PIXEL_FORMAT_RGB32 = 13;
    PIXEL_FORMAT_MJPEG = 14;
    PIXEL_FORMAT_MT21 = 15;
    PIXEL_FORMAT_YUV420P9 = 16;
    PIXEL_FORMAT_YUV420P10 = 17;
    PIXEL_FORMAT_YUV422P9 = 18;
    PIXEL_FORMAT_YUV422P10 = 19;
    PIXEL_FORMAT_YUV444P9 = 20;
    PIXEL_FORMAT_YUV444P10 = 21;
    PIXEL_FORMAT_YUV420P12 = 22;
    PIXEL_FORMAT_YUV422P12 = 23;
    PIXEL_FORMAT_YUV444P12 = 24;
    PIXEL_FORMAT_Y8 = 25 [deprecated = true];
    PIXEL_FORMAT_Y16 = 26;
    PIXEL_FORMAT_ABGR = 27;
    PIXEL_FORMAT_XBGR = 28;
    PIXEL_FORMAT_P016LE = 29;
  };

  // Proto version of media::ColorSpace.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum ColorSpace {
    COLOR_SPACE_UNSPECIFIED = 0;
    COLOR_SPACE_JPEG = 1;
    COLOR_SPACE_HD_REC709 = 2;
    COLOR_SPACE_SD_REC601 = 3;
  };

  optional Codec codec = 1;
  optional EncryptionScheme encryption_scheme = 2;
  optional Profile profile = 3;
  optional Format format = 4;
  optional ColorSpace color_space = 5;
  optional Size coded_size = 6;
  optional Rect visible_rect = 7;
  optional Size natural_size = 8;
  optional bytes extra_data = 9;
}

// Proto version of media::EncryptionMode
// NEVER change these numbers or re-use old ones; only add new ones.
enum EncryptionMode {
  kUnencrypted = 0;
  kCenc = 1;
  kCbcs = 2;
}

message DecryptConfig {
  message SubSample {
    optional uint32 clear_bytes = 1;
    optional uint32 cypher_bytes = 2;
  }

  optional bytes key_id = 1;
  optional bytes iv = 2;
  repeated SubSample sub_samples = 3;
  optional EncryptionMode mode = 4;
  optional uint32 crypt_byte_block = 5;
  optional uint32 skip_byte_block = 6;
}

message PipelineStatistics {
  optional uint64 audio_bytes_decoded = 1;
  optional uint64 video_bytes_decoded = 2;
  optional uint32 video_frames_decoded = 3;
  optional uint32 video_frames_dropped = 4;
  optional int64 audio_memory_usage = 5;
  optional int64 video_memory_usage = 6;
  optional int64 video_frame_duration_average_usec = 7;
  optional string audio_decoder_name = 8;
  optional string video_decoder_name = 9;
};

message CdmKeyInformation {
  // Proto version of media::CdmKeyInformation::KeyStatus.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum KeyStatus {
    USABLE = 0;
    INTERNAL_ERROR = 1;
    EXPIRED = 2;
    OUTPUT_RESTRICTED = 3;
    OUTPUT_DOWNSCALED = 4;
    KEY_STATUS_PENDING = 5;
    RELEASED = 6;
  }

  optional bytes key_id = 1;
  optional KeyStatus status = 2;
  optional uint32 system_code = 3;
}

// Proto version of media::CdmPromise::Exception.
// NEVER change these numbers or re-use old ones; only add new ones.
enum CdmException {
  NOT_SUPPORTED_ERROR = 0;
  INVALID_STATE_ERROR = 1;
  INVALID_ACCESS_ERROR = 2 [deprecated = true];
  QUOTA_EXCEEDED_ERROR = 3;
  UNKNOWN_ERROR = 4 [deprecated = true];
  CLIENT_ERROR = 5 [deprecated = true];
  OUTPUT_ERROR = 6 [deprecated = true];
  TYPE_ERROR = 7;
}

// Proto version of media::CdmMessageType.
// NEVER change these numbers or re-use old ones; only add new ones.
enum CdmMessageType {
  LICENSE_REQUEST = 0;
  LICENSE_RENEWAL = 1;
  LICENSE_RELEASE = 2;
  INDIVIDUALIZATION_REQUEST = 3;
}

// Proto version of media::CdmSessionType.
// NEVER change these numbers or re-use old ones; only add new ones.
enum CdmSessionType {
  kTemporary = 0;
  kPersistentLicense = 1;
  kPersistentUsageRecord = 2;
};

message RendererInitialize {
  optional int32 client_handle = 1;
  optional int32 audio_demuxer_handle = 2;
  optional int32 video_demuxer_handle = 3;
  optional int32 callback_handle = 4;
}

message RendererFlushUntil {
  optional uint32 audio_count = 1;
  optional uint32 video_count = 2;
  optional int32 callback_handle = 3;
}

message RendererSetCdm {
  optional int32 cdm_id = 1;
  optional int32 callback_handle = 2;
}

message RendererClientOnTimeUpdate {
  optional int64 time_usec = 1;
  optional int64 max_time_usec = 2;
}

message RendererClientOnBufferingStateChange {
  // Proto version of media::BufferingState.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum State {
    BUFFERING_HAVE_NOTHING = 0;
    BUFFERING_HAVE_ENOUGH = 1;
  };

  optional State state = 1;
}

message RendererClientOnAudioConfigChange {
  optional AudioDecoderConfig audio_decoder_config = 1;
}

message RendererClientOnVideoConfigChange {
  optional VideoDecoderConfig video_decoder_config = 1;
}

message DemuxerStreamReadUntil {
  optional int32 callback_handle = 1;
  optional uint32 count = 2;
}

message DemuxerStreamInitializeCallback {
  optional int32 type = 1;
  optional AudioDecoderConfig audio_decoder_config = 2;
  optional VideoDecoderConfig video_decoder_config = 3;
}

message DemuxerStreamReadUntilCallback {
  // Proto version of media::DemuxerStream::Status.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum Status {
    kOk = 0;
    kAborted = 1;
    kConfigChanged = 2;
    kError = 3;
  };

  optional Status status = 1;
  optional uint32 count = 2;
  optional AudioDecoderConfig audio_decoder_config = 3;
  optional VideoDecoderConfig video_decoder_config = 4;
}

message CdmInitialize {
  optional string key_system = 1;
  optional string security_origin = 2;
  optional bool allow_distinctive_identifier = 3;
  optional bool allow_persistent_state = 4;
  optional bool use_hw_secure_codecs = 5;
  optional int32 callback_handle = 6;
}

message CdmSetServerCertificate {
  optional int32 callback_handle = 1;
  optional bytes certificate_data = 2;
}

message CdmCreateSessionAndGenerateRequest {
  // Proto version of media::EmeInitDataType.
  // NEVER change these numbers or re-use old ones; only add new ones.
  enum EmeInitDataType {
    UNKNOWN = 0;
    WEBM = 1;
    CENC = 2;
    KEYIDS = 3;
  };

  optional CdmSessionType session_type = 1;
  optional EmeInitDataType init_data_type = 2;
  optional int32 callback_handle = 3;
  optional bytes init_data = 4;
}

message CdmLoadSession {
  optional CdmSessionType session_type = 1;
  optional string session_id = 2;
  optional int32 callback_handle = 3;
}

message CdmUpdateSession {
  optional string session_id = 1;
  optional int32 callback_handle = 2;
  optional bytes response = 3;
}

message CdmCloseSession {
  optional string session_id = 1;
  optional int32 callback_handle = 2;
}

message CdmRemoveSession {
  optional string session_id = 1;
  optional int32 callback_handle = 2;
}

message CdmPromise {
  // These two fields are used only for RPC_CDM_INITIALIZE_CALLBACK
  optional int32 cdm_id = 1;
  optional int32 decryptor_handle = 2;

  optional string session_id = 3;
  optional bool success = 4;
  optional CdmException exception = 5;
  optional uint32 system_code = 6;
  optional string error_message = 7;
}

message CdmClientOnSessionMessage {
  optional string session_id = 1;
  optional CdmMessageType message_type = 2;
  optional bytes message = 3;
}

message CdmClientOnSessionKeysChange {
  optional string session_id = 1;
  optional bool has_additional_usable_key = 2;
  repeated CdmKeyInformation key_information = 3;
}

message CdmClientOnSessionExpirationUpdate {
  optional string session_id = 1;
  optional double new_expiry_time_sec = 2;
}

message RpcMessage {
  enum RpcProc {
    // Remoting setup
    RPC_INTERNAL = 0;
    RPC_ACQUIRE_RENDERER = 1;
    RPC_ACQUIRE_RENDERER_DONE = 2;
    RPC_ACQUIRE_CDM = 3;
    RPC_ACQUIRE_CDM_DONE = 4;
    // Renderer message
    RPC_R_INITIALIZE = 1000;
    RPC_R_FLUSHUNTIL = 1001;
    RPC_R_STARTPLAYINGFROM = 1002;
    RPC_R_SETPLAYBACKRATE = 1003;
    RPC_R_SETVOLUME = 1004;
    RPC_R_SETCDM = 1005;
    // Renderer callbacks
    RPC_R_INITIALIZE_CALLBACK = 1100;
    RPC_R_FLUSHUNTIL_CALLBACK = 1101;
    RPC_R_SETCDM_CALLBACK = 1102;
    // Renderer client message
    RPC_RC_ONTIMEUPDATE = 2000;
    RPC_RC_ONBUFFERINGSTATECHANGE = 2001;
    RPC_RC_ONENDED = 2002;
    RPC_RC_ONERROR = 2003;
    RPC_RC_ONVIDEONATURALSIZECHANGE = 2004;
    RPC_RC_ONVIDEOOPACITYCHANGE = 2005;
    RPC_RC_ONSTATISTICSUPDATE = 2006;
    RPC_RC_ONWAITINGFORDECRYPTIONKEY = 2007;
    RPC_RC_ONDURATIONCHANGE = 2008 [deprecated = true];  // Never actually used
    RPC_RC_ONAUDIOCONFIGCHANGE = 2009;
    RPC_RC_ONVIDEOCONFIGCHANGE = 2010;
    // DemuxerStream message
    RPC_DS_INITIALIZE = 3000;
    RPC_DS_READUNTIL = 3001;
    RPC_DS_ENABLEBITSTREAMCONVERTER = 3002;
    // DemuxerStream callbacks
    RPC_DS_INITIALIZE_CALLBACK = 3100;
    RPC_DS_READUNTIL_CALLBACK = 3101;
    // ContentDecryptionModule
    RPC_CDM_SETCLIENT = 4000;
    RPC_CDM_INITIALIZE = 4001;
    RPC_CDM_SETSERVERCERTIFICATE = 4002;
    RPC_CDM_CREATESESSIONANDGENERATEREQUEST = 4003;
    RPC_CDM_LOADSESSION = 4004;
    RPC_CDM_UPDATESESSION = 4005;
    RPC_CDM_CLOSESESSION = 4006;
    RPC_CDM_REMOVESESSION = 4007;
    // ContentDecryptionModule callbacks
    RPC_CDM_INITIALIZE_CALLBACK = 4100;
    RPC_CDM_SETSERVERCERTIFICATE_CALLBACK = 4101;
    RPC_CDM_CREATESESSIONANDGENERATEREQUEST_CALLBACK = 4102;
    RPC_CDM_LOADSESSION_CALLBACK = 4103;
    RPC_CDM_UPDATESESSION_CALLBACK = 4104;
    RPC_CDM_CLOSESESSION_CALLBACK = 4105;
    RPC_CDM_REMOVESESSION_CALLBACK = 4106;
    // ContentDecryptionModule client
    RPC_CDMC_ONSESSIONMESSAGE = 5000;
    RPC_CDMC_ONSESSIONCLOSED = 5001;
    RPC_CDMC_ONSESSIONKEYSCHANGE = 5002;
    RPC_CDMC_ONSESSIONEXPIRATIONUPDATE = 5003;
  };

  // Component base of RPC message handle. This allows both sender and receiver
  // to send or handle message in desired individual components.
  optional int32 handle = 1;

  // RpcProc of this RPC message
  optional RpcProc proc = 2;

  oneof rpc_oneof {
    // For simple RPC which only passes one parameters can use the following
    // various data type variables without using specific proto data structure.
    // RPC_ACQUIRE_RENDERER
    // RPC_ACQUIRE_RENDERER_DONE
    // RPC_ACQUIRE_CDM
    // RPC_ACQUIRE_CDM_DONE
    // RPC_DS_INITIALIZE_CALLBACK
    // RPC_DS_READ
    // RPC_CDM_SETCLIENT
    int32 integer_value = 3;

    // RPC_R_STARTPLAYINGFROM
    // RPC_RC_ONDURATIONCHANGE
    int64 integer64_value = 4;

    // RPC_R_SETPLAYBACKRATE
    // RPC_R_SETVOLUME
    double double_value = 5;

    // RPC_R_INITIALIZE_CALLBACK
    // RPC_R_SETCDM_CALLBACK
    // RPC_RC_ONVIDEOOPACITYCHANGE
    bool boolean_value = 6;

    // string only:
    // RPC_CDMC_ONSESSIONCLOSED
    string string_value = 7;

    // RPC_R_INITIALIZE
    RendererInitialize renderer_initialize_rpc = 100;

    // RPC_R_FLUSHUNTIL
    RendererFlushUntil renderer_flushuntil_rpc = 101;

    // RPC_R_SETCDM
    RendererSetCdm renderer_set_cdm_rpc = 102;

    // RPC_RC_ONTIMEUPDATE
    RendererClientOnTimeUpdate rendererclient_ontimeupdate_rpc = 200;
    // RPC_RC_ONVIDEONATURALSIZECHANGE
    Size rendererclient_onvideonatualsizechange_rpc = 201;
    // RPC_RC_ONSTATISTICSUPDATE
    PipelineStatistics rendererclient_onstatisticsupdate_rpc = 202;
    // RPC_RC_ONBUFFERINGSTATECHANGE
    RendererClientOnBufferingStateChange
        rendererclient_onbufferingstatechange_rpc = 203;
    // RPC_RC_ONAUDIOCONFIGCHANGE
    RendererClientOnAudioConfigChange rendererclient_onaudioconfigchange_rpc =
        204;
    // RPC_RC_ONVIDEOCONFIGCHANGE
    RendererClientOnVideoConfigChange rendererclient_onvideoconfigchange_rpc =
        205;

    // RPC_DS_READUNTIL
    DemuxerStreamReadUntil demuxerstream_readuntil_rpc = 300;

    // RPC_DS_INITIALIZE_CALLBACK
    DemuxerStreamInitializeCallback demuxerstream_initializecb_rpc = 400;
    // RPC_DS_READUNTIL_CALLBACK
    DemuxerStreamReadUntilCallback demuxerstream_readuntilcb_rpc = 401;

    // RPC_CDM_INITIALIZE
    CdmInitialize cdm_initialize_rpc = 500;
    // RPC_CDM_SETSERVERCERTIFICATE
    CdmSetServerCertificate cdm_setservercertificate_rpc = 501;
    // RPC_CDM_CREATESESSIONANDGENERATEREQUEST
    CdmCreateSessionAndGenerateRequest cdm_createsessionandgeneraterequest_rpc =
        502;
    // RPC_CDM_LOADSESSION
    CdmLoadSession cdm_loadsession_rpc = 503;
    // RPC_CDM_UPDATESESSION
    CdmUpdateSession cdm_updatesession_rpc = 504;
    // RPC_CDM_CLOSESESSION
    CdmCloseSession cdm_closesession_rpc = 505;
    // RPC_CDM_REMOVESESSION
    CdmRemoveSession cdm_removesession_rpc = 506;

    // CdmPromise message type used for the following procedure
    // RPC_CDM_INITIALIZE_CALLBACK
    // RPC_CDM_SETSERVERCERTIFICATE_CALLBACK
    // RPC_CDM_CREATESESSIONANDGENERATEREQUEST_CALLBACK
    // RPC_CDM_LOADSESSION_CALLBACK
    // RPC_CDM_UPDATESESSION_CALLBACK
    // RPC_CDM_CLOSESESSION_CALLBACK
    // RPC_CDM_REMOVESESSION_CALLBACK
    CdmPromise cdm_promise_rpc = 600;

    // RPC_CDMC_ONSESSIONMESSAGE
    CdmClientOnSessionMessage cdmclient_onsessionmessage_rpc = 601;
    // RPC_CDMC_ONSESSIONKEYSCHANGE
    CdmClientOnSessionKeysChange cdmclient_onsessionkeychange_rpc = 602;
    // RPC_CDMC_ONSESSIONEXPIRATIONUPDATE
    CdmClientOnSessionExpirationUpdate cdmclient_onsessionexpirationupdate_rpc =
        603;
  };
}
