diff options
Diffstat (limited to 'third_party/libwebrtc/logging/rtc_event_log/rtc_event_log2.proto')
-rw-r--r-- | third_party/libwebrtc/logging/rtc_event_log/rtc_event_log2.proto | 777 |
1 files changed, 777 insertions, 0 deletions
diff --git a/third_party/libwebrtc/logging/rtc_event_log/rtc_event_log2.proto b/third_party/libwebrtc/logging/rtc_event_log/rtc_event_log2.proto new file mode 100644 index 0000000000..a417ded706 --- /dev/null +++ b/third_party/libwebrtc/logging/rtc_event_log/rtc_event_log2.proto @@ -0,0 +1,777 @@ +// THIS FILE IS EXPERIMENTAL. BREAKING CHANGES MAY BE MADE AT ANY TIME +// WITHOUT PRIOR WARNING. THIS FILE SHOULD NOT BE USED IN PRODUCTION CODE. + +syntax = "proto2"; +option optimize_for = LITE_RUNTIME; +package webrtc.rtclog2; + +// At the top level, a WebRTC event log is just an EventStream object. Note that +// concatenating multiple EventStreams in the same file is equivalent to a +// single EventStream object containing the same events. Hence, it is not +// necessary to wait for the entire log to be complete before beginning to +// write it to a file. +// Note: For all X_deltas fields, we rely on the default value being an +// empty string. +message EventStream { + // Deprecated - Maintained for compatibility with the old event log. + repeated Event stream = 1 [deprecated = true]; + repeated IncomingRtpPackets incoming_rtp_packets = 2; + repeated OutgoingRtpPackets outgoing_rtp_packets = 3; + repeated IncomingRtcpPackets incoming_rtcp_packets = 4; + repeated OutgoingRtcpPackets outgoing_rtcp_packets = 5; + repeated AudioPlayoutEvents audio_playout_events = 6; + repeated FrameDecodedEvents frame_decoded_events = 7; + // The field tags 8-15 are reserved for the most common events. + repeated BeginLogEvent begin_log_events = 16; + repeated EndLogEvent end_log_events = 17; + repeated LossBasedBweUpdates loss_based_bwe_updates = 18; + repeated DelayBasedBweUpdates delay_based_bwe_updates = 19; + repeated AudioNetworkAdaptations audio_network_adaptations = 20; + repeated BweProbeCluster probe_clusters = 21; + repeated BweProbeResultSuccess probe_success = 22; + repeated BweProbeResultFailure probe_failure = 23; + repeated AlrState alr_states = 24; + repeated IceCandidatePairConfig ice_candidate_configs = 25; + repeated IceCandidatePairEvent ice_candidate_events = 26; + repeated DtlsTransportStateEvent dtls_transport_state_events = 27; + repeated DtlsWritableState dtls_writable_states = 28; + repeated GenericPacketSent generic_packets_sent = 29; + repeated GenericPacketReceived generic_packets_received = 30; + repeated GenericAckReceived generic_acks_received = 31; + repeated RouteChange route_changes = 32; + repeated RemoteEstimates remote_estimates = 33; + repeated NetEqSetMinimumDelay neteq_set_minimum_delay = 34; + + repeated AudioRecvStreamConfig audio_recv_stream_configs = 101; + repeated AudioSendStreamConfig audio_send_stream_configs = 102; + repeated VideoRecvStreamConfig video_recv_stream_configs = 103; + repeated VideoSendStreamConfig video_send_stream_configs = 104; +} + +// DEPRECATED. +message Event { + // TODO(terelius): Do we want to preserve the old Event definition here? +} + +message GenericPacketReceived { + // All fields are required. + optional int64 timestamp_ms = 1; + optional int64 packet_number = 2; + // Length of the packet in bytes. + optional int32 packet_length = 3; + + // Provided if there are deltas in the batch. + optional uint32 number_of_deltas = 16; + optional bytes timestamp_ms_deltas = 17; + optional bytes packet_number_deltas = 18; + optional bytes packet_length_deltas = 19; +} + +message GenericPacketSent { + // All fields are required. All lengths in bytes. + optional int64 timestamp_ms = 1; + optional int64 packet_number = 2; + // overhead+payload+padding length = packet_length in bytes. + optional int32 overhead_length = 3; + optional int32 payload_length = 4; + optional int32 padding_length = 5; + + optional uint32 number_of_deltas = 16; + optional bytes timestamp_ms_deltas = 17; + optional bytes packet_number_deltas = 18; + optional bytes overhead_length_deltas = 19; + optional bytes payload_length_deltas = 20; + optional bytes padding_length_deltas = 21; +} + +message GenericAckReceived { + optional int64 timestamp_ms = 1; + + // ID of the received packet. + optional int64 packet_number = 2; + + // ID of the packet that was acked. + optional int64 acked_packet_number = 3; + + // Timestamp in ms when the packet was received by the other side. + optional int64 receive_acked_packet_time_ms = 4; + + optional uint32 number_of_deltas = 16; + optional bytes timestamp_ms_deltas = 17; + optional bytes packet_number_deltas = 18; + optional bytes acked_packet_number_deltas = 19; + optional bytes receive_acked_packet_time_ms_deltas = 20; +} + +message DependencyDescriptorsWireInfo { + // required + // Base and delta encoded B and E bits represented as two bit numbers. + optional uint32 start_end_bit = 1; + optional bytes start_end_bit_deltas = 2; + + // required + // Base and delta encoded template IDs, represented as six bit numbers. + optional uint32 template_id = 3; + optional bytes template_id_deltas = 4; + + // required + // Base and delta compressed frame IDs. + optional uint32 frame_id = 5; + optional bytes frame_id_deltas = 6; + + // optional - set if any DD contains extended information. + // The extended info encoded as optional blobs. + optional bytes extended_infos = 7; +} + +message IncomingRtpPackets { + // required + optional int64 timestamp_ms = 1; + + // required - RTP marker bit, used to label boundaries between video frames. + optional bool marker = 2; + + // required - RTP payload type. + optional uint32 payload_type = 3; + + // required - RTP sequence number. + optional uint32 sequence_number = 4; + + // required - RTP monotonic clock timestamp (not actual time). + optional fixed32 rtp_timestamp = 5; + + // required - Synchronization source of this packet's RTP stream. + optional fixed32 ssrc = 6; + + // TODO(terelius/dinor): Add CSRCs. Field number 7 reserved for this purpose. + + // required - The size (in bytes) of the media payload, not including + // RTP header or padding. The packet size is the sum of payload, header and + // padding. + optional uint32 payload_size = 8; + + // required - The size (in bytes) of the RTP header. + optional uint32 header_size = 9; + + // required - The size (in bytes) of the padding. + optional uint32 padding_size = 10; + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 11; + + // Field numbers 12-14 reserved for future use. + + // Optional header extensions. + optional uint32 transport_sequence_number = 15; + optional int32 transmission_time_offset = 16; + optional uint32 absolute_send_time = 17; + optional uint32 video_rotation = 18; + // `audio_level` and `voice_activity` are always used in conjunction. + optional uint32 audio_level = 19; + optional bool voice_activity = 20; + // Encodes all DD information in the batch, not just the base event. + optional DependencyDescriptorsWireInfo dependency_descriptor = 21; + // TODO(terelius): Add other header extensions like playout delay? + + // Delta encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes marker_deltas = 102; + optional bytes payload_type_deltas = 103; + optional bytes sequence_number_deltas = 104; + optional bytes rtp_timestamp_deltas = 105; + // Field number 107 reserved for CSRC. + optional bytes ssrc_deltas = 106; + optional bytes payload_size_deltas = 108; + optional bytes header_size_deltas = 109; + optional bytes padding_size_deltas = 110; + // Field number 111-114 reserved for future use. + optional bytes transport_sequence_number_deltas = 115; + optional bytes transmission_time_offset_deltas = 116; + optional bytes absolute_send_time_deltas = 117; + optional bytes video_rotation_deltas = 118; + // `audio_level` and `voice_activity` are always used in conjunction. + optional bytes audio_level_deltas = 119; + optional bytes voice_activity_deltas = 120; +} + +message OutgoingRtpPackets { + // required + optional int64 timestamp_ms = 1; + + // required - RTP marker bit, used to label boundaries between video frames. + optional bool marker = 2; + + // required - RTP payload type. + optional uint32 payload_type = 3; + + // required - RTP sequence number. + optional uint32 sequence_number = 4; + + // required - RTP monotonic clock timestamp (not actual time). + optional fixed32 rtp_timestamp = 5; + + // required - Synchronization source of this packet's RTP stream. + optional fixed32 ssrc = 6; + + // TODO(terelius/dinor): Add CSRCs. Field number 7 reserved for this purpose. + + // required - The size (in bytes) of the media payload, not including + // RTP header or padding. The packet size is the sum of payload, header and + // padding. + optional uint32 payload_size = 8; + + // required - The size (in bytes) of the RTP header. + optional uint32 header_size = 9; + + // required - The size (in bytes) of the padding. + optional uint32 padding_size = 10; + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 11; + + // Field numbers 12-14 reserved for future use. + + // Optional header extensions. + optional uint32 transport_sequence_number = 15; + optional int32 transmission_time_offset = 16; + optional uint32 absolute_send_time = 17; + optional uint32 video_rotation = 18; + // `audio_level` and `voice_activity` are always used in conjunction. + optional uint32 audio_level = 19; + optional bool voice_activity = 20; + // TODO(terelius): Add other header extensions like playout delay? + // Encodes all DD information in the batch, not just the base event. + optional DependencyDescriptorsWireInfo dependency_descriptor = 21; + + // Delta encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes marker_deltas = 102; + optional bytes payload_type_deltas = 103; + optional bytes sequence_number_deltas = 104; + optional bytes rtp_timestamp_deltas = 105; + optional bytes ssrc_deltas = 106; + // Field number 107 reserved for CSRC. + optional bytes payload_size_deltas = 108; + optional bytes header_size_deltas = 109; + optional bytes padding_size_deltas = 110; + // Field number 111-114 reserved for future use. + optional bytes transport_sequence_number_deltas = 115; + optional bytes transmission_time_offset_deltas = 116; + optional bytes absolute_send_time_deltas = 117; + optional bytes video_rotation_deltas = 118; + // `audio_level` and `voice_activity` are always used in conjunction. + optional bytes audio_level_deltas = 119; + optional bytes voice_activity_deltas = 120; +} + +message IncomingRtcpPackets { + // required + optional int64 timestamp_ms = 1; + + // required - The whole packet including both payload and header. + optional bytes raw_packet = 2; + // TODO(terelius): Feasible to log parsed RTCP instead? + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 3; + + // Delta/blob encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes raw_packet_blobs = 102; +} + +message OutgoingRtcpPackets { + // required + optional int64 timestamp_ms = 1; + + // required - The whole packet including both payload and header. + optional bytes raw_packet = 2; + // TODO(terelius): Feasible to log parsed RTCP instead? + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 3; + + // Delta/blob encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes raw_packet_blobs = 102; +} + +message AudioPlayoutEvents { + // required + optional int64 timestamp_ms = 1; + + // required - The SSRC of the audio stream associated with the playout event. + optional uint32 local_ssrc = 2; + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 3; + + // Delta encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes local_ssrc_deltas = 102; +} + +message NetEqSetMinimumDelay { + // required + optional int64 timestamp_ms = 1; + + // required - The SSRC of the remote stream associated with the MinimumDelay + // event. + optional fixed32 remote_ssrc = 2; + + // required - minimum delay passed to SetBaseMinimumDelay. + optional int32 minimum_delay_ms = 3; + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 4; + + // Delta encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes remote_ssrc_deltas = 102; + optional bytes minimum_delay_ms_deltas = 103; +} + +message FrameDecodedEvents { + enum Codec { + CODEC_UNKNOWN = 0; + CODEC_GENERIC = 1; + CODEC_VP8 = 2; + CODEC_VP9 = 3; + CODEC_AV1 = 4; + CODEC_H264 = 5; + CODEC_H265 = 6; + } + + // required + optional int64 timestamp_ms = 1; + + // required - The SSRC of the video stream that the frame belongs to. + optional fixed32 ssrc = 2; + + // required - The predicted render time of the frame. + optional int64 render_time_ms = 3; + + // required - The width (in pixels) of the frame. + optional int32 width = 4; + + // required - The height (in pixels) of the frame. + optional int32 height = 5; + + // required - The codec type of the frame. + optional Codec codec = 6; + + // required - The QP (quantization parameter) of the frame. Range [0,255]. + optional uint32 qp = 7; + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 15; + + // Delta encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes ssrc_deltas = 102; + optional bytes render_time_ms_deltas = 103; + optional bytes width_deltas = 104; + optional bytes height_deltas = 105; + optional bytes codec_deltas = 106; + optional bytes qp_deltas = 107; +} + +message BeginLogEvent { + // required + optional int64 timestamp_ms = 1; + + // required + optional uint32 version = 2; + + // required + optional int64 utc_time_ms = 3; +} + +message EndLogEvent { + // required + optional int64 timestamp_ms = 1; +} + +message LossBasedBweUpdates { + // required + optional int64 timestamp_ms = 1; + + // TODO(terelius): Update log interface to unsigned. + // required - Bandwidth estimate (in bps) after the update. + optional uint32 bitrate_bps = 2; + + // required - Fraction of lost packets since last receiver report + // computed as floor( 256 * (#lost_packets / #total_packets) ). + // The possible values range from 0 to 255. + optional uint32 fraction_loss = 3; + + // TODO(terelius): Is this really needed? Remove or make optional? + // TODO(terelius): Update log interface to unsigned. + // required - Total number of packets that the BWE update is based on. + optional uint32 total_packets = 4; + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 5; + + // Delta encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes bitrate_bps_deltas = 102; + optional bytes fraction_loss_deltas = 103; + optional bytes total_packets_deltas = 104; +} + +message DelayBasedBweUpdates { + // required + optional int64 timestamp_ms = 1; + + // required - Bandwidth estimate (in bps) after the update. + optional uint32 bitrate_bps = 2; + + enum DetectorState { + BWE_UNKNOWN_STATE = 0; + BWE_NORMAL = 1; + BWE_UNDERUSING = 2; + BWE_OVERUSING = 3; + } + optional DetectorState detector_state = 3; + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 4; + + // Delta encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes bitrate_bps_deltas = 102; + optional bytes detector_state_deltas = 103; +} + +// Maps RTP header extension names to numerical IDs. +message RtpHeaderExtensionConfig { + // Optional IDs for the header extensions. Each ID is a 4-bit number that is + // only set if that extension is configured. + // TODO: Can we skip audio level? + optional int32 transmission_time_offset_id = 1; + optional int32 absolute_send_time_id = 2; + optional int32 transport_sequence_number_id = 3; + optional int32 video_rotation_id = 4; + optional int32 audio_level_id = 5; + optional int32 dependency_descriptor_id = 6; + // TODO(terelius): Add other header extensions like playout delay? +} + +message VideoRecvStreamConfig { + // required + optional int64 timestamp_ms = 1; + + // required - Synchronization source (stream identifier) to be received. + optional uint32 remote_ssrc = 2; + + // required - Sender SSRC used for sending RTCP (such as receiver reports). + optional uint32 local_ssrc = 3; + + // optional - required if RTX is configured. SSRC for the RTX stream. + optional uint32 rtx_ssrc = 4; + + // IDs for the header extension we care about. Only required if there are + // header extensions configured. + optional RtpHeaderExtensionConfig header_extensions = 5; + + // TODO(terelius): Do we need codec-payload mapping? If so and rtx_ssrc is + // used, we also need a map between RTP payload type and RTX payload type. +} + +message VideoSendStreamConfig { + // required + optional int64 timestamp_ms = 1; + + // required - Synchronization source (stream identifier) for outgoing stream. + // When using simulcast, a separate config should be logged for each stream. + optional uint32 ssrc = 2; + + // optional - required if RTX is configured. SSRC for the RTX stream. + optional uint32 rtx_ssrc = 3; + + // IDs for the header extension we care about. Only required if there are + // header extensions configured. + optional RtpHeaderExtensionConfig header_extensions = 4; + + // TODO(terelius): Do we need codec-payload mapping? If so and rtx_ssrc is + // used, we also need a map between RTP payload type and RTX payload type. +} + +message AudioRecvStreamConfig { + // required + optional int64 timestamp_ms = 1; + + // required - Synchronization source (stream identifier) to be received. + optional uint32 remote_ssrc = 2; + + // required - Sender SSRC used for sending RTCP (such as receiver reports). + optional uint32 local_ssrc = 3; + + // Field number 4 reserved for RTX SSRC. + + // IDs for the header extension we care about. Only required if there are + // header extensions configured. + optional RtpHeaderExtensionConfig header_extensions = 5; + + // TODO(terelius): Do we need codec-payload mapping? If so and rtx_ssrc is + // used, we also need a map between RTP payload type and RTX payload type. +} + +message AudioSendStreamConfig { + // required + optional int64 timestamp_ms = 1; + + // required - Synchronization source (stream identifier) for outgoing stream. + optional uint32 ssrc = 2; + + // Field number 3 reserved for RTX SSRC. + + // IDs for the header extension we care about. Only required if there are + // header extensions configured. + optional RtpHeaderExtensionConfig header_extensions = 4; + + // TODO(terelius): Do we need codec-payload mapping? If so and rtx_ssrc is + // used, we also need a map between RTP payload type and RTX payload type. +} + +message AudioNetworkAdaptations { + // required + optional int64 timestamp_ms = 1; + + // Bit rate that the audio encoder is operating at. + // TODO(terelius): Signed vs unsigned? + optional int32 bitrate_bps = 2; + + // Frame length that each encoded audio packet consists of. + // TODO(terelius): Signed vs unsigned? + optional int32 frame_length_ms = 3; + + // Packet loss fraction that the encoder's forward error correction (FEC) is + // optimized for. + // Instead of encoding a float, we encode a value between 0 and 16383, which + // if divided by 16383, will give a value close to the original float. + // The value 16383 (2^14 - 1) was chosen so that it would give good precision + // on the one hand, and would be encodable with two bytes in varint form + // on the other hand. + optional uint32 uplink_packet_loss_fraction = 4; + + // Whether forward error correction (FEC) is turned on or off. + optional bool enable_fec = 5; + + // Whether discontinuous transmission (DTX) is turned on or off. + optional bool enable_dtx = 6; + + // Number of audio channels that each encoded packet consists of. + optional uint32 num_channels = 7; + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 8; + + // Delta encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes bitrate_bps_deltas = 102; + optional bytes frame_length_ms_deltas = 103; + optional bytes uplink_packet_loss_fraction_deltas = 104; + optional bytes enable_fec_deltas = 105; + optional bytes enable_dtx_deltas = 106; + optional bytes num_channels_deltas = 107; +} + +message BweProbeCluster { + // required + optional int64 timestamp_ms = 1; + + // required - The id of this probe cluster. + optional uint32 id = 2; + + // required - The bitrate in bps that this probe cluster is meant to probe. + optional uint32 bitrate_bps = 3; + + // required - The minimum number of packets used to probe the given bitrate. + optional uint32 min_packets = 4; + + // required - The minimum number of bytes used to probe the given bitrate. + optional uint32 min_bytes = 5; +} + +message BweProbeResultSuccess { + // required + optional int64 timestamp_ms = 1; + + // required - The id of this probe cluster. + optional uint32 id = 2; + + // required - The resulting bitrate in bps. + optional uint32 bitrate_bps = 3; +} + +message BweProbeResultFailure { + // required + optional int64 timestamp_ms = 1; + + // required - The id of this probe cluster. + optional uint32 id = 2; + + enum FailureReason { + UNKNOWN = 0; + INVALID_SEND_RECEIVE_INTERVAL = 1; + INVALID_SEND_RECEIVE_RATIO = 2; + TIMEOUT = 3; + } + + // required + optional FailureReason failure = 3; +} + +message AlrState { + // required + optional int64 timestamp_ms = 1; + + // required - True if the send rate is application limited. + optional bool in_alr = 2; +} + +message IceCandidatePairConfig { + enum IceCandidatePairConfigType { + UNKNOWN_CONFIG_TYPE = 0; + ADDED = 1; + UPDATED = 2; + DESTROYED = 3; + SELECTED = 4; + } + + enum IceCandidateType { + UNKNOWN_CANDIDATE_TYPE = 0; + LOCAL = 1; + STUN = 2; + PRFLX = 3; + RELAY = 4; + } + + enum Protocol { + UNKNOWN_PROTOCOL = 0; + UDP = 1; + TCP = 2; + SSLTCP = 3; + TLS = 4; + } + + enum AddressFamily { + UNKNOWN_ADDRESS_FAMILY = 0; + IPV4 = 1; + IPV6 = 2; + } + + enum NetworkType { + UNKNOWN_NETWORK_TYPE = 0; + ETHERNET = 1; + WIFI = 2; + CELLULAR = 3; + VPN = 4; + LOOPBACK = 5; + } + + // required + optional int64 timestamp_ms = 1; + + // required + optional IceCandidatePairConfigType config_type = 2; + + // required + optional uint32 candidate_pair_id = 3; + + // required + optional IceCandidateType local_candidate_type = 4; + + // required + optional Protocol local_relay_protocol = 5; + + // required + optional NetworkType local_network_type = 6; + + // required + optional AddressFamily local_address_family = 7; + + // required + optional IceCandidateType remote_candidate_type = 8; + + // required + optional AddressFamily remote_address_family = 9; + + // required + optional Protocol candidate_pair_protocol = 10; +} + +message IceCandidatePairEvent { + enum IceCandidatePairEventType { + UNKNOWN_CHECK_TYPE = 0; + CHECK_SENT = 1; + CHECK_RECEIVED = 2; + CHECK_RESPONSE_SENT = 3; + CHECK_RESPONSE_RECEIVED = 4; + } + + // required + optional int64 timestamp_ms = 1; + + // required + optional IceCandidatePairEventType event_type = 2; + + // required + optional uint32 candidate_pair_id = 3; + + // required + optional uint32 transaction_id = 4; +} + +message DtlsTransportStateEvent { + enum DtlsTransportState { + UNKNOWN_DTLS_TRANSPORT_STATE = 0; + DTLS_TRANSPORT_NEW = 1; + DTLS_TRANSPORT_CONNECTING = 2; + DTLS_TRANSPORT_CONNECTED = 3; + DTLS_TRANSPORT_CLOSED = 4; + DTLS_TRANSPORT_FAILED = 5; + } + + // required + optional int64 timestamp_ms = 1; + + // required + optional DtlsTransportState dtls_transport_state = 2; +} + +message DtlsWritableState { + // required + optional int64 timestamp_ms = 1; + + // required + optional bool writable = 2; +} + +message RouteChange { + // required + optional int64 timestamp_ms = 1; + // required - True if the route is ready for sending packets. + optional bool connected = 2; + // required - The per packet data overhead for this route. + optional uint32 overhead = 3; +} + +message RemoteEstimates { + // required + optional int64 timestamp_ms = 1; + // optional - value used as a safe measure of available capacity. + optional uint32 link_capacity_lower_kbps = 2; + // optional - value used as limit for increasing bitrate. + optional uint32 link_capacity_upper_kbps = 3; + + // optional - required if the batch contains delta encoded events. + optional uint32 number_of_deltas = 4; + + // Delta encodings. + optional bytes timestamp_ms_deltas = 101; + optional bytes link_capacity_lower_kbps_deltas = 102; + optional bytes link_capacity_upper_kbps_deltas = 103; +} |