syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package webrtc.audioproc;

// Contains the format of input/output/reverse audio. An Init message is added
// when any of the fields are changed.
message Init {
  optional int32 sample_rate = 1;
  optional int32 device_sample_rate = 2 [deprecated=true];
  optional int32 num_input_channels = 3;
  optional int32 num_output_channels = 4;
  optional int32 num_reverse_channels = 5;
  optional int32 reverse_sample_rate = 6;
  optional int32 output_sample_rate = 7;
  optional int32 reverse_output_sample_rate = 8;
  optional int32 num_reverse_output_channels = 9;
  optional int64 timestamp_ms = 10;
}

// May contain interleaved or deinterleaved data, but don't store both formats.
message ReverseStream {
  // int16 interleaved data.
  optional bytes data = 1;

  // float deinterleaved data, where each repeated element points to a single
  // channel buffer of data.
  repeated bytes channel = 2;
}

// May contain interleaved or deinterleaved data, but don't store both formats.
message Stream {
  // int16 interleaved data.
  optional bytes input_data = 1;
  optional bytes output_data = 2;

  optional int32 delay = 3;
  optional sint32 drift = 4;
  optional int32 level = 5;
  optional bool keypress = 6;

  // float deinterleaved data, where each repeated element points to a single
  // channel buffer of data.
  repeated bytes input_channel = 7;
  repeated bytes output_channel = 8;
}

// Contains the configurations of various APM component. A Config message is
// added when any of the fields are changed.
message Config {
  // Acoustic echo canceler.
  optional bool aec_enabled = 1;
  optional bool aec_delay_agnostic_enabled = 2;
  optional bool aec_drift_compensation_enabled = 3;
  optional bool aec_extended_filter_enabled = 4;
  optional int32 aec_suppression_level = 5;
  // Mobile AEC.
  optional bool aecm_enabled = 6;
  optional bool aecm_comfort_noise_enabled = 7;
  optional int32 aecm_routing_mode = 8;
  // Automatic gain controller.
  optional bool agc_enabled = 9;
  optional int32 agc_mode = 10;
  optional bool agc_limiter_enabled = 11;
  optional bool noise_robust_agc_enabled = 12;
  // High pass filter.
  optional bool hpf_enabled = 13;
  // Noise suppression.
  optional bool ns_enabled = 14;
  optional int32 ns_level = 15;
  // Transient suppression.
  optional bool transient_suppression_enabled = 16;
  // Semicolon-separated string containing experimental feature
  // descriptions.
  optional string experiments_description = 17;
  reserved 18;  // Intelligibility enhancer enabled (deprecated).
  // Pre amplifier.
  optional bool pre_amplifier_enabled = 19;
  optional float pre_amplifier_fixed_gain_factor = 20;

  // Next field number 21.
}

message Event {
  enum Type {
    INIT = 0;
    REVERSE_STREAM = 1;
    STREAM = 2;
    CONFIG = 3;
    UNKNOWN_EVENT = 4;
  }

  required Type type = 1;

  optional Init init = 2;
  optional ReverseStream reverse_stream = 3;
  optional Stream stream = 4;
  optional Config config = 5;
}
