tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

rtc_event_log.proto (11618B)


      1 syntax = "proto2";
      2 option optimize_for = LITE_RUNTIME;
      3 package webrtc.rtclog;
      4 
      5 enum MediaType {
      6  ANY = 0;
      7  AUDIO = 1;
      8  VIDEO = 2;
      9  DATA = 3;
     10 }
     11 
     12 // This is the main message to dump to a file, it can contain multiple event
     13 // messages, but it is possible to append multiple EventStreams (each with a
     14 // single event) to a file.
     15 // This has the benefit that there's no need to keep all data in memory.
     16 message EventStream {
     17  repeated Event stream = 1;
     18 }
     19 
     20 message Event {
     21  // required - Elapsed wallclock time in us since the start of the log.
     22  optional int64 timestamp_us = 1;
     23 
     24  // The different types of events that can occur, the UNKNOWN_EVENT entry
     25  // is added in case future EventTypes are added, in that case old code will
     26  // receive the new events as UNKNOWN_EVENT.
     27  enum EventType {
     28    UNKNOWN_EVENT = 0;
     29    LOG_START = 1;
     30    LOG_END = 2;
     31    RTP_EVENT = 3;
     32    RTCP_EVENT = 4;
     33    AUDIO_PLAYOUT_EVENT = 5;
     34    LOSS_BASED_BWE_UPDATE = 6;
     35    DELAY_BASED_BWE_UPDATE = 7;
     36    VIDEO_RECEIVER_CONFIG_EVENT = 8;
     37    VIDEO_SENDER_CONFIG_EVENT = 9;
     38    AUDIO_RECEIVER_CONFIG_EVENT = 10;
     39    AUDIO_SENDER_CONFIG_EVENT = 11;
     40    AUDIO_NETWORK_ADAPTATION_EVENT = 16;
     41    BWE_PROBE_CLUSTER_CREATED_EVENT = 17;
     42    BWE_PROBE_RESULT_EVENT = 18;
     43    ALR_STATE_EVENT = 19;
     44    ICE_CANDIDATE_PAIR_CONFIG = 20;
     45    ICE_CANDIDATE_PAIR_EVENT = 21;
     46    REMOTE_ESTIMATE = 22;
     47  }
     48 
     49  // required - Indicates the type of this event
     50  optional EventType type = 2;
     51 
     52  oneof subtype {
     53    // required if type == RTP_EVENT
     54    RtpPacket rtp_packet = 3;
     55 
     56    // required if type == RTCP_EVENT
     57    RtcpPacket rtcp_packet = 4;
     58 
     59    // required if type == AUDIO_PLAYOUT_EVENT
     60    AudioPlayoutEvent audio_playout_event = 5;
     61 
     62    // required if type == LOSS_BASED_BWE_UPDATE
     63    LossBasedBweUpdate loss_based_bwe_update = 6;
     64 
     65    // required if type == DELAY_BASED_BWE_UPDATE
     66    DelayBasedBweUpdate delay_based_bwe_update = 7;
     67 
     68    // required if type == VIDEO_RECEIVER_CONFIG_EVENT
     69    VideoReceiveConfig video_receiver_config = 8;
     70 
     71    // required if type == VIDEO_SENDER_CONFIG_EVENT
     72    VideoSendConfig video_sender_config = 9;
     73 
     74    // required if type == AUDIO_RECEIVER_CONFIG_EVENT
     75    AudioReceiveConfig audio_receiver_config = 10;
     76 
     77    // required if type == AUDIO_SENDER_CONFIG_EVENT
     78    AudioSendConfig audio_sender_config = 11;
     79 
     80    // required if type == AUDIO_NETWORK_ADAPTATION_EVENT
     81    AudioNetworkAdaptation audio_network_adaptation = 16;
     82 
     83    // required if type == BWE_PROBE_CLUSTER_CREATED_EVENT
     84    BweProbeCluster probe_cluster = 17;
     85 
     86    // required if type == BWE_PROBE_RESULT_EVENT
     87    BweProbeResult probe_result = 18;
     88 
     89    // required if type == ALR_STATE_EVENT
     90    AlrState alr_state = 19;
     91 
     92    // required if type == ICE_CANDIDATE_PAIR_CONFIG
     93    IceCandidatePairConfig ice_candidate_pair_config = 20;
     94 
     95    // required if type == ICE_CANDIDATE_PAIR_EVENT
     96    IceCandidatePairEvent ice_candidate_pair_event = 21;
     97 
     98    // required if type == REMOTE_ESTIMATE
     99    RemoteEstimate remote_estimate = 22;
    100  }
    101 }
    102 
    103 message RtpPacket {
    104  // required - True if the packet is incoming w.r.t. the user logging the data
    105  optional bool incoming = 1;
    106 
    107  optional MediaType type = 2 [deprecated = true];
    108 
    109  // required - The size of the packet including both payload and header.
    110  optional uint32 packet_length = 3;
    111 
    112  // required - The RTP header only.
    113  optional bytes header = 4;
    114 
    115  // optional - The probe cluster id.
    116  optional int32 probe_cluster_id = 5;
    117 
    118  // Do not add code to log user payload data without a privacy review!
    119 }
    120 
    121 message RtcpPacket {
    122  // required - True if the packet is incoming w.r.t. the user logging the data
    123  optional bool incoming = 1;
    124 
    125  optional MediaType type = 2 [deprecated = true];
    126 
    127  // required - The whole packet including both payload and header.
    128  optional bytes packet_data = 3;
    129 }
    130 
    131 message AudioPlayoutEvent {
    132  // TODO(ivoc): Rename, we currently use the "remote" ssrc, i.e. identifying
    133  // the receive stream, while local_ssrc identifies the send stream, if any.
    134  // required - The SSRC of the audio stream associated with the playout event.
    135  optional uint32 local_ssrc = 2;
    136 }
    137 
    138 message LossBasedBweUpdate {
    139  // required - Bandwidth estimate (in bps) after the update.
    140  optional int32 bitrate_bps = 1;
    141 
    142  // required - Fraction of lost packets since last receiver report
    143  // computed as floor( 256 * (#lost_packets / #total_packets) ).
    144  // The possible values range from 0 to 255.
    145  optional uint32 fraction_loss = 2;
    146 
    147  // TODO(terelius): Is this really needed? Remove or make optional?
    148  // required - Total number of packets that the BWE update is based on.
    149  optional int32 total_packets = 3;
    150 }
    151 
    152 message DelayBasedBweUpdate {
    153  enum DetectorState {
    154    BWE_NORMAL = 0;
    155    BWE_UNDERUSING = 1;
    156    BWE_OVERUSING = 2;
    157  }
    158 
    159  // required - Bandwidth estimate (in bps) after the update.
    160  optional int32 bitrate_bps = 1;
    161 
    162  // required - The state of the overuse detector.
    163  optional DetectorState detector_state = 2;
    164 }
    165 
    166 // TODO(terelius): Video and audio streams could in principle share SSRC,
    167 // so identifying a stream based only on SSRC might not work.
    168 // It might be better to use a combination of SSRC and media type
    169 // or SSRC and port number, but for now we will rely on SSRC only.
    170 message VideoReceiveConfig {
    171  // required - Synchronization source (stream identifier) to be received.
    172  optional uint32 remote_ssrc = 1;
    173  // required - Sender SSRC used for sending RTCP (such as receiver reports).
    174  optional uint32 local_ssrc = 2;
    175 
    176  // Compound mode is described by RFC 4585 and reduced-size
    177  // RTCP mode is described by RFC 5506.
    178  enum RtcpMode {
    179    RTCP_COMPOUND = 1;
    180    RTCP_REDUCEDSIZE = 2;
    181  }
    182  // required - RTCP mode to use.
    183  optional RtcpMode rtcp_mode = 3;
    184 
    185  // required - Receiver estimated maximum bandwidth.
    186  optional bool remb = 4;
    187 
    188  // Map from video RTP payload type -> RTX config.
    189  repeated RtxMap rtx_map = 5;
    190 
    191  // RTP header extensions used for the received stream.
    192  repeated RtpHeaderExtension header_extensions = 6;
    193 
    194  // List of decoders associated with the stream.
    195  repeated DecoderConfig decoders = 7;
    196 }
    197 
    198 // Maps decoder names to payload types.
    199 message DecoderConfig {
    200  // required
    201  optional string name = 1;
    202 
    203  // required
    204  optional int32 payload_type = 2;
    205 }
    206 
    207 // Maps RTP header extension names to numerical IDs.
    208 message RtpHeaderExtension {
    209  // required
    210  optional string name = 1;
    211 
    212  // required
    213  optional int32 id = 2;
    214 }
    215 
    216 // RTX settings for incoming video payloads that may be received.
    217 // RTX is disabled if there's no config present.
    218 message RtxConfig {
    219  // required - SSRC to use for the RTX stream.
    220  optional uint32 rtx_ssrc = 1;
    221 
    222  // required - Payload type to use for the RTX stream.
    223  optional int32 rtx_payload_type = 2;
    224 }
    225 
    226 message RtxMap {
    227  // required
    228  optional int32 payload_type = 1;
    229 
    230  // required
    231  optional RtxConfig config = 2;
    232 }
    233 
    234 message VideoSendConfig {
    235  // Synchronization source (stream identifier) for outgoing stream.
    236  // One stream can have several ssrcs for e.g. simulcast.
    237  // At least one ssrc is required.
    238  repeated uint32 ssrcs = 1;
    239 
    240  // RTP header extensions used for the outgoing stream.
    241  repeated RtpHeaderExtension header_extensions = 2;
    242 
    243  // List of SSRCs for retransmitted packets.
    244  repeated uint32 rtx_ssrcs = 3;
    245 
    246  // required if rtx_ssrcs is used - Payload type for retransmitted packets.
    247  optional int32 rtx_payload_type = 4;
    248 
    249  // required - Encoder associated with the stream.
    250  optional EncoderConfig encoder = 5;
    251 }
    252 
    253 // Maps encoder names to payload types.
    254 message EncoderConfig {
    255  // required
    256  optional string name = 1;
    257 
    258  // required
    259  optional int32 payload_type = 2;
    260 }
    261 
    262 message AudioReceiveConfig {
    263  // required - Synchronization source (stream identifier) to be received.
    264  optional uint32 remote_ssrc = 1;
    265 
    266  // required - Sender SSRC used for sending RTCP (such as receiver reports).
    267  optional uint32 local_ssrc = 2;
    268 
    269  // RTP header extensions used for the received audio stream.
    270  repeated RtpHeaderExtension header_extensions = 3;
    271 }
    272 
    273 message AudioSendConfig {
    274  // required - Synchronization source (stream identifier) for outgoing stream.
    275  optional uint32 ssrc = 1;
    276 
    277  // RTP header extensions used for the outgoing audio stream.
    278  repeated RtpHeaderExtension header_extensions = 2;
    279 }
    280 
    281 message AudioNetworkAdaptation {
    282  // Bit rate that the audio encoder is operating at.
    283  optional int32 bitrate_bps = 1;
    284 
    285  // Frame length that each encoded audio packet consists of.
    286  optional int32 frame_length_ms = 2;
    287 
    288  // Packet loss fraction that the encoder's forward error correction (FEC) is
    289  // optimized for.
    290  optional float uplink_packet_loss_fraction = 3;
    291 
    292  // Whether forward error correction (FEC) is turned on or off.
    293  optional bool enable_fec = 4;
    294 
    295  // Whether discontinuous transmission (DTX) is turned on or off.
    296  optional bool enable_dtx = 5;
    297 
    298  // Number of audio channels that each encoded packet consists of.
    299  optional uint32 num_channels = 6;
    300 }
    301 
    302 message BweProbeCluster {
    303  // required - The id of this probe cluster.
    304  optional int32 id = 1;
    305 
    306  // required - The bitrate in bps that this probe cluster is meant to probe.
    307  optional int32 bitrate_bps = 2;
    308 
    309  // required - The minimum number of packets used to probe the given bitrate.
    310  optional uint32 min_packets = 3;
    311 
    312  // required - The minimum number of bytes used to probe the given bitrate.
    313  optional uint32 min_bytes = 4;
    314 }
    315 
    316 message BweProbeResult {
    317  // required - The id of this probe cluster.
    318  optional int32 id = 1;
    319 
    320  enum ResultType {
    321    SUCCESS = 0;
    322    INVALID_SEND_RECEIVE_INTERVAL = 1;
    323    INVALID_SEND_RECEIVE_RATIO = 2;
    324    TIMEOUT = 3;
    325  }
    326 
    327  // required - The result of this probing attempt.
    328  optional ResultType result = 2;
    329 
    330  // optional - but required if result == SUCCESS. The resulting bitrate in bps.
    331  optional int32 bitrate_bps = 3;
    332 }
    333 
    334 message RemoteEstimate {
    335  // optional - Lower estimate of link capacity.
    336  optional uint32 link_capacity_lower_kbps = 1;
    337 
    338  // optional - Upper estimate of link capacity.
    339  optional uint32 link_capacity_upper_kbps = 2;
    340 }
    341 
    342 message AlrState {
    343  // required - If we are in ALR or not.
    344  optional bool in_alr = 1;
    345 }
    346 
    347 message IceCandidatePairConfig {
    348  enum IceCandidatePairConfigType {
    349    ADDED = 0;
    350    UPDATED = 1;
    351    DESTROYED = 2;
    352    SELECTED = 3;
    353  }
    354 
    355  enum IceCandidateType {
    356    LOCAL = 0;
    357    STUN = 1;
    358    PRFLX = 2;
    359    RELAY = 3;
    360    UNKNOWN_CANDIDATE_TYPE = 4;
    361  }
    362 
    363  enum Protocol {
    364    UDP = 0;
    365    TCP = 1;
    366    SSLTCP = 2;
    367    TLS = 3;
    368    UNKNOWN_PROTOCOL = 4;
    369  }
    370 
    371  enum AddressFamily {
    372    IPV4 = 0;
    373    IPV6 = 1;
    374    UNKNOWN_ADDRESS_FAMILY = 2;
    375  }
    376 
    377  enum NetworkType {
    378    ETHERNET = 0;
    379    LOOPBACK = 1;
    380    WIFI = 2;
    381    VPN = 3;
    382    CELLULAR = 4;
    383    UNKNOWN_NETWORK_TYPE = 5;
    384  }
    385 
    386  // required
    387  optional IceCandidatePairConfigType config_type = 1;
    388 
    389  // required
    390  optional uint32 candidate_pair_id = 2;
    391 
    392  // required
    393  optional IceCandidateType local_candidate_type = 3;
    394 
    395  // required
    396  optional Protocol local_relay_protocol = 4;
    397 
    398  // required
    399  optional NetworkType local_network_type = 5;
    400 
    401  // required
    402  optional AddressFamily local_address_family = 6;
    403 
    404  // required
    405  optional IceCandidateType remote_candidate_type = 7;
    406 
    407  // required
    408  optional AddressFamily remote_address_family = 8;
    409 
    410  // required
    411  optional Protocol candidate_pair_protocol = 9;
    412 }
    413 
    414 message IceCandidatePairEvent {
    415  enum IceCandidatePairEventType {
    416    CHECK_SENT = 0;
    417    CHECK_RECEIVED = 1;
    418    CHECK_RESPONSE_SENT = 2;
    419    CHECK_RESPONSE_RECEIVED = 3;
    420  }
    421 
    422  // required
    423  optional IceCandidatePairEventType event_type = 1;
    424 
    425  // required
    426  optional uint32 candidate_pair_id = 2;
    427 }