1syntax = "proto2";
2option optimize_for = LITE_RUNTIME;
3package webrtc.audioproc;
4
5// Contains the format of input/output/reverse audio. An Init message is added
6// when any of the fields are changed.
7message Init {
8  optional int32 sample_rate = 1;
9  optional int32 device_sample_rate = 2 [deprecated=true];
10  optional int32 num_input_channels = 3;
11  optional int32 num_output_channels = 4;
12  optional int32 num_reverse_channels = 5;
13  optional int32 reverse_sample_rate = 6;
14  optional int32 output_sample_rate = 7;
15  optional int32 reverse_output_sample_rate = 8;
16  optional int32 num_reverse_output_channels = 9;
17}
18
19// May contain interleaved or deinterleaved data, but don't store both formats.
20message ReverseStream {
21  // int16 interleaved data.
22  optional bytes data = 1;
23
24  // float deinterleaved data, where each repeated element points to a single
25  // channel buffer of data.
26  repeated bytes channel = 2;
27}
28
29// May contain interleaved or deinterleaved data, but don't store both formats.
30message Stream {
31  // int16 interleaved data.
32  optional bytes input_data = 1;
33  optional bytes output_data = 2;
34
35  optional int32 delay = 3;
36  optional sint32 drift = 4;
37  optional int32 level = 5;
38  optional bool keypress = 6;
39
40  // float deinterleaved data, where each repeated element points to a single
41  // channel buffer of data.
42  repeated bytes input_channel = 7;
43  repeated bytes output_channel = 8;
44}
45
46// Contains the configurations of various APM component. A Config message is
47// added when any of the fields are changed.
48message Config {
49  // Next field number 19.
50  // Acoustic echo canceler.
51  optional bool aec_enabled = 1;
52  optional bool aec_delay_agnostic_enabled = 2;
53  optional bool aec_drift_compensation_enabled = 3;
54  optional bool aec_extended_filter_enabled = 4;
55  optional int32 aec_suppression_level = 5;
56  // Mobile AEC.
57  optional bool aecm_enabled = 6;
58  optional bool aecm_comfort_noise_enabled = 7;
59  optional int32 aecm_routing_mode = 8;
60  // Automatic gain controller.
61  optional bool agc_enabled = 9;
62  optional int32 agc_mode = 10;
63  optional bool agc_limiter_enabled = 11;
64  optional bool noise_robust_agc_enabled = 12;
65  // High pass filter.
66  optional bool hpf_enabled = 13;
67  // Noise suppression.
68  optional bool ns_enabled = 14;
69  optional int32 ns_level = 15;
70  // Transient suppression.
71  optional bool transient_suppression_enabled = 16;
72  // Semicolon-separated string containing experimental feature
73  // descriptions.
74  optional string experiments_description = 17;
75  // Intelligibility Enhancer
76  optional bool intelligibility_enhancer_enabled = 18;
77}
78
79message Event {
80  enum Type {
81    INIT = 0;
82    REVERSE_STREAM = 1;
83    STREAM = 2;
84    CONFIG = 3;
85    UNKNOWN_EVENT = 4;
86  }
87
88  required Type type = 1;
89
90  optional Init init = 2;
91  optional ReverseStream reverse_stream = 3;
92  optional Stream stream = 4;
93  optional Config config = 5;
94}
95