| 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 [deprecated = true]; | 
 |   optional int32 aecm_routing_mode = 8 [deprecated = true]; | 
 |   // 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 RuntimeSetting { | 
 |   optional float capture_pre_gain = 1; | 
 |   optional float custom_render_processing_setting = 2; | 
 |   optional float capture_fixed_post_gain = 3; | 
 | } | 
 |  | 
 | message Event { | 
 |   enum Type { | 
 |     INIT = 0; | 
 |     REVERSE_STREAM = 1; | 
 |     STREAM = 2; | 
 |     CONFIG = 3; | 
 |     UNKNOWN_EVENT = 4; | 
 |     RUNTIME_SETTING = 5; | 
 |   } | 
 |  | 
 |   required Type type = 1; | 
 |  | 
 |   optional Init init = 2; | 
 |   optional ReverseStream reverse_stream = 3; | 
 |   optional Stream stream = 4; | 
 |   optional Config config = 5; | 
 |   optional RuntimeSetting runtime_setting = 6; | 
 | } |