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}
16
17// May contain interleaved or deinterleaved data, but don't store both formats.
18message ReverseStream {
19  // int16 interleaved data.
20  optional bytes data = 1;
21
22  // float deinterleaved data, where each repeated element points to a single
23  // channel buffer of data.
24  repeated bytes channel = 2;
25}
26
27// May contain interleaved or deinterleaved data, but don't store both formats.
28message Stream {
29  // int16 interleaved data.
30  optional bytes input_data = 1;
31  optional bytes output_data = 2;
32
33  optional int32 delay = 3;
34  optional sint32 drift = 4;
35  optional int32 level = 5;
36  optional bool keypress = 6;
37
38  // float deinterleaved data, where each repeated element points to a single
39  // channel buffer of data.
40  repeated bytes input_channel = 7;
41  repeated bytes output_channel = 8;
42}
43
44// Contains the configurations of various APM component. A Config message is
45// added when any of the fields are changed.
46message Config {
47  // Next field number 17.
48  // Acoustic echo canceler.
49  optional bool aec_enabled = 1;
50  optional bool aec_delay_agnostic_enabled = 2;
51  optional bool aec_drift_compensation_enabled = 3;
52  optional bool aec_extended_filter_enabled = 4;
53  optional int32 aec_suppression_level = 5;
54  // Mobile AEC.
55  optional bool aecm_enabled = 6;
56  optional bool aecm_comfort_noise_enabled = 7;
57  optional int32 aecm_routing_mode = 8;
58  // Automatic gain controller.
59  optional bool agc_enabled = 9;
60  optional int32 agc_mode = 10;
61  optional bool agc_limiter_enabled = 11;
62  optional bool noise_robust_agc_enabled = 12;
63  // High pass filter.
64  optional bool hpf_enabled = 13;
65  // Noise suppression.
66  optional bool ns_enabled = 14;
67  optional int32 ns_level = 15;
68  // Transient suppression.
69  optional bool transient_suppression_enabled = 16;
70}
71
72message Event {
73  enum Type {
74    INIT = 0;
75    REVERSE_STREAM = 1;
76    STREAM = 2;
77    CONFIG = 3;
78    UNKNOWN_EVENT = 4;
79  }
80
81  required Type type = 1;
82
83  optional Init init = 2;
84  optional ReverseStream reverse_stream = 3;
85  optional Stream stream = 4;
86  optional Config config = 5;
87}
88