| syntax = "proto2"; | 
 | option optimize_for = LITE_RUNTIME; | 
 | package webrtc.audio_network_adaptor.debug_dump; | 
 |  | 
 | import "config.proto"; | 
 |  | 
 | message NetworkMetrics { | 
 |   optional int32 uplink_bandwidth_bps = 1; | 
 |   optional float uplink_packet_loss_fraction = 2; | 
 |   optional int32 target_audio_bitrate_bps = 3; | 
 |   optional int32 rtt_ms = 4; | 
 |   optional int32 uplink_recoverable_packet_loss_fraction = 5; | 
 | } | 
 |  | 
 | message EncoderRuntimeConfig { | 
 |   optional int32 bitrate_bps = 1; | 
 |   optional int32 frame_length_ms = 2; | 
 |   // Note: This is what we tell the encoder. It doesn't have to reflect | 
 |   // the actual NetworkMetrics; it's subject to our decision. | 
 |   optional float uplink_packet_loss_fraction = 3; | 
 |   optional bool enable_fec = 4; | 
 |   optional bool enable_dtx = 5; | 
 |   // Some encoders can encode fewer channels than the actual input to make | 
 |   // better use of the bandwidth. `num_channels` sets the number of channels | 
 |   // to encode. | 
 |   optional uint32 num_channels = 6; | 
 | } | 
 |  | 
 | message Event { | 
 |   enum Type { | 
 |     NETWORK_METRICS = 0; | 
 |     ENCODER_RUNTIME_CONFIG = 1; | 
 |     CONTROLLER_MANAGER_CONFIG = 2; | 
 |   } | 
 |   required Type type = 1; | 
 |   required uint32 timestamp = 2; | 
 |   optional NetworkMetrics network_metrics = 3; | 
 |   optional EncoderRuntimeConfig encoder_runtime_config = 4; | 
 |   optional webrtc.audio_network_adaptor.config.ControllerManager | 
 |       controller_manager_config = 5; | 
 | } | 
 |  |