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;
}

